From d9761f77db562b65712cf9df18ed519facb5e073 Mon Sep 17 00:00:00 2001 From: copyhold Date: Sun, 6 Oct 2024 12:47:06 +0300 Subject: [PATCH 1/6] Add plugins --- .../plugins/grafana-flowcharting/CHANGELOG.md | 94 + .../plugins/grafana-flowcharting/Gruntfile.js | 274 + data/plugins/grafana-flowcharting/LICENSE | 201 + data/plugins/grafana-flowcharting/README.md | 252 + .../grafana-flowcharting/dist/Graph_over.js | 99 + .../plugins/grafana-flowcharting/dist/Init.js | 18 + .../grafana-flowcharting/dist/README.md | 252 + .../grafana-flowcharting/dist/Shapes.js | 3096 + .../dist/css/flowchart.dark.css | 708 + .../dist/css/flowchart.light.css | 708 + .../dist/flowchartHandler.js | 316 + .../dist/flowchart_class.js | 383 + .../dist/flowchart_ctrl.js | 236 + .../dist/flowchart_options.js | 88 + .../grafana-flowcharting/dist/graph_class.js | 211 + .../dist/img/agenty-flowcharting.png | Bin 0 -> 1722 bytes .../dist/img/agenty-flowcharting.svg | 18 + .../dist/inspect_options.js | 135 + .../mxgraph/javascript/dist/css/common.css | 166 + .../mxgraph/javascript/dist/css/explorer.css | 18 + .../mxgraph/javascript/dist/images/button.gif | Bin 0 -> 137 bytes .../javascript/dist/images/checkmark.gif | Bin 0 -> 1253 bytes .../mxgraph/javascript/dist/images/clear.gif | Bin 0 -> 1114 bytes .../mxgraph/javascript/dist/images/close.gif | Bin 0 -> 70 bytes .../mxgraph/javascript/dist/images/close.png | Bin 0 -> 118 bytes .../javascript/dist/images/collapsed.gif | Bin 0 -> 1113 bytes .../javascript/dist/images/dropdown.gif | Bin 0 -> 1110 bytes .../javascript/dist/images/dropdown.png | Bin 0 -> 206 bytes .../mxgraph/javascript/dist/images/edit.gif | Bin 0 -> 66 bytes .../mxgraph/javascript/dist/images/error.gif | Bin 0 -> 907 bytes .../javascript/dist/images/expanded.gif | Bin 0 -> 1110 bytes .../mxgraph/javascript/dist/images/grid.gif | Bin 0 -> 56 bytes .../javascript/dist/images/handle-fixed.png | Bin 0 -> 1293 bytes .../javascript/dist/images/handle-main.png | Bin 0 -> 379 bytes .../javascript/dist/images/handle-rotate.png | Bin 0 -> 3707 bytes .../dist/images/handle-secondary.png | Bin 0 -> 1270 bytes .../dist/images/handle-terminal.png | Bin 0 -> 1286 bytes .../mxgraph/javascript/dist/images/help.png | Bin 0 -> 338 bytes .../mxgraph/javascript/dist/images/locked.png | Bin 0 -> 1020 bytes .../mxgraph/javascript/dist/images/logo.png | Bin 0 -> 8999 bytes .../javascript/dist/images/maximize.gif | Bin 0 -> 843 bytes .../javascript/dist/images/minimize.gif | Bin 0 -> 64 bytes .../javascript/dist/images/nocolor.png | Bin 0 -> 948 bytes .../javascript/dist/images/normalize.gif | Bin 0 -> 845 bytes .../mxgraph/javascript/dist/images/point.gif | Bin 0 -> 55 bytes .../javascript/dist/images/refresh.png | Bin 0 -> 1766 bytes .../mxgraph/javascript/dist/images/resize.gif | Bin 0 -> 74 bytes .../javascript/dist/images/round-drop.png | Bin 0 -> 1216 bytes .../mxgraph/javascript/dist/images/search.png | Bin 0 -> 404 bytes .../javascript/dist/images/separator.gif | Bin 0 -> 146 bytes .../javascript/dist/images/submenu.gif | Bin 0 -> 56 bytes .../javascript/dist/images/transparent.gif | Bin 0 -> 90 bytes .../javascript/dist/images/triangle-down.png | Bin 0 -> 1104 bytes .../javascript/dist/images/triangle-left.png | Bin 0 -> 1123 bytes .../javascript/dist/images/triangle-right.png | Bin 0 -> 1103 bytes .../javascript/dist/images/triangle-up.png | Bin 0 -> 1086 bytes .../javascript/dist/images/unlocked.png | Bin 0 -> 1024 bytes .../javascript/dist/images/warning.gif | Bin 0 -> 276 bytes .../javascript/dist/images/warning.png | Bin 0 -> 425 bytes .../javascript/dist/images/window-title.gif | Bin 0 -> 275 bytes .../mxgraph/javascript/dist/images/window.gif | Bin 0 -> 75 bytes .../libs/mxgraph/javascript/dist/index.html | 110 + .../mxgraph/javascript/dist/jscolor/arrow.gif | Bin 0 -> 66 bytes .../mxgraph/javascript/dist/jscolor/cross.gif | Bin 0 -> 83 bytes .../mxgraph/javascript/dist/jscolor/hs.png | Bin 0 -> 2684 bytes .../mxgraph/javascript/dist/jscolor/hv.png | Bin 0 -> 2865 bytes .../libs/mxgraph/javascript/dist/open.html | 222 + .../javascript/dist/resources/editor.txt | 5 + .../javascript/dist/resources/editor_de.txt | 5 + .../javascript/dist/resources/editor_zh.txt | 5 + .../javascript/dist/resources/graph.txt | 11 + .../javascript/dist/resources/graph_de.txt | 11 + .../javascript/dist/resources/graph_zh.txt | 11 + .../javascript/dist/resources/grapheditor.txt | 324 + .../dist/resources/grapheditor_de.txt | 324 + .../javascript/dist/resources/help.html | 20 + .../javascript/dist/resources/help_de.html | 20 + .../dist/stencils/android/android.xml | 1905 + .../javascript/dist/stencils/arrows.xml | 846 + .../javascript/dist/stencils/atlassian.xml | 713 + .../javascript/dist/stencils/aws/compute.xml | 720 + .../dist/stencils/aws/content_delivery.xml | 445 + .../javascript/dist/stencils/aws/database.xml | 1358 + .../stencils/aws/deployment_management.xml | 306 + .../javascript/dist/stencils/aws/groups.xml | 1798 + .../dist/stencils/aws/messaging.xml | 670 + .../javascript/dist/stencils/aws/misc.xml | 274 + .../dist/stencils/aws/networking.xml | 872 + .../stencils/aws/non_service_specific.xml | 734 + .../dist/stencils/aws/on_demand_workforce.xml | 422 + .../javascript/dist/stencils/aws/storage.xml | 376 + .../aws2/administration_and_security.xml | 358 + .../dist/stencils/aws2/analytics.xml | 1318 + .../dist/stencils/aws2/app_services.xml | 2362 + .../stencils/aws2/compute_and_networking.xml | 6215 ++ .../dist/stencils/aws2/database.xml | 6832 ++ .../aws2/deployment_and_management.xml | 2785 + .../dist/stencils/aws2/developer_tools.xml | 294 + .../stencils/aws2/enterprise_applications.xml | 235 + .../dist/stencils/aws2/game_development.xml | 126 + .../dist/stencils/aws2/internet_of_things.xml | 4799 ++ .../dist/stencils/aws2/management_tools.xml | 208 + .../dist/stencils/aws2/mobile_services.xml | 1141 + .../dist/stencils/aws2/networking.xml | 277 + .../stencils/aws2/non-service_specific.xml | 2641 + .../stencils/aws2/on-demand_workforce.xml | 886 + .../javascript/dist/stencils/aws2/sdks.xml | 1351 + .../stencils/aws2/security_and_identity.xml | 715 + .../aws2/storage_and_content_delivery.xml | 2780 + .../mxgraph/javascript/dist/stencils/aws3.xml | 34201 ++++++++++ .../javascript/dist/stencils/aws3d.xml | 569 + .../mxgraph/javascript/dist/stencils/aws4.xml | 56477 ++++++++++++++++ .../javascript/dist/stencils/azure.xml | 5541 ++ .../javascript/dist/stencils/basic.xml | 909 + .../javascript/dist/stencils/bootstrap.xml | 99 + .../mxgraph/javascript/dist/stencils/bpmn.xml | 1162 + .../javascript/dist/stencils/cabinets.xml | 2359 + .../dist/stencils/cisco/buildings.xml | 1449 + .../cisco/computers_and_peripherals.xml | 2438 + .../cisco/controllers_and_modules.xml | 1209 + .../dist/stencils/cisco/directors.xml | 533 + .../dist/stencils/cisco/hubs_and_gateways.xml | 812 + .../javascript/dist/stencils/cisco/misc.xml | 15890 +++++ .../dist/stencils/cisco/modems_and_phones.xml | 1871 + .../javascript/dist/stencils/cisco/people.xml | 2192 + .../dist/stencils/cisco/routers.xml | 3146 + .../dist/stencils/cisco/security.xml | 942 + .../dist/stencils/cisco/servers.xml | 1637 + .../dist/stencils/cisco/storage.xml | 1648 + .../dist/stencils/cisco/switches.xml | 3320 + .../dist/stencils/cisco/wireless.xml | 1135 + .../dist/stencils/cisco_safe/architecture.xml | 5338 ++ .../dist/stencils/cisco_safe/capability.xml | 8999 +++ .../dist/stencils/cisco_safe/design.xml | 7556 +++ .../dist/stencils/cisco_safe/threat.xml | 9524 +++ .../javascript/dist/stencils/citrix.xml | 20213 ++++++ .../stencils/clipart/Credit_Card_128x128.png | Bin 0 -> 15493 bytes .../stencils/clipart/Database_128x128.png | Bin 0 -> 10455 bytes .../dist/stencils/clipart/Doctor1_128x128.png | Bin 0 -> 9441 bytes .../stencils/clipart/Earth_globe_128x128.png | Bin 0 -> 14646 bytes .../dist/stencils/clipart/Email_128x128.png | Bin 0 -> 7410 bytes .../stencils/clipart/Empty_Folder_128x128.png | Bin 0 -> 8093 bytes .../stencils/clipart/Firewall_02_128x128.png | Bin 0 -> 8428 bytes .../stencils/clipart/Full_Folder_128x128.png | Bin 0 -> 9568 bytes .../dist/stencils/clipart/Gear_128x128.png | Bin 0 -> 10678 bytes .../dist/stencils/clipart/Graph_128x128.png | Bin 0 -> 8045 bytes .../dist/stencils/clipart/Laptop_128x128.png | Bin 0 -> 12593 bytes .../dist/stencils/clipart/Lock_128x128.png | Bin 0 -> 13233 bytes .../dist/stencils/clipart/MacBook_128x128.png | Bin 0 -> 12713 bytes .../clipart/Monitor_Tower_128x128.png | Bin 0 -> 10301 bytes .../stencils/clipart/Piggy_Bank_128x128.png | Bin 0 -> 12780 bytes .../dist/stencils/clipart/Pilot1_128x128.png | Bin 0 -> 10147 bytes .../dist/stencils/clipart/Printer_128x128.png | Bin 0 -> 12104 bytes .../stencils/clipart/Router_Icon_128x128.png | Bin 0 -> 5670 bytes .../dist/stencils/clipart/Safe_128x128.png | Bin 0 -> 8876 bytes .../stencils/clipart/Security1_128x128.png | Bin 0 -> 10400 bytes .../stencils/clipart/Server_Tower_128x128.png | Bin 0 -> 13352 bytes .../clipart/Shopping_Cart_128x128.png | Bin 0 -> 13803 bytes .../stencils/clipart/Software_128x128.png | Bin 0 -> 11020 bytes .../stencils/clipart/Soldier1_128x128.png | Bin 0 -> 13540 bytes .../dist/stencils/clipart/Suit1_128x128.png | Bin 0 -> 9128 bytes .../dist/stencils/clipart/Suit2_128x128.png | Bin 0 -> 8925 bytes .../dist/stencils/clipart/Suit3_128x128.png | Bin 0 -> 8326 bytes .../dist/stencils/clipart/Tech1_128x128.png | Bin 0 -> 7146 bytes .../stencils/clipart/Telesales1_128x128.png | Bin 0 -> 8257 bytes .../clipart/Virtual_Machine_128x128.png | Bin 0 -> 16557 bytes .../dist/stencils/clipart/Virus_128x128.png | Bin 0 -> 11358 bytes .../clipart/Wireless_Router_N_128x128.png | Bin 0 -> 7468 bytes .../dist/stencils/clipart/Worker1_128x128.png | Bin 0 -> 9519 bytes .../stencils/clipart/Workstation_128x128.png | Bin 0 -> 13635 bytes .../dist/stencils/clipart/iMac_128x128.png | Bin 0 -> 13149 bytes .../dist/stencils/clipart/iPad_128x128.png | Bin 0 -> 11727 bytes .../mxgraph/javascript/dist/stencils/eip.xml | 2003 + .../dist/stencils/electrical/abstract.xml | 667 + .../dist/stencils/electrical/capacitors.xml | 439 + .../dist/stencils/electrical/diodes.xml | 352 + .../electrical/electro-mechanical.xml | 1722 + .../dist/stencils/electrical/iec417.xml | 1143 + .../stencils/electrical/iec_logic_gates.xml | 120 + .../dist/stencils/electrical/inductors.xml | 993 + .../dist/stencils/electrical/instruments.xml | 146 + .../dist/stencils/electrical/logic_gates.xml | 672 + .../stencils/electrical/miscellaneous.xml | 1649 + .../dist/stencils/electrical/mosfets1.xml | 821 + .../dist/stencils/electrical/mosfets2.xml | 560 + .../dist/stencils/electrical/op_amps.xml | 438 + .../stencils/electrical/opto_electronics.xml | 654 + .../dist/stencils/electrical/plc_ladder.xml | 122 + .../electrical/power_semiconductors.xml | 743 + .../dist/stencils/electrical/radio.xml | 268 + .../dist/stencils/electrical/resistors.xml | 617 + .../dist/stencils/electrical/rot_mech.xml | 367 + .../stencils/electrical/signal_sources.xml | 413 + .../electrical/thermionic_devices.xml | 295 + .../dist/stencils/electrical/transistors.xml | 600 + .../dist/stencils/electrical/transmission.xml | 297 + .../dist/stencils/electrical/waveforms.xml | 361 + .../javascript/dist/stencils/floorplan.xml | 1809 + .../javascript/dist/stencils/flowchart.xml | 920 + .../javascript/dist/stencils/gcp/big_data.xml | 777 + .../javascript/dist/stencils/gcp/compute.xml | 708 + .../dist/stencils/gcp/developer_tools.xml | 289 + .../javascript/dist/stencils/gcp/extras.xml | 748 + .../stencils/gcp/identity_and_security.xml | 681 + .../dist/stencils/gcp/machine_learning.xml | 632 + .../dist/stencils/gcp/management_tools.xml | 761 + .../dist/stencils/gcp/networking.xml | 951 + .../dist/stencils/gcp/product_cards.xml | 106 + .../dist/stencils/gcp/storage_databases.xml | 593 + .../mxgraph/javascript/dist/stencils/gcp2.xml | 23206 +++++++ .../mxgraph/javascript/dist/stencils/gmdl.xml | 2952 + .../javascript/dist/stencils/ios7/icons.xml | 2484 + .../javascript/dist/stencils/ios7/misc.xml | 2184 + .../javascript/dist/stencils/lean_mapping.xml | 462 + .../dist/stencils/mockup/advertising.xml | 223 + .../dist/stencils/mockup/calendars.xml | 1595 + .../dist/stencils/mockup/carousel.xml | 599 + .../stencils/mockup/charts_and_tables.xml | 626 + .../dist/stencils/mockup/controls.xml | 648 + .../dist/stencils/mockup/form_elements.xml | 433 + .../stencils/mockup/menus_and_buttons.xml | 848 + .../javascript/dist/stencils/mockup/misc.xml | 2183 + .../javascript/dist/stencils/mockup/tabs.xml | 193 + .../javascript/dist/stencils/mscae/cloud.xml | 10257 +++ .../dist/stencils/mscae/deprecated.xml | 946 + .../dist/stencils/mscae/enterprise.xml | 5289 ++ .../dist/stencils/mscae/general.xml | 1412 + .../dist/stencils/mscae/general_symbols.xml | 587 + .../javascript/dist/stencils/mscae/intune.xml | 3517 + .../javascript/dist/stencils/mscae/oms.xml | 1458 + .../dist/stencils/mscae/opsmanager.xml | 2900 + .../javascript/dist/stencils/mscae/other.xml | 1292 + .../dist/stencils/mscae/system_center.xml | 675 + .../javascript/dist/stencils/mscae/vm.xml | 1949 + .../javascript/dist/stencils/networks.xml | 4976 ++ .../dist/stencils/office/clouds.xml | 847 + .../dist/stencils/office/communications.xml | 7570 +++ .../dist/stencils/office/concepts.xml | 6700 ++ .../dist/stencils/office/databases.xml | 1748 + .../dist/stencils/office/devices.xml | 3171 + .../dist/stencils/office/security.xml | 2258 + .../dist/stencils/office/servers.xml | 8510 +++ .../dist/stencils/office/services.xml | 3232 + .../javascript/dist/stencils/office/sites.xml | 1731 + .../javascript/dist/stencils/office/users.xml | 2307 + .../dist/stencils/pid/agitators.xml | 193 + .../dist/stencils/pid/apparatus_elements.xml | 94 + .../dist/stencils/pid/centrifuges.xml | 240 + .../dist/stencils/pid/compressors.xml | 376 + .../dist/stencils/pid/compressors_iso.xml | 286 + .../dist/stencils/pid/crushers_grinding.xml | 385 + .../javascript/dist/stencils/pid/driers.xml | 235 + .../javascript/dist/stencils/pid/engines.xml | 142 + .../javascript/dist/stencils/pid/feeders.xml | 105 + .../javascript/dist/stencils/pid/filters.xml | 429 + .../javascript/dist/stencils/pid/fittings.xml | 628 + .../dist/stencils/pid/flow_sensors.xml | 328 + .../dist/stencils/pid/heat_exchangers.xml | 809 + .../dist/stencils/pid/instruments.xml | 571 + .../javascript/dist/stencils/pid/misc.xml | 2058 + .../javascript/dist/stencils/pid/mixers.xml | 97 + .../javascript/dist/stencils/pid/piping.xml | 748 + .../javascript/dist/stencils/pid/pumps.xml | 602 + .../dist/stencils/pid/pumps_din.xml | 221 + .../dist/stencils/pid/pumps_iso.xml | 199 + .../dist/stencils/pid/separators.xml | 423 + .../dist/stencils/pid/shaping_machines.xml | 188 + .../javascript/dist/stencils/pid/valves.xml | 846 + .../javascript/dist/stencils/pid/vessels.xml | 1847 + .../javascript/dist/stencils/rack/apc.xml | 277 + .../javascript/dist/stencils/rack/cisco.xml | 16373 +++++ .../javascript/dist/stencils/rack/dell.xml | 5617 ++ .../javascript/dist/stencils/rack/f5.xml | 7923 +++ .../javascript/dist/stencils/rack/general.xml | 3477 + .../javascript/dist/stencils/rack/hp.xml | 2057 + .../javascript/dist/stencils/rack/ibm.xml | 2657 + .../javascript/dist/stencils/rack/oracle.xml | 5140 ++ .../dist/stencils/signs/animals.xml | 1515 + .../javascript/dist/stencils/signs/food.xml | 615 + .../dist/stencils/signs/healthcare.xml | 5753 ++ .../javascript/dist/stencils/signs/nature.xml | 1049 + .../javascript/dist/stencils/signs/people.xml | 1603 + .../javascript/dist/stencils/signs/safety.xml | 1644 + .../dist/stencils/signs/science.xml | 434 + .../javascript/dist/stencils/signs/sports.xml | 6035 ++ .../javascript/dist/stencils/signs/tech.xml | 1295 + .../dist/stencils/signs/transportation.xml | 6297 ++ .../javascript/dist/stencils/signs/travel.xml | 3450 + .../javascript/dist/stencils/sitemap.xml | 4221 ++ .../javascript/dist/stencils/veeam/2d.xml | 11861 ++++ .../javascript/dist/stencils/veeam/3d.xml | 11155 +++ .../javascript/dist/stencils/veeam/veeam.xml | 12363 ++++ .../mxgraph/javascript/dist/stencils/vvd.xml | 11419 ++++ .../javascript/dist/stencils/webicons.xml | 15274 +++++ .../javascript/dist/stencils/weblogos.xml | 12167 ++++ .../javascript/dist/styles/default.xml | 105 + .../mxgraph/javascript/dist/styles/down.gif | Bin 0 -> 1113 bytes .../javascript/dist/styles/grapheditor.css | 756 + .../mxgraph/javascript/dist/styles/help.css | 4 + .../javascript/dist/styles/sprites.png | Bin 0 -> 10155 bytes .../javascript/dist/styles/thumb_horz.png | Bin 0 -> 113 bytes .../javascript/dist/styles/thumb_vertical.png | Bin 0 -> 122 bytes .../mxgraph/javascript/dist/styles/up.gif | Bin 0 -> 1113 bytes .../libs/mxgraph/javascript/dist/viewer.html | 71 + .../dist/libs/shapes/bpmn/mxBpmnShape2.js | 662 + .../dist/libs/shapes/er/mxER.js | 994 + .../dist/libs/shapes/ios7/mxIOS7Ui.js | 1283 + .../libs/shapes/mockup/mxMockupButtons.js | 794 + .../libs/shapes/mockup/mxMockupContainers.js | 1685 + .../dist/libs/shapes/mockup/mxMockupForms.js | 1925 + .../libs/shapes/mockup/mxMockupGraphics.js | 997 + .../dist/libs/shapes/mockup/mxMockupMarkup.js | 132 + .../dist/libs/shapes/mockup/mxMockupMisc.js | 1252 + .../libs/shapes/mockup/mxMockupNavigation.js | 651 + .../dist/libs/shapes/mockup/mxMockupText.js | 643 + .../dist/libs/shapes/mockup/mxMockupiOS.js | 5224 ++ .../dist/libs/shapes/mxAWS3D.js | 7001 ++ .../dist/libs/shapes/mxAWS4.js | 243 + .../dist/libs/shapes/mxAndroid.js | 1059 + .../dist/libs/shapes/mxArchiMate.js | 995 + .../dist/libs/shapes/mxArchiMate3.js | 2147 + .../dist/libs/shapes/mxArrows.js | 2309 + .../dist/libs/shapes/mxAtlassian.js | 327 + .../dist/libs/shapes/mxBasic.js | 3579 + .../dist/libs/shapes/mxBootstrap.js | 693 + .../dist/libs/shapes/mxCabinets.js | 175 + .../dist/libs/shapes/mxDFD.js | 323 + .../dist/libs/shapes/mxEip.js | 409 + .../dist/libs/shapes/mxElectrical.js | 1469 + .../dist/libs/shapes/mxFloorplan.js | 481 + .../dist/libs/shapes/mxFlowchart.js | 55 + .../dist/libs/shapes/mxGCP2.js | 577 + .../dist/libs/shapes/mxGmdl.js | 749 + .../dist/libs/shapes/mxInfographic.js | 2134 + .../dist/libs/shapes/mxLeanMap.js | 1299 + .../dist/libs/shapes/mxNetworks.js | 87 + .../dist/libs/shapes/mxSysML.js | 2163 + .../dist/libs/shapes/pid2/mxPidInstruments.js | 545 + .../dist/libs/shapes/pid2/mxPidMisc.js | 405 + .../dist/libs/shapes/pid2/mxPidValves.js | 925 + .../dist/libs/shapes/rack/mxRack.js | 918 + .../dist/mapping_options.js | 320 + .../grafana-flowcharting/dist/module.js | 20 + .../dist/partials/flowchart_options.html | 278 + .../dist/partials/inspect_options.html | 191 + .../dist/partials/mapping_options copy.html | 616 + .../dist/partials/mapping_options.html | 1085 + .../dist/partials/module.html | 14 + .../grafana-flowcharting/dist/plugin.js | 72 + .../grafana-flowcharting/dist/plugin.json | 48 + .../grafana-flowcharting/dist/rule_class.js | 965 + .../grafana-flowcharting/dist/rulesHandler.js | 164 + .../grafana-flowcharting/dist/state_class.js | 516 + .../dist/statesHandler.js | 182 + .../dist/tooltipHandler.js | 134 + .../grafana-flowcharting/dist/utils.js | 314 + .../grafana-flowcharting/jest.config.js | 20 + .../grafana-flowcharting/lws.config.js | 3 + .../grafana-flowcharting/package-lock.json | 14490 ++++ .../plugins/grafana-flowcharting/package.json | 98 + .../plugins/grafana-flowcharting/src/Graph.js | 7336 ++ .../grafana-flowcharting/src/Graph_over.js | 168 + data/plugins/grafana-flowcharting/src/Init.js | 29 + .../grafana-flowcharting/src/Shapes.js | 3965 ++ .../src/css/_chartist-settings.scss | 88 + .../src/css/flowchart.dark.scss | 767 + .../src/css/flowchart.light.scss | 767 + .../src/flowchartHandler.js | 419 + .../src/flowchart_class.js | 359 + .../src/flowchart_ctrl.js | 180 + .../src/flowchart_options.js | 77 + .../grafana-flowcharting/src/graph_class.js | 1099 + .../src/img/agenty-flowcharting.png | Bin 0 -> 1722 bytes .../src/img/agenty-flowcharting.svg | 18 + .../src/inspect_options.js | 91 + .../src/libs/sanitizer.min.js | 92 + .../src/libs/shapes/bpmn/mxBpmnShape2.js | 760 + .../src/libs/shapes/er/mxER.js | 1468 + .../src/libs/shapes/ios7/mxIOS7Ui.js | 1719 + .../src/libs/shapes/mockup/mxMockupButtons.js | 1028 + .../libs/shapes/mockup/mxMockupContainers.js | 2119 + .../src/libs/shapes/mockup/mxMockupForms.js | 2503 + .../libs/shapes/mockup/mxMockupGraphics.js | 1235 + .../src/libs/shapes/mockup/mxMockupMarkup.js | 200 + .../src/libs/shapes/mockup/mxMockupMisc.js | 1680 + .../libs/shapes/mockup/mxMockupNavigation.js | 845 + .../src/libs/shapes/mockup/mxMockupText.js | 867 + .../src/libs/shapes/mockup/mxMockupiOS.js | 6691 ++ .../src/libs/shapes/mxAWS3D.js | 9169 +++ .../src/libs/shapes/mxAWS4.js | 421 + .../src/libs/shapes/mxAndroid.js | 1510 + .../src/libs/shapes/mxArchiMate.js | 1220 + .../src/libs/shapes/mxArchiMate3.js | 2849 + .../src/libs/shapes/mxArrows.js | 2691 + .../src/libs/shapes/mxAtlassian.js | 291 + .../src/libs/shapes/mxBasic.js | 4600 ++ .../src/libs/shapes/mxBootstrap.js | 1003 + .../src/libs/shapes/mxCabinets.js | 257 + .../src/libs/shapes/mxDFD.js | 447 + .../src/libs/shapes/mxEip.js | 570 + .../src/libs/shapes/mxElectrical.js | 1776 + .../src/libs/shapes/mxFloorplan.js | 763 + .../src/libs/shapes/mxFlowchart.js | 77 + .../src/libs/shapes/mxGCP2.js | 370 + .../src/libs/shapes/mxGmdl.js | 967 + .../src/libs/shapes/mxInfographic.js | 2668 + .../src/libs/shapes/mxLeanMap.js | 2229 + .../src/libs/shapes/mxNetworks.js | 120 + .../src/libs/shapes/mxSysML.js | 3144 + .../src/libs/shapes/pid2/mxPidInstruments.js | 685 + .../src/libs/shapes/pid2/mxPidMisc.js | 500 + .../src/libs/shapes/pid2/mxPidValves.js | 1149 + .../src/libs/shapes/rack/mxRack.js | 1263 + .../src/mapping_options.js | 204 + .../grafana-flowcharting/src/module.js | 10 + .../src/partials/flowchart_options.html | 278 + .../src/partials/inspect_options.html | 191 + .../src/partials/mapping_options copy.html | 616 + .../src/partials/mapping_options.html | 1085 + .../src/partials/module.html | 14 + .../grafana-flowcharting/src/plugin.js | 70 + .../grafana-flowcharting/src/plugin.json | 48 + .../grafana-flowcharting/src/rule_class.js | 999 + .../grafana-flowcharting/src/rulesHandler.js | 200 + .../grafana-flowcharting/src/state_class.js | 635 + .../grafana-flowcharting/src/statesHandler.js | 223 + .../src/tooltipHandler.js | 218 + .../plugins/grafana-flowcharting/src/utils.js | 260 + data/plugins/grafana-flowcharting/yarn.lock | 10138 +++ .../.circleci/config.yml | 119 + .../plugins/grafana-piechart-panel/.gitignore | 36 + .../grafana-piechart-panel/.prettierrc.js | 3 + .../grafana-piechart-panel/CHANGELOG.md | 64 + data/plugins/grafana-piechart-panel/LICENSE | 21 + data/plugins/grafana-piechart-panel/README.md | 49 + .../grafana-piechart-panel/dist/LICENSE | 21 + .../grafana-piechart-panel/dist/MANIFEST.txt | 36 + .../grafana-piechart-panel/dist/README.md | 49 + .../grafana-piechart-panel/dist/dark.js | 2 + .../grafana-piechart-panel/dist/dark.js.map | 1 + .../grafana-piechart-panel/dist/editor.html | 89 + .../dist/img/piechart-donut.png | Bin 0 -> 38209 bytes .../dist/img/piechart-legend-on-graph.png | Bin 0 -> 37972 bytes .../dist/img/piechart-legend-rhs.png | Bin 0 -> 41450 bytes .../dist/img/piechart-legend-under.png | Bin 0 -> 34314 bytes .../dist/img/piechart-options.png | Bin 0 -> 48400 bytes .../dist/img/piechart_logo_large.png | Bin 0 -> 3723 bytes .../dist/img/piechart_logo_large.svg | 1 + .../dist/img/piechart_logo_small.png | Bin 0 -> 2629 bytes .../dist/img/piechart_logo_small.svg | 1 + .../grafana-piechart-panel/dist/light.js | 2 + .../grafana-piechart-panel/dist/light.js.map | 1 + .../grafana-piechart-panel/dist/module.html | 5 + .../grafana-piechart-panel/dist/module.js | 3 + .../dist/module.js.LICENSE.txt | 20 + .../grafana-piechart-panel/dist/module.js.map | 1 + .../grafana-piechart-panel/dist/plugin.json | 70 + .../dist/styles/dark.css | 1 + .../dist/styles/light.css | 1 + .../grafana-piechart-panel/docker-compose.yml | 12 + .../grafana-piechart-panel/jest.config.js | 8 + .../grafana-piechart-panel/package.json | 31 + .../grafana-piechart-panel/tsconfig.json | 9 + data/plugins/grafana-piechart-panel/yarn.lock | 12069 ++++ .../youtube-video-panel/.circleci/config.yml | 67 + .../youtube-video-panel/.codeclimate.yml | 8 + .../plugins/youtube-video-panel/.editorconfig | 16 + data/plugins/youtube-video-panel/.gitignore | 31 + .../youtube-video-panel/.prettierrc.js | 3 + data/plugins/youtube-video-panel/CHANGELOG.md | 7 + data/plugins/youtube-video-panel/LICENSE | 201 + data/plugins/youtube-video-panel/README.md | 41 + data/plugins/youtube-video-panel/appveyor.yml | 26 + .../youtube-video-panel/dist/CHANGELOG.md | 7 + data/plugins/youtube-video-panel/dist/LICENSE | 201 + .../youtube-video-panel/dist/MANIFEST.txt | 57 + .../youtube-video-panel/dist/README.md | 41 + .../youtube-video-panel/dist/img/logo.svg | 1 + .../youtube-video-panel/dist/module.js | 3 + .../dist/module.js.LICENSE.txt | 20 + .../youtube-video-panel/dist/module.js.map | 1 + .../youtube-video-panel/dist/plugin.json | 34 + .../youtube-video-panel/docs/README.md | 1 + data/plugins/youtube-video-panel/package.json | 31 + .../youtube-video-panel/src/YoutubePanel.tsx | 66 + .../youtube-video-panel/src/img/logo.svg | 1 + .../youtube-video-panel/src/module.test.ts | 6 + .../plugins/youtube-video-panel/src/module.ts | 28 + .../youtube-video-panel/src/plugin.json | 34 + data/plugins/youtube-video-panel/src/types.ts | 6 + .../plugins/youtube-video-panel/tsconfig.json | 9 + data/plugins/youtube-video-panel/yarn.lock | 12988 ++++ 492 files changed, 734331 insertions(+) create mode 100644 data/plugins/grafana-flowcharting/CHANGELOG.md create mode 100644 data/plugins/grafana-flowcharting/Gruntfile.js create mode 100644 data/plugins/grafana-flowcharting/LICENSE create mode 100644 data/plugins/grafana-flowcharting/README.md create mode 100644 data/plugins/grafana-flowcharting/dist/Graph_over.js create mode 100644 data/plugins/grafana-flowcharting/dist/Init.js create mode 100644 data/plugins/grafana-flowcharting/dist/README.md create mode 100644 data/plugins/grafana-flowcharting/dist/Shapes.js create mode 100644 data/plugins/grafana-flowcharting/dist/css/flowchart.dark.css create mode 100644 data/plugins/grafana-flowcharting/dist/css/flowchart.light.css create mode 100644 data/plugins/grafana-flowcharting/dist/flowchartHandler.js create mode 100644 data/plugins/grafana-flowcharting/dist/flowchart_class.js create mode 100644 data/plugins/grafana-flowcharting/dist/flowchart_ctrl.js create mode 100644 data/plugins/grafana-flowcharting/dist/flowchart_options.js create mode 100644 data/plugins/grafana-flowcharting/dist/graph_class.js create mode 100644 data/plugins/grafana-flowcharting/dist/img/agenty-flowcharting.png create mode 100644 data/plugins/grafana-flowcharting/dist/img/agenty-flowcharting.svg create mode 100644 data/plugins/grafana-flowcharting/dist/inspect_options.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/css/common.css create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/css/explorer.css create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/button.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/checkmark.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/clear.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/close.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/close.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/collapsed.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/dropdown.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/dropdown.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/edit.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/error.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/expanded.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/grid.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/handle-fixed.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/handle-main.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/handle-rotate.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/handle-secondary.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/handle-terminal.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/help.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/locked.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/logo.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/maximize.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/minimize.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/nocolor.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/normalize.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/point.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/refresh.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/resize.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/round-drop.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/search.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/separator.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/submenu.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/transparent.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/triangle-down.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/triangle-left.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/triangle-right.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/triangle-up.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/unlocked.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/warning.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/warning.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/window-title.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/images/window.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/index.html create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/arrow.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/cross.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/hs.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/hv.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/open.html create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_de.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_zh.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_de.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_zh.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor_de.txt create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help.html create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help_de.html create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/android/android.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/arrows.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/atlassian.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/compute.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/content_delivery.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/database.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/deployment_management.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/groups.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/messaging.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/misc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/networking.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/non_service_specific.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/on_demand_workforce.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/storage.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/administration_and_security.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/analytics.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/app_services.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/compute_and_networking.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/database.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/deployment_and_management.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/developer_tools.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/enterprise_applications.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/game_development.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/internet_of_things.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/management_tools.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/mobile_services.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/networking.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/non-service_specific.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/on-demand_workforce.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/sdks.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/security_and_identity.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/storage_and_content_delivery.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3d.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws4.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/azure.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/basic.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bootstrap.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bpmn.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cabinets.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/buildings.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/computers_and_peripherals.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/controllers_and_modules.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/directors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/hubs_and_gateways.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/misc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/modems_and_phones.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/people.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/routers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/security.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/servers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/storage.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/switches.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/wireless.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/architecture.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/capability.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/design.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/threat.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/citrix.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Credit_Card_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Database_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Doctor1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Earth_globe_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Email_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Empty_Folder_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Firewall_02_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Full_Folder_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Gear_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Graph_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Laptop_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Lock_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/MacBook_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Monitor_Tower_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Piggy_Bank_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Pilot1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Printer_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Router_Icon_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Safe_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Security1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Server_Tower_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Shopping_Cart_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Software_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Soldier1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Suit1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Suit2_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Suit3_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Tech1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Telesales1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Virtual_Machine_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Virus_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Wireless_Router_N_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Worker1_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Workstation_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/iMac_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/iPad_128x128.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/eip.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/abstract.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/capacitors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/diodes.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/electro-mechanical.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec417.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec_logic_gates.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/inductors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/instruments.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/logic_gates.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/miscellaneous.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets1.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets2.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/op_amps.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/opto_electronics.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/plc_ladder.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/power_semiconductors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/radio.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/resistors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/rot_mech.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/signal_sources.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/thermionic_devices.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transistors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transmission.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/waveforms.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/floorplan.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/flowchart.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/big_data.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/compute.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/developer_tools.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/extras.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/identity_and_security.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/machine_learning.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/management_tools.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/networking.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/product_cards.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/storage_databases.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp2.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gmdl.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/icons.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/misc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/lean_mapping.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/advertising.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/calendars.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/carousel.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/charts_and_tables.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/controls.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/form_elements.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/menus_and_buttons.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/misc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/tabs.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/cloud.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/deprecated.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/enterprise.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general_symbols.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/intune.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/oms.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/opsmanager.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/other.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/system_center.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/vm.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/networks.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/clouds.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/communications.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/concepts.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/databases.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/devices.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/security.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/servers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/services.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/sites.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/users.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/agitators.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/apparatus_elements.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/centrifuges.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors_iso.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/crushers_grinding.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/driers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/engines.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/feeders.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/filters.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/fittings.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/flow_sensors.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/heat_exchangers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/instruments.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/misc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/mixers.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/piping.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_din.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_iso.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/separators.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/shaping_machines.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/valves.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/vessels.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/apc.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/cisco.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/dell.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/f5.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/general.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/hp.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/ibm.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/oracle.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/animals.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/food.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/healthcare.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/nature.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/people.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/safety.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/science.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/sports.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/tech.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/transportation.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/travel.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/sitemap.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/2d.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/3d.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/veeam.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/vvd.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/webicons.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/weblogos.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/default.xml create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/down.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/grapheditor.css create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/help.css create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/sprites.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_horz.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_vertical.png create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/up.gif create mode 100644 data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/viewer.html create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/bpmn/mxBpmnShape2.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/er/mxER.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/ios7/mxIOS7Ui.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupButtons.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupContainers.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupForms.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupGraphics.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMarkup.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMisc.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupNavigation.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupText.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupiOS.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS3D.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS4.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxAndroid.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate3.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxArrows.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxAtlassian.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxBasic.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxBootstrap.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxCabinets.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxDFD.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxEip.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxElectrical.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxFloorplan.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxFlowchart.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxGCP2.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxGmdl.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxInfographic.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxLeanMap.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxNetworks.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/mxSysML.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidInstruments.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidMisc.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidValves.js create mode 100644 data/plugins/grafana-flowcharting/dist/libs/shapes/rack/mxRack.js create mode 100644 data/plugins/grafana-flowcharting/dist/mapping_options.js create mode 100644 data/plugins/grafana-flowcharting/dist/module.js create mode 100644 data/plugins/grafana-flowcharting/dist/partials/flowchart_options.html create mode 100644 data/plugins/grafana-flowcharting/dist/partials/inspect_options.html create mode 100644 data/plugins/grafana-flowcharting/dist/partials/mapping_options copy.html create mode 100644 data/plugins/grafana-flowcharting/dist/partials/mapping_options.html create mode 100644 data/plugins/grafana-flowcharting/dist/partials/module.html create mode 100644 data/plugins/grafana-flowcharting/dist/plugin.js create mode 100644 data/plugins/grafana-flowcharting/dist/plugin.json create mode 100644 data/plugins/grafana-flowcharting/dist/rule_class.js create mode 100644 data/plugins/grafana-flowcharting/dist/rulesHandler.js create mode 100644 data/plugins/grafana-flowcharting/dist/state_class.js create mode 100644 data/plugins/grafana-flowcharting/dist/statesHandler.js create mode 100644 data/plugins/grafana-flowcharting/dist/tooltipHandler.js create mode 100644 data/plugins/grafana-flowcharting/dist/utils.js create mode 100644 data/plugins/grafana-flowcharting/jest.config.js create mode 100644 data/plugins/grafana-flowcharting/lws.config.js create mode 100644 data/plugins/grafana-flowcharting/package-lock.json create mode 100644 data/plugins/grafana-flowcharting/package.json create mode 100644 data/plugins/grafana-flowcharting/src/Graph.js create mode 100644 data/plugins/grafana-flowcharting/src/Graph_over.js create mode 100644 data/plugins/grafana-flowcharting/src/Init.js create mode 100644 data/plugins/grafana-flowcharting/src/Shapes.js create mode 100644 data/plugins/grafana-flowcharting/src/css/_chartist-settings.scss create mode 100644 data/plugins/grafana-flowcharting/src/css/flowchart.dark.scss create mode 100644 data/plugins/grafana-flowcharting/src/css/flowchart.light.scss create mode 100644 data/plugins/grafana-flowcharting/src/flowchartHandler.js create mode 100644 data/plugins/grafana-flowcharting/src/flowchart_class.js create mode 100644 data/plugins/grafana-flowcharting/src/flowchart_ctrl.js create mode 100644 data/plugins/grafana-flowcharting/src/flowchart_options.js create mode 100644 data/plugins/grafana-flowcharting/src/graph_class.js create mode 100644 data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.png create mode 100644 data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.svg create mode 100644 data/plugins/grafana-flowcharting/src/inspect_options.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/sanitizer.min.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/bpmn/mxBpmnShape2.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/er/mxER.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/ios7/mxIOS7Ui.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupButtons.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupContainers.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupForms.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupGraphics.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMarkup.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMisc.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupNavigation.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupText.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupiOS.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS3D.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS4.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxAndroid.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate3.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxArrows.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxAtlassian.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxBasic.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxBootstrap.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxCabinets.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxDFD.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxEip.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxElectrical.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxFloorplan.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxFlowchart.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxGCP2.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxGmdl.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxInfographic.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxLeanMap.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxNetworks.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/mxSysML.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidInstruments.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidMisc.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidValves.js create mode 100644 data/plugins/grafana-flowcharting/src/libs/shapes/rack/mxRack.js create mode 100644 data/plugins/grafana-flowcharting/src/mapping_options.js create mode 100644 data/plugins/grafana-flowcharting/src/module.js create mode 100644 data/plugins/grafana-flowcharting/src/partials/flowchart_options.html create mode 100644 data/plugins/grafana-flowcharting/src/partials/inspect_options.html create mode 100644 data/plugins/grafana-flowcharting/src/partials/mapping_options copy.html create mode 100644 data/plugins/grafana-flowcharting/src/partials/mapping_options.html create mode 100644 data/plugins/grafana-flowcharting/src/partials/module.html create mode 100644 data/plugins/grafana-flowcharting/src/plugin.js create mode 100644 data/plugins/grafana-flowcharting/src/plugin.json create mode 100644 data/plugins/grafana-flowcharting/src/rule_class.js create mode 100644 data/plugins/grafana-flowcharting/src/rulesHandler.js create mode 100644 data/plugins/grafana-flowcharting/src/state_class.js create mode 100644 data/plugins/grafana-flowcharting/src/statesHandler.js create mode 100644 data/plugins/grafana-flowcharting/src/tooltipHandler.js create mode 100644 data/plugins/grafana-flowcharting/src/utils.js create mode 100644 data/plugins/grafana-flowcharting/yarn.lock create mode 100644 data/plugins/grafana-piechart-panel/.circleci/config.yml create mode 100644 data/plugins/grafana-piechart-panel/.gitignore create mode 100644 data/plugins/grafana-piechart-panel/.prettierrc.js create mode 100644 data/plugins/grafana-piechart-panel/CHANGELOG.md create mode 100644 data/plugins/grafana-piechart-panel/LICENSE create mode 100644 data/plugins/grafana-piechart-panel/README.md create mode 100644 data/plugins/grafana-piechart-panel/dist/LICENSE create mode 100644 data/plugins/grafana-piechart-panel/dist/MANIFEST.txt create mode 100644 data/plugins/grafana-piechart-panel/dist/README.md create mode 100644 data/plugins/grafana-piechart-panel/dist/dark.js create mode 100644 data/plugins/grafana-piechart-panel/dist/dark.js.map create mode 100644 data/plugins/grafana-piechart-panel/dist/editor.html create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart-donut.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart-options.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.svg create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.png create mode 100644 data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.svg create mode 100644 data/plugins/grafana-piechart-panel/dist/light.js create mode 100644 data/plugins/grafana-piechart-panel/dist/light.js.map create mode 100644 data/plugins/grafana-piechart-panel/dist/module.html create mode 100644 data/plugins/grafana-piechart-panel/dist/module.js create mode 100644 data/plugins/grafana-piechart-panel/dist/module.js.LICENSE.txt create mode 100644 data/plugins/grafana-piechart-panel/dist/module.js.map create mode 100644 data/plugins/grafana-piechart-panel/dist/plugin.json create mode 100644 data/plugins/grafana-piechart-panel/dist/styles/dark.css create mode 100644 data/plugins/grafana-piechart-panel/dist/styles/light.css create mode 100644 data/plugins/grafana-piechart-panel/docker-compose.yml create mode 100644 data/plugins/grafana-piechart-panel/jest.config.js create mode 100644 data/plugins/grafana-piechart-panel/package.json create mode 100644 data/plugins/grafana-piechart-panel/tsconfig.json create mode 100644 data/plugins/grafana-piechart-panel/yarn.lock create mode 100755 data/plugins/youtube-video-panel/.circleci/config.yml create mode 100644 data/plugins/youtube-video-panel/.codeclimate.yml create mode 100644 data/plugins/youtube-video-panel/.editorconfig create mode 100644 data/plugins/youtube-video-panel/.gitignore create mode 100644 data/plugins/youtube-video-panel/.prettierrc.js create mode 100644 data/plugins/youtube-video-panel/CHANGELOG.md create mode 100644 data/plugins/youtube-video-panel/LICENSE create mode 100644 data/plugins/youtube-video-panel/README.md create mode 100644 data/plugins/youtube-video-panel/appveyor.yml create mode 100644 data/plugins/youtube-video-panel/dist/CHANGELOG.md create mode 100644 data/plugins/youtube-video-panel/dist/LICENSE create mode 100644 data/plugins/youtube-video-panel/dist/MANIFEST.txt create mode 100644 data/plugins/youtube-video-panel/dist/README.md create mode 100644 data/plugins/youtube-video-panel/dist/img/logo.svg create mode 100644 data/plugins/youtube-video-panel/dist/module.js create mode 100644 data/plugins/youtube-video-panel/dist/module.js.LICENSE.txt create mode 100644 data/plugins/youtube-video-panel/dist/module.js.map create mode 100644 data/plugins/youtube-video-panel/dist/plugin.json create mode 100644 data/plugins/youtube-video-panel/docs/README.md create mode 100644 data/plugins/youtube-video-panel/package.json create mode 100644 data/plugins/youtube-video-panel/src/YoutubePanel.tsx create mode 100644 data/plugins/youtube-video-panel/src/img/logo.svg create mode 100644 data/plugins/youtube-video-panel/src/module.test.ts create mode 100644 data/plugins/youtube-video-panel/src/module.ts create mode 100644 data/plugins/youtube-video-panel/src/plugin.json create mode 100644 data/plugins/youtube-video-panel/src/types.ts create mode 100644 data/plugins/youtube-video-panel/tsconfig.json create mode 100644 data/plugins/youtube-video-panel/yarn.lock diff --git a/data/plugins/grafana-flowcharting/CHANGELOG.md b/data/plugins/grafana-flowcharting/CHANGELOG.md new file mode 100644 index 0000000000000..7c7540ed11048 --- /dev/null +++ b/data/plugins/grafana-flowcharting/CHANGELOG.md @@ -0,0 +1,94 @@ +# Changelog + +## [[0.4.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.4.0.zip) - 2019-09-26 +### Added + - Draw.io editor ([see example](https://algenty.github.io/flowcharting-repository/images/openEditor_ani.gif)) + - Open draw.io with dark theme for better rendering + - Display waiting screen when loading xml definition. + - Upgrading libraries + - mxGraph 4.0.4 + - draw.io 11.2.8 + - Graph definition + - Adding download function to download source by http on load. ([See example](https://algenty.github.io/flowcharting-repository/images/download_ani.gif)) + - Metric + - Adding string support for state (See example) + - Zoom [(issue #19)](https://github.com/algenty/grafana-flowcharting/issues/19) ([See example](https://algenty.github.io/flowcharting-repository/images/zoom2_ani.gif)) + - On the mouse pointer : Ctrl + Mouse + - Hold right button to move diagram. + - double click on shape to zoom on. + - Escape key to restore. + - Tooltip/popup support ([see example](https://algenty.github.io/flowcharting-repository/images/tooltip2_ani.gif)) + - Grafana style css and date + - Adding metrics with color according levels + - Adding colors on metrics in tooltip + - Adding date of change + - Adding label input for metric + - Variables/templates support, accept variable like ${} ([See example](https://algenty.github.io/flowcharting-repository/images/variable_ani.gif)) + - In xml definition + - In text mapping when type in sring for "Range to text" and "Value to text" + - In link ovewrite + - full shapes from draw.io included ([See example](https://algenty.github.io/flowcharting-repository/images/shapes_ani.gif)) + - Some optimizations + +### Fixed + - Optimization when refresh/render [(issue #15)](https://github.com/algenty/grafana-flowcharting/issues/15) + - No decimal fixed when 0 [(issue #23)](https://github.com/algenty/grafana-flowcharting/issues/23) + - Text substring and color [(issues #29)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Fix formatted text when label is html [(issues #21)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Work around a bug since Grafana 6+ [(issues 19426 grafana)](https://github.com/grafana/grafana/issues/19426) + +## [[0.3.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.3.0.zip) - 2019-05-07 +### Added + /!\ Possible breaking change with 0.2.0 and 0.2.5 but it will compatible with next release. + + - Migration process for next release. + - Dynamic documentation/Examples on popover (thx SCHKN) + - Params link option, add params of dashboard to link. + - Full review of code (ES6 Class mode) + - Unit test with jest to increase quality + - Fill/text/stoke rules on the same object is possible. + - Mapping selector helper (chain in mapping) + - Icon overlay state (display icon warning when NOK) + - Implemented the conditions to display text according to the states. + - new inspect Tab with : + - Renamer ID (double click on ID) + - State status + - Debug mode + - Custom Link Mapping overrite. + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + - Original Link [(Issue #9)](https://github.com/algenty/grafana-flowcharting/issues/9) + - Fixed Change the colors [(Issue #14)](https://github.com/algenty/grafana-flowcharting/issues/14) + - Fixed Unit [(Issue #12)](https://github.com/algenty/grafana-flowcharting/issues/12) + +## [[0.2.5]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.2.5.zip) - 2019-04-19 +### Added + - Mapping Helper for select object with mouse + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + +## [0.2.0] - 2019-03-18 +### Added + - Display graph through xml definition + - Calibrate display (scale, center, background) + - Inspect tab to test states and shape from graph. + - Mapping values and colors (use stroke in color options for arrows instead fill) + - String type added with range or value mapping. + - Date type added + - multi rules with expand/collapes for better display, possibility to reorg rules + +## [0.1.0] - 2019-09-02 +### Added + - Display graph with mxgraph libs + - Inspect tab to explore object in graph and preview colors + + +# Annex +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/Gruntfile.js b/data/plugins/grafana-flowcharting/Gruntfile.js new file mode 100644 index 0000000000000..d867a700eb70f --- /dev/null +++ b/data/plugins/grafana-flowcharting/Gruntfile.js @@ -0,0 +1,274 @@ +const path = require("path"); +const sass = require('node-sass'); +// const plugin = require('./src/plugin.js'); +const version = "0.5.0"; + +module.exports = (grunt) => { + require('load-grunt-tasks')(grunt); + + grunt.loadNpmTasks('grunt-git'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-sass'); + grunt.loadNpmTasks('grunt-contrib-compress'); + + grunt.initConfig({ + + clean: { + before_init: { + src: ['externals/**/*'], + }, + build: { + src: ['dist/**/*'], + }, + after_init: { + src: ['externals/**/.git'], + }, + }, + + copy: { + sanitizer_to_src: { + cwd: 'externals/drawio/src/main/webapp/js/sanitizer', + expand: true, + src: ['sanitizer.min.js'], + dest: 'src/libs', + }, + shapes_to_src: { + cwd: 'externals/drawio/src/main/webapp/shapes', + expand: true, + src: ['**/*.js'], + dest: 'src/libs/shapes', + }, + src_to_dist: { + cwd: 'src', + expand: true, + src: ['**/*', '!**/*.js', '!**/*.scss', '!img/**/*', '.*', '!__mocks__'], + dest: 'dist', + }, + vkbeautify_to_dist: { + cwd: 'node_modules', + expand: true, + src: ['vkbeautify/index.js'], + dest: 'dist/libs', + }, + libs_to_dist: { + cwd: 'node_modules', + expand: true, + src: ['mxgraph/javascript/dist/**/*', '!**/*.js'], + dest: 'dist/libs', + }, + res_to_dist: { + cwd: 'node_modules/mxgraph/javascript/src', + expand: true, + src: ['**/*', '!**/*.js'], + dest: 'dist/libs/mxgraph/javascript/dist', + }, + mxgraph_to_dist: { + cwd: 'externals/mxgraph/javascript/examples/grapheditor/www', + expand: true, + src: ['**/*', '!**/*.js'], + dest: 'dist/libs/mxgraph/javascript/dist', + }, + chartist_to_dist: { + cwd: 'node_modules/chartist/dist/chartist.min.js', + expand: true, + src: ['**/*', '!**/*.js'], + dest: 'dist/chartist', + }, + + + readme: { + expand: true, + src: ['README.md'], + dest: 'dist', + }, + + img_to_dist: { + cwd: 'src', + expand: true, + src: ['img/**/*'], + dest: 'dist/', + }, + + drawio_img_to_dist: { + cwd: 'externals/drawio/src/main/webapp', + expand: true, + src: ['img/**/*'], + dest: 'dist/', + }, + + stencils_to_dist: { + cwd: 'externals/drawio/src/main/webapp/stencils', + expand: true, + src: ['**/*', '!**/*.js'], + dest: 'dist/libs/mxgraph/javascript/dist/stencils', + }, + }, + + watch: { + rebuild_all: { + files: ['src/**/*', 'README.md'], + tasks: ['default'], + options: { + spawn: false, + }, + }, + microbuild: { + files: ['src/**/*'], + tasks: ['microbuild'], + options: { + spawn: false, + }, + }, + }, + + + sass: { + options: { + sourceMap: false, + implementation: sass, + }, + dist: { + files: { + 'dist/css/chartist-settings.css': 'src/css/_chartist-settings.scss', + 'dist/css/flowchart.dark.css': 'src/css/flowchart.dark.scss', + 'dist/css/flowchart.light.css': 'src/css/flowchart.light.scss', + }, + }, + }, + babel: { + options: { + sourceMap: false, + }, + dist: { + files: [{ + cwd: 'src', + expand: true, + src: ['**/*.js', '!mxHandler.js', "!Graph.js", "!init.js", "!utils.js", "!backup/**/*", "!__mocks__", "!libs/sanitizer.min.js"], + dest: 'dist', + ext: '.js', + }], + }, + }, + + webpack: { + mxgraph: { + entry: "./src/graph_class.js", + mode: "development", + module: { + rules: [ + { + test: /\.m?js$/, + exclude: /(node_modules|bower_components|externals)/, + use: { + loader: 'babel-loader', + }, + }, + ], + }, + output: { + path: path.resolve(process.cwd(), "./dist"), + filename: "graph_class.js", + library: "graph_class", + libraryTarget: "umd", + }, + externals: { + jquery: "jquery", + lodash: "lodash", + }, + }, + utils: { + entry: "./src/utils.js", + mode: "development", + module: { + rules: [ + { + test: /\.m?js$/, + exclude: /(node_modules|bower_components|externals)/, + use: { + loader: 'babel-loader', + }, + }, + ], + }, + output: { + path: path.resolve(process.cwd(), "./dist"), + filename: "utils.js", + library: "utils", + libraryTarget: "umd", + }, + externals: { + jquery: "jquery", + lodash: "lodash", + }, + }, + tooltip: { + entry: "./src/tooltipHandler.js", + mode: "development", + module: { + rules: [ + { + test: /\.m?js$/, + exclude: /(node_modules|bower_components|externals)/, + use: { + loader: 'babel-loader', + }, + }, + ], + }, + output: { + path: path.resolve(process.cwd(), "./dist"), + filename: "tooltipHandler.js", + library: "tooltipHandler", + libraryTarget: "umd", + }, + externals: { + jquery: "jquery", + lodash: "lodash", + }, + }, + }, + + compress: { + main: { + options: { + archive: "archives/agenty-flowcharting-panel-" + version + "-SNAPSHOT.zip", + }, + expand: true, + cwd: '.', + src: ['**/*', '!node_modules/**', '!bower_components/**', '!others/**', '!.git/**', '!archives/**', '!public/**', '!backup/**', '!spec/**', '!spec/__snapshots__/**','!externals/**'], + dest: 'grafana-flowcharting', + }, + }, + + gitclone: { + mxgraph: { + options: { + repository: 'https://github.com/jgraph/mxgraph', + branch: 'master', + depth: 1, + tags: "v4.0.4", + directory: 'externals/mxgraph', + verbose: true, + } + }, + drawio: { + options: { + repository: 'https://github.com/jgraph/drawio', + branch: 'master', + depth: 1, + tags : "v11.2.8", + directory: 'externals/drawio', + verbose: true, + } + } + }, + + }); + + grunt.registerTask('default', ['clean:build', 'copy:src_to_dist', 'sass', 'copy:readme', 'copy:img_to_dist', 'babel', 'webpack', 'copy:res_to_dist', 'copy:mxgraph_to_dist', 'copy:stencils_to_dist']); + grunt.registerTask('microbuild', ['sass', 'babel', 'webpack' ]); + grunt.registerTask('dev', ['default', 'watch:rebuild_all']); + grunt.registerTask('microdev', ['microbuild', 'watch:microbuild']); + grunt.registerTask('archive', ['default', 'compress:main']); + grunt.registerTask('init', ['clean:before_init','gitclone:mxgraph','gitclone:drawio','clean:after_init']); +}; diff --git a/data/plugins/grafana-flowcharting/LICENSE b/data/plugins/grafana-flowcharting/LICENSE new file mode 100644 index 0000000000000..261eeb9e9f8b2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/data/plugins/grafana-flowcharting/README.md b/data/plugins/grafana-flowcharting/README.md new file mode 100644 index 0000000000000..b307c0691f5c0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/README.md @@ -0,0 +1,252 @@ +# Grafana Plugin Flowcharting + +![Banner](https://github.com/algenty/flowcharting-repository/blob/master/images/banner_large.png?raw=true) + +Flowcharting is a plugin for grafana. It aims to display complexe diagram draws with [draw.io](https://draw.io/) like Visio. Few examples : + * Technical architecture schema (Legacy, Cloud, Azure, AWS, GCP, Kubernetes, Terraform) + * Diagrams (network, electric, flows ...) + * Organic plans + * Floorplans + * UML plan + * Workflows (Jenkins, Ansible Tower, OpenShift, ...) + +Draw your artwork and monitor it. + +## Use case example + - Technical schema example +![example 1](https://github.com/algenty/flowcharting-repository/blob/master/images/fc_archi_example.png?raw=true) + +See more example at draw.io + +# Getting started + + +# Documentation + + +# Project site + + +# Changelog + +## [[0.5.0 SNAPSHOT]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.5.0-SNAPSHOT.zip) - 2019-10-13 +### Added + - 2 new modes for "Update text value" ([See example](https://algenty.github.io/flowcharting-repository/images/append_mode_ani.png)) + - Append (Space) : Concat metrics with a space as a separator + - Append (New line) : Concat metrics with a line break + - Variabilization in "Url" for link mapping ([See example](https://algenty.github.io/flowcharting-repository/images/variable_link_ani.png)) + - New check box to allow download images from draw.io ([See example](https://algenty.github.io/flowcharting-repository/images/drawio_source_ani.png)) + - New editor option : + - Other editor draw.io like internal website draw.io are supported + - Choose the theme of editor identification_mode_ani + - New identification mode for shapes when mouse cursor is over the rules or the mapping ([See example](https://algenty.github.io/flowcharting-repository/images/identification_mode_ani.png)) + - Support Dynamic shapes like Floorplan, isometric plans and more ([See example](https://algenty.github.io/flowcharting-repository/images/dynamic_shapes_ani.png)) + - New color mode for no SVG object like pictures/cliparts/images ([See example](https://algenty.github.io/flowcharting-repository/images/colormode_ani.png)) + - Graphs in tooltip ([See example](https://algenty.github.io/flowcharting-repository/images/tooltip_graph.png)) + - Color graph with defined colors in threshold + - Size of graph ([See example](https://algenty.github.io/flowcharting-repository/images/graph_size.png)) + - Define the orientation in tooltip for each metrics/graph in tooltips : horizontal or vertical ([See example](https://algenty.github.io/flowcharting-repository/images/tooltip_direction_ani.png)) + - Some optimizations, Display is twice as fast on load. + +### Fixed + - Fix color to reset when "Color on" is "Always/Critical" and metric is OK + - Fix border to empty instead black when "color mode" is "Fill" [(issue #24)](https://github.com/algenty/grafana-flowcharting/issues/24) + - Fix error when "Value On" is not "When metric displayed" + - Fix Link [(issue #37)](https://github.com/algenty/grafana-flowcharting/issues/37) + - Fix hyperlink text appears in white over flowchart [(issue #45)](https://github.com/algenty/grafana-flowcharting/issues/45) + - Fix "Multiple FlowCharts On a Dashboard", when edit, both are the same draw [(issue #48)](https://github.com/algenty/grafana-flowcharting/issues/48) + - Fix options after reload or variable changed [(issue #44)](https://github.com/algenty/grafana-flowcharting/issues/48) + - Fix auto reset zoom/unzoom when data refreshed, only ESC or change options on flowchart reset zoom now [(issue #38)](https://github.com/algenty/grafana-flowcharting/issues/38) + - Fix error for BPNM shapes [(Issue #51)](https://github.com/algenty/grafana-flowcharting/issues/51) + - Fix display when center and scale are checked on flowchart options. + - Fix Zoom with mouse wheel for firefox and Edge. + +## [[0.4.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.4.0.zip) - 2019-09-26 +### Added + - Draw.io editor ([see example](https://algenty.github.io/flowcharting-repository/images/openEditor_ani.gif)) + - Open draw.io with dark theme for better rendering + - Display waiting screen when loading xml definition. + - Upgrading libraries + - mxGraph 4.0.4 + - draw.io 11.2.8 + - Graph definition + - Adding download function to download source by http on load. ([See example](https://algenty.github.io/flowcharting-repository/images/download_ani.gif)) + - Metric + - Adding string support for state (See example) + - Zoom [(issue #19)](https://github.com/algenty/grafana-flowcharting/issues/19) ([See example](https://algenty.github.io/flowcharting-repository/images/zoom2_ani.gif)) + - On the mouse pointer : Ctrl + Mouse + - Hold right button to move diagram. + - double click on shape to zoom on. + - Escape key to restore. + - Tooltip/popup support ([see example](https://algenty.github.io/flowcharting-repository/images/tooltip2_ani.gif)) + - Grafana style css and date + - Adding metrics with color according levels + - Adding colors on metrics in tooltip + - Adding date of change + - Adding label input for metric + - Variables/templates support, accept variable like ${} ([See example](https://algenty.github.io/flowcharting-repository/images/variable_ani.gif)) + - In xml definition + - In text mapping when type in sring for "Range to text" and "Value to text" + - In link ovewrite + - full shapes from draw.io included ([See example](https://algenty.github.io/flowcharting-repository/images/shapes_ani.gif)) + - Some optimizations on render and display. + +### Fixed + - Optimization when refresh/render [(issue #15)](https://github.com/algenty/grafana-flowcharting/issues/15) + - No decimal fixed when 0 [(issue #23)](https://github.com/algenty/grafana-flowcharting/issues/23) + - Text substring and color [(issues #29)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Fix formatted text when label is html [(issues #21)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Work around a bug since Grafana 6+ [(issues 19426 grafana)](https://github.com/grafana/grafana/issues/19426) + +## [[0.3.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.3.0.zip) - 2019-05-07 +### Added + + /!\ Possible breaking change with 0.2.0 and 0.2.5 but it will compatible with next release. + + - Migration process for next release. + - Dynamic documentation/Examples on popover (thx SCHKN) + - Params link option, add params of dashboard to link. + - Full review of code (ES6 Class mode) + - Unit test with jest to increase quality + - Fill/text/stoke rules on the same object is possible. + - Mapping selector helper (chain in mapping) + - Icon overlay state (display icon warning when NOK) + - Implemented the conditions to display text according to the states. + - new inspect Tab with : + - Renamer ID (double click on ID) + - State status + - Debug mode + - Custom Link Mapping overrite. + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + - Original Link [(Issue #9)](https://github.com/algenty/grafana-flowcharting/issues/9) + - Fixed Change the colors [(Issue #14)](https://github.com/algenty/grafana-flowcharting/issues/14) + - Fixed Unit [(Issue #12)](https://github.com/algenty/grafana-flowcharting/issues/12) + +## [[0.2.5]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.2.5.zip) - 2019-04-19 +### Added + - Mapping Helper for select object with mouse + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + +## [0.2.0] - 2019-03-18 +### Added + - Display graph through xml definition + - Calibrate display (scale, center, background) + - Inspect tab to test states and shape from graph. + - Mapping values and colors (use stroke in color options for arrows instead fill) + - String type added with range or value mapping. + - Date type added + - multi rules with expand/collapes for better display, possibility to reorg rules + +## [0.1.0] - 2019-09-02 +### Added + - Display graph with mxgraph libs + - Inspect tab to explore object in graph and preview colors + + +# Annex +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +# Cooming soon/Roadmap + +## 1.0 Next/Requested enhancements + - [ ] Custom libs. + - [X] Internat draw.io website [(issue #43)](https://github.com/algenty/grafana-flowcharting/issues/43) + - [X] Display tooltip (done in 0.4.0) + - [ ] Export SVG, png, options + - [X] Add data in tooltip (done in 0.4.0) + - [X] Use variables/templates in graph (done in 0.4.0) + - [X] Add custom stencils/libs from draw.io (done in 0.4.0) + - [ ] Support light theme + - [ ] Annotation + - [X] Url source download (done in 0.4.0) + - [ ] Special rule according level (hide, show, change form, move, infront, in back, attributes, ...) + - [ ] Custom variables like ${_label},${_value}, ${_alias}, ${_rule}, ${_level} ... + - [X] Variable support in link (done in 0.5.0) + - [X] Zoom/Unzoom (done in 0.4.0) + - [ ] Shared graph crosshair + - [ ] CSV source + - [ ] Map/search shape by value + - [ ] Variables support for downloaded source and compressed source + - [ ] Multi graph with auto link when errors + - [ ] Gradien Mode for color + - [ ] More than 3 colors + - [X] Graph in tooltip + - [ ] Histogram + - [ ] Merge Graphs + - [ ] Filter for null values in graph + - [ ] Inspector on series + - [X] New style for image : imageBackground, imageBorder + - [X] Support cloud images from draw.io + - [X] Support images from draw.io (done in 0.5.0) + - [X] Add append mode on text with CR or space (done in 0.5.0) + +# Support or Contact + + - Having troubles with flowcharting ? Check out [issues](https://github.com/algenty/grafana-flowcharting/issues) + - Email : + - Twitter : https://twitter.com/gf_flowcharting + +# Dependencies + +## Grafane flowcharting plugin dependencies + +* [AngularJS] - HTML enhanced for web apps! +* [lodash] - awesome web-based text editor +* [jquery] - Markdown parser done right. Fast and easy to extend. +* [mxGraph] - great UI boilerplate for modern web apps +* [pako] - Zlib port to javascript +* [vkbeautify] - Pretty prints and minifies XML/JSON/SQL/CSV +* [sanitizer] - Caja's HTML Sanitizer + +## Build dependencies + +* [jest] - Delightful JavaScript Testing +* [express] - Fast, unopinionated, minimalist web framework +* [babel] - Soft cushion between you all the cool new file formats being developed for node.js such as CoffeeScript, SASS, and Jade. +* [grunt] - The JavaScript Task Runner +* [webpack] - Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff. + +# Installation + +Flowcharting requires [Grafana](https://www.grafana.com/) v5+ to run (not tested lower version) +Download and install it + +## Manualy +```sh +$ cd $grafana_home/data/plugin +$ wget --no-check-certificate https://github.com/algenty/grafana-flowcharting/archive/master.zip +$ unzip master.zip +``` + +## grafana-cli + +```sh +grafana-cli plugins install agenty-flowcharting-panel +``` +## Build + +```sh +$ git clone https://github.com/algenty/grafana-flowcharting +$ yarn install --dev +$ yarn build init +$ yarn build +$ # Make zip file plugin in archives dir +$ yarn build archive +$ # for dev watching +$ yarn build dev +``` + +## Class diagram +https://www.draw.io/?chrome=0&lightbox=1&url=https%3A%2F%2Fraw.githubusercontent.com%2Falgenty%2Fflowcharting-repository%2Fmaster%2Fgraphs%2FFlowcharting_carto.drawio + +## Event diagram (In progress) +https://www.draw.io/?chrome=0&lightbox=1&url=https%3A%2F%2Fraw.githubusercontent.com%2Falgenty%2Fflowcharting-repository%2Fmaster%2Fgraphs%2FFlowcharting_Events.drawio diff --git a/data/plugins/grafana-flowcharting/dist/Graph_over.js b/data/plugins/grafana-flowcharting/dist/Graph_over.js new file mode 100644 index 0000000000000..e88ab82a84b8b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/Graph_over.js @@ -0,0 +1,99 @@ +"use strict"; + +mxTooltipHandler.prototype.show = function (tip, x, y) { + if (this.destroyed) return; + if (tip == null) return; + if (tip.length == 0) return; + + if (this.div == null) { + this.init(); + } + + if (!mxUtils.isNode(tip)) { + this.div.innerHTML = tip.replace(/\n/g, '
'); + } else { + this.div.innerHTML = ''; + this.div.appendChild(tip); + } + + this.$div.place_tt(x + 20, y); + this.div.style.visibility = ''; + mxUtils.fit(this.div); +}; + +mxTooltipHandler.prototype.init = function () { + if (this.div === null || this.div === undefined) { + this.$div = $('
'); + this.div = this.$div[0]; + mxEvent.addGestureListeners(this.div, mxUtils.bind(this, function (evt) { + this.hideTooltip(); + })); + } +}; + +mxTooltipHandler.prototype.hideTooltip = function () { + if (this.div != null) { + this.div.style.visibility = 'hidden'; + this.div.innerHTML = ''; + } +}; + +mxEvent.addMouseWheelListener = function (func, container) { + if (null != func) { + var c = function c(container) { + null == container && (container = window.event); + var c; + c = mxClient.IS_FF ? -container.detail / 2 : container.wheelDelta / 120; + 0 != c && func(container, 0 < c); + }; + + mxClient.IS_NS && null == document.documentMode ? mxEvent.addListener(mxClient.IS_GC && null != container ? container : window, mxClient.IS_SF || mxClient.IS_GC ? 'mousewheel' : 'DOMMouseScroll', c) : mxEvent.addListener(document, 'mousewheel', c); + } +}; + +mxStencilRegistry.libraries.mockup = [SHAPES_PATH + '/mockup/mxMockupButtons.js']; +mxStencilRegistry.libraries.arrows2 = [SHAPES_PATH + '/mxArrows.js']; +mxStencilRegistry.libraries.atlassian = [STENCIL_PATH + '/atlassian.xml', SHAPES_PATH + '/mxAtlassian.js']; +mxStencilRegistry.libraries.bpmn = [SHAPES_PATH + '/bpmn/mxBpmnShape2.js', STENCIL_PATH + '/bpmn.xml']; +mxStencilRegistry.libraries.dfd = [SHAPES_PATH + '/mxDFD.js']; +mxStencilRegistry.libraries.er = [SHAPES_PATH + '/er/mxER.js']; +mxStencilRegistry.libraries.flowchart = [SHAPES_PATH + '/mxFlowchart.js', STENCIL_PATH + '/flowchart.xml']; +mxStencilRegistry.libraries.ios = [SHAPES_PATH + '/mockup/mxMockupiOS.js']; +mxStencilRegistry.libraries.rackGeneral = [SHAPES_PATH + '/rack/mxRack.js', STENCIL_PATH + '/rack/general.xml']; +mxStencilRegistry.libraries.rackF5 = [STENCIL_PATH + '/rack/f5.xml']; +mxStencilRegistry.libraries.lean_mapping = [SHAPES_PATH + '/mxLeanMap.js', STENCIL_PATH + '/lean_mapping.xml']; +mxStencilRegistry.libraries.basic = [SHAPES_PATH + '/mxBasic.js', STENCIL_PATH + '/basic.xml']; +mxStencilRegistry.libraries.ios7icons = [STENCIL_PATH + '/ios7/icons.xml']; +mxStencilRegistry.libraries.ios7ui = [SHAPES_PATH + '/ios7/mxIOS7Ui.js', STENCIL_PATH + '/ios7/misc.xml']; +mxStencilRegistry.libraries.android = [SHAPES_PATH + '/mxAndroid.js', STENCIL_PATH + '/android/android.xml']; +mxStencilRegistry.libraries['electrical/miscellaneous'] = [SHAPES_PATH + '/mxElectrical.js', STENCIL_PATH + '/electrical/miscellaneous.xml']; +mxStencilRegistry.libraries['electrical/transmission'] = [SHAPES_PATH + '/mxElectrical.js', STENCIL_PATH + '/electrical/transmission.xml']; +mxStencilRegistry.libraries['electrical/logic_gates'] = [SHAPES_PATH + '/mxElectrical.js', STENCIL_PATH + '/electrical/logic_gates.xml']; +mxStencilRegistry.libraries['electrical/abstract'] = [SHAPES_PATH + '/mxElectrical.js', STENCIL_PATH + '/electrical/abstract.xml']; +mxStencilRegistry.libraries.infographic = [SHAPES_PATH + '/mxInfographic.js']; +mxStencilRegistry.libraries['mockup/buttons'] = [SHAPES_PATH + '/mockup/mxMockupButtons.js']; +mxStencilRegistry.libraries['mockup/containers'] = [SHAPES_PATH + '/mockup/mxMockupContainers.js']; +mxStencilRegistry.libraries['mockup/forms'] = [SHAPES_PATH + '/mockup/mxMockupForms.js']; +mxStencilRegistry.libraries['mockup/graphics'] = [SHAPES_PATH + '/mockup/mxMockupGraphics.js', STENCIL_PATH + '/mockup/misc.xml']; +mxStencilRegistry.libraries['mockup/markup'] = [SHAPES_PATH + '/mockup/mxMockupMarkup.js']; +mxStencilRegistry.libraries['mockup/misc'] = [SHAPES_PATH + '/mockup/mxMockupMisc.js', STENCIL_PATH + '/mockup/misc.xml']; +mxStencilRegistry.libraries['mockup/navigation'] = [SHAPES_PATH + '/mockup/mxMockupNavigation.js', STENCIL_PATH + '/mockup/misc.xml']; +mxStencilRegistry.libraries['mockup/text'] = [SHAPES_PATH + '/mockup/mxMockupText.js']; +mxStencilRegistry.libraries.floorplan = [SHAPES_PATH + '/mxFloorplan.js', STENCIL_PATH + '/floorplan.xml']; +mxStencilRegistry.libraries.bootstrap = [SHAPES_PATH + '/mxBootstrap.js', STENCIL_PATH + '/bootstrap.xml']; +mxStencilRegistry.libraries.gmdl = [SHAPES_PATH + '/mxGmdl.js', STENCIL_PATH + '/gmdl.xml']; +mxStencilRegistry.libraries.gcp2 = [SHAPES_PATH + '/mxGCP2.js', STENCIL_PATH + '/gcp2.xml']; +mxStencilRegistry.libraries.cabinets = [SHAPES_PATH + '/mxCabinets.js', STENCIL_PATH + '/cabinets.xml']; +mxStencilRegistry.libraries.archimate = [SHAPES_PATH + '/mxArchiMate.js']; +mxStencilRegistry.libraries.archimate3 = [SHAPES_PATH + '/mxArchiMate3.js']; +mxStencilRegistry.libraries.sysml = [SHAPES_PATH + '/mxSysML.js']; +mxStencilRegistry.libraries.eip = [SHAPES_PATH + '/mxEip.js', STENCIL_PATH + '/eip.xml']; +mxStencilRegistry.libraries.networks = [SHAPES_PATH + '/mxNetworks.js', STENCIL_PATH + '/networks.xml']; +mxStencilRegistry.libraries.aws3d = [SHAPES_PATH + '/mxAWS3D.js', STENCIL_PATH + '/aws3d.xml']; +mxStencilRegistry.libraries.aws4 = [SHAPES_PATH + '/mxAWS4.js', STENCIL_PATH + '/aws4.xml']; +mxStencilRegistry.libraries.aws4b = [SHAPES_PATH + '/mxAWS4.js', STENCIL_PATH + '/aws4.xml']; +mxStencilRegistry.libraries.veeam = [STENCIL_PATH + '/veeam/2d.xml', STENCIL_PATH + '/veeam/3d.xml', STENCIL_PATH + '/veeam/veeam.xml']; +mxStencilRegistry.libraries.pid2inst = [SHAPES_PATH + '/pid2/mxPidInstruments.js']; +mxStencilRegistry.libraries.pid2misc = [SHAPES_PATH + '/pid2/mxPidMisc.js', STENCIL_PATH + '/pid/misc.xml']; +mxStencilRegistry.libraries.pid2valves = [SHAPES_PATH + '/pid2/mxPidValves.js']; +mxStencilRegistry.libraries.pidFlowSensors = [STENCIL_PATH + '/pid/flow_sensors.xml']; diff --git a/data/plugins/grafana-flowcharting/dist/Init.js b/data/plugins/grafana-flowcharting/dist/Init.js new file mode 100644 index 0000000000000..24bf4e82f339b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/Init.js @@ -0,0 +1,18 @@ +"use strict"; + +window.urlParams = window.urlParams || {}; +window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE || 10485760; +window.MAX_AREA = window.MAX_AREA || 15000 * 15000; +window.EXPORT_URL = window.EXPORT_URL || '/export'; +window.SAVE_URL = window.SAVE_URL || '/save'; +window.OPEN_URL = window.OPEN_URL || '/open'; +window.RESOURCES_PATH = window.RESOURCES_PATH || 'resources'; +window.RESOURCE_BASE = window.RESOURCE_BASE || window.RESOURCES_PATH + '/grapheditor'; +window.STENCIL_PATH = window.STENCIL_PATH || 'stencils'; +window.IMAGE_PATH = window.IMAGE_PATH || 'images'; +window.STYLE_PATH = window.STYLE_PATH || 'styles'; +window.CSS_PATH = window.CSS_PATH || 'styles'; +window.OPEN_FORM = window.OPEN_FORM || 'open.html'; +window.mxBasePath = window.mxBasePath || '../../../src'; +window.mxLanguage = window.mxLanguage || urlParams['lang']; +window.mxLanguages = window.mxLanguages || ['de']; diff --git a/data/plugins/grafana-flowcharting/dist/README.md b/data/plugins/grafana-flowcharting/dist/README.md new file mode 100644 index 0000000000000..b307c0691f5c0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/README.md @@ -0,0 +1,252 @@ +# Grafana Plugin Flowcharting + +![Banner](https://github.com/algenty/flowcharting-repository/blob/master/images/banner_large.png?raw=true) + +Flowcharting is a plugin for grafana. It aims to display complexe diagram draws with [draw.io](https://draw.io/) like Visio. Few examples : + * Technical architecture schema (Legacy, Cloud, Azure, AWS, GCP, Kubernetes, Terraform) + * Diagrams (network, electric, flows ...) + * Organic plans + * Floorplans + * UML plan + * Workflows (Jenkins, Ansible Tower, OpenShift, ...) + +Draw your artwork and monitor it. + +## Use case example + - Technical schema example +![example 1](https://github.com/algenty/flowcharting-repository/blob/master/images/fc_archi_example.png?raw=true) + +See more example at draw.io + +# Getting started + + +# Documentation + + +# Project site + + +# Changelog + +## [[0.5.0 SNAPSHOT]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.5.0-SNAPSHOT.zip) - 2019-10-13 +### Added + - 2 new modes for "Update text value" ([See example](https://algenty.github.io/flowcharting-repository/images/append_mode_ani.png)) + - Append (Space) : Concat metrics with a space as a separator + - Append (New line) : Concat metrics with a line break + - Variabilization in "Url" for link mapping ([See example](https://algenty.github.io/flowcharting-repository/images/variable_link_ani.png)) + - New check box to allow download images from draw.io ([See example](https://algenty.github.io/flowcharting-repository/images/drawio_source_ani.png)) + - New editor option : + - Other editor draw.io like internal website draw.io are supported + - Choose the theme of editor identification_mode_ani + - New identification mode for shapes when mouse cursor is over the rules or the mapping ([See example](https://algenty.github.io/flowcharting-repository/images/identification_mode_ani.png)) + - Support Dynamic shapes like Floorplan, isometric plans and more ([See example](https://algenty.github.io/flowcharting-repository/images/dynamic_shapes_ani.png)) + - New color mode for no SVG object like pictures/cliparts/images ([See example](https://algenty.github.io/flowcharting-repository/images/colormode_ani.png)) + - Graphs in tooltip ([See example](https://algenty.github.io/flowcharting-repository/images/tooltip_graph.png)) + - Color graph with defined colors in threshold + - Size of graph ([See example](https://algenty.github.io/flowcharting-repository/images/graph_size.png)) + - Define the orientation in tooltip for each metrics/graph in tooltips : horizontal or vertical ([See example](https://algenty.github.io/flowcharting-repository/images/tooltip_direction_ani.png)) + - Some optimizations, Display is twice as fast on load. + +### Fixed + - Fix color to reset when "Color on" is "Always/Critical" and metric is OK + - Fix border to empty instead black when "color mode" is "Fill" [(issue #24)](https://github.com/algenty/grafana-flowcharting/issues/24) + - Fix error when "Value On" is not "When metric displayed" + - Fix Link [(issue #37)](https://github.com/algenty/grafana-flowcharting/issues/37) + - Fix hyperlink text appears in white over flowchart [(issue #45)](https://github.com/algenty/grafana-flowcharting/issues/45) + - Fix "Multiple FlowCharts On a Dashboard", when edit, both are the same draw [(issue #48)](https://github.com/algenty/grafana-flowcharting/issues/48) + - Fix options after reload or variable changed [(issue #44)](https://github.com/algenty/grafana-flowcharting/issues/48) + - Fix auto reset zoom/unzoom when data refreshed, only ESC or change options on flowchart reset zoom now [(issue #38)](https://github.com/algenty/grafana-flowcharting/issues/38) + - Fix error for BPNM shapes [(Issue #51)](https://github.com/algenty/grafana-flowcharting/issues/51) + - Fix display when center and scale are checked on flowchart options. + - Fix Zoom with mouse wheel for firefox and Edge. + +## [[0.4.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.4.0.zip) - 2019-09-26 +### Added + - Draw.io editor ([see example](https://algenty.github.io/flowcharting-repository/images/openEditor_ani.gif)) + - Open draw.io with dark theme for better rendering + - Display waiting screen when loading xml definition. + - Upgrading libraries + - mxGraph 4.0.4 + - draw.io 11.2.8 + - Graph definition + - Adding download function to download source by http on load. ([See example](https://algenty.github.io/flowcharting-repository/images/download_ani.gif)) + - Metric + - Adding string support for state (See example) + - Zoom [(issue #19)](https://github.com/algenty/grafana-flowcharting/issues/19) ([See example](https://algenty.github.io/flowcharting-repository/images/zoom2_ani.gif)) + - On the mouse pointer : Ctrl + Mouse + - Hold right button to move diagram. + - double click on shape to zoom on. + - Escape key to restore. + - Tooltip/popup support ([see example](https://algenty.github.io/flowcharting-repository/images/tooltip2_ani.gif)) + - Grafana style css and date + - Adding metrics with color according levels + - Adding colors on metrics in tooltip + - Adding date of change + - Adding label input for metric + - Variables/templates support, accept variable like ${} ([See example](https://algenty.github.io/flowcharting-repository/images/variable_ani.gif)) + - In xml definition + - In text mapping when type in sring for "Range to text" and "Value to text" + - In link ovewrite + - full shapes from draw.io included ([See example](https://algenty.github.io/flowcharting-repository/images/shapes_ani.gif)) + - Some optimizations on render and display. + +### Fixed + - Optimization when refresh/render [(issue #15)](https://github.com/algenty/grafana-flowcharting/issues/15) + - No decimal fixed when 0 [(issue #23)](https://github.com/algenty/grafana-flowcharting/issues/23) + - Text substring and color [(issues #29)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Fix formatted text when label is html [(issues #21)](https://github.com/algenty/grafana-flowcharting/issues/29) + - Work around a bug since Grafana 6+ [(issues 19426 grafana)](https://github.com/grafana/grafana/issues/19426) + +## [[0.3.0]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.3.0.zip) - 2019-05-07 +### Added + + /!\ Possible breaking change with 0.2.0 and 0.2.5 but it will compatible with next release. + + - Migration process for next release. + - Dynamic documentation/Examples on popover (thx SCHKN) + - Params link option, add params of dashboard to link. + - Full review of code (ES6 Class mode) + - Unit test with jest to increase quality + - Fill/text/stoke rules on the same object is possible. + - Mapping selector helper (chain in mapping) + - Icon overlay state (display icon warning when NOK) + - Implemented the conditions to display text according to the states. + - new inspect Tab with : + - Renamer ID (double click on ID) + - State status + - Debug mode + - Custom Link Mapping overrite. + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + - Original Link [(Issue #9)](https://github.com/algenty/grafana-flowcharting/issues/9) + - Fixed Change the colors [(Issue #14)](https://github.com/algenty/grafana-flowcharting/issues/14) + - Fixed Unit [(Issue #12)](https://github.com/algenty/grafana-flowcharting/issues/12) + +## [[0.2.5]](https://algenty.github.io/flowcharting-repository/archives/agenty-flowcharting-panel-0.2.5.zip) - 2019-04-19 +### Added + - Mapping Helper for select object with mouse + +### Fixed + - Substring replace on text [(Issue #8)](https://github.com/algenty/grafana-flowcharting/issues/8) + - Editor object not found Exception [(Issue #1)](https://github.com/algenty/grafana-flowcharting/issues/1) + +## [0.2.0] - 2019-03-18 +### Added + - Display graph through xml definition + - Calibrate display (scale, center, background) + - Inspect tab to test states and shape from graph. + - Mapping values and colors (use stroke in color options for arrows instead fill) + - String type added with range or value mapping. + - Date type added + - multi rules with expand/collapes for better display, possibility to reorg rules + +## [0.1.0] - 2019-09-02 +### Added + - Display graph with mxgraph libs + - Inspect tab to explore object in graph and preview colors + + +# Annex +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +# Cooming soon/Roadmap + +## 1.0 Next/Requested enhancements + - [ ] Custom libs. + - [X] Internat draw.io website [(issue #43)](https://github.com/algenty/grafana-flowcharting/issues/43) + - [X] Display tooltip (done in 0.4.0) + - [ ] Export SVG, png, options + - [X] Add data in tooltip (done in 0.4.0) + - [X] Use variables/templates in graph (done in 0.4.0) + - [X] Add custom stencils/libs from draw.io (done in 0.4.0) + - [ ] Support light theme + - [ ] Annotation + - [X] Url source download (done in 0.4.0) + - [ ] Special rule according level (hide, show, change form, move, infront, in back, attributes, ...) + - [ ] Custom variables like ${_label},${_value}, ${_alias}, ${_rule}, ${_level} ... + - [X] Variable support in link (done in 0.5.0) + - [X] Zoom/Unzoom (done in 0.4.0) + - [ ] Shared graph crosshair + - [ ] CSV source + - [ ] Map/search shape by value + - [ ] Variables support for downloaded source and compressed source + - [ ] Multi graph with auto link when errors + - [ ] Gradien Mode for color + - [ ] More than 3 colors + - [X] Graph in tooltip + - [ ] Histogram + - [ ] Merge Graphs + - [ ] Filter for null values in graph + - [ ] Inspector on series + - [X] New style for image : imageBackground, imageBorder + - [X] Support cloud images from draw.io + - [X] Support images from draw.io (done in 0.5.0) + - [X] Add append mode on text with CR or space (done in 0.5.0) + +# Support or Contact + + - Having troubles with flowcharting ? Check out [issues](https://github.com/algenty/grafana-flowcharting/issues) + - Email : + - Twitter : https://twitter.com/gf_flowcharting + +# Dependencies + +## Grafane flowcharting plugin dependencies + +* [AngularJS] - HTML enhanced for web apps! +* [lodash] - awesome web-based text editor +* [jquery] - Markdown parser done right. Fast and easy to extend. +* [mxGraph] - great UI boilerplate for modern web apps +* [pako] - Zlib port to javascript +* [vkbeautify] - Pretty prints and minifies XML/JSON/SQL/CSV +* [sanitizer] - Caja's HTML Sanitizer + +## Build dependencies + +* [jest] - Delightful JavaScript Testing +* [express] - Fast, unopinionated, minimalist web framework +* [babel] - Soft cushion between you all the cool new file formats being developed for node.js such as CoffeeScript, SASS, and Jade. +* [grunt] - The JavaScript Task Runner +* [webpack] - Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff. + +# Installation + +Flowcharting requires [Grafana](https://www.grafana.com/) v5+ to run (not tested lower version) +Download and install it + +## Manualy +```sh +$ cd $grafana_home/data/plugin +$ wget --no-check-certificate https://github.com/algenty/grafana-flowcharting/archive/master.zip +$ unzip master.zip +``` + +## grafana-cli + +```sh +grafana-cli plugins install agenty-flowcharting-panel +``` +## Build + +```sh +$ git clone https://github.com/algenty/grafana-flowcharting +$ yarn install --dev +$ yarn build init +$ yarn build +$ # Make zip file plugin in archives dir +$ yarn build archive +$ # for dev watching +$ yarn build dev +``` + +## Class diagram +https://www.draw.io/?chrome=0&lightbox=1&url=https%3A%2F%2Fraw.githubusercontent.com%2Falgenty%2Fflowcharting-repository%2Fmaster%2Fgraphs%2FFlowcharting_carto.drawio + +## Event diagram (In progress) +https://www.draw.io/?chrome=0&lightbox=1&url=https%3A%2F%2Fraw.githubusercontent.com%2Falgenty%2Fflowcharting-repository%2Fmaster%2Fgraphs%2FFlowcharting_Events.drawio diff --git a/data/plugins/grafana-flowcharting/dist/Shapes.js b/data/plugins/grafana-flowcharting/dist/Shapes.js new file mode 100644 index 0000000000000..00caf419a6211 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/Shapes.js @@ -0,0 +1,3096 @@ +"use strict"; + +(function () { + function CubeShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(CubeShape, mxCylinder); + CubeShape.prototype.size = 20; + + CubeShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + + if (isForeground) { + path.moveTo(s, h); + path.lineTo(s, s); + path.lineTo(0, 0); + path.moveTo(s, s); + path.lineTo(w, s); + path.end(); + } else { + path.moveTo(0, 0); + path.lineTo(w - s, 0); + path.lineTo(w, s); + path.lineTo(w, h); + path.lineTo(s, h); + path.lineTo(0, h - s); + path.lineTo(0, 0); + path.close(); + path.end(); + } + }; + + CubeShape.prototype.getLabelMargins = function (rect) { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) { + var s = parseFloat(mxUtils.getValue(this.style, 'size', this.size)) * this.scale; + return new mxRectangle(s, s, 0, 0); + } + + return null; + }; + + mxCellRenderer.registerShape('cube', CubeShape); + var tan30 = Math.tan(mxUtils.toRadians(30)); + var tan30Dx = (0.5 - tan30) / 2; + + function IsoRectangleShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(IsoRectangleShape, mxActor); + IsoRectangleShape.prototype.size = 20; + + IsoRectangleShape.prototype.redrawPath = function (path, x, y, w, h) { + var m = Math.min(w, h / tan30); + path.translate((w - m) / 2, (h - m) / 2 + m / 4); + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, m * tan30Dx); + path.lineTo(m, 0.25 * m); + path.lineTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(0, 0.25 * m); + path.close(); + path.end(); + }; + + mxCellRenderer.registerShape('isoRectangle', IsoRectangleShape); + + function IsoCubeShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(IsoCubeShape, mxCylinder); + IsoCubeShape.prototype.size = 20; + + IsoCubeShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + var m = Math.min(w, h / (0.5 + tan30)); + + if (isForeground) { + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(m, 0.25 * m); + path.moveTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(0.5 * m, (1 - tan30Dx) * m); + path.end(); + } else { + path.translate((w - m) / 2, (h - m) / 2); + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, m * tan30Dx); + path.lineTo(m, 0.25 * m); + path.lineTo(m, 0.75 * m); + path.lineTo(0.5 * m, (1 - tan30Dx) * m); + path.lineTo(0, 0.75 * m); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('isoCube', IsoCubeShape); + + function DataStoreShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(DataStoreShape, mxCylinder); + + DataStoreShape.prototype.redrawPath = function (c, x, y, w, h, isForeground) { + var dy = Math.min(h / 2, Math.round(h / 8) + this.strokewidth - 1); + + if (isForeground && this.fill != null || !isForeground && this.fill == null) { + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + if (!isForeground) { + c.stroke(); + c.begin(); + } + + c.translate(0, dy / 2); + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + if (!isForeground) { + c.stroke(); + c.begin(); + } + + c.translate(0, dy / 2); + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + if (!isForeground) { + c.stroke(); + c.begin(); + } + + c.translate(0, -dy); + } + + if (!isForeground) { + c.moveTo(0, dy); + c.curveTo(0, -dy / 3, w, -dy / 3, w, dy); + c.lineTo(w, h - dy); + c.curveTo(w, h + dy / 3, 0, h + dy / 3, 0, h - dy); + c.close(); + } + }; + + DataStoreShape.prototype.getLabelMargins = function (rect) { + return new mxRectangle(0, 2.5 * Math.min(rect.height / 2, Math.round(rect.height / 8) + this.strokewidth - 1) * this.scale, 0, 0); + }; + + mxCellRenderer.registerShape('datastore', DataStoreShape); + + function NoteShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(NoteShape, mxCylinder); + NoteShape.prototype.size = 30; + + NoteShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + + if (isForeground) { + path.moveTo(w - s, 0); + path.lineTo(w - s, s); + path.lineTo(w, s); + path.end(); + } else { + path.moveTo(0, 0); + path.lineTo(w - s, 0); + path.lineTo(w, s); + path.lineTo(w, h); + path.lineTo(0, h); + path.lineTo(0, 0); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('note', NoteShape); + + function SwitchShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(SwitchShape, mxActor); + + SwitchShape.prototype.redrawPath = function (c, x, y, w, h) { + var curve = 0.5; + c.moveTo(0, 0); + c.quadTo(w / 2, h * curve, w, 0); + c.quadTo(w * (1 - curve), h / 2, w, h); + c.quadTo(w / 2, h * (1 - curve), 0, h); + c.quadTo(w * curve, h / 2, 0, 0); + c.end(); + }; + + mxCellRenderer.registerShape('switch', SwitchShape); + + function FolderShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(FolderShape, mxCylinder); + FolderShape.prototype.tabWidth = 60; + FolderShape.prototype.tabHeight = 20; + FolderShape.prototype.tabPosition = 'right'; + + FolderShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight)))); + var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); + + if (isForeground) { + if (tp == 'left') { + path.moveTo(0, dy); + path.lineTo(dx, dy); + } else { + path.moveTo(w - dx, dy); + path.lineTo(w, dy); + } + + path.end(); + } else { + if (tp == 'left') { + path.moveTo(0, 0); + path.lineTo(dx, 0); + path.lineTo(dx, dy); + path.lineTo(w, dy); + } else { + path.moveTo(0, dy); + path.lineTo(w - dx, dy); + path.lineTo(w - dx, 0); + path.lineTo(w, 0); + } + + path.lineTo(w, h); + path.lineTo(0, h); + path.lineTo(0, dy); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('folder', FolderShape); + + function CardShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CardShape, mxActor); + CardShape.prototype.size = 30; + + CardShape.prototype.isRoundable = function () { + return true; + }; + + CardShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w, 0), new mxPoint(w, h), new mxPoint(0, h), new mxPoint(0, s)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('card', CardShape); + + function TapeShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(TapeShape, mxActor); + TapeShape.prototype.size = 0.4; + + TapeShape.prototype.redrawPath = function (c, x, y, w, h) { + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + c.moveTo(0, dy / 2); + c.quadTo(w / 4, dy * fy, w / 2, dy / 2); + c.quadTo(w * 3 / 4, dy * (1 - fy), w, dy / 2); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.close(); + c.end(); + }; + + TapeShape.prototype.getLabelBounds = function (rect) { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) { + var size = mxUtils.getValue(this.style, 'size', this.size); + var w = rect.width; + var h = rect.height; + + if (this.direction == null || this.direction == mxConstants.DIRECTION_EAST || this.direction == mxConstants.DIRECTION_WEST) { + var dy = h * size; + return new mxRectangle(rect.x, rect.y + dy, w, h - 2 * dy); + } else { + var dx = w * size; + return new mxRectangle(rect.x + dx, rect.y, w - 2 * dx, h); + } + } + + return rect; + }; + + mxCellRenderer.registerShape('tape', TapeShape); + + function DocumentShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(DocumentShape, mxActor); + DocumentShape.prototype.size = 0.3; + + DocumentShape.prototype.getLabelMargins = function (rect) { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue(this.style, 'size', this.size)) * rect.height); + } + + return null; + }; + + DocumentShape.prototype.redrawPath = function (c, x, y, w, h) { + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('document', DocumentShape); + var cylinderGetCylinderSize = mxCylinder.prototype.getCylinderSize; + + mxCylinder.prototype.getCylinderSize = function (x, y, w, h) { + var size = mxUtils.getValue(this.style, 'size'); + + if (size != null) { + return h * Math.max(0, Math.min(1, size)); + } else { + return cylinderGetCylinderSize.apply(this, arguments); + } + }; + + mxCylinder.prototype.getLabelMargins = function (rect) { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) { + var size = mxUtils.getValue(this.style, 'size', 0.15) * 2; + return new mxRectangle(0, Math.min(this.maxHeight * this.scale, rect.height * size), 0, 0); + } + + return null; + }; + + function ParallelogramShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(ParallelogramShape, mxActor); + ParallelogramShape.prototype.size = 0.2; + + ParallelogramShape.prototype.isRoundable = function () { + return true; + }; + + ParallelogramShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(dx, 0), new mxPoint(w, 0), new mxPoint(w - dx, h)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('parallelogram', ParallelogramShape); + + function TrapezoidShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(TrapezoidShape, mxActor); + TrapezoidShape.prototype.size = 0.2; + + TrapezoidShape.prototype.isRoundable = function () { + return true; + }; + + TrapezoidShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = w * Math.max(0, Math.min(0.5, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(dx, 0), new mxPoint(w - dx, 0), new mxPoint(w, h)], this.isRounded, arcSize, true); + }; + + mxCellRenderer.registerShape('trapezoid', TrapezoidShape); + + function CurlyBracketShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CurlyBracketShape, mxActor); + CurlyBracketShape.prototype.size = 0.5; + + CurlyBracketShape.prototype.redrawPath = function (c, x, y, w, h) { + c.setFillColor(null); + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(w, 0), new mxPoint(s, 0), new mxPoint(s, h / 2), new mxPoint(0, h / 2), new mxPoint(s, h / 2), new mxPoint(s, h), new mxPoint(w, h)], this.isRounded, arcSize, false); + c.end(); + }; + + mxCellRenderer.registerShape('curlyBracket', CurlyBracketShape); + + function ParallelMarkerShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(ParallelMarkerShape, mxActor); + + ParallelMarkerShape.prototype.redrawPath = function (c, x, y, w, h) { + c.setStrokeWidth(1); + c.setFillColor(this.stroke); + var w2 = w / 5; + c.rect(0, 0, w2, h); + c.fillAndStroke(); + c.rect(2 * w2, 0, w2, h); + c.fillAndStroke(); + c.rect(4 * w2, 0, w2, h); + c.fillAndStroke(); + }; + + mxCellRenderer.registerShape('parallelMarker', ParallelMarkerShape); + + function HandJiggle(canvas, defaultVariation) { + this.canvas = canvas; + this.canvas.setLineJoin('round'); + this.canvas.setLineCap('round'); + this.defaultVariation = defaultVariation; + this.originalLineTo = this.canvas.lineTo; + this.canvas.lineTo = mxUtils.bind(this, HandJiggle.prototype.lineTo); + this.originalMoveTo = this.canvas.moveTo; + this.canvas.moveTo = mxUtils.bind(this, HandJiggle.prototype.moveTo); + this.originalClose = this.canvas.close; + this.canvas.close = mxUtils.bind(this, HandJiggle.prototype.close); + this.originalQuadTo = this.canvas.quadTo; + this.canvas.quadTo = mxUtils.bind(this, HandJiggle.prototype.quadTo); + this.originalCurveTo = this.canvas.curveTo; + this.canvas.curveTo = mxUtils.bind(this, HandJiggle.prototype.curveTo); + this.originalArcTo = this.canvas.arcTo; + this.canvas.arcTo = mxUtils.bind(this, HandJiggle.prototype.arcTo); + } + + ; + + HandJiggle.prototype.moveTo = function (endX, endY) { + this.originalMoveTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + this.firstX = endX; + this.firstY = endY; + }; + + HandJiggle.prototype.close = function () { + if (this.firstX != null && this.firstY != null) { + this.lineTo(this.firstX, this.firstY); + this.originalClose.apply(this.canvas, arguments); + } + + this.originalClose.apply(this.canvas, arguments); + }; + + HandJiggle.prototype.quadTo = function (x1, y1, x2, y2) { + this.originalQuadTo.apply(this.canvas, arguments); + this.lastX = x2; + this.lastY = y2; + }; + + HandJiggle.prototype.curveTo = function (x1, y1, x2, y2, x3, y3) { + this.originalCurveTo.apply(this.canvas, arguments); + this.lastX = x3; + this.lastY = y3; + }; + + HandJiggle.prototype.arcTo = function (rx, ry, angle, largeArcFlag, sweepFlag, x, y) { + this.originalArcTo.apply(this.canvas, arguments); + this.lastX = x; + this.lastY = y; + }; + + HandJiggle.prototype.lineTo = function (endX, endY) { + if (this.lastX != null && this.lastY != null) { + var sign = function sign(x) { + return typeof x === 'number' ? x ? x < 0 ? -1 : 1 : x === x ? 0 : NaN : NaN; + }; + + var dx = Math.abs(endX - this.lastX); + var dy = Math.abs(endY - this.lastY); + var dist = Math.sqrt(dx * dx + dy * dy); + + if (dist < 2) { + this.originalLineTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + return; + } + + var segs = Math.round(dist / 10); + var variation = this.defaultVariation; + + if (segs < 5) { + segs = 5; + variation /= 3; + } + + var stepX = sign(endX - this.lastX) * dx / segs; + var stepY = sign(endY - this.lastY) * dy / segs; + var fx = dx / dist; + var fy = dy / dist; + + for (var s = 0; s < segs; s++) { + var x = stepX * s + this.lastX; + var y = stepY * s + this.lastY; + var offset = (Math.random() - 0.5) * variation; + this.originalLineTo.call(this.canvas, x - offset * fy, y - offset * fx); + } + + this.originalLineTo.call(this.canvas, endX, endY); + this.lastX = endX; + this.lastY = endY; + } else { + this.originalLineTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + } + }; + + HandJiggle.prototype.destroy = function () { + this.canvas.lineTo = this.originalLineTo; + this.canvas.moveTo = this.originalMoveTo; + this.canvas.close = this.originalClose; + this.canvas.quadTo = this.originalQuadTo; + this.canvas.curveTo = this.originalCurveTo; + this.canvas.arcTo = this.originalArcTo; + }; + + var mxShapePaint0 = mxShape.prototype.paint; + mxShape.prototype.defaultJiggle = 1.5; + + mxShape.prototype.paint = function (c) { + if (this.style != null && mxUtils.getValue(this.style, 'comic', '0') != '0' && c.handHiggle == null) { + c.handJiggle = new HandJiggle(c, mxUtils.getValue(this.style, 'jiggle', this.defaultJiggle)); + } + + mxShapePaint0.apply(this, arguments); + + if (c.handJiggle != null) { + c.handJiggle.destroy(); + delete c.handJiggle; + } + }; + + mxRhombus.prototype.defaultJiggle = 2; + var mxRectangleShapeIsHtmlAllowed0 = mxRectangleShape.prototype.isHtmlAllowed; + + mxRectangleShape.prototype.isHtmlAllowed = function () { + return (this.style == null || mxUtils.getValue(this.style, 'comic', '0') == '0') && mxRectangleShapeIsHtmlAllowed0.apply(this, arguments); + }; + + var mxRectangleShapePaintBackground0 = mxRectangleShape.prototype.paintBackground; + + mxRectangleShape.prototype.paintBackground = function (c, x, y, w, h) { + if (c.handJiggle == null) { + mxRectangleShapePaintBackground0.apply(this, arguments); + } else { + var events = true; + + if (this.style != null) { + events = mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '1'; + } + + if (events || this.fill != null && this.fill != mxConstants.NONE || this.stroke != null && this.stroke != mxConstants.NONE) { + if (!events && (this.fill == null || this.fill == mxConstants.NONE)) { + c.pointerEvents = false; + } + + c.begin(); + + if (this.isRounded) { + var r = 0; + + if (mxUtils.getValue(this.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') { + r = Math.min(w / 2, Math.min(h / 2, mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2)); + } else { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + r = Math.min(w * f, h * f); + } + + c.moveTo(x + r, y); + c.lineTo(x + w - r, y); + c.quadTo(x + w, y, x + w, y + r); + c.lineTo(x + w, y + h - r); + c.quadTo(x + w, y + h, x + w - r, y + h); + c.lineTo(x + r, y + h); + c.quadTo(x, y + h, x, y + h - r); + c.lineTo(x, y + r); + c.quadTo(x, y, x + r, y); + } else { + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x, y); + } + + c.close(); + c.end(); + c.fillAndStroke(); + } + } + }; + + var mxRectangleShapePaintForeground0 = mxRectangleShape.prototype.paintForeground; + + mxRectangleShape.prototype.paintForeground = function (c, x, y, w, h) { + if (c.handJiggle == null) { + mxRectangleShapePaintForeground0.apply(this, arguments); + } + }; + + function ProcessShape() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(ProcessShape, mxRectangleShape); + ProcessShape.prototype.size = 0.1; + + ProcessShape.prototype.isHtmlAllowed = function () { + return false; + }; + + ProcessShape.prototype.getLabelBounds = function (rect) { + if (mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, true) == (this.direction == null || this.direction == mxConstants.DIRECTION_EAST || this.direction == mxConstants.DIRECTION_WEST)) { + var w = rect.width; + var h = rect.height; + var r = new mxRectangle(rect.x, rect.y, w, h); + var inset = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + if (this.isRounded) { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + r.x += Math.round(inset); + r.width -= Math.round(2 * inset); + return r; + } + + return rect; + }; + + ProcessShape.prototype.paintForeground = function (c, x, y, w, h) { + var inset = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + if (this.isRounded) { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + inset = Math.round(inset); + c.begin(); + c.moveTo(x + inset, y); + c.lineTo(x + inset, y + h); + c.moveTo(x + w - inset, y); + c.lineTo(x + w - inset, y + h); + c.end(); + c.stroke(); + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('process', ProcessShape); + + function TransparentShape() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(TransparentShape, mxRectangleShape); + + TransparentShape.prototype.paintBackground = function (c, x, y, w, h) { + c.setFillColor(mxConstants.NONE); + c.rect(x, y, w, h); + c.fill(); + }; + + TransparentShape.prototype.paintForeground = function (c, x, y, w, h) {}; + + mxCellRenderer.registerShape('transparent', TransparentShape); + + function CalloutShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CalloutShape, mxHexagon); + CalloutShape.prototype.size = 30; + CalloutShape.prototype.position = 0.5; + CalloutShape.prototype.position2 = 0.5; + CalloutShape.prototype.base = 20; + + CalloutShape.prototype.getLabelMargins = function () { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue(this.style, 'size', this.size)) * this.scale); + }; + + CalloutShape.prototype.isRoundable = function () { + return true; + }; + + CalloutShape.prototype.redrawPath = function (c, x, y, w, h) { + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + var s = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var dx = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'position', this.position)))); + var dx2 = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'position2', this.position2)))); + var base = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'base', this.base)))); + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, h - s), new mxPoint(Math.min(w, dx + base), h - s), new mxPoint(dx2, h), new mxPoint(Math.max(0, dx), h - s), new mxPoint(0, h - s)], this.isRounded, arcSize, true, [4]); + }; + + mxCellRenderer.registerShape('callout', CalloutShape); + + function StepShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(StepShape, mxActor); + StepShape.prototype.size = 0.2; + StepShape.prototype.fixedSize = 20; + + StepShape.prototype.isRoundable = function () { + return true; + }; + + StepShape.prototype.redrawPath = function (c, x, y, w, h) { + var fixed = mxUtils.getValue(this.style, 'fixedSize', '0') != '0'; + var s = fixed ? Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.fixedSize)))) : w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w - s, 0), new mxPoint(w, h / 2), new mxPoint(w - s, h), new mxPoint(0, h), new mxPoint(s, h / 2)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('step', StepShape); + + function HexagonShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(HexagonShape, mxHexagon); + HexagonShape.prototype.size = 0.25; + + HexagonShape.prototype.isRoundable = function () { + return true; + }; + + HexagonShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w - s, 0), new mxPoint(w, 0.5 * h), new mxPoint(w - s, h), new mxPoint(s, h), new mxPoint(0, 0.5 * h)], this.isRounded, arcSize, true); + }; + + mxCellRenderer.registerShape('hexagon', HexagonShape); + + function PlusShape() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(PlusShape, mxRectangleShape); + + PlusShape.prototype.isHtmlAllowed = function () { + return false; + }; + + PlusShape.prototype.paintForeground = function (c, x, y, w, h) { + var border = Math.min(w / 5, h / 5) + 1; + c.begin(); + c.moveTo(x + w / 2, y + border); + c.lineTo(x + w / 2, y + h - border); + c.moveTo(x + border, y + h / 2); + c.lineTo(x + w - border, y + h / 2); + c.end(); + c.stroke(); + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('plus', PlusShape); + var mxRhombusPaintVertexShape = mxRhombus.prototype.paintVertexShape; + + mxRhombus.prototype.getLabelBounds = function (rect) { + if (this.style['double'] == 1) { + var margin = (Math.max(2, this.strokewidth + 1) * 2 + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0)) * this.scale; + return new mxRectangle(rect.x + margin, rect.y + margin, rect.width - 2 * margin, rect.height - 2 * margin); + } + + return rect; + }; + + mxRhombus.prototype.paintVertexShape = function (c, x, y, w, h) { + mxRhombusPaintVertexShape.apply(this, arguments); + + if (!this.outline && this.style['double'] == 1) { + var margin = Math.max(2, this.strokewidth + 1) * 2 + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0); + x += margin; + y += margin; + w -= 2 * margin; + h -= 2 * margin; + + if (w > 0 && h > 0) { + c.setShadow(false); + mxRhombusPaintVertexShape.apply(this, [c, x, y, w, h]); + } + } + }; + + function ExtendedShape() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(ExtendedShape, mxRectangleShape); + + ExtendedShape.prototype.isHtmlAllowed = function () { + return false; + }; + + ExtendedShape.prototype.getLabelBounds = function (rect) { + if (this.style['double'] == 1) { + var margin = (Math.max(2, this.strokewidth + 1) + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0)) * this.scale; + return new mxRectangle(rect.x + margin, rect.y + margin, rect.width - 2 * margin, rect.height - 2 * margin); + } + + return rect; + }; + + ExtendedShape.prototype.paintForeground = function (c, x, y, w, h) { + if (this.style != null) { + if (!this.outline && this.style['double'] == 1) { + var margin = Math.max(2, this.strokewidth + 1) + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0); + x += margin; + y += margin; + w -= 2 * margin; + h -= 2 * margin; + + if (w > 0 && h > 0) { + mxRectangleShape.prototype.paintBackground.apply(this, arguments); + } + } + + c.setDashed(false); + var counter = 0; + var shape = null; + + do { + shape = mxCellRenderer.defaultShapes[this.style['symbol' + counter]]; + + if (shape != null) { + var align = this.style['symbol' + counter + 'Align']; + var valign = this.style['symbol' + counter + 'VerticalAlign']; + var width = this.style['symbol' + counter + 'Width']; + var height = this.style['symbol' + counter + 'Height']; + var spacing = this.style['symbol' + counter + 'Spacing'] || 0; + var vspacing = this.style['symbol' + counter + 'VSpacing'] || spacing; + var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; + + if (arcspacing != null) { + var arcSize = this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + spacing += arcSize; + vspacing += arcSize; + } + + var x2 = x; + var y2 = y; + + if (align == mxConstants.ALIGN_CENTER) { + x2 += (w - width) / 2; + } else if (align == mxConstants.ALIGN_RIGHT) { + x2 += w - width - spacing; + } else { + x2 += spacing; + } + + if (valign == mxConstants.ALIGN_MIDDLE) { + y2 += (h - height) / 2; + } else if (valign == mxConstants.ALIGN_BOTTOM) { + y2 += h - height - vspacing; + } else { + y2 += vspacing; + } + + c.save(); + var tmp = new shape(); + tmp.style = this.style; + shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); + c.restore(); + } + + counter++; + } while (shape != null); + } + + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('ext', ExtendedShape); + + function MessageShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(MessageShape, mxCylinder); + + MessageShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + if (isForeground) { + path.moveTo(0, 0); + path.lineTo(w / 2, h / 2); + path.lineTo(w, 0); + path.end(); + } else { + path.moveTo(0, 0); + path.lineTo(w, 0); + path.lineTo(w, h); + path.lineTo(0, h); + path.close(); + } + }; + + mxCellRenderer.registerShape('message', MessageShape); + + function UmlActorShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(UmlActorShape, mxShape); + + UmlActorShape.prototype.paintBackground = function (c, x, y, w, h) { + c.translate(x, y); + c.ellipse(w / 4, 0, w / 2, h / 4); + c.fillAndStroke(); + c.begin(); + c.moveTo(w / 2, h / 4); + c.lineTo(w / 2, 2 * h / 3); + c.moveTo(w / 2, h / 3); + c.lineTo(0, h / 3); + c.moveTo(w / 2, h / 3); + c.lineTo(w, h / 3); + c.moveTo(w / 2, 2 * h / 3); + c.lineTo(0, h); + c.moveTo(w / 2, 2 * h / 3); + c.lineTo(w, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlActor', UmlActorShape); + + function UmlBoundaryShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(UmlBoundaryShape, mxShape); + + UmlBoundaryShape.prototype.getLabelMargins = function (rect) { + return new mxRectangle(rect.width / 6, 0, 0, 0); + }; + + UmlBoundaryShape.prototype.paintBackground = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h / 4); + c.lineTo(0, h * 3 / 4); + c.end(); + c.stroke(); + c.begin(); + c.moveTo(0, h / 2); + c.lineTo(w / 6, h / 2); + c.end(); + c.stroke(); + c.ellipse(w / 6, 0, w * 5 / 6, h); + c.fillAndStroke(); + }; + + mxCellRenderer.registerShape('umlBoundary', UmlBoundaryShape); + + function UmlEntityShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(UmlEntityShape, mxEllipse); + + UmlEntityShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + c.begin(); + c.moveTo(x + w / 8, y + h); + c.lineTo(x + w * 7 / 8, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlEntity', UmlEntityShape); + + function UmlDestroyShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(UmlDestroyShape, mxShape); + + UmlDestroyShape.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w, 0); + c.lineTo(0, h); + c.moveTo(0, 0); + c.lineTo(w, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlDestroy', UmlDestroyShape); + + function UmlControlShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(UmlControlShape, mxShape); + + UmlControlShape.prototype.getLabelBounds = function (rect) { + return new mxRectangle(rect.x, rect.y + rect.height / 8, rect.width, rect.height * 7 / 8); + }; + + UmlControlShape.prototype.paintBackground = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 3 / 8, h / 8 * 1.1); + c.lineTo(w * 5 / 8, 0); + c.end(); + c.stroke(); + c.ellipse(0, h / 8, w, h * 7 / 8); + c.fillAndStroke(); + }; + + UmlControlShape.prototype.paintForeground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 3 / 8, h / 8 * 1.1); + c.lineTo(w * 5 / 8, h / 4); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlControl', UmlControlShape); + + function UmlLifeline() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(UmlLifeline, mxRectangleShape); + UmlLifeline.prototype.size = 40; + + UmlLifeline.prototype.isHtmlAllowed = function () { + return false; + }; + + UmlLifeline.prototype.getLabelBounds = function (rect) { + var size = Math.max(0, Math.min(rect.height, parseFloat(mxUtils.getValue(this.style, 'size', this.size)) * this.scale)); + return new mxRectangle(rect.x, rect.y, rect.width, size); + }; + + UmlLifeline.prototype.paintBackground = function (c, x, y, w, h) { + var size = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var participant = mxUtils.getValue(this.style, 'participant'); + + if (participant == null || this.state == null) { + mxRectangleShape.prototype.paintBackground.call(this, c, x, y, w, size); + } else { + var ctor = this.state.view.graph.cellRenderer.getShape(participant); + + if (ctor != null && ctor != UmlLifeline) { + var shape = new ctor(); + shape.apply(this.state); + c.save(); + shape.paintVertexShape(c, x, y, w, size); + c.restore(); + } + } + + if (size < h) { + c.setDashed(true); + c.begin(); + c.moveTo(x + w / 2, y + size); + c.lineTo(x + w / 2, y + h); + c.end(); + c.stroke(); + } + }; + + UmlLifeline.prototype.paintForeground = function (c, x, y, w, h) { + var size = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + mxRectangleShape.prototype.paintForeground.call(this, c, x, y, w, Math.min(h, size)); + }; + + mxCellRenderer.registerShape('umlLifeline', UmlLifeline); + + function UmlFrame() { + mxShape.call(this); + } + + ; + mxUtils.extend(UmlFrame, mxShape); + UmlFrame.prototype.width = 60; + UmlFrame.prototype.height = 30; + UmlFrame.prototype.corner = 10; + + UmlFrame.prototype.getLabelMargins = function (rect) { + return new mxRectangle(0, 0, rect.width - parseFloat(mxUtils.getValue(this.style, 'width', this.width) * this.scale), rect.height - parseFloat(mxUtils.getValue(this.style, 'height', this.height) * this.scale)); + }; + + UmlFrame.prototype.paintBackground = function (c, x, y, w, h) { + var co = this.corner; + var w0 = Math.min(w, Math.max(co, parseFloat(mxUtils.getValue(this.style, 'width', this.width)))); + var h0 = Math.min(h, Math.max(co * 1.5, parseFloat(mxUtils.getValue(this.style, 'height', this.height)))); + var bg = mxUtils.getValue(this.style, mxConstants.STYLE_SWIMLANE_FILLCOLOR, mxConstants.NONE); + + if (bg != mxConstants.NONE) { + c.setFillColor(bg); + c.rect(x, y, w, h); + c.fill(); + } + + if (this.fill != null && this.fill != mxConstants.NONE && this.gradient && this.gradient != mxConstants.NONE) { + var b = this.getGradientBounds(c, x, y, w, h); + c.setGradient(this.fill, this.gradient, x, y, w, h, this.gradientDirection); + } else { + c.setFillColor(this.fill); + } + + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w0, y); + c.lineTo(x + w0, y + Math.max(0, h0 - co * 1.5)); + c.lineTo(x + Math.max(0, w0 - co), y + h0); + c.lineTo(x, y + h0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(x + w0, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x, y + h0); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlFrame', UmlFrame); + + mxPerimeter.LifelinePerimeter = function (bounds, vertex, next, orthogonal) { + var size = UmlLifeline.prototype.size; + + if (vertex != null) { + size = mxUtils.getValue(vertex.style, 'size', size) * vertex.view.scale; + } + + var sw = parseFloat(vertex.style[mxConstants.STYLE_STROKEWIDTH] || 1) * vertex.view.scale / 2 - 1; + + if (next.x < bounds.getCenterX()) { + sw += 1; + sw *= -1; + } + + return new mxPoint(bounds.getCenterX() + sw, Math.min(bounds.y + bounds.height, Math.max(bounds.y + size, next.y))); + }; + + mxStyleRegistry.putValue('lifelinePerimeter', mxPerimeter.LifelinePerimeter); + + mxPerimeter.OrthogonalPerimeter = function (bounds, vertex, next, orthogonal) { + orthogonal = true; + return mxPerimeter.RectanglePerimeter.apply(this, arguments); + }; + + mxStyleRegistry.putValue('orthogonalPerimeter', mxPerimeter.OrthogonalPerimeter); + + mxPerimeter.BackbonePerimeter = function (bounds, vertex, next, orthogonal) { + var sw = parseFloat(vertex.style[mxConstants.STYLE_STROKEWIDTH] || 1) * vertex.view.scale / 2 - 1; + + if (vertex.style['backboneSize'] != null) { + sw += parseFloat(vertex.style['backboneSize']) * vertex.view.scale / 2 - 1; + } + + if (vertex.style[mxConstants.STYLE_DIRECTION] == 'south' || vertex.style[mxConstants.STYLE_DIRECTION] == 'north') { + if (next.x < bounds.getCenterX()) { + sw += 1; + sw *= -1; + } + + return new mxPoint(bounds.getCenterX() + sw, Math.min(bounds.y + bounds.height, Math.max(bounds.y, next.y))); + } else { + if (next.y < bounds.getCenterY()) { + sw += 1; + sw *= -1; + } + + return new mxPoint(Math.min(bounds.x + bounds.width, Math.max(bounds.x, next.x)), bounds.getCenterY() + sw); + } + }; + + mxStyleRegistry.putValue('backbonePerimeter', mxPerimeter.BackbonePerimeter); + + mxPerimeter.CalloutPerimeter = function (bounds, vertex, next, orthogonal) { + return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(bounds, new mxRectangle(0, 0, 0, Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(vertex.style, 'size', CalloutShape.prototype.size)) * vertex.view.scale))), vertex.style), vertex, next, orthogonal); + }; + + mxStyleRegistry.putValue('calloutPerimeter', mxPerimeter.CalloutPerimeter); + + mxPerimeter.ParallelogramPerimeter = function (bounds, vertex, next, orthogonal) { + var size = ParallelogramShape.prototype.size; + + if (vertex != null) { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + var direction = vertex != null ? mxUtils.getValue(vertex.style, mxConstants.STYLE_DIRECTION, mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var vertical = direction == mxConstants.DIRECTION_NORTH || direction == mxConstants.DIRECTION_SOUTH; + var points; + + if (vertical) { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y)]; + } else { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)]; + } + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + var p1 = new mxPoint(cx, cy); + + if (orthogonal) { + if (next.x < x || next.x > x + w) { + p1.y = next.y; + } else { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('parallelogramPerimeter', mxPerimeter.ParallelogramPerimeter); + + mxPerimeter.TrapezoidPerimeter = function (bounds, vertex, next, orthogonal) { + var size = TrapezoidShape.prototype.size; + + if (vertex != null) { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + var direction = vertex != null ? mxUtils.getValue(vertex.style, mxConstants.STYLE_DIRECTION, mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var points; + + if (direction == mxConstants.DIRECTION_EAST) { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)]; + } else if (direction == mxConstants.DIRECTION_WEST) { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h), new mxPoint(x, y)]; + } else if (direction == mxConstants.DIRECTION_NORTH) { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y + dy), new mxPoint(x + w, y), new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y + dy)]; + } else { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h - dy), new mxPoint(x, y + h), new mxPoint(x, y)]; + } + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + var p1 = new mxPoint(cx, cy); + + if (orthogonal) { + if (next.x < x || next.x > x + w) { + p1.y = next.y; + } else { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('trapezoidPerimeter', mxPerimeter.TrapezoidPerimeter); + + mxPerimeter.StepPerimeter = function (bounds, vertex, next, orthogonal) { + var fixed = mxUtils.getValue(vertex.style, 'fixedSize', '0') != '0'; + var size = fixed ? StepShape.prototype.fixedSize : StepShape.prototype.size; + + if (vertex != null) { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + var direction = vertex != null ? mxUtils.getValue(vertex.style, mxConstants.STYLE_DIRECTION, mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var points; + + if (direction == mxConstants.DIRECTION_EAST) { + var dx = fixed ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy), new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, cy), new mxPoint(x, y)]; + } else if (direction == mxConstants.DIRECTION_WEST) { + var dx = fixed ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, cy), new mxPoint(x + w, y + h), new mxPoint(x + dx, y + h), new mxPoint(x, cy), new mxPoint(x + dx, y)]; + } else if (direction == mxConstants.DIRECTION_NORTH) { + var dy = fixed ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y + dy), new mxPoint(cx, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h), new mxPoint(cx, y + h - dy), new mxPoint(x, y + h), new mxPoint(x, y + dy)]; + } else { + var dy = fixed ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(cx, y + dy), new mxPoint(x + w, y), new mxPoint(x + w, y + h - dy), new mxPoint(cx, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y)]; + } + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) { + if (next.x < x || next.x > x + w) { + p1.y = next.y; + } else { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('stepPerimeter', mxPerimeter.StepPerimeter); + + mxPerimeter.HexagonPerimeter2 = function (bounds, vertex, next, orthogonal) { + var size = HexagonShape.prototype.size; + + if (vertex != null) { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + var direction = vertex != null ? mxUtils.getValue(vertex.style, mxConstants.STYLE_DIRECTION, mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var vertical = direction == mxConstants.DIRECTION_NORTH || direction == mxConstants.DIRECTION_SOUTH; + var points; + + if (vertical) { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(cx, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h - dy), new mxPoint(cx, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y + dy), new mxPoint(cx, y)]; + } else { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy), new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h), new mxPoint(x, cy), new mxPoint(x + dx, y)]; + } + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) { + if (next.x < x || next.x > x + w) { + p1.y = next.y; + } else { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('hexagonPerimeter2', mxPerimeter.HexagonPerimeter2); + + function LollipopShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(LollipopShape, mxShape); + LollipopShape.prototype.size = 10; + + LollipopShape.prototype.paintBackground = function (c, x, y, w, h) { + var sz = parseFloat(mxUtils.getValue(this.style, 'size', this.size)); + c.translate(x, y); + c.ellipse((w - sz) / 2, 0, sz, sz); + c.fillAndStroke(); + c.begin(); + c.moveTo(w / 2, sz); + c.lineTo(w / 2, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('lollipop', LollipopShape); + + function RequiresShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(RequiresShape, mxShape); + RequiresShape.prototype.size = 10; + RequiresShape.prototype.inset = 2; + + RequiresShape.prototype.paintBackground = function (c, x, y, w, h) { + var sz = parseFloat(mxUtils.getValue(this.style, 'size', this.size)); + var inset = parseFloat(mxUtils.getValue(this.style, 'inset', this.inset)) + this.strokewidth; + c.translate(x, y); + c.begin(); + c.moveTo(w / 2, sz + inset); + c.lineTo(w / 2, h); + c.end(); + c.stroke(); + c.begin(); + c.moveTo((w - sz) / 2 - inset, sz / 2); + c.quadTo((w - sz) / 2 - inset, sz + inset, w / 2, sz + inset); + c.quadTo((w + sz) / 2 + inset, sz + inset, (w + sz) / 2 + inset, sz / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('requires', RequiresShape); + + function RequiredInterfaceShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(RequiredInterfaceShape, mxShape); + + RequiredInterfaceShape.prototype.paintBackground = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('requiredInterface', RequiredInterfaceShape); + + function ProvidedRequiredInterfaceShape() { + mxShape.call(this); + } + + ; + mxUtils.extend(ProvidedRequiredInterfaceShape, mxShape); + ProvidedRequiredInterfaceShape.prototype.inset = 2; + + ProvidedRequiredInterfaceShape.prototype.paintBackground = function (c, x, y, w, h) { + var inset = parseFloat(mxUtils.getValue(this.style, 'inset', this.inset)) + this.strokewidth; + c.translate(x, y); + c.ellipse(0, inset, w - 2 * inset, h - 2 * inset); + c.fillAndStroke(); + c.begin(); + c.moveTo(w / 2, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w / 2, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('providedRequiredInterface', ProvidedRequiredInterfaceShape); + + function ComponentShape() { + mxCylinder.call(this); + } + + ; + mxUtils.extend(ComponentShape, mxCylinder); + ComponentShape.prototype.jettyWidth = 32; + ComponentShape.prototype.jettyHeight = 12; + + ComponentShape.prototype.redrawPath = function (path, x, y, w, h, isForeground) { + var dx = parseFloat(mxUtils.getValue(this.style, 'jettyWidth', this.jettyWidth)); + var dy = parseFloat(mxUtils.getValue(this.style, 'jettyHeight', this.jettyHeight)); + var x0 = dx / 2; + var x1 = x0 + dx / 2; + var y0 = 0.3 * h - dy / 2; + var y1 = 0.7 * h - dy / 2; + + if (isForeground) { + path.moveTo(x0, y0); + path.lineTo(x1, y0); + path.lineTo(x1, y0 + dy); + path.lineTo(x0, y0 + dy); + path.moveTo(x0, y1); + path.lineTo(x1, y1); + path.lineTo(x1, y1 + dy); + path.lineTo(x0, y1 + dy); + path.end(); + } else { + path.moveTo(x0, 0); + path.lineTo(w, 0); + path.lineTo(w, h); + path.lineTo(x0, h); + path.lineTo(x0, y1 + dy); + path.lineTo(0, y1 + dy); + path.lineTo(0, y1); + path.lineTo(x0, y1); + path.lineTo(x0, y0 + dy); + path.lineTo(0, y0 + dy); + path.lineTo(0, y0); + path.lineTo(x0, y0); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('component', ComponentShape); + + function StateShape() { + mxDoubleEllipse.call(this); + } + + ; + mxUtils.extend(StateShape, mxDoubleEllipse); + StateShape.prototype.outerStroke = true; + + StateShape.prototype.paintVertexShape = function (c, x, y, w, h) { + var inset = Math.min(4, Math.min(w / 5, h / 5)); + + if (w > 0 && h > 0) { + c.ellipse(x + inset, y + inset, w - 2 * inset, h - 2 * inset); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (this.outerStroke) { + c.ellipse(x, y, w, h); + c.stroke(); + } + }; + + mxCellRenderer.registerShape('endState', StateShape); + + function StartStateShape() { + StateShape.call(this); + } + + ; + mxUtils.extend(StartStateShape, StateShape); + StartStateShape.prototype.outerStroke = false; + mxCellRenderer.registerShape('startState', StartStateShape); + + function LinkShape() { + mxArrowConnector.call(this); + this.spacing = 0; + } + + ; + mxUtils.extend(LinkShape, mxArrowConnector); + LinkShape.prototype.defaultWidth = 4; + + LinkShape.prototype.isOpenEnded = function () { + return true; + }; + + LinkShape.prototype.getEdgeWidth = function () { + return mxUtils.getNumber(this.style, 'width', this.defaultWidth) + Math.max(0, this.strokewidth - 1); + }; + + LinkShape.prototype.isArrowRounded = function () { + return this.isRounded; + }; + + mxCellRenderer.registerShape('link', LinkShape); + + function FlexArrowShape() { + mxArrowConnector.call(this); + this.spacing = 0; + } + + ; + mxUtils.extend(FlexArrowShape, mxArrowConnector); + FlexArrowShape.prototype.defaultWidth = 10; + FlexArrowShape.prototype.defaultArrowWidth = 20; + + FlexArrowShape.prototype.getStartArrowWidth = function () { + return this.getEdgeWidth() + mxUtils.getNumber(this.style, 'startWidth', this.defaultArrowWidth); + }; + + FlexArrowShape.prototype.getEndArrowWidth = function () { + return this.getEdgeWidth() + mxUtils.getNumber(this.style, 'endWidth', this.defaultArrowWidth); + ; + }; + + FlexArrowShape.prototype.getEdgeWidth = function () { + return mxUtils.getNumber(this.style, 'width', this.defaultWidth) + Math.max(0, this.strokewidth - 1); + }; + + mxCellRenderer.registerShape('flexArrow', FlexArrowShape); + + function ManualInputShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(ManualInputShape, mxActor); + ManualInputShape.prototype.size = 30; + + ManualInputShape.prototype.isRoundable = function () { + return true; + }; + + ManualInputShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(0, s), new mxPoint(w, 0), new mxPoint(w, h)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('manualInput', ManualInputShape); + + function InternalStorageShape() { + mxRectangleShape.call(this); + } + + ; + mxUtils.extend(InternalStorageShape, mxRectangleShape); + InternalStorageShape.prototype.dx = 20; + InternalStorageShape.prototype.dy = 20; + + InternalStorageShape.prototype.isHtmlAllowed = function () { + return false; + }; + + InternalStorageShape.prototype.paintForeground = function (c, x, y, w, h) { + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + var inset = 0; + + if (this.isRounded) { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + var dx = Math.max(inset, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(inset, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + c.begin(); + c.moveTo(x, y + dy); + c.lineTo(x + w, y + dy); + c.end(); + c.stroke(); + c.begin(); + c.moveTo(x + dx, y); + c.lineTo(x + dx, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('internalStorage', InternalStorageShape); + + function CornerShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CornerShape, mxActor); + CornerShape.prototype.dx = 20; + CornerShape.prototype.dy = 20; + + CornerShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, dy), new mxPoint(dx, dy), new mxPoint(dx, h), new mxPoint(0, h)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('corner', CornerShape); + + function CrossbarShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CrossbarShape, mxActor); + + CrossbarShape.prototype.redrawPath = function (c, x, y, w, h) { + c.moveTo(0, 0); + c.lineTo(0, h); + c.end(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.end(); + c.moveTo(0, h / 2); + c.lineTo(w, h / 2); + c.end(); + }; + + mxCellRenderer.registerShape('crossbar', CrossbarShape); + + function TeeShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(TeeShape, mxActor); + TeeShape.prototype.dx = 20; + TeeShape.prototype.dy = 20; + + TeeShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var w2 = Math.abs(w - dx) / 2; + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, dy), new mxPoint((w + dx) / 2, dy), new mxPoint((w + dx) / 2, h), new mxPoint((w - dx) / 2, h), new mxPoint((w - dx) / 2, dy), new mxPoint(0, dy)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('tee', TeeShape); + + function SingleArrowShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(SingleArrowShape, mxActor); + SingleArrowShape.prototype.arrowWidth = 0.3; + SingleArrowShape.prototype.arrowSize = 0.2; + + SingleArrowShape.prototype.redrawPath = function (c, x, y, w, h) { + var aw = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowWidth', this.arrowWidth)))); + var as = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowSize', this.arrowSize)))); + var at = (h - aw) / 2; + var ab = at + aw; + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, at), new mxPoint(w - as, at), new mxPoint(w - as, 0), new mxPoint(w, h / 2), new mxPoint(w - as, h), new mxPoint(w - as, ab), new mxPoint(0, ab)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('singleArrow', SingleArrowShape); + + function DoubleArrowShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(DoubleArrowShape, mxActor); + + DoubleArrowShape.prototype.redrawPath = function (c, x, y, w, h) { + var aw = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowWidth', SingleArrowShape.prototype.arrowWidth)))); + var as = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowSize', SingleArrowShape.prototype.arrowSize)))); + var at = (h - aw) / 2; + var ab = at + aw; + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h / 2), new mxPoint(as, 0), new mxPoint(as, at), new mxPoint(w - as, at), new mxPoint(w - as, 0), new mxPoint(w, h / 2), new mxPoint(w - as, h), new mxPoint(w - as, ab), new mxPoint(as, ab), new mxPoint(as, h)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('doubleArrow', DoubleArrowShape); + + function DataStorageShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(DataStorageShape, mxActor); + DataStorageShape.prototype.size = 0.1; + + DataStorageShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + c.moveTo(s, 0); + c.lineTo(w, 0); + c.quadTo(w - s * 2, h / 2, w, h); + c.lineTo(s, h); + c.quadTo(s - s * 2, h / 2, s, 0); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('dataStorage', DataStorageShape); + + function OrShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(OrShape, mxActor); + + OrShape.prototype.redrawPath = function (c, x, y, w, h) { + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('or', OrShape); + + function XorShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(XorShape, mxActor); + + XorShape.prototype.redrawPath = function (c, x, y, w, h) { + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.quadTo(w / 2, h / 2, 0, 0); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('xor', XorShape); + + function LoopLimitShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(LoopLimitShape, mxActor); + LoopLimitShape.prototype.size = 20; + + LoopLimitShape.prototype.isRoundable = function () { + return true; + }; + + LoopLimitShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w - s, 0), new mxPoint(w, s * 0.8), new mxPoint(w, h), new mxPoint(0, h), new mxPoint(0, s * 0.8)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('loopLimit', LoopLimitShape); + + function OffPageConnectorShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(OffPageConnectorShape, mxActor); + OffPageConnectorShape.prototype.size = 3 / 8; + + OffPageConnectorShape.prototype.isRoundable = function () { + return true; + }; + + OffPageConnectorShape.prototype.redrawPath = function (c, x, y, w, h) { + var s = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, h - s), new mxPoint(w / 2, h), new mxPoint(0, h - s)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('offPageConnector', OffPageConnectorShape); + + function TapeDataShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(TapeDataShape, mxEllipse); + + TapeDataShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + c.begin(); + c.moveTo(x + w / 2, y + h); + c.lineTo(x + w, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('tapeData', TapeDataShape); + + function OrEllipseShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(OrEllipseShape, mxEllipse); + + OrEllipseShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + c.setShadow(false); + c.begin(); + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + c.end(); + c.stroke(); + c.begin(); + c.moveTo(x + w / 2, y); + c.lineTo(x + w / 2, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('orEllipse', OrEllipseShape); + + function SumEllipseShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(SumEllipseShape, mxEllipse); + + SumEllipseShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + var s2 = 0.145; + c.setShadow(false); + c.begin(); + c.moveTo(x + w * s2, y + h * s2); + c.lineTo(x + w * (1 - s2), y + h * (1 - s2)); + c.end(); + c.stroke(); + c.begin(); + c.moveTo(x + w * (1 - s2), y + h * s2); + c.lineTo(x + w * s2, y + h * (1 - s2)); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('sumEllipse', SumEllipseShape); + + function SortShape() { + mxRhombus.call(this); + } + + ; + mxUtils.extend(SortShape, mxRhombus); + + SortShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxRhombus.prototype.paintVertexShape.apply(this, arguments); + c.setShadow(false); + c.begin(); + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('sortShape', SortShape); + + function CollateShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(CollateShape, mxEllipse); + + CollateShape.prototype.paintVertexShape = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w / 2, y + h / 2); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(x, y + h); + c.lineTo(x + w, y + h); + c.lineTo(x + w / 2, y + h / 2); + c.close(); + c.fillAndStroke(); + }; + + mxCellRenderer.registerShape('collate', CollateShape); + + function DimensionShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(DimensionShape, mxEllipse); + + DimensionShape.prototype.paintVertexShape = function (c, x, y, w, h) { + var al = 10; + var cy = y + h - al / 2; + c.begin(); + c.moveTo(x, y); + c.lineTo(x, y + h); + c.moveTo(x, cy); + c.lineTo(x + al, cy - al / 2); + c.moveTo(x, cy); + c.lineTo(x + al, cy + al / 2); + c.moveTo(x, cy); + c.lineTo(x + w, cy); + c.moveTo(x + w, y); + c.lineTo(x + w, y + h); + c.moveTo(x + w, cy); + c.lineTo(x + w - al, cy - al / 2); + c.moveTo(x + w, cy); + c.lineTo(x + w - al, cy + al / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('dimension', DimensionShape); + + function PartialRectangleShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(PartialRectangleShape, mxEllipse); + + PartialRectangleShape.prototype.paintVertexShape = function (c, x, y, w, h) { + if (!this.outline) { + c.setStrokeColor(null); + } + + mxRectangleShape.prototype.paintBackground.apply(this, arguments); + + if (this.style != null) { + c.setStrokeColor(this.stroke); + c.rect(x, y, w, h); + c.fill(); + c.begin(); + c.moveTo(x, y); + + if (mxUtils.getValue(this.style, 'top', '1') == '1') { + c.lineTo(x + w, y); + } else { + c.moveTo(x + w, y); + } + + if (mxUtils.getValue(this.style, 'right', '1') == '1') { + c.lineTo(x + w, y + h); + } else { + c.moveTo(x + w, y + h); + } + + if (mxUtils.getValue(this.style, 'bottom', '1') == '1') { + c.lineTo(x, y + h); + } else { + c.moveTo(x, y + h); + } + + if (mxUtils.getValue(this.style, 'left', '1') == '1') { + c.lineTo(x, y - this.strokewidth / 2); + } + + c.end(); + c.stroke(); + } + }; + + mxCellRenderer.registerShape('partialRectangle', PartialRectangleShape); + + function LineEllipseShape() { + mxEllipse.call(this); + } + + ; + mxUtils.extend(LineEllipseShape, mxEllipse); + + LineEllipseShape.prototype.paintVertexShape = function (c, x, y, w, h) { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + c.setShadow(false); + c.begin(); + + if (mxUtils.getValue(this.style, 'line') == 'vertical') { + c.moveTo(x + w / 2, y); + c.lineTo(x + w / 2, y + h); + } else { + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + } + + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('lineEllipse', LineEllipseShape); + + function DelayShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(DelayShape, mxActor); + + DelayShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = Math.min(w, h / 2); + c.moveTo(0, 0); + c.lineTo(w - dx, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w - dx, h); + c.lineTo(0, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('delay', DelayShape); + + function CrossShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(CrossShape, mxActor); + CrossShape.prototype.size = 0.2; + + CrossShape.prototype.redrawPath = function (c, x, y, w, h) { + var m = Math.min(h, w); + var size = Math.max(0, Math.min(m, m * parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var t = (h - size) / 2; + var b = t + size; + var l = (w - size) / 2; + var r = l + size; + c.moveTo(0, t); + c.lineTo(l, t); + c.lineTo(l, 0); + c.lineTo(r, 0); + c.lineTo(r, t); + c.lineTo(w, t); + c.lineTo(w, b); + c.lineTo(r, b); + c.lineTo(r, h); + c.lineTo(l, h); + c.lineTo(l, b); + c.lineTo(0, b); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('cross', CrossShape); + + function DisplayShape() { + mxActor.call(this); + } + + ; + mxUtils.extend(DisplayShape, mxActor); + DisplayShape.prototype.size = 0.25; + + DisplayShape.prototype.redrawPath = function (c, x, y, w, h) { + var dx = Math.min(w, h / 2); + var s = Math.min(w - dx, Math.max(0, parseFloat(mxUtils.getValue(this.style, 'size', this.size))) * w); + c.moveTo(0, h / 2); + c.lineTo(s, 0); + c.lineTo(w - dx, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w - dx, h); + c.lineTo(s, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('display', DisplayShape); + + function FilledEdge() { + mxConnector.call(this); + } + + ; + mxUtils.extend(FilledEdge, mxConnector); + FilledEdge.prototype.origPaintEdgeShape = FilledEdge.prototype.paintEdgeShape; + + FilledEdge.prototype.paintEdgeShape = function (c, pts, rounded) { + var temp = []; + + for (var i = 0; i < pts.length; i++) { + temp.push(mxUtils.clone(pts[i])); + } + + var dashed = c.state.dashed; + var fixDash = c.state.fixDash; + FilledEdge.prototype.origPaintEdgeShape.apply(this, [c, temp, rounded]); + + if (c.state.strokeWidth >= 3) { + var fillClr = mxUtils.getValue(this.style, 'fillColor', null); + + if (fillClr != null) { + c.setStrokeColor(fillClr); + c.setStrokeWidth(c.state.strokeWidth - 2); + c.setDashed(dashed, fixDash); + FilledEdge.prototype.origPaintEdgeShape.apply(this, [c, pts, rounded]); + } + } + }; + + mxCellRenderer.registerShape('filledEdge', FilledEdge); + + if (typeof StyleFormatPanel !== 'undefined') { + (function () { + var styleFormatPanelGetCustomColors = StyleFormatPanel.prototype.getCustomColors; + + StyleFormatPanel.prototype.getCustomColors = function () { + var ss = this.format.getSelectionState(); + var result = styleFormatPanelGetCustomColors.apply(this, arguments); + + if (ss.style.shape == 'umlFrame') { + result.push({ + title: mxResources.get('laneColor'), + key: 'swimlaneFillColor', + defaultValue: '#ffffff' + }); + } + + return result; + }; + })(); + } + + mxMarker.addMarker('dash', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); + c.stroke(); + }; + }); + mxMarker.addMarker('cross', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); + c.moveTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.lineTo(pe.x - ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 + nx / 2); + c.stroke(); + }; + }); + + function circleMarker(c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var a = size / 2; + var size = size + sw; + var pt = pe.clone(); + pe.x -= unitX * (2 * size + sw); + pe.y -= unitY * (2 * size + sw); + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + return function () { + c.ellipse(pt.x - unitX - size, pt.y - unitY - size, 2 * size, 2 * size); + + if (filled) { + c.fillAndStroke(); + } else { + c.stroke(); + } + }; + } + + ; + mxMarker.addMarker('circle', circleMarker); + mxMarker.addMarker('circlePlus', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var pt = pe.clone(); + var fn = circleMarker.apply(this, arguments); + var nx = unitX * (size + 2 * sw); + var ny = unitY * (size + 2 * sw); + return function () { + fn.apply(this, arguments); + c.begin(); + c.moveTo(pt.x - unitX * sw, pt.y - unitY * sw); + c.lineTo(pt.x - 2 * nx + unitX * sw, pt.y - 2 * ny + unitY * sw); + c.moveTo(pt.x - nx - ny + unitY * sw, pt.y - ny + nx - unitX * sw); + c.lineTo(pt.x + ny - nx - unitY * sw, pt.y - ny - nx + unitX * sw); + c.stroke(); + }; + }); + mxMarker.addMarker('async', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var endOffsetX = unitX * sw * 1.118; + var endOffsetY = unitY * sw * 1.118; + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + var pt = pe.clone(); + pt.x -= endOffsetX; + pt.y -= endOffsetY; + var f = 1; + pe.x += -unitX * f - endOffsetX; + pe.y += -unitY * f - endOffsetY; + return function () { + c.begin(); + c.moveTo(pt.x, pt.y); + + if (source) { + c.lineTo(pt.x - unitX - unitY / 2, pt.y - unitY + unitX / 2); + } else { + c.lineTo(pt.x + unitY / 2 - unitX, pt.y - unitY - unitX / 2); + } + + c.lineTo(pt.x - unitX, pt.y - unitY); + c.close(); + + if (filled) { + c.fillAndStroke(); + } else { + c.stroke(); + } + }; + }); + + function createOpenAsyncArrow(widthFactor) { + widthFactor = widthFactor != null ? widthFactor : 2; + return function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + var pt = pe.clone(); + return function () { + c.begin(); + c.moveTo(pt.x, pt.y); + + if (source) { + c.lineTo(pt.x - unitX - unitY / widthFactor, pt.y - unitY + unitX / widthFactor); + } else { + c.lineTo(pt.x + unitY / widthFactor - unitX, pt.y - unitY - unitX / widthFactor); + } + + c.stroke(); + }; + }; + } + + ; + mxMarker.addMarker('openAsync', createOpenAsyncArrow(2)); + + function arrow(canvas, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var endOffsetX = unitX * sw * 1.118; + var endOffsetY = unitY * sw * 1.118; + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + var pt = pe.clone(); + pt.x -= endOffsetX; + pt.y -= endOffsetY; + var f = type != mxConstants.ARROW_CLASSIC && type != mxConstants.ARROW_CLASSIC_THIN ? 1 : 3 / 4; + pe.x += -unitX * f - endOffsetX; + pe.y += -unitY * f - endOffsetY; + return function () { + canvas.begin(); + canvas.moveTo(pt.x, pt.y); + canvas.lineTo(pt.x - unitX - unitY / widthFactor, pt.y - unitY + unitX / widthFactor); + + if (type == mxConstants.ARROW_CLASSIC || type == mxConstants.ARROW_CLASSIC_THIN) { + canvas.lineTo(pt.x - unitX * 3 / 4, pt.y - unitY * 3 / 4); + } + + canvas.lineTo(pt.x + unitY / widthFactor - unitX, pt.y - unitY - unitX / widthFactor); + canvas.close(); + + if (filled) { + canvas.fillAndStroke(); + } else { + canvas.stroke(); + } + }; + } + + if (typeof mxVertexHandler !== 'undefined') { + var createHandle = function createHandle(state, keys, getPositionFn, setPositionFn, ignoreGrid, redrawEdges) { + var handle = new mxHandle(state, null, mxVertexHandler.prototype.secondaryHandleImage); + + handle.execute = function () { + for (var i = 0; i < keys.length; i++) { + this.copyStyle(keys[i]); + } + }; + + handle.getPosition = getPositionFn; + handle.setPosition = setPositionFn; + handle.ignoreGrid = ignoreGrid != null ? ignoreGrid : true; + + if (redrawEdges) { + var positionChanged = handle.positionChanged; + + handle.positionChanged = function () { + positionChanged.apply(this, arguments); + state.view.invalidate(this.state.cell); + state.view.validate(); + }; + } + + return handle; + }; + + var createArcHandle = function createArcHandle(state, yOffset) { + return createHandle(state, [mxConstants.STYLE_ARCSIZE], function (bounds) { + var tmp = yOffset != null ? yOffset : bounds.height / 8; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') { + var arcSize = mxUtils.getValue(state.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + return new mxPoint(bounds.x + bounds.width - Math.min(bounds.width / 2, arcSize), bounds.y + tmp); + } else { + var arcSize = Math.max(0, parseFloat(mxUtils.getValue(state.style, mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100))) / 100; + return new mxPoint(bounds.x + bounds.width - Math.min(Math.max(bounds.width / 2, bounds.height / 2), Math.min(bounds.width, bounds.height) * arcSize), bounds.y + tmp); + } + }, function (bounds, pt, me) { + if (mxUtils.getValue(state.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') { + this.state.style[mxConstants.STYLE_ARCSIZE] = Math.round(Math.max(0, Math.min(bounds.width, (bounds.x + bounds.width - pt.x) * 2))); + } else { + var f = Math.min(50, Math.max(0, (bounds.width - pt.x + bounds.x) * 100 / Math.min(bounds.width, bounds.height))); + this.state.style[mxConstants.STYLE_ARCSIZE] = Math.round(f); + } + }); + }; + + var createArcHandleFunction = function createArcHandleFunction() { + return function (state) { + var handles = []; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + var createTrapezoidHandleFunction = function createTrapezoidHandleFunction(max) { + return function (state) { + var handles = [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(max, parseFloat(mxUtils.getValue(this.state.style, 'size', TrapezoidShape.prototype.size)))); + return new mxPoint(bounds.x + size * bounds.width * 0.75, bounds.y + bounds.height / 4); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(max, (pt.x - bounds.x) / (bounds.width * 0.75))); + }, null, true)]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + var createDisplayHandleFunction = function createDisplayHandleFunction(defaultValue, allowArcHandle, max, redrawEdges, fixedDefaultValue) { + max = max != null ? max : 1; + return function (state) { + var handles = [createHandle(state, ['size'], function (bounds) { + var fixed = fixedDefaultValue != null ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null; + var size = parseFloat(mxUtils.getValue(this.state.style, 'size', fixed ? fixedDefaultValue : defaultValue)); + return new mxPoint(bounds.x + Math.max(0, Math.min(bounds.width, size * (fixed ? 1 : bounds.width))), bounds.getCenterY()); + }, function (bounds, pt, me) { + var fixed = fixedDefaultValue != null ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null; + var size = fixed ? pt.x - bounds.x : Math.max(0, Math.min(max, (pt.x - bounds.x) / bounds.width)); + + if (fixed && !mxEvent.isAltDown(me.getEvent())) { + size = state.view.graph.snap(size); + } + + this.state.style['size'] = size; + }, null, redrawEdges)]; + + if (allowArcHandle && mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + var createCubeHandleFunction = function createCubeHandleFunction(factor, defaultValue, allowArcHandle) { + return function (state) { + var handles = [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.width, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'size', defaultValue))))) * factor; + return new mxPoint(bounds.x + size, bounds.y + size); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(Math.max(0, Math.min(Math.min(bounds.width, pt.x - bounds.x), Math.min(bounds.height, pt.y - bounds.y))) / factor); + })]; + + if (allowArcHandle && mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + var createArrowHandleFunction = function createArrowHandleFunction(maxSize) { + return function (state) { + return [createHandle(state, ['arrowWidth', 'arrowSize'], function (bounds) { + var aw = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'arrowWidth', SingleArrowShape.prototype.arrowWidth))); + var as = Math.max(0, Math.min(maxSize, mxUtils.getValue(this.state.style, 'arrowSize', SingleArrowShape.prototype.arrowSize))); + return new mxPoint(bounds.x + (1 - as) * bounds.width, bounds.y + (1 - aw) * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['arrowWidth'] = Math.max(0, Math.min(1, Math.abs(bounds.y + bounds.height / 2 - pt.y) / bounds.height * 2)); + this.state.style['arrowSize'] = Math.max(0, Math.min(maxSize, (bounds.x + bounds.width - pt.x) / bounds.width)); + })]; + }; + }; + + var createEdgeHandle = function createEdgeHandle(state, keys, start, getPosition, setPosition) { + return createHandle(state, keys, function (bounds) { + var pts = state.absolutePoints; + var n = pts.length - 1; + var tr = state.view.translate; + var s = state.view.scale; + var p0 = start ? pts[0] : pts[n]; + var p1 = start ? pts[1] : pts[n - 1]; + var dx = start ? p1.x - p0.x : p1.x - p0.x; + var dy = start ? p1.y - p0.y : p1.y - p0.y; + var dist = Math.sqrt(dx * dx + dy * dy); + var pt = getPosition.call(this, dist, dx / dist, dy / dist, p0, p1); + return new mxPoint(pt.x / s - tr.x, pt.y / s - tr.y); + }, function (bounds, pt, me) { + var pts = state.absolutePoints; + var n = pts.length - 1; + var tr = state.view.translate; + var s = state.view.scale; + var p0 = start ? pts[0] : pts[n]; + var p1 = start ? pts[1] : pts[n - 1]; + var dx = start ? p1.x - p0.x : p1.x - p0.x; + var dy = start ? p1.y - p0.y : p1.y - p0.y; + var dist = Math.sqrt(dx * dx + dy * dy); + pt.x = (pt.x + tr.x) * s; + pt.y = (pt.y + tr.y) * s; + setPosition.call(this, dist, dx / dist, dy / dist, p0, p1, pt, me); + }); + }; + + var createEdgeWidthHandle = function createEdgeWidthHandle(state, start, spacing) { + return createEdgeHandle(state, ['width'], start, function (dist, nx, ny, p0, p1) { + var w = state.shape.getEdgeWidth() * state.view.scale + spacing; + return new mxPoint(p0.x + nx * dist / 4 + ny * w / 2, p0.y + ny * dist / 4 - nx * w / 2); + }, function (dist, nx, ny, p0, p1, pt) { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + state.style['width'] = Math.round(w * 2) / state.view.scale - spacing; + }); + }; + + var ptLineDistance = function ptLineDistance(x1, y1, x2, y2, x0, y0) { + return Math.abs((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1) / Math.sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)); + }; + + ; + ; + ; + ; + ; + ; + ; + ; + var handleFactory = { + 'link': function link(state) { + var spacing = 10; + return [createEdgeWidthHandle(state, true, spacing), createEdgeWidthHandle(state, false, spacing)]; + }, + 'flexArrow': function flexArrow(state) { + var tol = state.view.graph.gridSize / state.view.scale; + var handles = []; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_STARTARROW, mxConstants.NONE) != mxConstants.NONE) { + handles.push(createEdgeHandle(state, ['width', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], true, function (dist, nx, ny, p0, p1) { + var w = (state.shape.getEdgeWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) + ny * w / 2, p0.y + ny * (l + state.shape.strokewidth * state.view.scale) - nx * w / 2); + }, function (dist, nx, ny, p0, p1, pt, me) { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + state.style[mxConstants.STYLE_STARTSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['width'] = Math.round(w * 2) / state.view.scale; + + if (mxEvent.isControlDown(me.getEvent())) { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + + if (!mxEvent.isAltDown(me.getEvent())) { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_STARTSIZE]) - parseFloat(state.style[mxConstants.STYLE_ENDSIZE])) < tol / 6) { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + } + })); + handles.push(createEdgeHandle(state, ['startWidth', 'endWidth', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], true, function (dist, nx, ny, p0, p1) { + var w = (state.shape.getStartArrowWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) + ny * w / 2, p0.y + ny * (l + state.shape.strokewidth * state.view.scale) - nx * w / 2); + }, function (dist, nx, ny, p0, p1, pt, me) { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + state.style[mxConstants.STYLE_STARTSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['startWidth'] = Math.max(0, Math.round(w * 2) - state.shape.getEdgeWidth()) / state.view.scale; + + if (mxEvent.isControlDown(me.getEvent())) { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + state.style['endWidth'] = state.style['startWidth']; + } + + if (!mxEvent.isAltDown(me.getEvent())) { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_STARTSIZE]) - parseFloat(state.style[mxConstants.STYLE_ENDSIZE])) < tol / 6) { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + + if (Math.abs(parseFloat(state.style['startWidth']) - parseFloat(state.style['endWidth'])) < tol) { + state.style['startWidth'] = state.style['endWidth']; + } + } + })); + } + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ENDARROW, mxConstants.NONE) != mxConstants.NONE) { + handles.push(createEdgeHandle(state, ['width', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], false, function (dist, nx, ny, p0, p1) { + var w = (state.shape.getEdgeWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_ENDSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) - ny * w / 2, p0.y + ny * (l + state.shape.strokewidth * state.view.scale) + nx * w / 2); + }, function (dist, nx, ny, p0, p1, pt, me) { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + state.style[mxConstants.STYLE_ENDSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['width'] = Math.round(w * 2) / state.view.scale; + + if (mxEvent.isControlDown(me.getEvent())) { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + + if (!mxEvent.isAltDown(me.getEvent())) { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_ENDSIZE]) - parseFloat(state.style[mxConstants.STYLE_STARTSIZE])) < tol / 6) { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + } + })); + handles.push(createEdgeHandle(state, ['startWidth', 'endWidth', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], false, function (dist, nx, ny, p0, p1) { + var w = (state.shape.getEndArrowWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_ENDSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) - ny * w / 2, p0.y + ny * (l + state.shape.strokewidth * state.view.scale) + nx * w / 2); + }, function (dist, nx, ny, p0, p1, pt, me) { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + state.style[mxConstants.STYLE_ENDSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['endWidth'] = Math.max(0, Math.round(w * 2) - state.shape.getEdgeWidth()) / state.view.scale; + + if (mxEvent.isControlDown(me.getEvent())) { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + state.style['startWidth'] = state.style['endWidth']; + } + + if (!mxEvent.isAltDown(me.getEvent())) { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_ENDSIZE]) - parseFloat(state.style[mxConstants.STYLE_STARTSIZE])) < tol / 6) { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + + if (Math.abs(parseFloat(state.style['endWidth']) - parseFloat(state.style['startWidth'])) < tol) { + state.style['endWidth'] = state.style['startWidth']; + } + } + })); + } + + return handles; + }, + 'swimlane': function swimlane(state) { + var handles = [createHandle(state, [mxConstants.STYLE_STARTSIZE], function (bounds) { + var size = parseFloat(mxUtils.getValue(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)); + + if (mxUtils.getValue(state.style, mxConstants.STYLE_HORIZONTAL, 1) == 1) { + return new mxPoint(bounds.getCenterX(), bounds.y + Math.max(0, Math.min(bounds.height, size))); + } else { + return new mxPoint(bounds.x + Math.max(0, Math.min(bounds.width, size)), bounds.getCenterY()); + } + }, function (bounds, pt) { + state.style[mxConstants.STYLE_STARTSIZE] = mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, 1) == 1 ? Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))) : Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED)) { + var size = parseFloat(mxUtils.getValue(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)); + handles.push(createArcHandle(state, size / 2)); + } + + return handles; + }, + 'label': createArcHandleFunction(), + 'ext': createArcHandleFunction(), + 'rectangle': createArcHandleFunction(), + 'triangle': createArcHandleFunction(), + 'rhombus': createArcHandleFunction(), + 'umlLifeline': function umlLifeline(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'size', UmlLifeline.prototype.size)))); + return new mxPoint(bounds.getCenterX(), bounds.y + size); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + }, false)]; + }, + 'umlFrame': function umlFrame(state) { + var handles = [createHandle(state, ['width', 'height'], function (bounds) { + var w0 = Math.max(UmlFrame.prototype.corner, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'width', UmlFrame.prototype.width))); + var h0 = Math.max(UmlFrame.prototype.corner * 1.5, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'height', UmlFrame.prototype.height))); + return new mxPoint(bounds.x + w0, bounds.y + h0); + }, function (bounds, pt) { + this.state.style['width'] = Math.round(Math.max(UmlFrame.prototype.corner, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['height'] = Math.round(Math.max(UmlFrame.prototype.corner * 1.5, Math.min(bounds.height, pt.y - bounds.y))); + }, false)]; + return handles; + }, + 'process': function process(state) { + var handles = [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(0.5, parseFloat(mxUtils.getValue(this.state.style, 'size', ProcessShape.prototype.size)))); + return new mxPoint(bounds.x + bounds.width * size, bounds.y + bounds.height / 4); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(0.5, (pt.x - bounds.x) / bounds.width)); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'cross': function cross(state) { + return [createHandle(state, ['size'], function (bounds) { + var m = Math.min(bounds.width, bounds.height); + var size = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'size', CrossShape.prototype.size))) * m / 2; + return new mxPoint(bounds.getCenterX() - size, bounds.getCenterY() - size); + }, function (bounds, pt) { + var m = Math.min(bounds.width, bounds.height); + this.state.style['size'] = Math.max(0, Math.min(1, Math.min(Math.max(0, bounds.getCenterY() - pt.y) / m * 2, Math.max(0, bounds.getCenterX() - pt.x) / m * 2))); + })]; + }, + 'note': function note(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.width, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'size', NoteShape.prototype.size))))); + return new mxPoint(bounds.x + bounds.width - size, bounds.y + size); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(Math.max(0, Math.min(Math.min(bounds.width, bounds.x + bounds.width - pt.x), Math.min(bounds.height, pt.y - bounds.y)))); + })]; + }, + 'manualInput': function manualInput(state) { + var handles = [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', ManualInputShape.prototype.size))); + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + size * 3 / 4); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, (pt.y - bounds.y) * 4 / 3))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'dataStorage': function dataStorage(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', DataStorageShape.prototype.size)))); + return new mxPoint(bounds.x + (1 - size) * bounds.width, bounds.getCenterY()); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.x + bounds.width - pt.x) / bounds.width)); + })]; + }, + 'callout': function callout(state) { + var handles = [createHandle(state, ['size', 'position'], function (bounds) { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', CalloutShape.prototype.size))); + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + return new mxPoint(bounds.x + position * bounds.width, bounds.y + bounds.height - size); + }, function (bounds, pt) { + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + this.state.style['position'] = Math.round(Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width)) * 100) / 100; + }), createHandle(state, ['position2'], function (bounds) { + var position2 = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position2', CalloutShape.prototype.position2))); + return new mxPoint(bounds.x + position2 * bounds.width, bounds.y + bounds.height); + }, function (bounds, pt) { + this.state.style['position2'] = Math.round(Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width)) * 100) / 100; + }), createHandle(state, ['base'], function (bounds) { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', CalloutShape.prototype.size))); + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + return new mxPoint(bounds.x + Math.min(bounds.width, position * bounds.width + base), bounds.y + bounds.height - size); + }, function (bounds, pt) { + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + this.state.style['base'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x - position * bounds.width))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'internalStorage': function internalStorage(state) { + var handles = [createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', InternalStorageShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', InternalStorageShape.prototype.dy))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'corner': function corner(state) { + return [createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', CornerShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', CornerShape.prototype.dy))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'tee': function tee(state) { + return [createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', TeeShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', TeeShape.prototype.dy))); + return new mxPoint(bounds.x + (bounds.width + dx) / 2, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width / 2, pt.x - bounds.x - bounds.width / 2) * 2)); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'singleArrow': createArrowHandleFunction(1), + 'doubleArrow': createArrowHandleFunction(0.5), + 'folder': function folder(state) { + return [createHandle(state, ['tabWidth', 'tabHeight'], function (bounds) { + var tw = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'tabWidth', FolderShape.prototype.tabWidth))); + var th = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'tabHeight', FolderShape.prototype.tabHeight))); + + if (mxUtils.getValue(this.state.style, 'tabPosition', FolderShape.prototype.tabPosition) == mxConstants.ALIGN_RIGHT) { + tw = bounds.width - tw; + } + + return new mxPoint(bounds.x + tw, bounds.y + th); + }, function (bounds, pt) { + var tw = Math.max(0, Math.min(bounds.width, pt.x - bounds.x)); + + if (mxUtils.getValue(this.state.style, 'tabPosition', FolderShape.prototype.tabPosition) == mxConstants.ALIGN_RIGHT) { + tw = bounds.width - tw; + } + + this.state.style['tabWidth'] = Math.round(tw); + this.state.style['tabHeight'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'document': function document(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', DocumentShape.prototype.size)))); + return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + }, + 'tape': function tape(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', TapeShape.prototype.size)))); + return new mxPoint(bounds.getCenterX(), bounds.y + size * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2)); + })]; + }, + 'offPageConnector': function offPageConnector(state) { + return [createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', OffPageConnectorShape.prototype.size)))); + return new mxPoint(bounds.getCenterX(), bounds.y + (1 - size) * bounds.height); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + }, + 'step': createDisplayHandleFunction(StepShape.prototype.size, true, null, true, StepShape.prototype.fixedSize), + 'hexagon': createDisplayHandleFunction(HexagonShape.prototype.size, true, 0.5, true), + 'curlyBracket': createDisplayHandleFunction(CurlyBracketShape.prototype.size, false), + 'display': createDisplayHandleFunction(DisplayShape.prototype.size, false), + 'cube': createCubeHandleFunction(1, CubeShape.prototype.size, false), + 'card': createCubeHandleFunction(0.5, CardShape.prototype.size, true), + 'loopLimit': createCubeHandleFunction(0.5, LoopLimitShape.prototype.size, true), + 'trapezoid': createTrapezoidHandleFunction(0.5), + 'parallelogram': createTrapezoidHandleFunction(1) + }; + mxGraph.createHandle = createHandle; + mxGraph.handleFactory = handleFactory; + + mxVertexHandler.prototype.createCustomHandles = function () { + if (this.state.view.graph.getSelectionCount() == 1) { + if (this.graph.isCellRotatable(this.state.cell)) { + var name = this.state.style['shape']; + + if (mxCellRenderer.defaultShapes[name] == null && mxStencilRegistry.getStencil(name) == null) { + name = mxConstants.SHAPE_RECTANGLE; + } + + var fn = handleFactory[name]; + + if (fn == null && this.state.shape != null && this.state.shape.isRoundable()) { + fn = handleFactory[mxConstants.SHAPE_RECTANGLE]; + } + + if (fn != null) { + return fn(this.state); + } + } + } + + return null; + }; + + mxEdgeHandler.prototype.createCustomHandles = function () { + if (this.state.view.graph.getSelectionCount() == 1) { + var name = this.state.style['shape']; + + if (mxCellRenderer.defaultShapes[name] == null && mxStencilRegistry.getStencil(name) == null) { + name = mxConstants.SHAPE_CONNECTOR; + } + + var fn = handleFactory[name]; + + if (fn != null) { + return fn(this.state); + } + } + + return null; + }; + } else { + mxGraph.createHandle = function () {}; + + mxGraph.handleFactory = {}; + } + + var isoHVector = new mxPoint(1, 0); + var isoVVector = new mxPoint(1, 0); + var alpha1 = mxUtils.toRadians(-30); + var cos1 = Math.cos(alpha1); + var sin1 = Math.sin(alpha1); + isoHVector = mxUtils.getRotatedPoint(isoHVector, cos1, sin1); + var alpha2 = mxUtils.toRadians(-150); + var cos2 = Math.cos(alpha2); + var sin2 = Math.sin(alpha2); + isoVVector = mxUtils.getRotatedPoint(isoVVector, cos2, sin2); + + mxEdgeStyle.IsometricConnector = function (state, source, target, points, result) { + var view = state.view; + var pt = points != null && points.length > 0 ? points[0] : null; + var pts = state.absolutePoints; + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + + if (pt != null) { + pt = view.transformControlPoint(state, pt); + } + + if (p0 == null) { + if (source != null) { + p0 = new mxPoint(source.getCenterX(), source.getCenterY()); + } + } + + if (pe == null) { + if (target != null) { + pe = new mxPoint(target.getCenterX(), target.getCenterY()); + } + } + + var a1 = isoHVector.x; + var a2 = isoHVector.y; + var b1 = isoVVector.x; + var b2 = isoVVector.y; + var elbow = mxUtils.getValue(state.style, 'elbow', 'horizontal') == 'horizontal'; + + if (pe != null && p0 != null) { + var isoLineTo = function isoLineTo(x, y, ignoreFirst) { + var c1 = x - last.x; + var c2 = y - last.y; + var h = (b2 * c1 - b1 * c2) / (a1 * b2 - a2 * b1); + var v = (a2 * c1 - a1 * c2) / (a2 * b1 - a1 * b2); + + if (elbow) { + if (ignoreFirst) { + last = new mxPoint(last.x + a1 * h, last.y + a2 * h); + result.push(last); + } + + last = new mxPoint(last.x + b1 * v, last.y + b2 * v); + result.push(last); + } else { + if (ignoreFirst) { + last = new mxPoint(last.x + b1 * v, last.y + b2 * v); + result.push(last); + } + + last = new mxPoint(last.x + a1 * h, last.y + a2 * h); + result.push(last); + } + }; + + var last = p0; + ; + + if (pt == null) { + pt = new mxPoint(p0.x + (pe.x - p0.x) / 2, p0.y + (pe.y - p0.y) / 2); + } + + isoLineTo(pt.x, pt.y, true); + isoLineTo(pe.x, pe.y, false); + } + }; + + mxStyleRegistry.putValue('isometricEdgeStyle', mxEdgeStyle.IsometricConnector); + var graphCreateEdgeHandler = mxGraph.prototype.createEdgeHandler; + + mxGraph.prototype.createEdgeHandler = function (state, edgeStyle) { + if (edgeStyle == mxEdgeStyle.IsometricConnector) { + var handler = new mxElbowEdgeHandler(state); + handler.snapToTerminals = false; + return handler; + } + + return graphCreateEdgeHandler.apply(this, arguments); + }; + + IsoRectangleShape.prototype.constraints = []; + IsoCubeShape.prototype.constraints = []; + CalloutShape.prototype.constraints = []; + mxRectangleShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + mxEllipse.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5))]; + mxLabel.prototype.constraints = mxRectangleShape.prototype.constraints; + mxImageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + mxSwimlane.prototype.constraints = mxRectangleShape.prototype.constraints; + PlusShape.prototype.constraints = mxRectangleShape.prototype.constraints; + NoteShape.prototype.constraints = mxRectangleShape.prototype.constraints; + CardShape.prototype.constraints = mxRectangleShape.prototype.constraints; + CubeShape.prototype.constraints = mxRectangleShape.prototype.constraints; + FolderShape.prototype.constraints = mxRectangleShape.prototype.constraints; + InternalStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DataStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + TapeDataShape.prototype.constraints = mxEllipse.prototype.constraints; + OrEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + SumEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + LineEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + ManualInputShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DelayShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DisplayShape.prototype.constraints = mxRectangleShape.prototype.constraints; + LoopLimitShape.prototype.constraints = mxRectangleShape.prototype.constraints; + OffPageConnectorShape.prototype.constraints = mxRectangleShape.prototype.constraints; + mxCylinder.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.15, 0.05), false), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.85, 0.05), false), new mxConnectionConstraint(new mxPoint(0, 0.3), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.7), true), new mxConnectionConstraint(new mxPoint(1, 0.3), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.7), true), new mxConnectionConstraint(new mxPoint(0.15, 0.95), false), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.85, 0.95), false)]; + UmlActorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.1), false), new mxConnectionConstraint(new mxPoint(0.5, 0), false), new mxConnectionConstraint(new mxPoint(0.75, 0.1), false), new mxConnectionConstraint(new mxPoint(0, 1 / 3), false), new mxConnectionConstraint(new mxPoint(0, 1), false), new mxConnectionConstraint(new mxPoint(1, 1 / 3), false), new mxConnectionConstraint(new mxPoint(1, 1), false), new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)]; + ComponentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.3), true), new mxConnectionConstraint(new mxPoint(0, 0.7), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + mxActor.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.25, 0.2), false), new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + SwitchShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), false), new mxConnectionConstraint(new mxPoint(0.5, 0.25), false), new mxConnectionConstraint(new mxPoint(1, 0), false), new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 1), false), new mxConnectionConstraint(new mxPoint(0.5, 0.75), false), new mxConnectionConstraint(new mxPoint(1, 1), false)]; + TapeShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.35), false), new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 0.65), false), new mxConnectionConstraint(new mxPoint(1, 0.35), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.65), false), new mxConnectionConstraint(new mxPoint(0.25, 1), false), new mxConnectionConstraint(new mxPoint(0.75, 0), false)]; + StepShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true)]; + mxLine.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + LollipopShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), false), new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; + mxDoubleEllipse.prototype.constraints = mxEllipse.prototype.constraints; + mxRhombus.prototype.constraints = mxEllipse.prototype.constraints; + mxTriangle.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; + mxHexagon.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.375, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.625, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.375, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.625, 1), true)]; + mxCloud.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), new mxConnectionConstraint(new mxPoint(0.4, 0.1), false), new mxConnectionConstraint(new mxPoint(0.16, 0.55), false), new mxConnectionConstraint(new mxPoint(0.07, 0.4), false), new mxConnectionConstraint(new mxPoint(0.31, 0.8), false), new mxConnectionConstraint(new mxPoint(0.13, 0.77), false), new mxConnectionConstraint(new mxPoint(0.8, 0.8), false), new mxConnectionConstraint(new mxPoint(0.55, 0.95), false), new mxConnectionConstraint(new mxPoint(0.875, 0.5), false), new mxConnectionConstraint(new mxPoint(0.96, 0.7), false), new mxConnectionConstraint(new mxPoint(0.625, 0.2), false), new mxConnectionConstraint(new mxPoint(0.88, 0.25), false)]; + ParallelogramShape.prototype.constraints = mxRectangleShape.prototype.constraints; + TrapezoidShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DocumentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true)]; + mxArrow.prototype.constraints = null; + TeeShape.prototype.constraints = null; + CornerShape.prototype.constraints = null; + CrossbarShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), false), new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 1), false), new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), new mxConnectionConstraint(new mxPoint(0.5, 0.5), false), new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 1), false)]; + SingleArrowShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + DoubleArrowShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + CrossShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false), new mxConnectionConstraint(new mxPoint(0.5, 0), false), new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; + UmlLifeline.prototype.constraints = null; + OrShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), false), new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 0.75), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false), new mxConnectionConstraint(new mxPoint(0.7, 0.1), false), new mxConnectionConstraint(new mxPoint(0.7, 0.9), false)]; + XorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.175, 0.25), false), new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), new mxConnectionConstraint(new mxPoint(0.175, 0.75), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false), new mxConnectionConstraint(new mxPoint(0.7, 0.1), false), new mxConnectionConstraint(new mxPoint(0.7, 0.9), false)]; + RequiredInterfaceShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + ProvidedRequiredInterfaceShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; +})(); diff --git a/data/plugins/grafana-flowcharting/dist/css/flowchart.dark.css b/data/plugins/grafana-flowcharting/dist/css/flowchart.dark.css new file mode 100644 index 0000000000000..92901418c247a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/css/flowchart.dark.css @@ -0,0 +1,708 @@ +div.flowchart-panel { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; } + +div.flowchart-panel__chart { + position: relative; + flex-grow: 1; + width: 100%; + height: 100%; + margin: 0; } + +table.flowchartTable-editor { + font-family: Arial, Helvetica, sans-serif; + border: 2px solid #161719; + background-color: #212124; + width: 90%; + height: 200px; + text-align: left; + border-collapse: collapse; } + +table.flowchartTable-editor td, +table.flowchartTable-editor th { + border: 2px solid #161719; + padding: 2px 2px; } + +table.flowchartTable-editor tbody td { + font-size: 11px; + color: #e6e6e6; } + +table.flowchartTable-editor thead { + background: #2f2f32; + border-bottom: 2px solid #000000; } + +table.flowchartTable-editor thead th { + font-size: 12px; + font-weight: bold; + color: #33b5e5; + text-align: center; + border-left: 2px solid #171819; } + +table.flowchartTable-editor thead th:first-child { + border-left: none; } + +table.flowchartTable-editor tfoot td { + font-size: 12px; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid #333; } + +div.rule-item { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + box-sizing: inherit; + text-decoration: none; + touch-action: manipulation; + display: block; + margin: 3px; + padding: 7px; + background: linear-gradient(135deg, #2f2f32, #262628); + box-shadow: -1px -1px 0 0 rgba(255, 255, 255, 0.1), 1px 1px 0 0 rgba(0, 0, 0, 0.3); + color: #d8d9da; } + +div.rule-item:hover { + background: linear-gradient(135deg, #3d3d41, #262628); } + +span.rule-extend { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; } + +span.rule-title { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; } + +span.rule-nav { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #d8d9da; + box-sizing: inherit; + float: right; } + +div.tooltip-text { + display: block; + word-wrap: break-word; + max-width: 200px; + white-space: normal; } + +div.tooltip-metric { + margin: 5px 5px 5px 5px; } + +div.tooltip-date { + margin-top: 5px; + margin-bottom: 5px; } + +.ct-label { + fill: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.4); + font-size: 0.75rem; + line-height: 1; } + +.ct-chart-line .ct-label, +.ct-chart-bar .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; } + +.ct-chart-pie .ct-label, +.ct-chart-donut .ct-label { + dominant-baseline: central; } + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; } + +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; } + +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end; } + +.ct-grid { + stroke: rgba(0, 0, 0, 0.2); + stroke-width: 1px; + stroke-dasharray: 2px; } + +.ct-grid-background { + fill: none; } + +.ct-point { + stroke-width: 1px; + stroke-linecap: round; } + +.ct-line { + fill: none; + stroke-width: 1px; } + +.ct-area { + stroke: none; + fill-opacity: 0.1; } + +.ct-bar { + fill: none; + stroke-width: 10px; } + +.ct-slice-donut { + fill: none; + stroke-width: 60px; } + +.ct-series-a .ct-point, +.ct-series-a .ct-line, +.ct-series-a .ct-bar, +.ct-series-a .ct-slice-donut { + stroke: #d70206; } + +.ct-series-a .ct-slice-pie, +.ct-series-a .ct-slice-donut-solid, +.ct-series-a .ct-area { + fill: #d70206; } + +.ct-square { + display: block; + position: relative; + width: 100%; } + +.ct-square:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 100%; } + +.ct-square:after { + content: ''; + display: table; + clear: both; } + +.ct-square > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-second { + display: block; + position: relative; + width: 100%; } + +.ct-minor-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 93.75%; } + +.ct-minor-second:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-second { + display: block; + position: relative; + width: 100%; } + +.ct-major-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 88.8888888889%; } + +.ct-major-second:after { + content: ''; + display: table; + clear: both; } + +.ct-major-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-third { + display: block; + position: relative; + width: 100%; } + +.ct-minor-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 83.3333333333%; } + +.ct-minor-third:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-third { + display: block; + position: relative; + width: 100%; } + +.ct-major-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 80%; } + +.ct-major-third:after { + content: ''; + display: table; + clear: both; } + +.ct-major-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100%; } + +.ct-perfect-fourth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 75%; } + +.ct-perfect-fourth:after { + content: ''; + display: table; + clear: both; } + +.ct-perfect-fourth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100%; } + +.ct-perfect-fifth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 66.6666666667%; } + +.ct-perfect-fifth:after { + content: ''; + display: table; + clear: both; } + +.ct-perfect-fifth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-sixth { + display: block; + position: relative; + width: 100%; } + +.ct-minor-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 62.5%; } + +.ct-minor-sixth:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-golden-section { + display: block; + position: relative; + width: 100%; } + +.ct-golden-section:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 61.804697157%; } + +.ct-golden-section:after { + content: ''; + display: table; + clear: both; } + +.ct-golden-section > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-sixth { + display: block; + position: relative; + width: 100%; } + +.ct-major-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 60%; } + +.ct-major-sixth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-seventh { + display: block; + position: relative; + width: 100%; } + +.ct-minor-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 56.25%; } + +.ct-minor-seventh:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-seventh { + display: block; + position: relative; + width: 100%; } + +.ct-major-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 53.3333333333%; } + +.ct-major-seventh:after { + content: ''; + display: table; + clear: both; } + +.ct-major-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-octave { + display: block; + position: relative; + width: 100%; } + +.ct-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 50%; } + +.ct-octave:after { + content: ''; + display: table; + clear: both; } + +.ct-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-tenth { + display: block; + position: relative; + width: 100%; } + +.ct-major-tenth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 40%; } + +.ct-major-tenth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-tenth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-eleventh { + display: block; + position: relative; + width: 100%; } + +.ct-major-eleventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 37.5%; } + +.ct-major-eleventh:after { + content: ''; + display: table; + clear: both; } + +.ct-major-eleventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-twelfth { + display: block; + position: relative; + width: 100%; } + +.ct-major-twelfth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 33.3333333333%; } + +.ct-major-twelfth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-twelfth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-double-octave { + display: block; + position: relative; + width: 100%; } + +.ct-double-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 25%; } + +.ct-double-octave:after { + content: ''; + display: table; + clear: both; } + +.ct-double-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-chart .ct-series.ct-series-a .ct-area { + fill: #22e61b; } + +.ct-chart .ct-series.ct-series-a .ct-line { + stroke: #22e61b; } diff --git a/data/plugins/grafana-flowcharting/dist/css/flowchart.light.css b/data/plugins/grafana-flowcharting/dist/css/flowchart.light.css new file mode 100644 index 0000000000000..92901418c247a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/css/flowchart.light.css @@ -0,0 +1,708 @@ +div.flowchart-panel { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; } + +div.flowchart-panel__chart { + position: relative; + flex-grow: 1; + width: 100%; + height: 100%; + margin: 0; } + +table.flowchartTable-editor { + font-family: Arial, Helvetica, sans-serif; + border: 2px solid #161719; + background-color: #212124; + width: 90%; + height: 200px; + text-align: left; + border-collapse: collapse; } + +table.flowchartTable-editor td, +table.flowchartTable-editor th { + border: 2px solid #161719; + padding: 2px 2px; } + +table.flowchartTable-editor tbody td { + font-size: 11px; + color: #e6e6e6; } + +table.flowchartTable-editor thead { + background: #2f2f32; + border-bottom: 2px solid #000000; } + +table.flowchartTable-editor thead th { + font-size: 12px; + font-weight: bold; + color: #33b5e5; + text-align: center; + border-left: 2px solid #171819; } + +table.flowchartTable-editor thead th:first-child { + border-left: none; } + +table.flowchartTable-editor tfoot td { + font-size: 12px; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid #333; } + +div.rule-item { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + box-sizing: inherit; + text-decoration: none; + touch-action: manipulation; + display: block; + margin: 3px; + padding: 7px; + background: linear-gradient(135deg, #2f2f32, #262628); + box-shadow: -1px -1px 0 0 rgba(255, 255, 255, 0.1), 1px 1px 0 0 rgba(0, 0, 0, 0.3); + color: #d8d9da; } + +div.rule-item:hover { + background: linear-gradient(135deg, #3d3d41, #262628); } + +span.rule-extend { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; } + +span.rule-title { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; } + +span.rule-nav { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #d8d9da; + box-sizing: inherit; + float: right; } + +div.tooltip-text { + display: block; + word-wrap: break-word; + max-width: 200px; + white-space: normal; } + +div.tooltip-metric { + margin: 5px 5px 5px 5px; } + +div.tooltip-date { + margin-top: 5px; + margin-bottom: 5px; } + +.ct-label { + fill: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.4); + font-size: 0.75rem; + line-height: 1; } + +.ct-chart-line .ct-label, +.ct-chart-bar .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; } + +.ct-chart-pie .ct-label, +.ct-chart-donut .ct-label { + dominant-baseline: central; } + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; } + +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; } + +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; } + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end; } + +.ct-grid { + stroke: rgba(0, 0, 0, 0.2); + stroke-width: 1px; + stroke-dasharray: 2px; } + +.ct-grid-background { + fill: none; } + +.ct-point { + stroke-width: 1px; + stroke-linecap: round; } + +.ct-line { + fill: none; + stroke-width: 1px; } + +.ct-area { + stroke: none; + fill-opacity: 0.1; } + +.ct-bar { + fill: none; + stroke-width: 10px; } + +.ct-slice-donut { + fill: none; + stroke-width: 60px; } + +.ct-series-a .ct-point, +.ct-series-a .ct-line, +.ct-series-a .ct-bar, +.ct-series-a .ct-slice-donut { + stroke: #d70206; } + +.ct-series-a .ct-slice-pie, +.ct-series-a .ct-slice-donut-solid, +.ct-series-a .ct-area { + fill: #d70206; } + +.ct-square { + display: block; + position: relative; + width: 100%; } + +.ct-square:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 100%; } + +.ct-square:after { + content: ''; + display: table; + clear: both; } + +.ct-square > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-second { + display: block; + position: relative; + width: 100%; } + +.ct-minor-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 93.75%; } + +.ct-minor-second:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-second { + display: block; + position: relative; + width: 100%; } + +.ct-major-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 88.8888888889%; } + +.ct-major-second:after { + content: ''; + display: table; + clear: both; } + +.ct-major-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-third { + display: block; + position: relative; + width: 100%; } + +.ct-minor-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 83.3333333333%; } + +.ct-minor-third:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-third { + display: block; + position: relative; + width: 100%; } + +.ct-major-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 80%; } + +.ct-major-third:after { + content: ''; + display: table; + clear: both; } + +.ct-major-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100%; } + +.ct-perfect-fourth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 75%; } + +.ct-perfect-fourth:after { + content: ''; + display: table; + clear: both; } + +.ct-perfect-fourth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100%; } + +.ct-perfect-fifth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 66.6666666667%; } + +.ct-perfect-fifth:after { + content: ''; + display: table; + clear: both; } + +.ct-perfect-fifth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-sixth { + display: block; + position: relative; + width: 100%; } + +.ct-minor-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 62.5%; } + +.ct-minor-sixth:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-golden-section { + display: block; + position: relative; + width: 100%; } + +.ct-golden-section:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 61.804697157%; } + +.ct-golden-section:after { + content: ''; + display: table; + clear: both; } + +.ct-golden-section > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-sixth { + display: block; + position: relative; + width: 100%; } + +.ct-major-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 60%; } + +.ct-major-sixth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-minor-seventh { + display: block; + position: relative; + width: 100%; } + +.ct-minor-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 56.25%; } + +.ct-minor-seventh:after { + content: ''; + display: table; + clear: both; } + +.ct-minor-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-seventh { + display: block; + position: relative; + width: 100%; } + +.ct-major-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 53.3333333333%; } + +.ct-major-seventh:after { + content: ''; + display: table; + clear: both; } + +.ct-major-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-octave { + display: block; + position: relative; + width: 100%; } + +.ct-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 50%; } + +.ct-octave:after { + content: ''; + display: table; + clear: both; } + +.ct-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-tenth { + display: block; + position: relative; + width: 100%; } + +.ct-major-tenth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 40%; } + +.ct-major-tenth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-tenth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-eleventh { + display: block; + position: relative; + width: 100%; } + +.ct-major-eleventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 37.5%; } + +.ct-major-eleventh:after { + content: ''; + display: table; + clear: both; } + +.ct-major-eleventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-major-twelfth { + display: block; + position: relative; + width: 100%; } + +.ct-major-twelfth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 33.3333333333%; } + +.ct-major-twelfth:after { + content: ''; + display: table; + clear: both; } + +.ct-major-twelfth > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-double-octave { + display: block; + position: relative; + width: 100%; } + +.ct-double-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 25%; } + +.ct-double-octave:after { + content: ''; + display: table; + clear: both; } + +.ct-double-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; } + +.ct-chart .ct-series.ct-series-a .ct-area { + fill: #22e61b; } + +.ct-chart .ct-series.ct-series-a .ct-line { + stroke: #22e61b; } diff --git a/data/plugins/grafana-flowcharting/dist/flowchartHandler.js b/data/plugins/grafana-flowcharting/dist/flowchartHandler.js new file mode 100644 index 0000000000000..c6f55f97ca656 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/flowchartHandler.js @@ -0,0 +1,316 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _flowchart_class = _interopRequireDefault(require("./flowchart_class")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var FlowchartHandler = function () { + function FlowchartHandler($scope, elem, ctrl, data) { + var _this = this; + + _classCallCheck(this, FlowchartHandler); + + u.log(1, 'FlowchartHandler.constructor()'); + u.log(0, 'FlowchartHandler.constructor() data', data); + this.$scope = $scope || null; + this.$elem = elem.find('.flowchart-panel__chart'); + this.ctrl = ctrl; + this.flowcharts = []; + this.data = data; + this.firstLoad = true; + this.changeSourceFlag = false; + this.changeOptionFlag = true; + this.changeDataFlag = false; + this.changedRuleFlag = false; + this.defaultXml = '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'; + this.xgraph = undefined; + this.$container = undefined; + this.onMapping = { + active: false, + object: undefined, + id: undefined + }; + this["import"](this.data); + ctrl.events.on('render', function () { + _this.render(); + }); + this.mousedownTimeout = 0; + this.mousedown = 0; + + document.body.onmousedown = function () { + _this.mousedown = 0; + window.clearInterval(_this.mousedownTimeout); + _this.mousedownTimeout = window.setInterval(function () { + _this.mousedown += 1; + }, 200); + }; + + document.body.onmouseup = function () { + _this.mousedown = 0; + window.clearInterval(_this.mousedownTimeout); + }; + } + + _createClass(FlowchartHandler, [{ + key: "import", + value: function _import(obj) { + var _this2 = this; + + u.log(1, 'FlowchartHandler.import()'); + u.log(0, 'FlowchartHandler.import() obj', obj); + this.flowcharts = []; + + if (obj !== undefined && obj !== null && obj.length > 0) { + obj.forEach(function (map) { + var container = _this2.createContainer(); + + var newData = {}; + var fc = new _flowchart_class["default"](map.name, map.xml, container, _this2.ctrl, newData); + fc["import"](map); + + _this2.flowcharts.push(fc); + + _this2.data.push(newData); + }); + } + } + }, { + key: "getFlowchart", + value: function getFlowchart(index) { + return this.flowcharts[index]; + } + }, { + key: "getFlowcharts", + value: function getFlowcharts() { + return this.flowcharts; + } + }, { + key: "countFlowcharts", + value: function countFlowcharts() { + if (this.flowcharts !== undefined && Array.isArray(this.flowcharts)) return this.flowcharts.length; + return 0; + } + }, { + key: "createContainer", + value: function createContainer() { + var $container = $("
")); + this.$elem.html($container); + return $container[0]; + } + }, { + key: "addFlowchart", + value: function addFlowchart(name) { + u.log(1, 'FlowchartHandler.addFlowchart()'); + var container = this.createContainer(); + var data = {}; + var flowchart = new _flowchart_class["default"](name, this.defaultXml, container, this.ctrl, data); + this.data.push(data); + this.flowcharts.push(flowchart); + } + }, { + key: "render", + value: function render() { + u.log(1, 'flowchartHandler.render()'); + this.optionsFlag = true; + + if (!this.mousedown) { + if (this.changeSourceFlag) { + this.load(); + this.changeSourceFlag = false; + this.changeRuleFlag = true; + this.optionsFlag = true; + } + + if (this.changeOptionFlag) { + this.setOptions(); + this.changeOptionFlag = false; + this.optionsFlag = true; + } + + if (this.changeRuleFlag || this.changeDataFlag) { + var rules = this.ctrl.rulesHandler.getRules(); + var series = this.ctrl.series; + this.async_refreshStates(rules, series); + this.changeDataFlag = false; + this.optionsFlag = false; + } + + if (this.optionsFlag || this.firstLoad) { + this.applyOptions(); + this.optionsFlag = false; + this.firstLoad = false; + } + } + } + }, { + key: "sourceChanged", + value: function sourceChanged() { + this.changeSourceFlag = true; + } + }, { + key: "optionChanged", + value: function optionChanged() { + this.changeOptionFlag = true; + } + }, { + key: "ruleChanged", + value: function ruleChanged() { + this.changeRuleFlag = true; + } + }, { + key: "dataChanged", + value: function dataChanged() { + this.changeDataFlag = true; + } + }, { + key: "applyOptions", + value: function applyOptions() { + u.log(1, "FlowchartHandler.applyOptions()"); + this.flowcharts.forEach(function (flowchart) { + flowchart.applyOptions(); + }); + } + }, { + key: "async_refreshStates", + value: function async_refreshStates(rules, series) { + this.refreshStates(rules, series); + } + }, { + key: "refreshStates", + value: function refreshStates(rules, series) { + if (this.changeRuleFlag) { + this.updateStates(rules); + this.changeRuleFlag = false; + } + + this.setStates(rules, series); + this.applyStates(); + } + }, { + key: "refresh", + value: function refresh() { + this.flowcharts.forEach(function (flowchart) { + flowchart.refresh(); + }); + } + }, { + key: "setStates", + value: function setStates(rules, series) { + this.flowcharts.forEach(function (flowchart) { + flowchart.setStates(rules, series); + }); + } + }, { + key: "updateStates", + value: function updateStates(rules) { + this.flowcharts.forEach(function (flowchart) { + flowchart.updateStates(rules); + }); + } + }, { + key: "applyStates", + value: function applyStates() { + this.flowcharts.forEach(function (flowchart) { + flowchart.applyStates(); + }); + this.refresh(); + } + }, { + key: "setOptions", + value: function setOptions() { + this.flowcharts.forEach(function (flowchart) { + flowchart.setOptions(); + }); + } + }, { + key: "draw", + value: function draw() { + u.log(1, "FlowchartHandler.draw()"); + this.flowcharts.forEach(function (flowchart) { + flowchart.redraw(); + }); + } + }, { + key: "load", + value: function load() { + u.log(1, "FlowchartHandler.load()"); + this.flowcharts.forEach(function (flowchart) { + flowchart.reload(); + }); + } + }, { + key: "setMap", + value: function setMap(objToMap) { + var flowchart = this.getFlowchart(0); + this.onMapping.active = true; + this.onMapping.object = objToMap; + this.onMapping.id = objToMap.getId(); + this.onMapping.$scope = this.$scope; + flowchart.setMap(this.onMapping); + } + }, { + key: "unsetMap", + value: function unsetMap() { + var flowchart = this.getFlowchart(0); + this.onMapping.active = false; + this.onMapping.object = undefined; + this.onMapping.id = ''; + flowchart.unsetMap(); + } + }, { + key: "isMapping", + value: function isMapping(objToMap) { + if (objToMap === undefined || objToMap == null) return this.onMapping.active; + if (this.onMapping.active === true && objToMap === this.onMapping.object) return true; + return false; + } + }, { + key: "listenMessage", + value: function listenMessage(event) { + var index = this.currentFlowchartIndex; + + if (event.data === 'ready') { + event.source.postMessage(this.flowcharts[index].data.xml, event.origin); + } else { + if (this.onEdit && event.data !== undefined && event.data.length > 0) { + this.flowcharts[index].redraw(event.data); + this.sourceChanged(); + this.$scope.$apply(); + this.render(); + } + + if (this.onEdit && event.data !== undefined || event.data.length === 0) { + this.editorWindow.close(); + this.onEdit = false; + window.removeEventListener('message', this.listenMessage.bind(this), false); + } + } + } + }, { + key: "openDrawEditor", + value: function openDrawEditor(index) { + var urlEditor = this.getFlowchart(index).getUrlEditor(); + this.currentFlowchartIndex = index; + var theme = this.getFlowchart(index).getThemeEditor(); + var urlParams = "".concat(urlEditor, "?embed=1&spin=1&libraries=1&ui=").concat(theme); + this.editorWindow = window.open(urlParams, 'MxGraph Editor', 'width=1280, height=720'); + this.onEdit = true; + window.addEventListener('message', this.listenMessage.bind(this), false); + } + }]); + + return FlowchartHandler; +}(); + +exports["default"] = FlowchartHandler; diff --git a/data/plugins/grafana-flowcharting/dist/flowchart_class.js b/data/plugins/grafana-flowcharting/dist/flowchart_class.js new file mode 100644 index 0000000000000..e21cffd4143a0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/flowchart_class.js @@ -0,0 +1,383 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _graph_class = _interopRequireDefault(require("./graph_class")); + +var _statesHandler = _interopRequireDefault(require("./statesHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Flowchart = function () { + function Flowchart(name, xmlGraph, container, ctrl, data) { + _classCallCheck(this, Flowchart); + + u.log(1, "flowchart[".concat(name, "].constructor()")); + u.log(0, "flowchart[".concat(name, "].constructor() data"), data); + this.data = data; + this.data.name = name; + this.data.xml = xmlGraph; + this.data.download = false; + this.container = container; + this.xgraph = undefined; + this.stateHandler = undefined; + this.ctrl = ctrl; + this.templateSrv = ctrl.templateSrv; + this["import"](data); + } + + _createClass(Flowchart, [{ + key: "import", + value: function _import(obj) { + u.log(1, "flowchart[".concat(this.data.name, "].import()")); + u.log(0, "flowchart[".concat(this.data.name, "].import() obj"), obj); + this.data.download = obj.download !== undefined ? obj.download : false; + if (obj.source) this.data.type = obj.source.type;else this.data.type = obj.type || this.data.type || 'xml'; + if (obj.source) this.data.xml = obj.source.xml.value;else this.data.xml = obj.xml || this.data.xml || ''; + if (obj.source) this.data.url = obj.source.url.value;else this.data.url = obj.url !== undefined ? obj.url : 'http://:/'; + if (obj.options) this.data.zoom = obj.options.zoom;else this.data.zoom = obj.zoom || '100%'; + if (obj.options) this.data.center = obj.options.center;else this.data.center = obj.center !== undefined ? obj.center : true; + if (obj.options) this.data.scale = obj.options.scale;else this.data.scale = obj.scale !== undefined ? obj.scale : true; + if (obj.options) this.data.lock = obj.options.lock;else this.data.lock = obj.lock !== undefined ? obj.lock : true; + if (obj.options) this.data.allowDrawio = false;else this.data.allowDrawio = obj.allowDrawio !== undefined ? obj.allowDrawio : false; + if (obj.options) this.data.tooltip = obj.options.tooltip;else this.data.tooltip = obj.tooltip !== undefined ? obj.tooltip : true; + if (obj.options) this.data.grid = obj.options.grid;else this.data.grid = obj.grid !== undefined ? obj.grid : false; + if (obj.options) this.data.bgColor = obj.options.bgColor;else this.data.bgColor = obj.bgColor; + this.data.editorUrl = obj.editorUrl !== undefined ? obj.editorUrl : "https://www.draw.io"; + this.data.editorTheme = obj.editorTheme !== undefined ? obj.editorTheme : "dark"; + this.init(); + } + }, { + key: "getData", + value: function getData() { + return this.data; + } + }, { + key: "updateStates", + value: function updateStates(rules) { + var _this = this; + + rules.forEach(function (rule) { + rule.states = _this.stateHandler.getStatesForRule(rule); + rule.states.forEach(function (state) { + state.unsetState(); + }); + }); + } + }, { + key: "init", + value: function init() { + u.log(1, "flowchart[".concat(this.data.name, "].init()")); + if (this.xgraph === undefined) this.xgraph = new _graph_class["default"](this.container, this.data.type, this.getContent()); + + if (this.data.xml !== undefined && this.data.xml !== null) { + if (this.data.allowDrawio) this.xgraph.allowDrawio(true);else this.xgraph.allowDrawio(false); + this.setOptions(); + this.xgraph.drawGraph(); + if (this.data.tooltip) this.xgraph.tooltipGraph(true); + if (this.data.scale) this.xgraph.scaleGraph(true);else this.xgraph.zoomGraph(this.data.zoom); + if (this.data.center) this.xgraph.centerGraph(true); + if (this.data.lock) this.xgraph.lockGraph(true); + this.stateHandler = new _statesHandler["default"](this.xgraph, this.ctrl); + } else { + u.log(3, 'XML Graph not defined'); + } + } + }, { + key: "getStateHandler", + value: function getStateHandler() { + return this.stateHandler; + } + }, { + key: "getXGraph", + value: function getXGraph() { + return this.xgraph; + } + }, { + key: "setStates", + value: function setStates(rules, series) { + u.log(1, "flowchart[".concat(this.data.name, "].setStates()")); + u.log(0, "flowchart[".concat(this.data.name, "].setStates() rules"), rules); + u.log(0, "flowchart[".concat(this.data.name, "].setStates() series"), series); + if (rules === undefined) u.log(3, "Rules shoudn't be null"); + if (series === undefined) u.log(3, "Series shoudn't be null"); + this.stateHandler.setStates(rules, series); + } + }, { + key: "setOptions", + value: function setOptions() { + this.setScale(this.data.scale); + this.setCenter(this.data.center); + this.setGrid(this.data.grid); + this.setTooltip(this.data.tooltip); + this.setLock(this.data.lock); + this.setZoom(this.data.zoom); + this.setBgColor(this.data.bgColor); + } + }, { + key: "applyStates", + value: function applyStates() { + u.log(1, "flowchart[".concat(this.data.name, "].applyStates()")); + this.stateHandler.applyStates(); + } + }, { + key: "applyOptions", + value: function applyOptions() { + u.log(1, "flowchart[".concat(this.data.name, "].refresh()")); + u.log(0, "flowchart[".concat(this.data.name, "].refresh() data"), this.data); + this.xgraph.applyGraph(this.width, this.height); + } + }, { + key: "refresh", + value: function refresh() { + this.xgraph.refresh(); + } + }, { + key: "redraw", + value: function redraw(xmlGraph) { + u.log(1, "flowchart[".concat(this.data.name, "].redraw()")); + + if (xmlGraph !== undefined) { + this.data.xml = xmlGraph; + this.xgraph.setXmlGraph(this.getXml(true)); + } else { + u.log(2, 'XML Content not defined'); + this.xgraph.setXmlGraph(this.getXml(true)); + } + + this.applyOptions(); + } + }, { + key: "reload", + value: function reload() { + u.log(1, "flowchart[".concat(this.data.name, "].reload()")); + + if (this.xgraph !== undefined && this.xgraph !== null) { + this.xgraph.destroyGraph(); + this.xgraph = undefined; + this.init(); + } else this.init(); + } + }, { + key: "setLock", + value: function setLock(bool) { + this.data.lock = bool; + this.xgraph.lock = bool; + } + }, { + key: "lock", + value: function lock(bool) { + if (bool !== undefined) this.data.lock = bool; + this.xgraph.lockGraph(this.data.lock); + } + }, { + key: "setTooltip", + value: function setTooltip(bool) { + this.data.tooltip = bool; + this.xgraph.tooltip = bool; + } + }, { + key: "tooltip", + value: function tooltip(bool) { + if (bool !== undefined) this.data.tooltip = bool; + this.xgraph.tooltipGraph(this.data.tooltip); + } + }, { + key: "setScale", + value: function setScale(bool) { + this.data.scale = bool; + this.xgraph.scale = bool; + } + }, { + key: "setBgColor", + value: function setBgColor(bgColor) { + this.data.bgColor = bgColor; + this.xgraph.bgColor = bgColor; + } + }, { + key: "bgColor", + value: function bgColor(_bgColor) { + this.data.bgColor = _bgColor; + if (_bgColor) this.xgraph.bgGraph(_bgColor); + } + }, { + key: "scale", + value: function scale(bool) { + u.log(1, 'Flowchart.scale()'); + if (bool !== undefined) this.data.scale = bool; + this.xgraph.scaleGraph(this.data.scale); + } + }, { + key: "setCenter", + value: function setCenter(bool) { + this.data.center = bool; + this.xgraph.center = bool; + } + }, { + key: "getNamesByProp", + value: function getNamesByProp(prop) { + return this.xgraph.getOrignalCells(prop); + } + }, { + key: "getXml", + value: function getXml(replaceVarBool) { + u.log(1, "flowchart[".concat(this.data.name, "].getXml()")); + if (!replaceVarBool) return this.data.xml; + return this.templateSrv.replaceWithText(this.data.xml); + } + }, { + key: "getCsv", + value: function getCsv(replaceVarBool) { + u.log(1, "flowchart[".concat(this.data.name, "].getXml()")); + if (!replaceVarBool) return this.data.csv; + return this.templateSrv.replaceWithText(this.data.csv); + } + }, { + key: "getUrlEditor", + value: function getUrlEditor() { + return this.data.editorUrl; + } + }, { + key: "getThemeEditor", + value: function getThemeEditor() { + return this.data.editorTheme; + } + }, { + key: "getContent", + value: function getContent() { + u.log(1, "flowchart[".concat(this.data.name, "].getContent()")); + + if (this.data.download) { + var content = this.loadContent(this.data.url); + + if (content !== null) { + return content; + } else return ''; + } else { + if (this.data.type === 'xml') return this.getXml(true); + if (this.data.type === 'csv') return this.getCsv(true); + } + } + }, { + key: "loadContent", + value: function loadContent(url) { + u.log(1, "flowchart[".concat(this.data.name, "].loadContent()")); + var req = mxUtils.load(url); + + if (req.getStatus() === 200) { + return req.getText(); + } else { + u.log(3, 'Cannot load ' + url, req.getStatus()); + return null; + } + } + }, { + key: "renameId", + value: function renameId(oldId, newId) { + this.xgraph.renameId(oldId, newId); + } + }, { + key: "applyModel", + value: function applyModel() { + this.xmlGraph = this.xgraph.getXmlModel(); + this.redraw(this.xmlGraph); + } + }, { + key: "center", + value: function center(bool) { + if (bool !== undefined) this.data.center = bool; + this.xgraph.centerGraph(this.data.center); + } + }, { + key: "setZoom", + value: function setZoom(percent) { + this.data.zoom = percent; + this.xgraph.zoomPercent = percent; + } + }, { + key: "zoom", + value: function zoom(percent) { + if (percent !== undefined) this.data.percent = percent; + this.xgraph.zoomGraph(this.data.percent); + } + }, { + key: "setGrid", + value: function setGrid(bool) { + this.data.grid = bool; + this.xgraph.grid = bool; + } + }, { + key: "grid", + value: function grid(bool) { + if (bool !== undefined) this.data.grid = bool; + this.xgraph.gridGraph(this.data.grid); + } + }, { + key: "setWidth", + value: function setWidth(width) { + this.width = width; + } + }, { + key: "setHeight", + value: function setHeight(height) { + this.height = height; + } + }, { + key: "setXml", + value: function setXml(xml) { + this.data.xml = xml; + } + }, { + key: "minify", + value: function minify() { + this.data.xml = u.minify(this.data.xml); + } + }, { + key: "prettify", + value: function prettify() { + this.data.xml = u.prettify(this.data.xml); + } + }, { + key: "decode", + value: function decode() { + if (u.isencoded(this.data.xml)) this.data.xml = u.decode(this.data.xml, true, true, true); + } + }, { + key: "encode", + value: function encode() { + if (!u.isencoded(this.data.xml)) this.data.xml = u.encode(this.data.xml, true, true, true); + } + }, { + key: "getContainer", + value: function getContainer() { + return this.container; + } + }, { + key: "setMap", + value: function setMap(onMappingObj) { + u.log(1, "flowchart[".concat(this.data.name, "].setMap()")); + var container = this.getContainer(); + this.xgraph.setMap(onMappingObj); + container.scrollIntoView(); + container.focus(); + } + }, { + key: "unsetMap", + value: function unsetMap() { + this.xgraph.unsetMap(); + } + }]); + + return Flowchart; +}(); + +exports["default"] = Flowchart; diff --git a/data/plugins/grafana-flowcharting/dist/flowchart_ctrl.js b/data/plugins/grafana-flowcharting/dist/flowchart_ctrl.js new file mode 100644 index 0000000000000..3a6b3f9cbd0ba --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/flowchart_ctrl.js @@ -0,0 +1,236 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MetricsPanelCtrl = exports.FlowchartCtrl = void 0; + +var _sdk = require("app/plugins/sdk"); + +var _time_series = _interopRequireDefault(require("app/core/time_series2")); + +var _kbn = _interopRequireDefault(require("app/core/utils/kbn")); + +var _mapping_options = require("./mapping_options"); + +var _flowchart_options = require("./flowchart_options"); + +var _inspect_options = require("./inspect_options"); + +var _rulesHandler = _interopRequireDefault(require("./rulesHandler")); + +var _flowchartHandler = _interopRequireDefault(require("./flowchartHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var u = require('./utils'); + +window.u = window.u || u; + +var FlowchartCtrl = function (_MetricsPanelCtrl) { + _inherits(FlowchartCtrl, _MetricsPanelCtrl); + + function FlowchartCtrl($scope, $injector, $rootScope, templateSrv) { + var _this; + + _classCallCheck(this, FlowchartCtrl); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(FlowchartCtrl).call(this, $scope, $injector)); + _this.version = '0.5.0'; + _this.$rootScope = $rootScope; + _this.$scope = $scope; + _this.templateSrv = templateSrv; + _this.unitFormats = _kbn["default"].getUnitFormats(); + _this.changedSource = true; + _this.changedData = true; + _this.changedOptions = true; + _this.rulesHandler = undefined; + _this.flowchartHandler = undefined; + _this.series = []; + _this.panelDefaults = { + newFlag: true, + format: 'short', + valueName: 'current', + rulesData: [], + flowchartsData: [] + }; + + _.defaults(_this.panel, _this.panelDefaults); + + _this.panel.graphId = "flowchart_".concat(_this.panel.id); + _this.containerDivId = "container_".concat(_this.panel.graphId); + + _this.events.on('render', _this.onRender.bind(_assertThisInitialized(_this))); + + _this.events.on('refresh', _this.onRefresh.bind(_assertThisInitialized(_this))); + + _this.events.on('data-received', _this.onDataReceived.bind(_assertThisInitialized(_this))); + + _this.events.on('data-error', _this.onDataError.bind(_assertThisInitialized(_this))); + + _this.events.on('data-snapshot-load', _this.onDataReceived.bind(_assertThisInitialized(_this))); + + _this.events.on('init-edit-mode', _this.onInitEditMode.bind(_assertThisInitialized(_this))); + + _this.events.on('init-panel-actions', _this.onInitPanelActions.bind(_assertThisInitialized(_this))); + + _this.events.on('template-variable-value-updated', _this.onVarChanged.bind(_assertThisInitialized(_this))); + + _this.dashboard.events.on('template-variable-value-updated', _this.onVarChanged.bind(_assertThisInitialized(_this)), $scope); + + $rootScope.onAppEvent('template-variable-value-updated', _this.onVarChanged.bind(_assertThisInitialized(_this)), $scope); + return _this; + } + + _createClass(FlowchartCtrl, [{ + key: "onInitEditMode", + value: function onInitEditMode() { + this.addEditorTab('Flowchart', _flowchart_options.flowchartOptionsTab, 2); + this.addEditorTab('Mapping', _mapping_options.mappingOptionsTab, 3); + this.addEditorTab('Inspect', _inspect_options.inspectOptionsTab, 4); + } + }, { + key: "onRefresh", + value: function onRefresh() { + u.log(1, 'FlowchartCtrl.onRefresh()'); + this.onRender(); + } + }, { + key: "onVarChanged", + value: function onVarChanged() { + u.log(1, 'FlowchartCtrl.onVarChanged()'); + this.flowchartHandler.sourceChanged(); + this.flowchartHandler.render(); + } + }, { + key: "onRender", + value: function onRender() { + u.log(1, 'FlowchartCtrl.onRender()'); + } + }, { + key: "onDataReceived", + value: function onDataReceived(dataList) { + u.log(1, 'FlowchartCtrl.onDataReceived()'); + u.log(0, 'FlowchartCtrl.onDataReceived() dataList', dataList); + this.series = dataList.map(this.seriesHandler.bind(this)); + u.log(0, 'FlowchartCtrl.onDataReceived() this.series', dataList); + this.flowchartHandler.dataChanged(); + this.render(); + } + }, { + key: "onDataError", + value: function onDataError() { + this.series = []; + this.render(); + } + }, { + key: "onInitPanelActions", + value: function onInitPanelActions(actions) { + actions.push({ + text: 'Export SVG', + click: 'ctrl.exportSVG()' + }); + } + }, { + key: "link", + value: function link(scope, elem, attrs, ctrl) { + u.log(1, 'FlowchartCtrl.link()'); + var newRulesData = []; + this.rulesHandler = new _rulesHandler["default"](scope, newRulesData); + + if (this.panel.version === undefined && this.panel.styles !== undefined) { + this.rulesHandler["import"](this.panel.styles); + delete this.panel.styles; + } else this.rulesHandler["import"](this.panel.rulesData); + + if (this.panel.newFlag && this.rulesHandler.countRules() === 0) this.rulesHandler.addRule('.*'); + this.panel.rulesData = newRulesData; + var newFlowchartsData = []; + this.flowchartHandler = new _flowchartHandler["default"](scope, elem, ctrl, newFlowchartsData); + + if (this.panel.version === undefined && this.panel.flowchart !== undefined) { + this.flowchartHandler["import"]([this.panel.flowchart]); + delete this.panel.flowchart; + } else this.flowchartHandler["import"](this.panel.flowchartsData); + + if (this.panel.newFlag && this.flowchartHandler.countFlowcharts() === 0) this.flowchartHandler.addFlowchart('Main'); + this.panel.flowchartsData = newFlowchartsData; + this.panel.newFlag = false; + this.panel.version = this.version; + } + }, { + key: "exportSVG", + value: function exportSVG() { + var scope = this.$scope.$new(true); + scope.panel = 'table'; + this.publishAppEvent('show-modal', { + templateHtml: '', + scope: scope, + modalClass: 'modal--narrow' + }); + } + }, { + key: "setUnitFormat", + value: function setUnitFormat(subItem) { + this.panel.format = subItem.value; + this.refresh(); + } + }, { + key: "getVariables", + value: function getVariables() { + if (this.templateSrv !== undefined && this.templateSrv !== null) { + return _.map(this.templateSrv.variables, function (variable) { + return "${".concat(variable.name, "}"); + }); + } + + return null; + } + }, { + key: "seriesHandler", + value: function seriesHandler(seriesData) { + u.log(1, 'FlowchartCtrl.seriesHandler()'); + var series = new _time_series["default"]({ + datapoints: seriesData.datapoints, + alias: seriesData.target, + unit: seriesData.unit + }); + series.flotpairs = series.getFlotPairs(this.panel.nullPointMode); + var datapoints = seriesData.datapoints || []; + + if (datapoints && datapoints.length > 0) { + var last = datapoints[datapoints.length - 1][1]; + var from = this.range.from; + + if (last - from < -10000) { + series.isOutsideRange = true; + } + } + + return series; + } + }]); + + return FlowchartCtrl; +}(_sdk.MetricsPanelCtrl); + +exports.MetricsPanelCtrl = exports.FlowchartCtrl = FlowchartCtrl; +FlowchartCtrl.templateUrl = './partials/module.html'; diff --git a/data/plugins/grafana-flowcharting/dist/flowchart_options.js b/data/plugins/grafana-flowcharting/dist/flowchart_options.js new file mode 100644 index 0000000000000..2f6fea14251cb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/flowchart_options.js @@ -0,0 +1,88 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.flowchartOptionsTab = flowchartOptionsTab; +exports.FlowchartOptionsCtrl = void 0; + +var _plugin = require("./plugin"); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var FlowchartOptionsCtrl = function () { + function FlowchartOptionsCtrl($scope) { + _classCallCheck(this, FlowchartOptionsCtrl); + + $scope.editor = this; + $scope.GF_PLUGIN = window.GF_PLUGIN; + this.$scope = $scope; + this.ctrl = $scope.ctrl; + this.flowchartHandler = this.ctrl.flowchartHandler; + this.panel = this.ctrl.panel; + this.sourceTypes = [{ + text: 'XML Content', + value: 'xml' + }]; + this.themes = [{ + text: 'Dark', + value: 'dark' + }, { + text: 'Light', + value: 'kennedy' + }, { + text: 'Mobile', + value: 'minimal' + }, { + text: 'Atlas', + value: 'atlas' + }]; + } + + _createClass(FlowchartOptionsCtrl, [{ + key: "render", + value: function render() { + this.flowchartHandler.render(); + } + }, { + key: "onSourceChange", + value: function onSourceChange() { + this.flowchartHandler.sourceChanged(); + this.render(); + } + }, { + key: "onOptionChange", + value: function onOptionChange() { + u.log(1, "FlowchartOptionsCtrl.onOptionChange()"); + this.flowchartHandler.optionChanged(); + this.render(); + } + }, { + key: "edit", + value: function edit(index) { + this.flowchartHandler.openDrawEditor(index); + } + }, { + key: "getFlowcharts", + value: function getFlowcharts() { + return this.flowchartHandler.getFlowcharts(); + } + }]); + + return FlowchartOptionsCtrl; +}(); + +exports.FlowchartOptionsCtrl = FlowchartOptionsCtrl; + +function flowchartOptionsTab($q, $sce, uiSegmentSrv) { + return { + restrict: 'E', + scope: true, + templateUrl: "".concat(GF_PLUGIN.getPartialPath(), "/flowchart_options.html"), + controller: FlowchartOptionsCtrl + }; +} diff --git a/data/plugins/grafana-flowcharting/dist/graph_class.js b/data/plugins/grafana-flowcharting/dist/graph_class.js new file mode 100644 index 0000000000000..e4ab716166587 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/graph_class.js @@ -0,0 +1,211 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["graph_class"] = factory(); + else + root["graph_class"] = factory(); +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/graph_class.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/chartist/dist/chartist.js": +/*!************************************************!*\ + !*** ./node_modules/chartist/dist/chartist.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {\n if (true) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return (root['Chartist'] = factory());\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n}(this, function () {\n\n/* Chartist.js 0.11.4\n * Copyright © 2019 Gion Kunz\n * Free to use under either the WTFPL license or the MIT license.\n * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL\n * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT\n */\n/**\n * The core module of Chartist that is mainly providing static functions and higher level functions for chart modules.\n *\n * @module Chartist.Core\n */\nvar Chartist = {\n version: '0.11.4'\n};\n\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * This object contains all namespaces used within Chartist.\n *\n * @memberof Chartist.Core\n * @type {{svg: string, xmlns: string, xhtml: string, xlink: string, ct: string}}\n */\n Chartist.namespaces = {\n svg: 'http://www.w3.org/2000/svg',\n xmlns: 'http://www.w3.org/2000/xmlns/',\n xhtml: 'http://www.w3.org/1999/xhtml',\n xlink: 'http://www.w3.org/1999/xlink',\n ct: 'http://gionkunz.github.com/chartist-js/ct'\n };\n\n /**\n * Helps to simplify functional style code\n *\n * @memberof Chartist.Core\n * @param {*} n This exact value will be returned by the noop function\n * @return {*} The same value that was provided to the n parameter\n */\n Chartist.noop = function (n) {\n return n;\n };\n\n /**\n * Generates a-z from a number 0 to 26\n *\n * @memberof Chartist.Core\n * @param {Number} n A number from 0 to 26 that will result in a letter a-z\n * @return {String} A character from a-z based on the input number n\n */\n Chartist.alphaNumerate = function (n) {\n // Limit to a-z\n return String.fromCharCode(97 + n % 26);\n };\n\n /**\n * Simple recursive object extend\n *\n * @memberof Chartist.Core\n * @param {Object} target Target object where the source will be merged into\n * @param {Object...} sources This object (objects) will be merged into target and then target is returned\n * @return {Object} An object that has the same reference as target but is extended and merged with the properties of source\n */\n Chartist.extend = function (target) {\n var i, source, sourceProp;\n target = target || {};\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (var prop in source) {\n sourceProp = source[prop];\n if (typeof sourceProp === 'object' && sourceProp !== null && !(sourceProp instanceof Array)) {\n target[prop] = Chartist.extend(target[prop], sourceProp);\n } else {\n target[prop] = sourceProp;\n }\n }\n }\n\n return target;\n };\n\n /**\n * Replaces all occurrences of subStr in str with newSubStr and returns a new string.\n *\n * @memberof Chartist.Core\n * @param {String} str\n * @param {String} subStr\n * @param {String} newSubStr\n * @return {String}\n */\n Chartist.replaceAll = function(str, subStr, newSubStr) {\n return str.replace(new RegExp(subStr, 'g'), newSubStr);\n };\n\n /**\n * Converts a number to a string with a unit. If a string is passed then this will be returned unmodified.\n *\n * @memberof Chartist.Core\n * @param {Number} value\n * @param {String} unit\n * @return {String} Returns the passed number value with unit.\n */\n Chartist.ensureUnit = function(value, unit) {\n if(typeof value === 'number') {\n value = value + unit;\n }\n\n return value;\n };\n\n /**\n * Converts a number or string to a quantity object.\n *\n * @memberof Chartist.Core\n * @param {String|Number} input\n * @return {Object} Returns an object containing the value as number and the unit as string.\n */\n Chartist.quantity = function(input) {\n if (typeof input === 'string') {\n var match = (/^(\\d+)\\s*(.*)$/g).exec(input);\n return {\n value : +match[1],\n unit: match[2] || undefined\n };\n }\n return { value: input };\n };\n\n /**\n * This is a wrapper around document.querySelector that will return the query if it's already of type Node\n *\n * @memberof Chartist.Core\n * @param {String|Node} query The query to use for selecting a Node or a DOM node that will be returned directly\n * @return {Node}\n */\n Chartist.querySelector = function(query) {\n return query instanceof Node ? query : document.querySelector(query);\n };\n\n /**\n * Functional style helper to produce array with given length initialized with undefined values\n *\n * @memberof Chartist.Core\n * @param length\n * @return {Array}\n */\n Chartist.times = function(length) {\n return Array.apply(null, new Array(length));\n };\n\n /**\n * Sum helper to be used in reduce functions\n *\n * @memberof Chartist.Core\n * @param previous\n * @param current\n * @return {*}\n */\n Chartist.sum = function(previous, current) {\n return previous + (current ? current : 0);\n };\n\n /**\n * Multiply helper to be used in `Array.map` for multiplying each value of an array with a factor.\n *\n * @memberof Chartist.Core\n * @param {Number} factor\n * @returns {Function} Function that can be used in `Array.map` to multiply each value in an array\n */\n Chartist.mapMultiply = function(factor) {\n return function(num) {\n return num * factor;\n };\n };\n\n /**\n * Add helper to be used in `Array.map` for adding a addend to each value of an array.\n *\n * @memberof Chartist.Core\n * @param {Number} addend\n * @returns {Function} Function that can be used in `Array.map` to add a addend to each value in an array\n */\n Chartist.mapAdd = function(addend) {\n return function(num) {\n return num + addend;\n };\n };\n\n /**\n * Map for multi dimensional arrays where their nested arrays will be mapped in serial. The output array will have the length of the largest nested array. The callback function is called with variable arguments where each argument is the nested array value (or undefined if there are no more values).\n *\n * @memberof Chartist.Core\n * @param arr\n * @param cb\n * @return {Array}\n */\n Chartist.serialMap = function(arr, cb) {\n var result = [],\n length = Math.max.apply(null, arr.map(function(e) {\n return e.length;\n }));\n\n Chartist.times(length).forEach(function(e, index) {\n var args = arr.map(function(e) {\n return e[index];\n });\n\n result[index] = cb.apply(null, args);\n });\n\n return result;\n };\n\n /**\n * This helper function can be used to round values with certain precision level after decimal. This is used to prevent rounding errors near float point precision limit.\n *\n * @memberof Chartist.Core\n * @param {Number} value The value that should be rounded with precision\n * @param {Number} [digits] The number of digits after decimal used to do the rounding\n * @returns {number} Rounded value\n */\n Chartist.roundWithPrecision = function(value, digits) {\n var precision = Math.pow(10, digits || Chartist.precision);\n return Math.round(value * precision) / precision;\n };\n\n /**\n * Precision level used internally in Chartist for rounding. If you require more decimal places you can increase this number.\n *\n * @memberof Chartist.Core\n * @type {number}\n */\n Chartist.precision = 8;\n\n /**\n * A map with characters to escape for strings to be safely used as attribute values.\n *\n * @memberof Chartist.Core\n * @type {Object}\n */\n Chartist.escapingMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n };\n\n /**\n * This function serializes arbitrary data to a string. In case of data that can't be easily converted to a string, this function will create a wrapper object and serialize the data using JSON.stringify. The outcoming string will always be escaped using Chartist.escapingMap.\n * If called with null or undefined the function will return immediately with null or undefined.\n *\n * @memberof Chartist.Core\n * @param {Number|String|Object} data\n * @return {String}\n */\n Chartist.serialize = function(data) {\n if(data === null || data === undefined) {\n return data;\n } else if(typeof data === 'number') {\n data = ''+data;\n } else if(typeof data === 'object') {\n data = JSON.stringify({data: data});\n }\n\n return Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n return Chartist.replaceAll(result, key, Chartist.escapingMap[key]);\n }, data);\n };\n\n /**\n * This function de-serializes a string previously serialized with Chartist.serialize. The string will always be unescaped using Chartist.escapingMap before it's returned. Based on the input value the return type can be Number, String or Object. JSON.parse is used with try / catch to see if the unescaped string can be parsed into an Object and this Object will be returned on success.\n *\n * @memberof Chartist.Core\n * @param {String} data\n * @return {String|Number|Object}\n */\n Chartist.deserialize = function(data) {\n if(typeof data !== 'string') {\n return data;\n }\n\n data = Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n return Chartist.replaceAll(result, Chartist.escapingMap[key], key);\n }, data);\n\n try {\n data = JSON.parse(data);\n data = data.data !== undefined ? data.data : data;\n } catch(e) {}\n\n return data;\n };\n\n /**\n * Create or reinitialize the SVG element for the chart\n *\n * @memberof Chartist.Core\n * @param {Node} container The containing DOM Node object that will be used to plant the SVG element\n * @param {String} width Set the width of the SVG element. Default is 100%\n * @param {String} height Set the height of the SVG element. Default is 100%\n * @param {String} className Specify a class to be added to the SVG element\n * @return {Object} The created/reinitialized SVG element\n */\n Chartist.createSvg = function (container, width, height, className) {\n var svg;\n\n width = width || '100%';\n height = height || '100%';\n\n // Check if there is a previous SVG element in the container that contains the Chartist XML namespace and remove it\n // Since the DOM API does not support namespaces we need to manually search the returned list http://www.w3.org/TR/selectors-api/\n Array.prototype.slice.call(container.querySelectorAll('svg')).filter(function filterChartistSvgObjects(svg) {\n return svg.getAttributeNS(Chartist.namespaces.xmlns, 'ct');\n }).forEach(function removePreviousElement(svg) {\n container.removeChild(svg);\n });\n\n // Create svg object with width and height or use 100% as default\n svg = new Chartist.Svg('svg').attr({\n width: width,\n height: height\n }).addClass(className);\n\n svg._node.style.width = width;\n svg._node.style.height = height;\n\n // Add the DOM node to our container\n container.appendChild(svg._node);\n\n return svg;\n };\n\n /**\n * Ensures that the data object passed as second argument to the charts is present and correctly initialized.\n *\n * @param {Object} data The data object that is passed as second argument to the charts\n * @return {Object} The normalized data object\n */\n Chartist.normalizeData = function(data, reverse, multi) {\n var labelCount;\n var output = {\n raw: data,\n normalized: {}\n };\n\n // Check if we should generate some labels based on existing series data\n output.normalized.series = Chartist.getDataArray({\n series: data.series || []\n }, reverse, multi);\n\n // If all elements of the normalized data array are arrays we're dealing with\n // multi series data and we need to find the largest series if they are un-even\n if (output.normalized.series.every(function(value) {\n return value instanceof Array;\n })) {\n // Getting the series with the the most elements\n labelCount = Math.max.apply(null, output.normalized.series.map(function(series) {\n return series.length;\n }));\n } else {\n // We're dealing with Pie data so we just take the normalized array length\n labelCount = output.normalized.series.length;\n }\n\n output.normalized.labels = (data.labels || []).slice();\n // Padding the labels to labelCount with empty strings\n Array.prototype.push.apply(\n output.normalized.labels,\n Chartist.times(Math.max(0, labelCount - output.normalized.labels.length)).map(function() {\n return '';\n })\n );\n\n if(reverse) {\n Chartist.reverseData(output.normalized);\n }\n\n return output;\n };\n\n /**\n * This function safely checks if an objects has an owned property.\n *\n * @param {Object} object The object where to check for a property\n * @param {string} property The property name\n * @returns {boolean} Returns true if the object owns the specified property\n */\n Chartist.safeHasProperty = function(object, property) {\n return object !== null &&\n typeof object === 'object' &&\n object.hasOwnProperty(property);\n };\n\n /**\n * Checks if a value is considered a hole in the data series.\n *\n * @param {*} value\n * @returns {boolean} True if the value is considered a data hole\n */\n Chartist.isDataHoleValue = function(value) {\n return value === null ||\n value === undefined ||\n (typeof value === 'number' && isNaN(value));\n };\n\n /**\n * Reverses the series, labels and series data arrays.\n *\n * @memberof Chartist.Core\n * @param data\n */\n Chartist.reverseData = function(data) {\n data.labels.reverse();\n data.series.reverse();\n for (var i = 0; i < data.series.length; i++) {\n if(typeof(data.series[i]) === 'object' && data.series[i].data !== undefined) {\n data.series[i].data.reverse();\n } else if(data.series[i] instanceof Array) {\n data.series[i].reverse();\n }\n }\n };\n\n /**\n * Convert data series into plain array\n *\n * @memberof Chartist.Core\n * @param {Object} data The series object that contains the data to be visualized in the chart\n * @param {Boolean} [reverse] If true the whole data is reversed by the getDataArray call. This will modify the data object passed as first parameter. The labels as well as the series order is reversed. The whole series data arrays are reversed too.\n * @param {Boolean} [multi] Create a multi dimensional array from a series data array where a value object with `x` and `y` values will be created.\n * @return {Array} A plain array that contains the data to be visualized in the chart\n */\n Chartist.getDataArray = function(data, reverse, multi) {\n // Recursively walks through nested arrays and convert string values to numbers and objects with value properties\n // to values. Check the tests in data core -> data normalization for a detailed specification of expected values\n function recursiveConvert(value) {\n if(Chartist.safeHasProperty(value, 'value')) {\n // We are dealing with value object notation so we need to recurse on value property\n return recursiveConvert(value.value);\n } else if(Chartist.safeHasProperty(value, 'data')) {\n // We are dealing with series object notation so we need to recurse on data property\n return recursiveConvert(value.data);\n } else if(value instanceof Array) {\n // Data is of type array so we need to recurse on the series\n return value.map(recursiveConvert);\n } else if(Chartist.isDataHoleValue(value)) {\n // We're dealing with a hole in the data and therefore need to return undefined\n // We're also returning undefined for multi value output\n return undefined;\n } else {\n // We need to prepare multi value output (x and y data)\n if(multi) {\n var multiValue = {};\n\n // Single series value arrays are assumed to specify the Y-Axis value\n // For example: [1, 2] => [{x: undefined, y: 1}, {x: undefined, y: 2}]\n // If multi is a string then it's assumed that it specified which dimension should be filled as default\n if(typeof multi === 'string') {\n multiValue[multi] = Chartist.getNumberOrUndefined(value);\n } else {\n multiValue.y = Chartist.getNumberOrUndefined(value);\n }\n\n multiValue.x = value.hasOwnProperty('x') ? Chartist.getNumberOrUndefined(value.x) : multiValue.x;\n multiValue.y = value.hasOwnProperty('y') ? Chartist.getNumberOrUndefined(value.y) : multiValue.y;\n\n return multiValue;\n\n } else {\n // We can return simple data\n return Chartist.getNumberOrUndefined(value);\n }\n }\n }\n\n return data.series.map(recursiveConvert);\n };\n\n /**\n * Converts a number into a padding object.\n *\n * @memberof Chartist.Core\n * @param {Object|Number} padding\n * @param {Number} [fallback] This value is used to fill missing values if a incomplete padding object was passed\n * @returns {Object} Returns a padding object containing top, right, bottom, left properties filled with the padding number passed in as argument. If the argument is something else than a number (presumably already a correct padding object) then this argument is directly returned.\n */\n Chartist.normalizePadding = function(padding, fallback) {\n fallback = fallback || 0;\n\n return typeof padding === 'number' ? {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n } : {\n top: typeof padding.top === 'number' ? padding.top : fallback,\n right: typeof padding.right === 'number' ? padding.right : fallback,\n bottom: typeof padding.bottom === 'number' ? padding.bottom : fallback,\n left: typeof padding.left === 'number' ? padding.left : fallback\n };\n };\n\n Chartist.getMetaData = function(series, index) {\n var value = series.data ? series.data[index] : series[index];\n return value ? value.meta : undefined;\n };\n\n /**\n * Calculate the order of magnitude for the chart scale\n *\n * @memberof Chartist.Core\n * @param {Number} value The value Range of the chart\n * @return {Number} The order of magnitude\n */\n Chartist.orderOfMagnitude = function (value) {\n return Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n };\n\n /**\n * Project a data length into screen coordinates (pixels)\n *\n * @memberof Chartist.Core\n * @param {Object} axisLength The svg element for the chart\n * @param {Number} length Single data value from a series array\n * @param {Object} bounds All the values to set the bounds of the chart\n * @return {Number} The projected data length in pixels\n */\n Chartist.projectLength = function (axisLength, length, bounds) {\n return length / bounds.range * axisLength;\n };\n\n /**\n * Get the height of the area in the chart for the data series\n *\n * @memberof Chartist.Core\n * @param {Object} svg The svg element for the chart\n * @param {Object} options The Object that contains all the optional values for the chart\n * @return {Number} The height of the area in the chart for the data series\n */\n Chartist.getAvailableHeight = function (svg, options) {\n return Math.max((Chartist.quantity(options.height).value || svg.height()) - (options.chartPadding.top + options.chartPadding.bottom) - options.axisX.offset, 0);\n };\n\n /**\n * Get highest and lowest value of data array. This Array contains the data that will be visualized in the chart.\n *\n * @memberof Chartist.Core\n * @param {Array} data The array that contains the data to be visualized in the chart\n * @param {Object} options The Object that contains the chart options\n * @param {String} dimension Axis dimension 'x' or 'y' used to access the correct value and high / low configuration\n * @return {Object} An object that contains the highest and lowest value that will be visualized on the chart.\n */\n Chartist.getHighLow = function (data, options, dimension) {\n // TODO: Remove workaround for deprecated global high / low config. Axis high / low configuration is preferred\n options = Chartist.extend({}, options, dimension ? options['axis' + dimension.toUpperCase()] : {});\n\n var highLow = {\n high: options.high === undefined ? -Number.MAX_VALUE : +options.high,\n low: options.low === undefined ? Number.MAX_VALUE : +options.low\n };\n var findHigh = options.high === undefined;\n var findLow = options.low === undefined;\n\n // Function to recursively walk through arrays and find highest and lowest number\n function recursiveHighLow(data) {\n if(data === undefined) {\n return undefined;\n } else if(data instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n recursiveHighLow(data[i]);\n }\n } else {\n var value = dimension ? +data[dimension] : +data;\n\n if (findHigh && value > highLow.high) {\n highLow.high = value;\n }\n\n if (findLow && value < highLow.low) {\n highLow.low = value;\n }\n }\n }\n\n // Start to find highest and lowest number recursively\n if(findHigh || findLow) {\n recursiveHighLow(data);\n }\n\n // Overrides of high / low based on reference value, it will make sure that the invisible reference value is\n // used to generate the chart. This is useful when the chart always needs to contain the position of the\n // invisible reference value in the view i.e. for bipolar scales.\n if (options.referenceValue || options.referenceValue === 0) {\n highLow.high = Math.max(options.referenceValue, highLow.high);\n highLow.low = Math.min(options.referenceValue, highLow.low);\n }\n\n // If high and low are the same because of misconfiguration or flat data (only the same value) we need\n // to set the high or low to 0 depending on the polarity\n if (highLow.high <= highLow.low) {\n // If both values are 0 we set high to 1\n if (highLow.low === 0) {\n highLow.high = 1;\n } else if (highLow.low < 0) {\n // If we have the same negative value for the bounds we set bounds.high to 0\n highLow.high = 0;\n } else if (highLow.high > 0) {\n // If we have the same positive value for the bounds we set bounds.low to 0\n highLow.low = 0;\n } else {\n // If data array was empty, values are Number.MAX_VALUE and -Number.MAX_VALUE. Set bounds to prevent errors\n highLow.high = 1;\n highLow.low = 0;\n }\n }\n\n return highLow;\n };\n\n /**\n * Checks if a value can be safely coerced to a number. This includes all values except null which result in finite numbers when coerced. This excludes NaN, since it's not finite.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {Boolean}\n */\n Chartist.isNumeric = function(value) {\n return value === null ? false : isFinite(value);\n };\n\n /**\n * Returns true on all falsey values except the numeric value 0.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {boolean}\n */\n Chartist.isFalseyButZero = function(value) {\n return !value && value !== 0;\n };\n\n /**\n * Returns a number if the passed parameter is a valid number or the function will return undefined. On all other values than a valid number, this function will return undefined.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {*}\n */\n Chartist.getNumberOrUndefined = function(value) {\n return Chartist.isNumeric(value) ? +value : undefined;\n };\n\n /**\n * Checks if provided value object is multi value (contains x or y properties)\n *\n * @memberof Chartist.Core\n * @param value\n */\n Chartist.isMultiValue = function(value) {\n return typeof value === 'object' && ('x' in value || 'y' in value);\n };\n\n /**\n * Gets a value from a dimension `value.x` or `value.y` while returning value directly if it's a valid numeric value. If the value is not numeric and it's falsey this function will return `defaultValue`.\n *\n * @memberof Chartist.Core\n * @param value\n * @param dimension\n * @param defaultValue\n * @returns {*}\n */\n Chartist.getMultiValue = function(value, dimension) {\n if(Chartist.isMultiValue(value)) {\n return Chartist.getNumberOrUndefined(value[dimension || 'y']);\n } else {\n return Chartist.getNumberOrUndefined(value);\n }\n };\n\n /**\n * Pollard Rho Algorithm to find smallest factor of an integer value. There are more efficient algorithms for factorization, but this one is quite efficient and not so complex.\n *\n * @memberof Chartist.Core\n * @param {Number} num An integer number where the smallest factor should be searched for\n * @returns {Number} The smallest integer factor of the parameter num.\n */\n Chartist.rho = function(num) {\n if(num === 1) {\n return num;\n }\n\n function gcd(p, q) {\n if (p % q === 0) {\n return q;\n } else {\n return gcd(q, p % q);\n }\n }\n\n function f(x) {\n return x * x + 1;\n }\n\n var x1 = 2, x2 = 2, divisor;\n if (num % 2 === 0) {\n return 2;\n }\n\n do {\n x1 = f(x1) % num;\n x2 = f(f(x2)) % num;\n divisor = gcd(Math.abs(x1 - x2), num);\n } while (divisor === 1);\n\n return divisor;\n };\n\n /**\n * Calculate and retrieve all the bounds for the chart and return them in one array\n *\n * @memberof Chartist.Core\n * @param {Number} axisLength The length of the Axis used for\n * @param {Object} highLow An object containing a high and low property indicating the value range of the chart.\n * @param {Number} scaleMinSpace The minimum projected length a step should result in\n * @param {Boolean} onlyInteger\n * @return {Object} All the values to set the bounds of the chart\n */\n Chartist.getBounds = function (axisLength, highLow, scaleMinSpace, onlyInteger) {\n var i,\n optimizationCounter = 0,\n newMin,\n newMax,\n bounds = {\n high: highLow.high,\n low: highLow.low\n };\n\n bounds.valueRange = bounds.high - bounds.low;\n bounds.oom = Chartist.orderOfMagnitude(bounds.valueRange);\n bounds.step = Math.pow(10, bounds.oom);\n bounds.min = Math.floor(bounds.low / bounds.step) * bounds.step;\n bounds.max = Math.ceil(bounds.high / bounds.step) * bounds.step;\n bounds.range = bounds.max - bounds.min;\n bounds.numberOfSteps = Math.round(bounds.range / bounds.step);\n\n // Optimize scale step by checking if subdivision is possible based on horizontalGridMinSpace\n // If we are already below the scaleMinSpace value we will scale up\n var length = Chartist.projectLength(axisLength, bounds.step, bounds);\n var scaleUp = length < scaleMinSpace;\n var smallestFactor = onlyInteger ? Chartist.rho(bounds.range) : 0;\n\n // First check if we should only use integer steps and if step 1 is still larger than scaleMinSpace so we can use 1\n if(onlyInteger && Chartist.projectLength(axisLength, 1, bounds) >= scaleMinSpace) {\n bounds.step = 1;\n } else if(onlyInteger && smallestFactor < bounds.step && Chartist.projectLength(axisLength, smallestFactor, bounds) >= scaleMinSpace) {\n // If step 1 was too small, we can try the smallest factor of range\n // If the smallest factor is smaller than the current bounds.step and the projected length of smallest factor\n // is larger than the scaleMinSpace we should go for it.\n bounds.step = smallestFactor;\n } else {\n // Trying to divide or multiply by 2 and find the best step value\n while (true) {\n if (scaleUp && Chartist.projectLength(axisLength, bounds.step, bounds) <= scaleMinSpace) {\n bounds.step *= 2;\n } else if (!scaleUp && Chartist.projectLength(axisLength, bounds.step / 2, bounds) >= scaleMinSpace) {\n bounds.step /= 2;\n if(onlyInteger && bounds.step % 1 !== 0) {\n bounds.step *= 2;\n break;\n }\n } else {\n break;\n }\n\n if(optimizationCounter++ > 1000) {\n throw new Error('Exceeded maximum number of iterations while optimizing scale step!');\n }\n }\n }\n\n var EPSILON = 2.221E-16;\n bounds.step = Math.max(bounds.step, EPSILON);\n function safeIncrement(value, increment) {\n // If increment is too small use *= (1+EPSILON) as a simple nextafter\n if (value === (value += increment)) {\n \tvalue *= (1 + (increment > 0 ? EPSILON : -EPSILON));\n }\n return value;\n }\n\n // Narrow min and max based on new step\n newMin = bounds.min;\n newMax = bounds.max;\n while (newMin + bounds.step <= bounds.low) {\n \tnewMin = safeIncrement(newMin, bounds.step);\n }\n while (newMax - bounds.step >= bounds.high) {\n \tnewMax = safeIncrement(newMax, -bounds.step);\n }\n bounds.min = newMin;\n bounds.max = newMax;\n bounds.range = bounds.max - bounds.min;\n\n var values = [];\n for (i = bounds.min; i <= bounds.max; i = safeIncrement(i, bounds.step)) {\n var value = Chartist.roundWithPrecision(i);\n if (value !== values[values.length - 1]) {\n values.push(value);\n }\n }\n bounds.values = values;\n return bounds;\n };\n\n /**\n * Calculate cartesian coordinates of polar coordinates\n *\n * @memberof Chartist.Core\n * @param {Number} centerX X-axis coordinates of center point of circle segment\n * @param {Number} centerY X-axis coordinates of center point of circle segment\n * @param {Number} radius Radius of circle segment\n * @param {Number} angleInDegrees Angle of circle segment in degrees\n * @return {{x:Number, y:Number}} Coordinates of point on circumference\n */\n Chartist.polarToCartesian = function (centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\n\n return {\n x: centerX + (radius * Math.cos(angleInRadians)),\n y: centerY + (radius * Math.sin(angleInRadians))\n };\n };\n\n /**\n * Initialize chart drawing rectangle (area where chart is drawn) x1,y1 = bottom left / x2,y2 = top right\n *\n * @memberof Chartist.Core\n * @param {Object} svg The svg element for the chart\n * @param {Object} options The Object that contains all the optional values for the chart\n * @param {Number} [fallbackPadding] The fallback padding if partial padding objects are used\n * @return {Object} The chart rectangles coordinates inside the svg element plus the rectangles measurements\n */\n Chartist.createChartRect = function (svg, options, fallbackPadding) {\n var hasAxis = !!(options.axisX || options.axisY);\n var yAxisOffset = hasAxis ? options.axisY.offset : 0;\n var xAxisOffset = hasAxis ? options.axisX.offset : 0;\n // If width or height results in invalid value (including 0) we fallback to the unitless settings or even 0\n var width = svg.width() || Chartist.quantity(options.width).value || 0;\n var height = svg.height() || Chartist.quantity(options.height).value || 0;\n var normalizedPadding = Chartist.normalizePadding(options.chartPadding, fallbackPadding);\n\n // If settings were to small to cope with offset (legacy) and padding, we'll adjust\n width = Math.max(width, yAxisOffset + normalizedPadding.left + normalizedPadding.right);\n height = Math.max(height, xAxisOffset + normalizedPadding.top + normalizedPadding.bottom);\n\n var chartRect = {\n padding: normalizedPadding,\n width: function () {\n return this.x2 - this.x1;\n },\n height: function () {\n return this.y1 - this.y2;\n }\n };\n\n if(hasAxis) {\n if (options.axisX.position === 'start') {\n chartRect.y2 = normalizedPadding.top + xAxisOffset;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom, chartRect.y2 + 1);\n } else {\n chartRect.y2 = normalizedPadding.top;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom - xAxisOffset, chartRect.y2 + 1);\n }\n\n if (options.axisY.position === 'start') {\n chartRect.x1 = normalizedPadding.left + yAxisOffset;\n chartRect.x2 = Math.max(width - normalizedPadding.right, chartRect.x1 + 1);\n } else {\n chartRect.x1 = normalizedPadding.left;\n chartRect.x2 = Math.max(width - normalizedPadding.right - yAxisOffset, chartRect.x1 + 1);\n }\n } else {\n chartRect.x1 = normalizedPadding.left;\n chartRect.x2 = Math.max(width - normalizedPadding.right, chartRect.x1 + 1);\n chartRect.y2 = normalizedPadding.top;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom, chartRect.y2 + 1);\n }\n\n return chartRect;\n };\n\n /**\n * Creates a grid line based on a projected value.\n *\n * @memberof Chartist.Core\n * @param position\n * @param index\n * @param axis\n * @param offset\n * @param length\n * @param group\n * @param classes\n * @param eventEmitter\n */\n Chartist.createGrid = function(position, index, axis, offset, length, group, classes, eventEmitter) {\n var positionalData = {};\n positionalData[axis.units.pos + '1'] = position;\n positionalData[axis.units.pos + '2'] = position;\n positionalData[axis.counterUnits.pos + '1'] = offset;\n positionalData[axis.counterUnits.pos + '2'] = offset + length;\n\n var gridElement = group.elem('line', positionalData, classes.join(' '));\n\n // Event for grid draw\n eventEmitter.emit('draw',\n Chartist.extend({\n type: 'grid',\n axis: axis,\n index: index,\n group: group,\n element: gridElement\n }, positionalData)\n );\n };\n\n /**\n * Creates a grid background rect and emits the draw event.\n *\n * @memberof Chartist.Core\n * @param gridGroup\n * @param chartRect\n * @param className\n * @param eventEmitter\n */\n Chartist.createGridBackground = function (gridGroup, chartRect, className, eventEmitter) {\n var gridBackground = gridGroup.elem('rect', {\n x: chartRect.x1,\n y: chartRect.y2,\n width: chartRect.width(),\n height: chartRect.height(),\n }, className, true);\n\n // Event for grid background draw\n eventEmitter.emit('draw', {\n type: 'gridBackground',\n group: gridGroup,\n element: gridBackground\n });\n };\n\n /**\n * Creates a label based on a projected value and an axis.\n *\n * @memberof Chartist.Core\n * @param position\n * @param length\n * @param index\n * @param labels\n * @param axis\n * @param axisOffset\n * @param labelOffset\n * @param group\n * @param classes\n * @param useForeignObject\n * @param eventEmitter\n */\n Chartist.createLabel = function(position, length, index, labels, axis, axisOffset, labelOffset, group, classes, useForeignObject, eventEmitter) {\n var labelElement;\n var positionalData = {};\n\n positionalData[axis.units.pos] = position + labelOffset[axis.units.pos];\n positionalData[axis.counterUnits.pos] = labelOffset[axis.counterUnits.pos];\n positionalData[axis.units.len] = length;\n positionalData[axis.counterUnits.len] = Math.max(0, axisOffset - 10);\n\n if(useForeignObject) {\n // We need to set width and height explicitly to px as span will not expand with width and height being\n // 100% in all browsers\n var content = document.createElement('span');\n content.className = classes.join(' ');\n content.setAttribute('xmlns', Chartist.namespaces.xhtml);\n content.innerText = labels[index];\n content.style[axis.units.len] = Math.round(positionalData[axis.units.len]) + 'px';\n content.style[axis.counterUnits.len] = Math.round(positionalData[axis.counterUnits.len]) + 'px';\n\n labelElement = group.foreignObject(content, Chartist.extend({\n style: 'overflow: visible;'\n }, positionalData));\n } else {\n labelElement = group.elem('text', positionalData, classes.join(' ')).text(labels[index]);\n }\n\n eventEmitter.emit('draw', Chartist.extend({\n type: 'label',\n axis: axis,\n index: index,\n group: group,\n element: labelElement,\n text: labels[index]\n }, positionalData));\n };\n\n /**\n * Helper to read series specific options from options object. It automatically falls back to the global option if\n * there is no option in the series options.\n *\n * @param {Object} series Series object\n * @param {Object} options Chartist options object\n * @param {string} key The options key that should be used to obtain the options\n * @returns {*}\n */\n Chartist.getSeriesOption = function(series, options, key) {\n if(series.name && options.series && options.series[series.name]) {\n var seriesOptions = options.series[series.name];\n return seriesOptions.hasOwnProperty(key) ? seriesOptions[key] : options[key];\n } else {\n return options[key];\n }\n };\n\n /**\n * Provides options handling functionality with callback for options changes triggered by responsive options and media query matches\n *\n * @memberof Chartist.Core\n * @param {Object} options Options set by user\n * @param {Array} responsiveOptions Optional functions to add responsive behavior to chart\n * @param {Object} eventEmitter The event emitter that will be used to emit the options changed events\n * @return {Object} The consolidated options object from the defaults, base and matching responsive options\n */\n Chartist.optionsProvider = function (options, responsiveOptions, eventEmitter) {\n var baseOptions = Chartist.extend({}, options),\n currentOptions,\n mediaQueryListeners = [],\n i;\n\n function updateCurrentOptions(mediaEvent) {\n var previousOptions = currentOptions;\n currentOptions = Chartist.extend({}, baseOptions);\n\n if (responsiveOptions) {\n for (i = 0; i < responsiveOptions.length; i++) {\n var mql = window.matchMedia(responsiveOptions[i][0]);\n if (mql.matches) {\n currentOptions = Chartist.extend(currentOptions, responsiveOptions[i][1]);\n }\n }\n }\n\n if(eventEmitter && mediaEvent) {\n eventEmitter.emit('optionsChanged', {\n previousOptions: previousOptions,\n currentOptions: currentOptions\n });\n }\n }\n\n function removeMediaQueryListeners() {\n mediaQueryListeners.forEach(function(mql) {\n mql.removeListener(updateCurrentOptions);\n });\n }\n\n if (!window.matchMedia) {\n throw 'window.matchMedia not found! Make sure you\\'re using a polyfill.';\n } else if (responsiveOptions) {\n\n for (i = 0; i < responsiveOptions.length; i++) {\n var mql = window.matchMedia(responsiveOptions[i][0]);\n mql.addListener(updateCurrentOptions);\n mediaQueryListeners.push(mql);\n }\n }\n // Execute initially without an event argument so we get the correct options\n updateCurrentOptions();\n\n return {\n removeMediaQueryListeners: removeMediaQueryListeners,\n getCurrentOptions: function getCurrentOptions() {\n return Chartist.extend({}, currentOptions);\n }\n };\n };\n\n\n /**\n * Splits a list of coordinates and associated values into segments. Each returned segment contains a pathCoordinates\n * valueData property describing the segment.\n *\n * With the default options, segments consist of contiguous sets of points that do not have an undefined value. Any\n * points with undefined values are discarded.\n *\n * **Options**\n * The following options are used to determine how segments are formed\n * ```javascript\n * var options = {\n * // If fillHoles is true, undefined values are simply discarded without creating a new segment. Assuming other options are default, this returns single segment.\n * fillHoles: false,\n * // If increasingX is true, the coordinates in all segments have strictly increasing x-values.\n * increasingX: false\n * };\n * ```\n *\n * @memberof Chartist.Core\n * @param {Array} pathCoordinates List of point coordinates to be split in the form [x1, y1, x2, y2 ... xn, yn]\n * @param {Array} values List of associated point values in the form [v1, v2 .. vn]\n * @param {Object} options Options set by user\n * @return {Array} List of segments, each containing a pathCoordinates and valueData property.\n */\n Chartist.splitIntoSegments = function(pathCoordinates, valueData, options) {\n var defaultOptions = {\n increasingX: false,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n var segments = [];\n var hole = true;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n // If this value is a \"hole\" we set the hole flag\n if(Chartist.getMultiValue(valueData[i / 2].value) === undefined) {\n // if(valueData[i / 2].value === undefined) {\n if(!options.fillHoles) {\n hole = true;\n }\n } else {\n if(options.increasingX && i >= 2 && pathCoordinates[i] <= pathCoordinates[i-2]) {\n // X is not increasing, so we need to make sure we start a new segment\n hole = true;\n }\n\n\n // If it's a valid value we need to check if we're coming out of a hole and create a new empty segment\n if(hole) {\n segments.push({\n pathCoordinates: [],\n valueData: []\n });\n // As we have a valid value now, we are not in a \"hole\" anymore\n hole = false;\n }\n\n // Add to the segment pathCoordinates and valueData\n segments[segments.length - 1].pathCoordinates.push(pathCoordinates[i], pathCoordinates[i + 1]);\n segments[segments.length - 1].valueData.push(valueData[i / 2]);\n }\n }\n\n return segments;\n };\n}(this || global, Chartist));\n;/**\n * Chartist path interpolation functions.\n *\n * @module Chartist.Interpolation\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n Chartist.Interpolation = {};\n\n /**\n * This interpolation function does not smooth the path and the result is only containing lines and no curves.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.none({\n * fillHoles: false\n * })\n * });\n *\n *\n * @memberof Chartist.Interpolation\n * @return {Function}\n */\n Chartist.Interpolation.none = function(options) {\n var defaultOptions = {\n fillHoles: false\n };\n options = Chartist.extend({}, defaultOptions, options);\n return function none(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n var hole = true;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var currData = valueData[i / 2];\n\n if(Chartist.getMultiValue(currData.value) !== undefined) {\n\n if(hole) {\n path.move(currX, currY, false, currData);\n } else {\n path.line(currX, currY, false, currData);\n }\n\n hole = false;\n } else if(!options.fillHoles) {\n hole = true;\n }\n }\n\n return path;\n };\n };\n\n /**\n * Simple smoothing creates horizontal handles that are positioned with a fraction of the length between two data points. You can use the divisor option to specify the amount of smoothing.\n *\n * Simple smoothing can be used instead of `Chartist.Smoothing.cardinal` if you'd like to get rid of the artifacts it produces sometimes. Simple smoothing produces less flowing lines but is accurate by hitting the points and it also doesn't swing below or above the given data point.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The simple interpolation function accepts one configuration parameter `divisor`, between 1 and ∞, which controls the smoothing characteristics.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.simple({\n * divisor: 2,\n * fillHoles: false\n * })\n * });\n *\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the simple interpolation factory function.\n * @return {Function}\n */\n Chartist.Interpolation.simple = function(options) {\n var defaultOptions = {\n divisor: 2,\n fillHoles: false\n };\n options = Chartist.extend({}, defaultOptions, options);\n\n var d = 1 / Math.max(1, options.divisor);\n\n return function simple(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n var prevX, prevY, prevData;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var length = (currX - prevX) * d;\n var currData = valueData[i / 2];\n\n if(currData.value !== undefined) {\n\n if(prevData === undefined) {\n path.move(currX, currY, false, currData);\n } else {\n path.curve(\n prevX + length,\n prevY,\n currX - length,\n currY,\n currX,\n currY,\n false,\n currData\n );\n }\n\n prevX = currX;\n prevY = currY;\n prevData = currData;\n } else if(!options.fillHoles) {\n prevX = currX = prevData = undefined;\n }\n }\n\n return path;\n };\n };\n\n /**\n * Cardinal / Catmull-Rome spline interpolation is the default smoothing function in Chartist. It produces nice results where the splines will always meet the points. It produces some artifacts though when data values are increased or decreased rapidly. The line may not follow a very accurate path and if the line should be accurate this smoothing function does not produce the best results.\n *\n * Cardinal splines can only be created if there are more than two data points. If this is not the case this smoothing will fallback to `Chartist.Smoothing.none`.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The cardinal interpolation function accepts one configuration parameter `tension`, between 0 and 1, which controls the smoothing intensity.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.cardinal({\n * tension: 1,\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the cardinal factory function.\n * @return {Function}\n */\n Chartist.Interpolation.cardinal = function(options) {\n var defaultOptions = {\n tension: 1,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n var t = Math.min(1, Math.max(0, options.tension)),\n c = 1 - t;\n\n return function cardinal(pathCoordinates, valueData) {\n // First we try to split the coordinates into segments\n // This is necessary to treat \"holes\" in line charts\n var segments = Chartist.splitIntoSegments(pathCoordinates, valueData, {\n fillHoles: options.fillHoles\n });\n\n if(!segments.length) {\n // If there were no segments return 'Chartist.Interpolation.none'\n return Chartist.Interpolation.none()([]);\n } else if(segments.length > 1) {\n // If the split resulted in more that one segment we need to interpolate each segment individually and join them\n // afterwards together into a single path.\n var paths = [];\n // For each segment we will recurse the cardinal function\n segments.forEach(function(segment) {\n paths.push(cardinal(segment.pathCoordinates, segment.valueData));\n });\n // Join the segment path data into a single path and return\n return Chartist.Svg.Path.join(paths);\n } else {\n // If there was only one segment we can proceed regularly by using pathCoordinates and valueData from the first\n // segment\n pathCoordinates = segments[0].pathCoordinates;\n valueData = segments[0].valueData;\n\n // If less than two points we need to fallback to no smoothing\n if(pathCoordinates.length <= 4) {\n return Chartist.Interpolation.none()(pathCoordinates, valueData);\n }\n\n var path = new Chartist.Svg.Path().move(pathCoordinates[0], pathCoordinates[1], false, valueData[0]),\n z;\n\n for (var i = 0, iLen = pathCoordinates.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {x: +pathCoordinates[i - 2], y: +pathCoordinates[i - 1]},\n {x: +pathCoordinates[i], y: +pathCoordinates[i + 1]},\n {x: +pathCoordinates[i + 2], y: +pathCoordinates[i + 3]},\n {x: +pathCoordinates[i + 4], y: +pathCoordinates[i + 5]}\n ];\n if (z) {\n if (!i) {\n p[0] = {x: +pathCoordinates[iLen - 2], y: +pathCoordinates[iLen - 1]};\n } else if (iLen - 4 === i) {\n p[3] = {x: +pathCoordinates[0], y: +pathCoordinates[1]};\n } else if (iLen - 2 === i) {\n p[2] = {x: +pathCoordinates[0], y: +pathCoordinates[1]};\n p[3] = {x: +pathCoordinates[2], y: +pathCoordinates[3]};\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {x: +pathCoordinates[i], y: +pathCoordinates[i + 1]};\n }\n }\n\n path.curve(\n (t * (-p[0].x + 6 * p[1].x + p[2].x) / 6) + (c * p[2].x),\n (t * (-p[0].y + 6 * p[1].y + p[2].y) / 6) + (c * p[2].y),\n (t * (p[1].x + 6 * p[2].x - p[3].x) / 6) + (c * p[2].x),\n (t * (p[1].y + 6 * p[2].y - p[3].y) / 6) + (c * p[2].y),\n p[2].x,\n p[2].y,\n false,\n valueData[(i + 2) / 2]\n );\n }\n\n return path;\n }\n };\n };\n\n /**\n * Monotone Cubic spline interpolation produces a smooth curve which preserves monotonicity. Unlike cardinal splines, the curve will not extend beyond the range of y-values of the original data points.\n *\n * Monotone Cubic splines can only be created if there are more than two data points. If this is not the case this smoothing will fallback to `Chartist.Smoothing.none`.\n *\n * The x-values of subsequent points must be increasing to fit a Monotone Cubic spline. If this condition is not met for a pair of adjacent points, then there will be a break in the curve between those data points.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.monotoneCubic({\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the monotoneCubic factory function.\n * @return {Function}\n */\n Chartist.Interpolation.monotoneCubic = function(options) {\n var defaultOptions = {\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n return function monotoneCubic(pathCoordinates, valueData) {\n // First we try to split the coordinates into segments\n // This is necessary to treat \"holes\" in line charts\n var segments = Chartist.splitIntoSegments(pathCoordinates, valueData, {\n fillHoles: options.fillHoles,\n increasingX: true\n });\n\n if(!segments.length) {\n // If there were no segments return 'Chartist.Interpolation.none'\n return Chartist.Interpolation.none()([]);\n } else if(segments.length > 1) {\n // If the split resulted in more that one segment we need to interpolate each segment individually and join them\n // afterwards together into a single path.\n var paths = [];\n // For each segment we will recurse the monotoneCubic fn function\n segments.forEach(function(segment) {\n paths.push(monotoneCubic(segment.pathCoordinates, segment.valueData));\n });\n // Join the segment path data into a single path and return\n return Chartist.Svg.Path.join(paths);\n } else {\n // If there was only one segment we can proceed regularly by using pathCoordinates and valueData from the first\n // segment\n pathCoordinates = segments[0].pathCoordinates;\n valueData = segments[0].valueData;\n\n // If less than three points we need to fallback to no smoothing\n if(pathCoordinates.length <= 4) {\n return Chartist.Interpolation.none()(pathCoordinates, valueData);\n }\n\n var xs = [],\n ys = [],\n i,\n n = pathCoordinates.length / 2,\n ms = [],\n ds = [], dys = [], dxs = [],\n path;\n\n // Populate x and y coordinates into separate arrays, for readability\n\n for(i = 0; i < n; i++) {\n xs[i] = pathCoordinates[i * 2];\n ys[i] = pathCoordinates[i * 2 + 1];\n }\n\n // Calculate deltas and derivative\n\n for(i = 0; i < n - 1; i++) {\n dys[i] = ys[i + 1] - ys[i];\n dxs[i] = xs[i + 1] - xs[i];\n ds[i] = dys[i] / dxs[i];\n }\n\n // Determine desired slope (m) at each point using Fritsch-Carlson method\n // See: http://math.stackexchange.com/questions/45218/implementation-of-monotone-cubic-interpolation\n\n ms[0] = ds[0];\n ms[n - 1] = ds[n - 2];\n\n for(i = 1; i < n - 1; i++) {\n if(ds[i] === 0 || ds[i - 1] === 0 || (ds[i - 1] > 0) !== (ds[i] > 0)) {\n ms[i] = 0;\n } else {\n ms[i] = 3 * (dxs[i - 1] + dxs[i]) / (\n (2 * dxs[i] + dxs[i - 1]) / ds[i - 1] +\n (dxs[i] + 2 * dxs[i - 1]) / ds[i]);\n\n if(!isFinite(ms[i])) {\n ms[i] = 0;\n }\n }\n }\n\n // Now build a path from the slopes\n\n path = new Chartist.Svg.Path().move(xs[0], ys[0], false, valueData[0]);\n\n for(i = 0; i < n - 1; i++) {\n path.curve(\n // First control point\n xs[i] + dxs[i] / 3,\n ys[i] + ms[i] * dxs[i] / 3,\n // Second control point\n xs[i + 1] - dxs[i] / 3,\n ys[i + 1] - ms[i + 1] * dxs[i] / 3,\n // End point\n xs[i + 1],\n ys[i + 1],\n\n false,\n valueData[i + 1]\n );\n }\n\n return path;\n }\n };\n };\n\n /**\n * Step interpolation will cause the line chart to move in steps rather than diagonal or smoothed lines. This interpolation will create additional points that will also be drawn when the `showPoint` option is enabled.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The step interpolation function accepts one configuration parameter `postpone`, that can be `true` or `false`. The default value is `true` and will cause the step to occur where the value actually changes. If a different behaviour is needed where the step is shifted to the left and happens before the actual value, this option can be set to `false`.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.step({\n * postpone: true,\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param options\n * @returns {Function}\n */\n Chartist.Interpolation.step = function(options) {\n var defaultOptions = {\n postpone: true,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n return function step(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n\n var prevX, prevY, prevData;\n\n for (var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var currData = valueData[i / 2];\n\n // If the current point is also not a hole we can draw the step lines\n if(currData.value !== undefined) {\n if(prevData === undefined) {\n path.move(currX, currY, false, currData);\n } else {\n if(options.postpone) {\n // If postponed we should draw the step line with the value of the previous value\n path.line(currX, prevY, false, prevData);\n } else {\n // If not postponed we should draw the step line with the value of the current value\n path.line(prevX, currY, false, currData);\n }\n // Line to the actual point (this should only be a Y-Axis movement\n path.line(currX, currY, false, currData);\n }\n\n prevX = currX;\n prevY = currY;\n prevData = currData;\n } else if(!options.fillHoles) {\n prevX = prevY = prevData = undefined;\n }\n }\n\n return path;\n };\n };\n\n}(this || global, Chartist));\n;/**\n * A very basic event module that helps to generate and catch events.\n *\n * @module Chartist.Event\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n Chartist.EventEmitter = function () {\n var handlers = [];\n\n /**\n * Add an event handler for a specific event\n *\n * @memberof Chartist.Event\n * @param {String} event The event name\n * @param {Function} handler A event handler function\n */\n function addEventHandler(event, handler) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n }\n\n /**\n * Remove an event handler of a specific event name or remove all event handlers for a specific event.\n *\n * @memberof Chartist.Event\n * @param {String} event The event name where a specific or all handlers should be removed\n * @param {Function} [handler] An optional event handler function. If specified only this specific handler will be removed and otherwise all handlers are removed.\n */\n function removeEventHandler(event, handler) {\n // Only do something if there are event handlers with this name existing\n if(handlers[event]) {\n // If handler is set we will look for a specific handler and only remove this\n if(handler) {\n handlers[event].splice(handlers[event].indexOf(handler), 1);\n if(handlers[event].length === 0) {\n delete handlers[event];\n }\n } else {\n // If no handler is specified we remove all handlers for this event\n delete handlers[event];\n }\n }\n }\n\n /**\n * Use this function to emit an event. All handlers that are listening for this event will be triggered with the data parameter.\n *\n * @memberof Chartist.Event\n * @param {String} event The event name that should be triggered\n * @param {*} data Arbitrary data that will be passed to the event handler callback functions\n */\n function emit(event, data) {\n // Only do something if there are event handlers with this name existing\n if(handlers[event]) {\n handlers[event].forEach(function(handler) {\n handler(data);\n });\n }\n\n // Emit event to star event handlers\n if(handlers['*']) {\n handlers['*'].forEach(function(starHandler) {\n starHandler(event, data);\n });\n }\n }\n\n return {\n addEventHandler: addEventHandler,\n removeEventHandler: removeEventHandler,\n emit: emit\n };\n };\n\n}(this || global, Chartist));\n;/**\n * This module provides some basic prototype inheritance utilities.\n *\n * @module Chartist.Class\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n function listToArray(list) {\n var arr = [];\n if (list.length) {\n for (var i = 0; i < list.length; i++) {\n arr.push(list[i]);\n }\n }\n return arr;\n }\n\n /**\n * Method to extend from current prototype.\n *\n * @memberof Chartist.Class\n * @param {Object} properties The object that serves as definition for the prototype that gets created for the new class. This object should always contain a constructor property that is the desired constructor for the newly created class.\n * @param {Object} [superProtoOverride] By default extens will use the current class prototype or Chartist.class. With this parameter you can specify any super prototype that will be used.\n * @return {Function} Constructor function of the new class\n *\n * @example\n * var Fruit = Class.extend({\n * color: undefined,\n * sugar: undefined,\n *\n * constructor: function(color, sugar) {\n * this.color = color;\n * this.sugar = sugar;\n * },\n *\n * eat: function() {\n * this.sugar = 0;\n * return this;\n * }\n * });\n *\n * var Banana = Fruit.extend({\n * length: undefined,\n *\n * constructor: function(length, sugar) {\n * Banana.super.constructor.call(this, 'Yellow', sugar);\n * this.length = length;\n * }\n * });\n *\n * var banana = new Banana(20, 40);\n * console.log('banana instanceof Fruit', banana instanceof Fruit);\n * console.log('Fruit is prototype of banana', Fruit.prototype.isPrototypeOf(banana));\n * console.log('bananas prototype is Fruit', Object.getPrototypeOf(banana) === Fruit.prototype);\n * console.log(banana.sugar);\n * console.log(banana.eat().sugar);\n * console.log(banana.color);\n */\n function extend(properties, superProtoOverride) {\n var superProto = superProtoOverride || this.prototype || Chartist.Class;\n var proto = Object.create(superProto);\n\n Chartist.Class.cloneDefinitions(proto, properties);\n\n var constr = function() {\n var fn = proto.constructor || function () {},\n instance;\n\n // If this is linked to the Chartist namespace the constructor was not called with new\n // To provide a fallback we will instantiate here and return the instance\n instance = this === Chartist ? Object.create(proto) : this;\n fn.apply(instance, Array.prototype.slice.call(arguments, 0));\n\n // If this constructor was not called with new we need to return the instance\n // This will not harm when the constructor has been called with new as the returned value is ignored\n return instance;\n };\n\n constr.prototype = proto;\n constr.super = superProto;\n constr.extend = this.extend;\n\n return constr;\n }\n\n // Variable argument list clones args > 0 into args[0] and retruns modified args[0]\n function cloneDefinitions() {\n var args = listToArray(arguments);\n var target = args[0];\n\n args.splice(1, args.length - 1).forEach(function (source) {\n Object.getOwnPropertyNames(source).forEach(function (propName) {\n // If this property already exist in target we delete it first\n delete target[propName];\n // Define the property with the descriptor from source\n Object.defineProperty(target, propName,\n Object.getOwnPropertyDescriptor(source, propName));\n });\n });\n\n return target;\n }\n\n Chartist.Class = {\n extend: extend,\n cloneDefinitions: cloneDefinitions\n };\n\n}(this || global, Chartist));\n;/**\n * Base for all chart types. The methods in Chartist.Base are inherited to all chart types.\n *\n * @module Chartist.Base\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n\n // TODO: Currently we need to re-draw the chart on window resize. This is usually very bad and will affect performance.\n // This is done because we can't work with relative coordinates when drawing the chart because SVG Path does not\n // work with relative positions yet. We need to check if we can do a viewBox hack to switch to percentage.\n // See http://mozilla.6506.n7.nabble.com/Specyfing-paths-with-percentages-unit-td247474.html\n // Update: can be done using the above method tested here: http://codepen.io/gionkunz/pen/KDvLj\n // The problem is with the label offsets that can't be converted into percentage and affecting the chart container\n /**\n * Updates the chart which currently does a full reconstruction of the SVG DOM\n *\n * @param {Object} [data] Optional data you'd like to set for the chart before it will update. If not specified the update method will use the data that is already configured with the chart.\n * @param {Object} [options] Optional options you'd like to add to the previous options for the chart before it will update. If not specified the update method will use the options that have been already configured with the chart.\n * @param {Boolean} [override] If set to true, the passed options will be used to extend the options that have been configured already. Otherwise the chart default options will be used as the base\n * @memberof Chartist.Base\n */\n function update(data, options, override) {\n if(data) {\n this.data = data || {};\n this.data.labels = this.data.labels || [];\n this.data.series = this.data.series || [];\n // Event for data transformation that allows to manipulate the data before it gets rendered in the charts\n this.eventEmitter.emit('data', {\n type: 'update',\n data: this.data\n });\n }\n\n if(options) {\n this.options = Chartist.extend({}, override ? this.options : this.defaultOptions, options);\n\n // If chartist was not initialized yet, we just set the options and leave the rest to the initialization\n // Otherwise we re-create the optionsProvider at this point\n if(!this.initializeTimeoutId) {\n this.optionsProvider.removeMediaQueryListeners();\n this.optionsProvider = Chartist.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter);\n }\n }\n\n // Only re-created the chart if it has been initialized yet\n if(!this.initializeTimeoutId) {\n this.createChart(this.optionsProvider.getCurrentOptions());\n }\n\n // Return a reference to the chart object to chain up calls\n return this;\n }\n\n /**\n * This method can be called on the API object of each chart and will un-register all event listeners that were added to other components. This currently includes a window.resize listener as well as media query listeners if any responsive options have been provided. Use this function if you need to destroy and recreate Chartist charts dynamically.\n *\n * @memberof Chartist.Base\n */\n function detach() {\n // Only detach if initialization already occurred on this chart. If this chart still hasn't initialized (therefore\n // the initializationTimeoutId is still a valid timeout reference, we will clear the timeout\n if(!this.initializeTimeoutId) {\n window.removeEventListener('resize', this.resizeListener);\n this.optionsProvider.removeMediaQueryListeners();\n } else {\n window.clearTimeout(this.initializeTimeoutId);\n }\n\n return this;\n }\n\n /**\n * Use this function to register event handlers. The handler callbacks are synchronous and will run in the main thread rather than the event loop.\n *\n * @memberof Chartist.Base\n * @param {String} event Name of the event. Check the examples for supported events.\n * @param {Function} handler The handler function that will be called when an event with the given name was emitted. This function will receive a data argument which contains event data. See the example for more details.\n */\n function on(event, handler) {\n this.eventEmitter.addEventHandler(event, handler);\n return this;\n }\n\n /**\n * Use this function to un-register event handlers. If the handler function parameter is omitted all handlers for the given event will be un-registered.\n *\n * @memberof Chartist.Base\n * @param {String} event Name of the event for which a handler should be removed\n * @param {Function} [handler] The handler function that that was previously used to register a new event handler. This handler will be removed from the event handler list. If this parameter is omitted then all event handlers for the given event are removed from the list.\n */\n function off(event, handler) {\n this.eventEmitter.removeEventHandler(event, handler);\n return this;\n }\n\n function initialize() {\n // Add window resize listener that re-creates the chart\n window.addEventListener('resize', this.resizeListener);\n\n // Obtain current options based on matching media queries (if responsive options are given)\n // This will also register a listener that is re-creating the chart based on media changes\n this.optionsProvider = Chartist.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter);\n // Register options change listener that will trigger a chart update\n this.eventEmitter.addEventHandler('optionsChanged', function() {\n this.update();\n }.bind(this));\n\n // Before the first chart creation we need to register us with all plugins that are configured\n // Initialize all relevant plugins with our chart object and the plugin options specified in the config\n if(this.options.plugins) {\n this.options.plugins.forEach(function(plugin) {\n if(plugin instanceof Array) {\n plugin[0](this, plugin[1]);\n } else {\n plugin(this);\n }\n }.bind(this));\n }\n\n // Event for data transformation that allows to manipulate the data before it gets rendered in the charts\n this.eventEmitter.emit('data', {\n type: 'initial',\n data: this.data\n });\n\n // Create the first chart\n this.createChart(this.optionsProvider.getCurrentOptions());\n\n // As chart is initialized from the event loop now we can reset our timeout reference\n // This is important if the chart gets initialized on the same element twice\n this.initializeTimeoutId = undefined;\n }\n\n /**\n * Constructor of chart base class.\n *\n * @param query\n * @param data\n * @param defaultOptions\n * @param options\n * @param responsiveOptions\n * @constructor\n */\n function Base(query, data, defaultOptions, options, responsiveOptions) {\n this.container = Chartist.querySelector(query);\n this.data = data || {};\n this.data.labels = this.data.labels || [];\n this.data.series = this.data.series || [];\n this.defaultOptions = defaultOptions;\n this.options = options;\n this.responsiveOptions = responsiveOptions;\n this.eventEmitter = Chartist.EventEmitter();\n this.supportsForeignObject = Chartist.Svg.isSupported('Extensibility');\n this.supportsAnimations = Chartist.Svg.isSupported('AnimationEventsAttribute');\n this.resizeListener = function resizeListener(){\n this.update();\n }.bind(this);\n\n if(this.container) {\n // If chartist was already initialized in this container we are detaching all event listeners first\n if(this.container.__chartist__) {\n this.container.__chartist__.detach();\n }\n\n this.container.__chartist__ = this;\n }\n\n // Using event loop for first draw to make it possible to register event listeners in the same call stack where\n // the chart was created.\n this.initializeTimeoutId = setTimeout(initialize.bind(this), 0);\n }\n\n // Creating the chart base class\n Chartist.Base = Chartist.Class.extend({\n constructor: Base,\n optionsProvider: undefined,\n container: undefined,\n svg: undefined,\n eventEmitter: undefined,\n createChart: function() {\n throw new Error('Base chart type can\\'t be instantiated!');\n },\n update: update,\n detach: detach,\n on: on,\n off: off,\n version: Chartist.version,\n supportsForeignObject: false\n });\n\n}(this || global, Chartist));\n;/**\n * Chartist SVG module for simple SVG DOM abstraction\n *\n * @module Chartist.Svg\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var document = globalRoot.document;\n\n /**\n * Chartist.Svg creates a new SVG object wrapper with a starting element. You can use the wrapper to fluently create sub-elements and modify them.\n *\n * @memberof Chartist.Svg\n * @constructor\n * @param {String|Element} name The name of the SVG element to create or an SVG dom element which should be wrapped into Chartist.Svg\n * @param {Object} attributes An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added.\n * @param {String} className This class or class list will be added to the SVG element\n * @param {Object} parent The parent SVG wrapper object where this newly created wrapper and it's element will be attached to as child\n * @param {Boolean} insertFirst If this param is set to true in conjunction with a parent element the newly created element will be added as first child element in the parent element\n */\n function Svg(name, attributes, className, parent, insertFirst) {\n // If Svg is getting called with an SVG element we just return the wrapper\n if(name instanceof Element) {\n this._node = name;\n } else {\n this._node = document.createElementNS(Chartist.namespaces.svg, name);\n\n // If this is an SVG element created then custom namespace\n if(name === 'svg') {\n this.attr({\n 'xmlns:ct': Chartist.namespaces.ct\n });\n }\n }\n\n if(attributes) {\n this.attr(attributes);\n }\n\n if(className) {\n this.addClass(className);\n }\n\n if(parent) {\n if (insertFirst && parent._node.firstChild) {\n parent._node.insertBefore(this._node, parent._node.firstChild);\n } else {\n parent._node.appendChild(this._node);\n }\n }\n }\n\n /**\n * Set attributes on the current SVG element of the wrapper you're currently working on.\n *\n * @memberof Chartist.Svg\n * @param {Object|String} attributes An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added. If this parameter is a String then the function is used as a getter and will return the attribute value.\n * @param {String} [ns] If specified, the attribute will be obtained using getAttributeNs. In order to write namepsaced attributes you can use the namespace:attribute notation within the attributes object.\n * @return {Object|String} The current wrapper object will be returned so it can be used for chaining or the attribute value if used as getter function.\n */\n function attr(attributes, ns) {\n if(typeof attributes === 'string') {\n if(ns) {\n return this._node.getAttributeNS(ns, attributes);\n } else {\n return this._node.getAttribute(attributes);\n }\n }\n\n Object.keys(attributes).forEach(function(key) {\n // If the attribute value is undefined we can skip this one\n if(attributes[key] === undefined) {\n return;\n }\n\n if (key.indexOf(':') !== -1) {\n var namespacedAttribute = key.split(':');\n this._node.setAttributeNS(Chartist.namespaces[namespacedAttribute[0]], key, attributes[key]);\n } else {\n this._node.setAttribute(key, attributes[key]);\n }\n }.bind(this));\n\n return this;\n }\n\n /**\n * Create a new SVG element whose wrapper object will be selected for further operations. This way you can also create nested groups easily.\n *\n * @memberof Chartist.Svg\n * @param {String} name The name of the SVG element that should be created as child element of the currently selected element wrapper\n * @param {Object} [attributes] An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added.\n * @param {String} [className] This class or class list will be added to the SVG element\n * @param {Boolean} [insertFirst] If this param is set to true in conjunction with a parent element the newly created element will be added as first child element in the parent element\n * @return {Chartist.Svg} Returns a Chartist.Svg wrapper object that can be used to modify the containing SVG data\n */\n function elem(name, attributes, className, insertFirst) {\n return new Chartist.Svg(name, attributes, className, this, insertFirst);\n }\n\n /**\n * Returns the parent Chartist.SVG wrapper object\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} Returns a Chartist.Svg wrapper around the parent node of the current node. If the parent node is not existing or it's not an SVG node then this function will return null.\n */\n function parent() {\n return this._node.parentNode instanceof SVGElement ? new Chartist.Svg(this._node.parentNode) : null;\n }\n\n /**\n * This method returns a Chartist.Svg wrapper around the root SVG element of the current tree.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The root SVG element wrapped in a Chartist.Svg element\n */\n function root() {\n var node = this._node;\n while(node.nodeName !== 'svg') {\n node = node.parentNode;\n }\n return new Chartist.Svg(node);\n }\n\n /**\n * Find the first child SVG element of the current element that matches a CSS selector. The returned object is a Chartist.Svg wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} selector A CSS selector that is used to query for child SVG elements\n * @return {Chartist.Svg} The SVG wrapper for the element found or null if no element was found\n */\n function querySelector(selector) {\n var foundNode = this._node.querySelector(selector);\n return foundNode ? new Chartist.Svg(foundNode) : null;\n }\n\n /**\n * Find the all child SVG elements of the current element that match a CSS selector. The returned object is a Chartist.Svg.List wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} selector A CSS selector that is used to query for child SVG elements\n * @return {Chartist.Svg.List} The SVG wrapper list for the element found or null if no element was found\n */\n function querySelectorAll(selector) {\n var foundNodes = this._node.querySelectorAll(selector);\n return foundNodes.length ? new Chartist.Svg.List(foundNodes) : null;\n }\n\n /**\n * Returns the underlying SVG node for the current element.\n *\n * @memberof Chartist.Svg\n * @returns {Node}\n */\n function getNode() {\n return this._node;\n }\n\n /**\n * This method creates a foreignObject (see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject) that allows to embed HTML content into a SVG graphic. With the help of foreignObjects you can enable the usage of regular HTML elements inside of SVG where they are subject for SVG positioning and transformation but the Browser will use the HTML rendering capabilities for the containing DOM.\n *\n * @memberof Chartist.Svg\n * @param {Node|String} content The DOM Node, or HTML string that will be converted to a DOM Node, that is then placed into and wrapped by the foreignObject\n * @param {String} [attributes] An object with properties that will be added as attributes to the foreignObject element that is created. Attributes with undefined values will not be added.\n * @param {String} [className] This class or class list will be added to the SVG element\n * @param {Boolean} [insertFirst] Specifies if the foreignObject should be inserted as first child\n * @return {Chartist.Svg} New wrapper object that wraps the foreignObject element\n */\n function foreignObject(content, attributes, className, insertFirst) {\n // If content is string then we convert it to DOM\n // TODO: Handle case where content is not a string nor a DOM Node\n if(typeof content === 'string') {\n var container = document.createElement('div');\n container.innerHTML = content;\n content = container.firstChild;\n }\n\n // Adding namespace to content element\n content.setAttribute('xmlns', Chartist.namespaces.xmlns);\n\n // Creating the foreignObject without required extension attribute (as described here\n // http://www.w3.org/TR/SVG/extend.html#ForeignObjectElement)\n var fnObj = this.elem('foreignObject', attributes, className, insertFirst);\n\n // Add content to foreignObjectElement\n fnObj._node.appendChild(content);\n\n return fnObj;\n }\n\n /**\n * This method adds a new text element to the current Chartist.Svg wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} t The text that should be added to the text element that is created\n * @return {Chartist.Svg} The same wrapper object that was used to add the newly created element\n */\n function text(t) {\n this._node.appendChild(document.createTextNode(t));\n return this;\n }\n\n /**\n * This method will clear all child nodes of the current wrapper object.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The same wrapper object that got emptied\n */\n function empty() {\n while (this._node.firstChild) {\n this._node.removeChild(this._node.firstChild);\n }\n\n return this;\n }\n\n /**\n * This method will cause the current wrapper to remove itself from its parent wrapper. Use this method if you'd like to get rid of an element in a given DOM structure.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The parent wrapper object of the element that got removed\n */\n function remove() {\n this._node.parentNode.removeChild(this._node);\n return this.parent();\n }\n\n /**\n * This method will replace the element with a new element that can be created outside of the current DOM.\n *\n * @memberof Chartist.Svg\n * @param {Chartist.Svg} newElement The new Chartist.Svg object that will be used to replace the current wrapper object\n * @return {Chartist.Svg} The wrapper of the new element\n */\n function replace(newElement) {\n this._node.parentNode.replaceChild(newElement._node, this._node);\n return newElement;\n }\n\n /**\n * This method will append an element to the current element as a child.\n *\n * @memberof Chartist.Svg\n * @param {Chartist.Svg} element The Chartist.Svg element that should be added as a child\n * @param {Boolean} [insertFirst] Specifies if the element should be inserted as first child\n * @return {Chartist.Svg} The wrapper of the appended object\n */\n function append(element, insertFirst) {\n if(insertFirst && this._node.firstChild) {\n this._node.insertBefore(element._node, this._node.firstChild);\n } else {\n this._node.appendChild(element._node);\n }\n\n return this;\n }\n\n /**\n * Returns an array of class names that are attached to the current wrapper element. This method can not be chained further.\n *\n * @memberof Chartist.Svg\n * @return {Array} A list of classes or an empty array if there are no classes on the current element\n */\n function classes() {\n return this._node.getAttribute('class') ? this._node.getAttribute('class').trim().split(/\\s+/) : [];\n }\n\n /**\n * Adds one or a space separated list of classes to the current element and ensures the classes are only existing once.\n *\n * @memberof Chartist.Svg\n * @param {String} names A white space separated list of class names\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function addClass(names) {\n this._node.setAttribute('class',\n this.classes(this._node)\n .concat(names.trim().split(/\\s+/))\n .filter(function(elem, pos, self) {\n return self.indexOf(elem) === pos;\n }).join(' ')\n );\n\n return this;\n }\n\n /**\n * Removes one or a space separated list of classes from the current element.\n *\n * @memberof Chartist.Svg\n * @param {String} names A white space separated list of class names\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function removeClass(names) {\n var removedClasses = names.trim().split(/\\s+/);\n\n this._node.setAttribute('class', this.classes(this._node).filter(function(name) {\n return removedClasses.indexOf(name) === -1;\n }).join(' '));\n\n return this;\n }\n\n /**\n * Removes all classes from the current element.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function removeAllClasses() {\n this._node.setAttribute('class', '');\n\n return this;\n }\n\n /**\n * Get element height using `getBoundingClientRect`\n *\n * @memberof Chartist.Svg\n * @return {Number} The elements height in pixels\n */\n function height() {\n return this._node.getBoundingClientRect().height;\n }\n\n /**\n * Get element width using `getBoundingClientRect`\n *\n * @memberof Chartist.Core\n * @return {Number} The elements width in pixels\n */\n function width() {\n return this._node.getBoundingClientRect().width;\n }\n\n /**\n * The animate function lets you animate the current element with SMIL animations. You can add animations for multiple attributes at the same time by using an animation definition object. This object should contain SMIL animation attributes. Please refer to http://www.w3.org/TR/SVG/animate.html for a detailed specification about the available animation attributes. Additionally an easing property can be passed in the animation definition object. This can be a string with a name of an easing function in `Chartist.Svg.Easing` or an array with four numbers specifying a cubic Bézier curve.\n * **An animations object could look like this:**\n * ```javascript\n * element.animate({\n * opacity: {\n * dur: 1000,\n * from: 0,\n * to: 1\n * },\n * x1: {\n * dur: '1000ms',\n * from: 100,\n * to: 200,\n * easing: 'easeOutQuart'\n * },\n * y1: {\n * dur: '2s',\n * from: 0,\n * to: 100\n * }\n * });\n * ```\n * **Automatic unit conversion**\n * For the `dur` and the `begin` animate attribute you can also omit a unit by passing a number. The number will automatically be converted to milli seconds.\n * **Guided mode**\n * The default behavior of SMIL animations with offset using the `begin` attribute is that the attribute will keep it's original value until the animation starts. Mostly this behavior is not desired as you'd like to have your element attributes already initialized with the animation `from` value even before the animation starts. Also if you don't specify `fill=\"freeze\"` on an animate element or if you delete the animation after it's done (which is done in guided mode) the attribute will switch back to the initial value. This behavior is also not desired when performing simple one-time animations. For one-time animations you'd want to trigger animations immediately instead of relative to the document begin time. That's why in guided mode Chartist.Svg will also use the `begin` property to schedule a timeout and manually start the animation after the timeout. If you're using multiple SMIL definition objects for an attribute (in an array), guided mode will be disabled for this attribute, even if you explicitly enabled it.\n * If guided mode is enabled the following behavior is added:\n * - Before the animation starts (even when delayed with `begin`) the animated attribute will be set already to the `from` value of the animation\n * - `begin` is explicitly set to `indefinite` so it can be started manually without relying on document begin time (creation)\n * - The animate element will be forced to use `fill=\"freeze\"`\n * - The animation will be triggered with `beginElement()` in a timeout where `begin` of the definition object is interpreted in milli seconds. If no `begin` was specified the timeout is triggered immediately.\n * - After the animation the element attribute value will be set to the `to` value of the animation\n * - The animate element is deleted from the DOM\n *\n * @memberof Chartist.Svg\n * @param {Object} animations An animations object where the property keys are the attributes you'd like to animate. The properties should be objects again that contain the SMIL animation attributes (usually begin, dur, from, and to). The property begin and dur is auto converted (see Automatic unit conversion). You can also schedule multiple animations for the same attribute by passing an Array of SMIL definition objects. Attributes that contain an array of SMIL definition objects will not be executed in guided mode.\n * @param {Boolean} guided Specify if guided mode should be activated for this animation (see Guided mode). If not otherwise specified, guided mode will be activated.\n * @param {Object} eventEmitter If specified, this event emitter will be notified when an animation starts or ends.\n * @return {Chartist.Svg} The current element where the animation was added\n */\n function animate(animations, guided, eventEmitter) {\n if(guided === undefined) {\n guided = true;\n }\n\n Object.keys(animations).forEach(function createAnimateForAttributes(attribute) {\n\n function createAnimate(animationDefinition, guided) {\n var attributeProperties = {},\n animate,\n timeout,\n easing;\n\n // Check if an easing is specified in the definition object and delete it from the object as it will not\n // be part of the animate element attributes.\n if(animationDefinition.easing) {\n // If already an easing Bézier curve array we take it or we lookup a easing array in the Easing object\n easing = animationDefinition.easing instanceof Array ?\n animationDefinition.easing :\n Chartist.Svg.Easing[animationDefinition.easing];\n delete animationDefinition.easing;\n }\n\n // If numeric dur or begin was provided we assume milli seconds\n animationDefinition.begin = Chartist.ensureUnit(animationDefinition.begin, 'ms');\n animationDefinition.dur = Chartist.ensureUnit(animationDefinition.dur, 'ms');\n\n if(easing) {\n animationDefinition.calcMode = 'spline';\n animationDefinition.keySplines = easing.join(' ');\n animationDefinition.keyTimes = '0;1';\n }\n\n // Adding \"fill: freeze\" if we are in guided mode and set initial attribute values\n if(guided) {\n animationDefinition.fill = 'freeze';\n // Animated property on our element should already be set to the animation from value in guided mode\n attributeProperties[attribute] = animationDefinition.from;\n this.attr(attributeProperties);\n\n // In guided mode we also set begin to indefinite so we can trigger the start manually and put the begin\n // which needs to be in ms aside\n timeout = Chartist.quantity(animationDefinition.begin || 0).value;\n animationDefinition.begin = 'indefinite';\n }\n\n animate = this.elem('animate', Chartist.extend({\n attributeName: attribute\n }, animationDefinition));\n\n if(guided) {\n // If guided we take the value that was put aside in timeout and trigger the animation manually with a timeout\n setTimeout(function() {\n // If beginElement fails we set the animated attribute to the end position and remove the animate element\n // This happens if the SMIL ElementTimeControl interface is not supported or any other problems occured in\n // the browser. (Currently FF 34 does not support animate elements in foreignObjects)\n try {\n animate._node.beginElement();\n } catch(err) {\n // Set animated attribute to current animated value\n attributeProperties[attribute] = animationDefinition.to;\n this.attr(attributeProperties);\n // Remove the animate element as it's no longer required\n animate.remove();\n }\n }.bind(this), timeout);\n }\n\n if(eventEmitter) {\n animate._node.addEventListener('beginEvent', function handleBeginEvent() {\n eventEmitter.emit('animationBegin', {\n element: this,\n animate: animate._node,\n params: animationDefinition\n });\n }.bind(this));\n }\n\n animate._node.addEventListener('endEvent', function handleEndEvent() {\n if(eventEmitter) {\n eventEmitter.emit('animationEnd', {\n element: this,\n animate: animate._node,\n params: animationDefinition\n });\n }\n\n if(guided) {\n // Set animated attribute to current animated value\n attributeProperties[attribute] = animationDefinition.to;\n this.attr(attributeProperties);\n // Remove the animate element as it's no longer required\n animate.remove();\n }\n }.bind(this));\n }\n\n // If current attribute is an array of definition objects we create an animate for each and disable guided mode\n if(animations[attribute] instanceof Array) {\n animations[attribute].forEach(function(animationDefinition) {\n createAnimate.bind(this)(animationDefinition, false);\n }.bind(this));\n } else {\n createAnimate.bind(this)(animations[attribute], guided);\n }\n\n }.bind(this));\n\n return this;\n }\n\n Chartist.Svg = Chartist.Class.extend({\n constructor: Svg,\n attr: attr,\n elem: elem,\n parent: parent,\n root: root,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n getNode: getNode,\n foreignObject: foreignObject,\n text: text,\n empty: empty,\n remove: remove,\n replace: replace,\n append: append,\n classes: classes,\n addClass: addClass,\n removeClass: removeClass,\n removeAllClasses: removeAllClasses,\n height: height,\n width: width,\n animate: animate\n });\n\n /**\n * This method checks for support of a given SVG feature like Extensibility, SVG-animation or the like. Check http://www.w3.org/TR/SVG11/feature for a detailed list.\n *\n * @memberof Chartist.Svg\n * @param {String} feature The SVG 1.1 feature that should be checked for support.\n * @return {Boolean} True of false if the feature is supported or not\n */\n Chartist.Svg.isSupported = function(feature) {\n return document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#' + feature, '1.1');\n };\n\n /**\n * This Object contains some standard easing cubic bezier curves. Then can be used with their name in the `Chartist.Svg.animate`. You can also extend the list and use your own name in the `animate` function. Click the show code button to see the available bezier functions.\n *\n * @memberof Chartist.Svg\n */\n var easingCubicBeziers = {\n easeInSine: [0.47, 0, 0.745, 0.715],\n easeOutSine: [0.39, 0.575, 0.565, 1],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeOutCubic: [0.215, 0.61, 0.355, 1],\n easeInOutCubic: [0.645, 0.045, 0.355, 1],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeOutQuart: [0.165, 0.84, 0.44, 1],\n easeInOutQuart: [0.77, 0, 0.175, 1],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeOutQuint: [0.23, 1, 0.32, 1],\n easeInOutQuint: [0.86, 0, 0.07, 1],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeOutExpo: [0.19, 1, 0.22, 1],\n easeInOutExpo: [1, 0, 0, 1],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n easeOutCirc: [0.075, 0.82, 0.165, 1],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n easeInBack: [0.6, -0.28, 0.735, 0.045],\n easeOutBack: [0.175, 0.885, 0.32, 1.275],\n easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n };\n\n Chartist.Svg.Easing = easingCubicBeziers;\n\n /**\n * This helper class is to wrap multiple `Chartist.Svg` elements into a list where you can call the `Chartist.Svg` functions on all elements in the list with one call. This is helpful when you'd like to perform calls with `Chartist.Svg` on multiple elements.\n * An instance of this class is also returned by `Chartist.Svg.querySelectorAll`.\n *\n * @memberof Chartist.Svg\n * @param {Array|NodeList} nodeList An Array of SVG DOM nodes or a SVG DOM NodeList (as returned by document.querySelectorAll)\n * @constructor\n */\n function SvgList(nodeList) {\n var list = this;\n\n this.svgElements = [];\n for(var i = 0; i < nodeList.length; i++) {\n this.svgElements.push(new Chartist.Svg(nodeList[i]));\n }\n\n // Add delegation methods for Chartist.Svg\n Object.keys(Chartist.Svg.prototype).filter(function(prototypeProperty) {\n return ['constructor',\n 'parent',\n 'querySelector',\n 'querySelectorAll',\n 'replace',\n 'append',\n 'classes',\n 'height',\n 'width'].indexOf(prototypeProperty) === -1;\n }).forEach(function(prototypeProperty) {\n list[prototypeProperty] = function() {\n var args = Array.prototype.slice.call(arguments, 0);\n list.svgElements.forEach(function(element) {\n Chartist.Svg.prototype[prototypeProperty].apply(element, args);\n });\n return list;\n };\n });\n }\n\n Chartist.Svg.List = Chartist.Class.extend({\n constructor: SvgList\n });\n}(this || global, Chartist));\n;/**\n * Chartist SVG path module for SVG path description creation and modification.\n *\n * @module Chartist.Svg.Path\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n /**\n * Contains the descriptors of supported element types in a SVG path. Currently only move, line and curve are supported.\n *\n * @memberof Chartist.Svg.Path\n * @type {Object}\n */\n var elementDescriptions = {\n m: ['x', 'y'],\n l: ['x', 'y'],\n c: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n a: ['rx', 'ry', 'xAr', 'lAf', 'sf', 'x', 'y']\n };\n\n /**\n * Default options for newly created SVG path objects.\n *\n * @memberof Chartist.Svg.Path\n * @type {Object}\n */\n var defaultOptions = {\n // The accuracy in digit count after the decimal point. This will be used to round numbers in the SVG path. If this option is set to false then no rounding will be performed.\n accuracy: 3\n };\n\n function element(command, params, pathElements, pos, relative, data) {\n var pathElement = Chartist.extend({\n command: relative ? command.toLowerCase() : command.toUpperCase()\n }, params, data ? { data: data } : {} );\n\n pathElements.splice(pos, 0, pathElement);\n }\n\n function forEachParam(pathElements, cb) {\n pathElements.forEach(function(pathElement, pathElementIndex) {\n elementDescriptions[pathElement.command.toLowerCase()].forEach(function(paramName, paramIndex) {\n cb(pathElement, paramName, pathElementIndex, paramIndex, pathElements);\n });\n });\n }\n\n /**\n * Used to construct a new path object.\n *\n * @memberof Chartist.Svg.Path\n * @param {Boolean} close If set to true then this path will be closed when stringified (with a Z at the end)\n * @param {Object} options Options object that overrides the default objects. See default options for more details.\n * @constructor\n */\n function SvgPath(close, options) {\n this.pathElements = [];\n this.pos = 0;\n this.close = close;\n this.options = Chartist.extend({}, defaultOptions, options);\n }\n\n /**\n * Gets or sets the current position (cursor) inside of the path. You can move around the cursor freely but limited to 0 or the count of existing elements. All modifications with element functions will insert new elements at the position of this cursor.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} [pos] If a number is passed then the cursor is set to this position in the path element array.\n * @return {Chartist.Svg.Path|Number} If the position parameter was passed then the return value will be the path object for easy call chaining. If no position parameter was passed then the current position is returned.\n */\n function position(pos) {\n if(pos !== undefined) {\n this.pos = Math.max(0, Math.min(this.pathElements.length, pos));\n return this;\n } else {\n return this.pos;\n }\n }\n\n /**\n * Removes elements from the path starting at the current position.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} count Number of path elements that should be removed from the current position.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function remove(count) {\n this.pathElements.splice(this.pos, count);\n return this;\n }\n\n /**\n * Use this function to add a new move SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The x coordinate for the move element.\n * @param {Number} y The y coordinate for the move element.\n * @param {Boolean} [relative] If set to true the move element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function move(x, y, relative, data) {\n element('M', {\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new line SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The x coordinate for the line element.\n * @param {Number} y The y coordinate for the line element.\n * @param {Boolean} [relative] If set to true the line element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function line(x, y, relative, data) {\n element('L', {\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new curve SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x1 The x coordinate for the first control point of the bezier curve.\n * @param {Number} y1 The y coordinate for the first control point of the bezier curve.\n * @param {Number} x2 The x coordinate for the second control point of the bezier curve.\n * @param {Number} y2 The y coordinate for the second control point of the bezier curve.\n * @param {Number} x The x coordinate for the target point of the curve element.\n * @param {Number} y The y coordinate for the target point of the curve element.\n * @param {Boolean} [relative] If set to true the curve element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function curve(x1, y1, x2, y2, x, y, relative, data) {\n element('C', {\n x1: +x1,\n y1: +y1,\n x2: +x2,\n y2: +y2,\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new non-bezier curve SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} rx The radius to be used for the x-axis of the arc.\n * @param {Number} ry The radius to be used for the y-axis of the arc.\n * @param {Number} xAr Defines the orientation of the arc\n * @param {Number} lAf Large arc flag\n * @param {Number} sf Sweep flag\n * @param {Number} x The x coordinate for the target point of the curve element.\n * @param {Number} y The y coordinate for the target point of the curve element.\n * @param {Boolean} [relative] If set to true the curve element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function arc(rx, ry, xAr, lAf, sf, x, y, relative, data) {\n element('A', {\n rx: +rx,\n ry: +ry,\n xAr: +xAr,\n lAf: +lAf,\n sf: +sf,\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Parses an SVG path seen in the d attribute of path elements, and inserts the parsed elements into the existing path object at the current cursor position. Any closing path indicators (Z at the end of the path) will be ignored by the parser as this is provided by the close option in the options of the path object.\n *\n * @memberof Chartist.Svg.Path\n * @param {String} path Any SVG path that contains move (m), line (l) or curve (c) components.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function parse(path) {\n // Parsing the SVG path string into an array of arrays [['M', '10', '10'], ['L', '100', '100']]\n var chunks = path.replace(/([A-Za-z])([0-9])/g, '$1 $2')\n .replace(/([0-9])([A-Za-z])/g, '$1 $2')\n .split(/[\\s,]+/)\n .reduce(function(result, element) {\n if(element.match(/[A-Za-z]/)) {\n result.push([]);\n }\n\n result[result.length - 1].push(element);\n return result;\n }, []);\n\n // If this is a closed path we remove the Z at the end because this is determined by the close option\n if(chunks[chunks.length - 1][0].toUpperCase() === 'Z') {\n chunks.pop();\n }\n\n // Using svgPathElementDescriptions to map raw path arrays into objects that contain the command and the parameters\n // For example {command: 'M', x: '10', y: '10'}\n var elements = chunks.map(function(chunk) {\n var command = chunk.shift(),\n description = elementDescriptions[command.toLowerCase()];\n\n return Chartist.extend({\n command: command\n }, description.reduce(function(result, paramName, index) {\n result[paramName] = +chunk[index];\n return result;\n }, {}));\n });\n\n // Preparing a splice call with the elements array as var arg params and insert the parsed elements at the current position\n var spliceArgs = [this.pos, 0];\n Array.prototype.push.apply(spliceArgs, elements);\n Array.prototype.splice.apply(this.pathElements, spliceArgs);\n // Increase the internal position by the element count\n this.pos += elements.length;\n\n return this;\n }\n\n /**\n * This function renders to current SVG path object into a final SVG string that can be used in the d attribute of SVG path elements. It uses the accuracy option to round big decimals. If the close parameter was set in the constructor of this path object then a path closing Z will be appended to the output string.\n *\n * @memberof Chartist.Svg.Path\n * @return {String}\n */\n function stringify() {\n var accuracyMultiplier = Math.pow(10, this.options.accuracy);\n\n return this.pathElements.reduce(function(path, pathElement) {\n var params = elementDescriptions[pathElement.command.toLowerCase()].map(function(paramName) {\n return this.options.accuracy ?\n (Math.round(pathElement[paramName] * accuracyMultiplier) / accuracyMultiplier) :\n pathElement[paramName];\n }.bind(this));\n\n return path + pathElement.command + params.join(',');\n }.bind(this), '') + (this.close ? 'Z' : '');\n }\n\n /**\n * Scales all elements in the current SVG path object. There is an individual parameter for each coordinate. Scaling will also be done for control points of curves, affecting the given coordinate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The number which will be used to scale the x, x1 and x2 of all path elements.\n * @param {Number} y The number which will be used to scale the y, y1 and y2 of all path elements.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function scale(x, y) {\n forEachParam(this.pathElements, function(pathElement, paramName) {\n pathElement[paramName] *= paramName[0] === 'x' ? x : y;\n });\n return this;\n }\n\n /**\n * Translates all elements in the current SVG path object. The translation is relative and there is an individual parameter for each coordinate. Translation will also be done for control points of curves, affecting the given coordinate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The number which will be used to translate the x, x1 and x2 of all path elements.\n * @param {Number} y The number which will be used to translate the y, y1 and y2 of all path elements.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function translate(x, y) {\n forEachParam(this.pathElements, function(pathElement, paramName) {\n pathElement[paramName] += paramName[0] === 'x' ? x : y;\n });\n return this;\n }\n\n /**\n * This function will run over all existing path elements and then loop over their attributes. The callback function will be called for every path element attribute that exists in the current path.\n * The method signature of the callback function looks like this:\n * ```javascript\n * function(pathElement, paramName, pathElementIndex, paramIndex, pathElements)\n * ```\n * If something else than undefined is returned by the callback function, this value will be used to replace the old value. This allows you to build custom transformations of path objects that can't be achieved using the basic transformation functions scale and translate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Function} transformFnc The callback function for the transformation. Check the signature in the function description.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function transform(transformFnc) {\n forEachParam(this.pathElements, function(pathElement, paramName, pathElementIndex, paramIndex, pathElements) {\n var transformed = transformFnc(pathElement, paramName, pathElementIndex, paramIndex, pathElements);\n if(transformed || transformed === 0) {\n pathElement[paramName] = transformed;\n }\n });\n return this;\n }\n\n /**\n * This function clones a whole path object with all its properties. This is a deep clone and path element objects will also be cloned.\n *\n * @memberof Chartist.Svg.Path\n * @param {Boolean} [close] Optional option to set the new cloned path to closed. If not specified or false, the original path close option will be used.\n * @return {Chartist.Svg.Path}\n */\n function clone(close) {\n var c = new Chartist.Svg.Path(close || this.close);\n c.pos = this.pos;\n c.pathElements = this.pathElements.slice().map(function cloneElements(pathElement) {\n return Chartist.extend({}, pathElement);\n });\n c.options = Chartist.extend({}, this.options);\n return c;\n }\n\n /**\n * Split a Svg.Path object by a specific command in the path chain. The path chain will be split and an array of newly created paths objects will be returned. This is useful if you'd like to split an SVG path by it's move commands, for example, in order to isolate chunks of drawings.\n *\n * @memberof Chartist.Svg.Path\n * @param {String} command The command you'd like to use to split the path\n * @return {Array}\n */\n function splitByCommand(command) {\n var split = [\n new Chartist.Svg.Path()\n ];\n\n this.pathElements.forEach(function(pathElement) {\n if(pathElement.command === command.toUpperCase() && split[split.length - 1].pathElements.length !== 0) {\n split.push(new Chartist.Svg.Path());\n }\n\n split[split.length - 1].pathElements.push(pathElement);\n });\n\n return split;\n }\n\n /**\n * This static function on `Chartist.Svg.Path` is joining multiple paths together into one paths.\n *\n * @memberof Chartist.Svg.Path\n * @param {Array} paths A list of paths to be joined together. The order is important.\n * @param {boolean} close If the newly created path should be a closed path\n * @param {Object} options Path options for the newly created path.\n * @return {Chartist.Svg.Path}\n */\n\n function join(paths, close, options) {\n var joinedPath = new Chartist.Svg.Path(close, options);\n for(var i = 0; i < paths.length; i++) {\n var path = paths[i];\n for(var j = 0; j < path.pathElements.length; j++) {\n joinedPath.pathElements.push(path.pathElements[j]);\n }\n }\n return joinedPath;\n }\n\n Chartist.Svg.Path = Chartist.Class.extend({\n constructor: SvgPath,\n position: position,\n remove: remove,\n move: move,\n line: line,\n curve: curve,\n arc: arc,\n scale: scale,\n translate: translate,\n transform: transform,\n parse: parse,\n stringify: stringify,\n clone: clone,\n splitByCommand: splitByCommand\n });\n\n Chartist.Svg.Path.elementDescriptions = elementDescriptions;\n Chartist.Svg.Path.join = join;\n}(this || global, Chartist));\n;/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n var axisUnits = {\n x: {\n pos: 'x',\n len: 'width',\n dir: 'horizontal',\n rectStart: 'x1',\n rectEnd: 'x2',\n rectOffset: 'y2'\n },\n y: {\n pos: 'y',\n len: 'height',\n dir: 'vertical',\n rectStart: 'y2',\n rectEnd: 'y1',\n rectOffset: 'x1'\n }\n };\n\n function Axis(units, chartRect, ticks, options) {\n this.units = units;\n this.counterUnits = units === axisUnits.x ? axisUnits.y : axisUnits.x;\n this.chartRect = chartRect;\n this.axisLength = chartRect[units.rectEnd] - chartRect[units.rectStart];\n this.gridOffset = chartRect[units.rectOffset];\n this.ticks = ticks;\n this.options = options;\n }\n\n function createGridAndLabels(gridGroup, labelGroup, useForeignObject, chartOptions, eventEmitter) {\n var axisOptions = chartOptions['axis' + this.units.pos.toUpperCase()];\n var projectedValues = this.ticks.map(this.projectValue.bind(this));\n var labelValues = this.ticks.map(axisOptions.labelInterpolationFnc);\n\n projectedValues.forEach(function(projectedValue, index) {\n var labelOffset = {\n x: 0,\n y: 0\n };\n\n // TODO: Find better solution for solving this problem\n // Calculate how much space we have available for the label\n var labelLength;\n if(projectedValues[index + 1]) {\n // If we still have one label ahead, we can calculate the distance to the next tick / label\n labelLength = projectedValues[index + 1] - projectedValue;\n } else {\n // If we don't have a label ahead and we have only two labels in total, we just take the remaining distance to\n // on the whole axis length. We limit that to a minimum of 30 pixel, so that labels close to the border will\n // still be visible inside of the chart padding.\n labelLength = Math.max(this.axisLength - projectedValue, 30);\n }\n\n // Skip grid lines and labels where interpolated label values are falsey (execpt for 0)\n if(Chartist.isFalseyButZero(labelValues[index]) && labelValues[index] !== '') {\n return;\n }\n\n // Transform to global coordinates using the chartRect\n // We also need to set the label offset for the createLabel function\n if(this.units.pos === 'x') {\n projectedValue = this.chartRect.x1 + projectedValue;\n labelOffset.x = chartOptions.axisX.labelOffset.x;\n\n // If the labels should be positioned in start position (top side for vertical axis) we need to set a\n // different offset as for positioned with end (bottom)\n if(chartOptions.axisX.position === 'start') {\n labelOffset.y = this.chartRect.padding.top + chartOptions.axisX.labelOffset.y + (useForeignObject ? 5 : 20);\n } else {\n labelOffset.y = this.chartRect.y1 + chartOptions.axisX.labelOffset.y + (useForeignObject ? 5 : 20);\n }\n } else {\n projectedValue = this.chartRect.y1 - projectedValue;\n labelOffset.y = chartOptions.axisY.labelOffset.y - (useForeignObject ? labelLength : 0);\n\n // If the labels should be positioned in start position (left side for horizontal axis) we need to set a\n // different offset as for positioned with end (right side)\n if(chartOptions.axisY.position === 'start') {\n labelOffset.x = useForeignObject ? this.chartRect.padding.left + chartOptions.axisY.labelOffset.x : this.chartRect.x1 - 10;\n } else {\n labelOffset.x = this.chartRect.x2 + chartOptions.axisY.labelOffset.x + 10;\n }\n }\n\n if(axisOptions.showGrid) {\n Chartist.createGrid(projectedValue, index, this, this.gridOffset, this.chartRect[this.counterUnits.len](), gridGroup, [\n chartOptions.classNames.grid,\n chartOptions.classNames[this.units.dir]\n ], eventEmitter);\n }\n\n if(axisOptions.showLabel) {\n Chartist.createLabel(projectedValue, labelLength, index, labelValues, this, axisOptions.offset, labelOffset, labelGroup, [\n chartOptions.classNames.label,\n chartOptions.classNames[this.units.dir],\n (axisOptions.position === 'start' ? chartOptions.classNames[axisOptions.position] : chartOptions.classNames['end'])\n ], useForeignObject, eventEmitter);\n }\n }.bind(this));\n }\n\n Chartist.Axis = Chartist.Class.extend({\n constructor: Axis,\n createGridAndLabels: createGridAndLabels,\n projectValue: function(value, index, data) {\n throw new Error('Base axis can\\'t be instantiated!');\n }\n });\n\n Chartist.Axis.units = axisUnits;\n\n}(this || global, Chartist));\n;/**\n * The auto scale axis uses standard linear scale projection of values along an axis. It uses order of magnitude to find a scale automatically and evaluates the available space in order to find the perfect amount of ticks for your chart.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // If high is specified then the axis will display values explicitly up to this value and the computed maximum from the data is ignored\n * high: 100,\n * // If low is specified then the axis will display values explicitly down to this value and the computed minimum from the data is ignored\n * low: 0,\n * // This option will be used when finding the right scale division settings. The amount of ticks on the scale will be determined so that as many ticks as possible will be displayed, while not violating this minimum required space (in pixel).\n * scaleMinSpace: 20,\n * // Can be set to true or false. If set to true, the scale will be generated with whole numbers only.\n * onlyInteger: true,\n * // The reference value can be used to make sure that this value will always be on the chart. This is especially useful on bipolar charts where the bipolar center always needs to be part of the chart.\n * referenceValue: 5\n * };\n * ```\n *\n * @module Chartist.AutoScaleAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function AutoScaleAxis(axisUnit, data, chartRect, options) {\n // Usually we calculate highLow based on the data but this can be overriden by a highLow object in the options\n var highLow = options.highLow || Chartist.getHighLow(data, options, axisUnit.pos);\n this.bounds = Chartist.getBounds(chartRect[axisUnit.rectEnd] - chartRect[axisUnit.rectStart], highLow, options.scaleMinSpace || 20, options.onlyInteger);\n this.range = {\n min: this.bounds.min,\n max: this.bounds.max\n };\n\n Chartist.AutoScaleAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n this.bounds.values,\n options);\n }\n\n function projectValue(value) {\n return this.axisLength * (+Chartist.getMultiValue(value, this.units.pos) - this.bounds.min) / this.bounds.range;\n }\n\n Chartist.AutoScaleAxis = Chartist.Axis.extend({\n constructor: AutoScaleAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The fixed scale axis uses standard linear projection of values along an axis. It makes use of a divisor option to divide the range provided from the minimum and maximum value or the options high and low that will override the computed minimum and maximum.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // If high is specified then the axis will display values explicitly up to this value and the computed maximum from the data is ignored\n * high: 100,\n * // If low is specified then the axis will display values explicitly down to this value and the computed minimum from the data is ignored\n * low: 0,\n * // If specified then the value range determined from minimum to maximum (or low and high) will be divided by this number and ticks will be generated at those division points. The default divisor is 1.\n * divisor: 4,\n * // If ticks is explicitly set, then the axis will not compute the ticks with the divisor, but directly use the data in ticks to determine at what points on the axis a tick need to be generated.\n * ticks: [1, 10, 20, 30]\n * };\n * ```\n *\n * @module Chartist.FixedScaleAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function FixedScaleAxis(axisUnit, data, chartRect, options) {\n var highLow = options.highLow || Chartist.getHighLow(data, options, axisUnit.pos);\n this.divisor = options.divisor || 1;\n this.ticks = options.ticks || Chartist.times(this.divisor).map(function(value, index) {\n return highLow.low + (highLow.high - highLow.low) / this.divisor * index;\n }.bind(this));\n this.ticks.sort(function(a, b) {\n return a - b;\n });\n this.range = {\n min: highLow.low,\n max: highLow.high\n };\n\n Chartist.FixedScaleAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n this.ticks,\n options);\n\n this.stepLength = this.axisLength / this.divisor;\n }\n\n function projectValue(value) {\n return this.axisLength * (+Chartist.getMultiValue(value, this.units.pos) - this.range.min) / (this.range.max - this.range.min);\n }\n\n Chartist.FixedScaleAxis = Chartist.Axis.extend({\n constructor: FixedScaleAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The step axis for step based charts like bar chart or step based line charts. It uses a fixed amount of ticks that will be equally distributed across the whole axis length. The projection is done using the index of the data value rather than the value itself and therefore it's only useful for distribution purpose.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // Ticks to be used to distribute across the axis length. As this axis type relies on the index of the value rather than the value, arbitrary data that can be converted to a string can be used as ticks.\n * ticks: ['One', 'Two', 'Three'],\n * // If set to true the full width will be used to distribute the values where the last value will be at the maximum of the axis length. If false the spaces between the ticks will be evenly distributed instead.\n * stretch: true\n * };\n * ```\n *\n * @module Chartist.StepAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function StepAxis(axisUnit, data, chartRect, options) {\n Chartist.StepAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n options.ticks,\n options);\n\n var calc = Math.max(1, options.ticks.length - (options.stretch ? 1 : 0));\n this.stepLength = this.axisLength / calc;\n }\n\n function projectValue(value, index) {\n return this.stepLength * index;\n }\n\n Chartist.StepAxis = Chartist.Axis.extend({\n constructor: StepAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The Chartist line chart can be used to draw Line or Scatter charts. If used in the browser you can access the global `Chartist` namespace where you find the `Line` function as a main entry point.\n *\n * For examples on how to use the line chart please check the examples of the `Chartist.Line` method.\n *\n * @module Chartist.Line\n */\n/* global Chartist */\n(function(globalRoot, Chartist){\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in line charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Line\n */\n var defaultOptions = {\n // Options for X-Axis\n axisX: {\n // The offset of the labels to the chart area\n offset: 30,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'end',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // Set the axis type to be used to project values on this axis. If not defined, Chartist.StepAxis will be used for the X-Axis, where the ticks option will be set to the labels in the data and the stretch option will be set to the global fullWidth option. This type can be changed to any axis constructor available (e.g. Chartist.FixedScaleAxis), where all axis options should be present here.\n type: undefined\n },\n // Options for Y-Axis\n axisY: {\n // The offset of the labels to the chart area\n offset: 40,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'start',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // Set the axis type to be used to project values on this axis. If not defined, Chartist.AutoScaleAxis will be used for the Y-Axis, where the high and low options will be set to the global high and low options. This type can be changed to any axis constructor available (e.g. Chartist.FixedScaleAxis), where all axis options should be present here.\n type: undefined,\n // This value specifies the minimum height in pixel of the scale steps\n scaleMinSpace: 20,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // If the line should be drawn or not\n showLine: true,\n // If dots should be drawn or not\n showPoint: true,\n // If the line chart should draw an area\n showArea: false,\n // The base for the area chart that will be used to close the area shape (is normally 0)\n areaBase: 0,\n // Specify if the lines should be smoothed. This value can be true or false where true will result in smoothing using the default smoothing interpolation function Chartist.Interpolation.cardinal and false results in Chartist.Interpolation.none. You can also choose other smoothing / interpolation functions available in the Chartist.Interpolation module, or write your own interpolation function. Check the examples for a brief description.\n lineSmooth: true,\n // If the line chart should add a background fill to the .ct-grids group.\n showGridBackground: false,\n // Overriding the natural low of the chart allows you to zoom in or limit the charts lowest displayed value\n low: undefined,\n // Overriding the natural high of the chart allows you to zoom in or limit the charts highest displayed value\n high: undefined,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n // When set to true, the last grid line on the x-axis is not drawn and the chart elements will expand to the full available width of the chart. For the last label to be drawn correctly you might need to add chart padding or offset the last label with a draw event handler.\n fullWidth: false,\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // Override the class names that get used to generate the SVG structure of the chart\n classNames: {\n chart: 'ct-chart-line',\n label: 'ct-label',\n labelGroup: 'ct-labels',\n series: 'ct-series',\n line: 'ct-line',\n point: 'ct-point',\n area: 'ct-area',\n grid: 'ct-grid',\n gridGroup: 'ct-grids',\n gridBackground: 'ct-grid-background',\n vertical: 'ct-vertical',\n horizontal: 'ct-horizontal',\n start: 'ct-start',\n end: 'ct-end'\n }\n };\n\n /**\n * Creates a new chart\n *\n */\n function createChart(options) {\n var data = Chartist.normalizeData(this.data, options.reverseData, true);\n\n // Create new svg object\n this.svg = Chartist.createSvg(this.container, options.width, options.height, options.classNames.chart);\n // Create groups for labels, grid and series\n var gridGroup = this.svg.elem('g').addClass(options.classNames.gridGroup);\n var seriesGroup = this.svg.elem('g');\n var labelGroup = this.svg.elem('g').addClass(options.classNames.labelGroup);\n\n var chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n var axisX, axisY;\n\n if(options.axisX.type === undefined) {\n axisX = new Chartist.StepAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n ticks: data.normalized.labels,\n stretch: options.fullWidth\n }));\n } else {\n axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, options.axisX);\n }\n\n if(options.axisY.type === undefined) {\n axisY = new Chartist.AutoScaleAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n high: Chartist.isNumeric(options.high) ? options.high : options.axisY.high,\n low: Chartist.isNumeric(options.low) ? options.low : options.axisY.low\n }));\n } else {\n axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, options.axisY);\n }\n\n axisX.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n axisY.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n\n if (options.showGridBackground) {\n Chartist.createGridBackground(gridGroup, chartRect, options.classNames.gridBackground, this.eventEmitter);\n }\n\n // Draw the series\n data.raw.series.forEach(function(series, seriesIndex) {\n var seriesElement = seriesGroup.elem('g');\n\n // Write attributes to series group element. If series name or meta is undefined the attributes will not be written\n seriesElement.attr({\n 'ct:series-name': series.name,\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // Use series class from series data or if not set generate one\n seriesElement.addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex))\n ].join(' '));\n\n var pathCoordinates = [],\n pathData = [];\n\n data.normalized.series[seriesIndex].forEach(function(value, valueIndex) {\n var p = {\n x: chartRect.x1 + axisX.projectValue(value, valueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - axisY.projectValue(value, valueIndex, data.normalized.series[seriesIndex])\n };\n pathCoordinates.push(p.x, p.y);\n pathData.push({\n value: value,\n valueIndex: valueIndex,\n meta: Chartist.getMetaData(series, valueIndex)\n });\n }.bind(this));\n\n var seriesOptions = {\n lineSmooth: Chartist.getSeriesOption(series, options, 'lineSmooth'),\n showPoint: Chartist.getSeriesOption(series, options, 'showPoint'),\n showLine: Chartist.getSeriesOption(series, options, 'showLine'),\n showArea: Chartist.getSeriesOption(series, options, 'showArea'),\n areaBase: Chartist.getSeriesOption(series, options, 'areaBase')\n };\n\n var smoothing = typeof seriesOptions.lineSmooth === 'function' ?\n seriesOptions.lineSmooth : (seriesOptions.lineSmooth ? Chartist.Interpolation.monotoneCubic() : Chartist.Interpolation.none());\n // Interpolating path where pathData will be used to annotate each path element so we can trace back the original\n // index, value and meta data\n var path = smoothing(pathCoordinates, pathData);\n\n // If we should show points we need to create them now to avoid secondary loop\n // Points are drawn from the pathElements returned by the interpolation function\n // Small offset for Firefox to render squares correctly\n if (seriesOptions.showPoint) {\n\n path.pathElements.forEach(function(pathElement) {\n var point = seriesElement.elem('line', {\n x1: pathElement.x,\n y1: pathElement.y,\n x2: pathElement.x + 0.01,\n y2: pathElement.y\n }, options.classNames.point).attr({\n 'ct:value': [pathElement.data.value.x, pathElement.data.value.y].filter(Chartist.isNumeric).join(','),\n 'ct:meta': Chartist.serialize(pathElement.data.meta)\n });\n\n this.eventEmitter.emit('draw', {\n type: 'point',\n value: pathElement.data.value,\n index: pathElement.data.valueIndex,\n meta: pathElement.data.meta,\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n group: seriesElement,\n element: point,\n x: pathElement.x,\n y: pathElement.y\n });\n }.bind(this));\n }\n\n if(seriesOptions.showLine) {\n var line = seriesElement.elem('path', {\n d: path.stringify()\n }, options.classNames.line, true);\n\n this.eventEmitter.emit('draw', {\n type: 'line',\n values: data.normalized.series[seriesIndex],\n path: path.clone(),\n chartRect: chartRect,\n index: seriesIndex,\n series: series,\n seriesIndex: seriesIndex,\n seriesMeta: series.meta,\n axisX: axisX,\n axisY: axisY,\n group: seriesElement,\n element: line\n });\n }\n\n // Area currently only works with axes that support a range!\n if(seriesOptions.showArea && axisY.range) {\n // If areaBase is outside the chart area (< min or > max) we need to set it respectively so that\n // the area is not drawn outside the chart area.\n var areaBase = Math.max(Math.min(seriesOptions.areaBase, axisY.range.max), axisY.range.min);\n\n // We project the areaBase value into screen coordinates\n var areaBaseProjected = chartRect.y1 - axisY.projectValue(areaBase);\n\n // In order to form the area we'll first split the path by move commands so we can chunk it up into segments\n path.splitByCommand('M').filter(function onlySolidSegments(pathSegment) {\n // We filter only \"solid\" segments that contain more than one point. Otherwise there's no need for an area\n return pathSegment.pathElements.length > 1;\n }).map(function convertToArea(solidPathSegments) {\n // Receiving the filtered solid path segments we can now convert those segments into fill areas\n var firstElement = solidPathSegments.pathElements[0];\n var lastElement = solidPathSegments.pathElements[solidPathSegments.pathElements.length - 1];\n\n // Cloning the solid path segment with closing option and removing the first move command from the clone\n // We then insert a new move that should start at the area base and draw a straight line up or down\n // at the end of the path we add an additional straight line to the projected area base value\n // As the closing option is set our path will be automatically closed\n return solidPathSegments.clone(true)\n .position(0)\n .remove(1)\n .move(firstElement.x, areaBaseProjected)\n .line(firstElement.x, firstElement.y)\n .position(solidPathSegments.pathElements.length + 1)\n .line(lastElement.x, areaBaseProjected);\n\n }).forEach(function createArea(areaPath) {\n // For each of our newly created area paths, we'll now create path elements by stringifying our path objects\n // and adding the created DOM elements to the correct series group\n var area = seriesElement.elem('path', {\n d: areaPath.stringify()\n }, options.classNames.area, true);\n\n // Emit an event for each area that was drawn\n this.eventEmitter.emit('draw', {\n type: 'area',\n values: data.normalized.series[seriesIndex],\n path: areaPath.clone(),\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n chartRect: chartRect,\n index: seriesIndex,\n group: seriesElement,\n element: area\n });\n }.bind(this));\n }\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n bounds: axisY.bounds,\n chartRect: chartRect,\n axisX: axisX,\n axisY: axisY,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new line chart.\n *\n * @memberof Chartist.Line\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object that needs to consist of a labels and a series array\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object which exposes the API for the created chart\n *\n * @example\n * // Create a simple line chart\n * var data = {\n * // A labels array that can contain any sort of values\n * labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\n * // Our series array that contains series objects or in this case series data arrays\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // As options we currently only set a static size of 300x200 px\n * var options = {\n * width: '300px',\n * height: '200px'\n * };\n *\n * // In the global name space Chartist we call the Line function to initialize a line chart. As a first parameter we pass in a selector where we would like to get our chart created. Second parameter is the actual data object and as a third parameter we pass in our options\n * new Chartist.Line('.ct-chart', data, options);\n *\n * @example\n * // Use specific interpolation function with configuration from the Chartist.Interpolation module\n *\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [\n * [1, 1, 8, 1, 7]\n * ]\n * }, {\n * lineSmooth: Chartist.Interpolation.cardinal({\n * tension: 0.2\n * })\n * });\n *\n * @example\n * // Create a line chart with responsive options\n *\n * var data = {\n * // A labels array that can contain any sort of values\n * labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],\n * // Our series array that contains series objects or in this case series data arrays\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // In addition to the regular options we specify responsive option overrides that will override the default configutation based on the matching media queries.\n * var responsiveOptions = [\n * ['screen and (min-width: 641px) and (max-width: 1024px)', {\n * showPoint: false,\n * axisX: {\n * labelInterpolationFnc: function(value) {\n * // Will return Mon, Tue, Wed etc. on medium screens\n * return value.slice(0, 3);\n * }\n * }\n * }],\n * ['screen and (max-width: 640px)', {\n * showLine: false,\n * axisX: {\n * labelInterpolationFnc: function(value) {\n * // Will return M, T, W etc. on small screens\n * return value[0];\n * }\n * }\n * }]\n * ];\n *\n * new Chartist.Line('.ct-chart', data, null, responsiveOptions);\n *\n */\n function Line(query, data, options, responsiveOptions) {\n Chartist.Line.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating line chart type in Chartist namespace\n Chartist.Line = Chartist.Base.extend({\n constructor: Line,\n createChart: createChart\n });\n\n}(this || global, Chartist));\n;/**\n * The bar chart module of Chartist that can be used to draw unipolar or bipolar bar and grouped bar charts.\n *\n * @module Chartist.Bar\n */\n/* global Chartist */\n(function(globalRoot, Chartist){\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in bar charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Bar\n */\n var defaultOptions = {\n // Options for X-Axis\n axisX: {\n // The offset of the chart drawing area to the border of the container\n offset: 30,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'end',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // This value specifies the minimum width in pixel of the scale steps\n scaleMinSpace: 30,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Options for Y-Axis\n axisY: {\n // The offset of the chart drawing area to the border of the container\n offset: 40,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'start',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // This value specifies the minimum height in pixel of the scale steps\n scaleMinSpace: 20,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // Overriding the natural high of the chart allows you to zoom in or limit the charts highest displayed value\n high: undefined,\n // Overriding the natural low of the chart allows you to zoom in or limit the charts lowest displayed value\n low: undefined,\n // Unless low/high are explicitly set, bar chart will be centered at zero by default. Set referenceValue to null to auto scale.\n referenceValue: 0,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n // Specify the distance in pixel of bars in a group\n seriesBarDistance: 15,\n // If set to true this property will cause the series bars to be stacked. Check the `stackMode` option for further stacking options.\n stackBars: false,\n // If set to 'overlap' this property will force the stacked bars to draw from the zero line.\n // If set to 'accumulate' this property will form a total for each series point. This will also influence the y-axis and the overall bounds of the chart. In stacked mode the seriesBarDistance property will have no effect.\n stackMode: 'accumulate',\n // Inverts the axes of the bar chart in order to draw a horizontal bar chart. Be aware that you also need to invert your axis settings as the Y Axis will now display the labels and the X Axis the values.\n horizontalBars: false,\n // If set to true then each bar will represent a series and the data array is expected to be a one dimensional array of data values rather than a series array of series. This is useful if the bar chart should represent a profile rather than some data over time.\n distributeSeries: false,\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // If the bar chart should add a background fill to the .ct-grids group.\n showGridBackground: false,\n // Override the class names that get used to generate the SVG structure of the chart\n classNames: {\n chart: 'ct-chart-bar',\n horizontalBars: 'ct-horizontal-bars',\n label: 'ct-label',\n labelGroup: 'ct-labels',\n series: 'ct-series',\n bar: 'ct-bar',\n grid: 'ct-grid',\n gridGroup: 'ct-grids',\n gridBackground: 'ct-grid-background',\n vertical: 'ct-vertical',\n horizontal: 'ct-horizontal',\n start: 'ct-start',\n end: 'ct-end'\n }\n };\n\n /**\n * Creates a new chart\n *\n */\n function createChart(options) {\n var data;\n var highLow;\n\n if(options.distributeSeries) {\n data = Chartist.normalizeData(this.data, options.reverseData, options.horizontalBars ? 'x' : 'y');\n data.normalized.series = data.normalized.series.map(function(value) {\n return [value];\n });\n } else {\n data = Chartist.normalizeData(this.data, options.reverseData, options.horizontalBars ? 'x' : 'y');\n }\n\n // Create new svg element\n this.svg = Chartist.createSvg(\n this.container,\n options.width,\n options.height,\n options.classNames.chart + (options.horizontalBars ? ' ' + options.classNames.horizontalBars : '')\n );\n\n // Drawing groups in correct order\n var gridGroup = this.svg.elem('g').addClass(options.classNames.gridGroup);\n var seriesGroup = this.svg.elem('g');\n var labelGroup = this.svg.elem('g').addClass(options.classNames.labelGroup);\n\n if(options.stackBars && data.normalized.series.length !== 0) {\n\n // If stacked bars we need to calculate the high low from stacked values from each series\n var serialSums = Chartist.serialMap(data.normalized.series, function serialSums() {\n return Array.prototype.slice.call(arguments).map(function(value) {\n return value;\n }).reduce(function(prev, curr) {\n return {\n x: prev.x + (curr && curr.x) || 0,\n y: prev.y + (curr && curr.y) || 0\n };\n }, {x: 0, y: 0});\n });\n\n highLow = Chartist.getHighLow([serialSums], options, options.horizontalBars ? 'x' : 'y');\n\n } else {\n\n highLow = Chartist.getHighLow(data.normalized.series, options, options.horizontalBars ? 'x' : 'y');\n }\n\n // Overrides of high / low from settings\n highLow.high = +options.high || (options.high === 0 ? 0 : highLow.high);\n highLow.low = +options.low || (options.low === 0 ? 0 : highLow.low);\n\n var chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n\n var valueAxis,\n labelAxisTicks,\n labelAxis,\n axisX,\n axisY;\n\n // We need to set step count based on some options combinations\n if(options.distributeSeries && options.stackBars) {\n // If distributed series are enabled and bars need to be stacked, we'll only have one bar and therefore should\n // use only the first label for the step axis\n labelAxisTicks = data.normalized.labels.slice(0, 1);\n } else {\n // If distributed series are enabled but stacked bars aren't, we should use the series labels\n // If we are drawing a regular bar chart with two dimensional series data, we just use the labels array\n // as the bars are normalized\n labelAxisTicks = data.normalized.labels;\n }\n\n // Set labelAxis and valueAxis based on the horizontalBars setting. This setting will flip the axes if necessary.\n if(options.horizontalBars) {\n if(options.axisX.type === undefined) {\n valueAxis = axisX = new Chartist.AutoScaleAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n highLow: highLow,\n referenceValue: 0\n }));\n } else {\n valueAxis = axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n highLow: highLow,\n referenceValue: 0\n }));\n }\n\n if(options.axisY.type === undefined) {\n labelAxis = axisY = new Chartist.StepAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, {\n ticks: labelAxisTicks\n });\n } else {\n labelAxis = axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, options.axisY);\n }\n } else {\n if(options.axisX.type === undefined) {\n labelAxis = axisX = new Chartist.StepAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, {\n ticks: labelAxisTicks\n });\n } else {\n labelAxis = axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, options.axisX);\n }\n\n if(options.axisY.type === undefined) {\n valueAxis = axisY = new Chartist.AutoScaleAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n highLow: highLow,\n referenceValue: 0\n }));\n } else {\n valueAxis = axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n highLow: highLow,\n referenceValue: 0\n }));\n }\n }\n\n // Projected 0 point\n var zeroPoint = options.horizontalBars ? (chartRect.x1 + valueAxis.projectValue(0)) : (chartRect.y1 - valueAxis.projectValue(0));\n // Used to track the screen coordinates of stacked bars\n var stackedBarValues = [];\n\n labelAxis.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n valueAxis.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n\n if (options.showGridBackground) {\n Chartist.createGridBackground(gridGroup, chartRect, options.classNames.gridBackground, this.eventEmitter);\n }\n\n // Draw the series\n data.raw.series.forEach(function(series, seriesIndex) {\n // Calculating bi-polar value of index for seriesOffset. For i = 0..4 biPol will be -1.5, -0.5, 0.5, 1.5 etc.\n var biPol = seriesIndex - (data.raw.series.length - 1) / 2;\n // Half of the period width between vertical grid lines used to position bars\n var periodHalfLength;\n // Current series SVG element\n var seriesElement;\n\n // We need to set periodHalfLength based on some options combinations\n if(options.distributeSeries && !options.stackBars) {\n // If distributed series are enabled but stacked bars aren't, we need to use the length of the normaizedData array\n // which is the series count and divide by 2\n periodHalfLength = labelAxis.axisLength / data.normalized.series.length / 2;\n } else if(options.distributeSeries && options.stackBars) {\n // If distributed series and stacked bars are enabled we'll only get one bar so we should just divide the axis\n // length by 2\n periodHalfLength = labelAxis.axisLength / 2;\n } else {\n // On regular bar charts we should just use the series length\n periodHalfLength = labelAxis.axisLength / data.normalized.series[seriesIndex].length / 2;\n }\n\n // Adding the series group to the series element\n seriesElement = seriesGroup.elem('g');\n\n // Write attributes to series group element. If series name or meta is undefined the attributes will not be written\n seriesElement.attr({\n 'ct:series-name': series.name,\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // Use series class from series data or if not set generate one\n seriesElement.addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex))\n ].join(' '));\n\n data.normalized.series[seriesIndex].forEach(function(value, valueIndex) {\n var projected,\n bar,\n previousStack,\n labelAxisValueIndex;\n\n // We need to set labelAxisValueIndex based on some options combinations\n if(options.distributeSeries && !options.stackBars) {\n // If distributed series are enabled but stacked bars aren't, we can use the seriesIndex for later projection\n // on the step axis for label positioning\n labelAxisValueIndex = seriesIndex;\n } else if(options.distributeSeries && options.stackBars) {\n // If distributed series and stacked bars are enabled, we will only get one bar and therefore always use\n // 0 for projection on the label step axis\n labelAxisValueIndex = 0;\n } else {\n // On regular bar charts we just use the value index to project on the label step axis\n labelAxisValueIndex = valueIndex;\n }\n\n // We need to transform coordinates differently based on the chart layout\n if(options.horizontalBars) {\n projected = {\n x: chartRect.x1 + valueAxis.projectValue(value && value.x ? value.x : 0, valueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - labelAxis.projectValue(value && value.y ? value.y : 0, labelAxisValueIndex, data.normalized.series[seriesIndex])\n };\n } else {\n projected = {\n x: chartRect.x1 + labelAxis.projectValue(value && value.x ? value.x : 0, labelAxisValueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - valueAxis.projectValue(value && value.y ? value.y : 0, valueIndex, data.normalized.series[seriesIndex])\n }\n }\n\n // If the label axis is a step based axis we will offset the bar into the middle of between two steps using\n // the periodHalfLength value. Also we do arrange the different series so that they align up to each other using\n // the seriesBarDistance. If we don't have a step axis, the bar positions can be chosen freely so we should not\n // add any automated positioning.\n if(labelAxis instanceof Chartist.StepAxis) {\n // Offset to center bar between grid lines, but only if the step axis is not stretched\n if(!labelAxis.options.stretch) {\n projected[labelAxis.units.pos] += periodHalfLength * (options.horizontalBars ? -1 : 1);\n }\n // Using bi-polar offset for multiple series if no stacked bars or series distribution is used\n projected[labelAxis.units.pos] += (options.stackBars || options.distributeSeries) ? 0 : biPol * options.seriesBarDistance * (options.horizontalBars ? -1 : 1);\n }\n\n // Enter value in stacked bar values used to remember previous screen value for stacking up bars\n previousStack = stackedBarValues[valueIndex] || zeroPoint;\n stackedBarValues[valueIndex] = previousStack - (zeroPoint - projected[labelAxis.counterUnits.pos]);\n\n // Skip if value is undefined\n if(value === undefined) {\n return;\n }\n\n var positions = {};\n positions[labelAxis.units.pos + '1'] = projected[labelAxis.units.pos];\n positions[labelAxis.units.pos + '2'] = projected[labelAxis.units.pos];\n\n if(options.stackBars && (options.stackMode === 'accumulate' || !options.stackMode)) {\n // Stack mode: accumulate (default)\n // If bars are stacked we use the stackedBarValues reference and otherwise base all bars off the zero line\n // We want backwards compatibility, so the expected fallback without the 'stackMode' option\n // to be the original behaviour (accumulate)\n positions[labelAxis.counterUnits.pos + '1'] = previousStack;\n positions[labelAxis.counterUnits.pos + '2'] = stackedBarValues[valueIndex];\n } else {\n // Draw from the zero line normally\n // This is also the same code for Stack mode: overlap\n positions[labelAxis.counterUnits.pos + '1'] = zeroPoint;\n positions[labelAxis.counterUnits.pos + '2'] = projected[labelAxis.counterUnits.pos];\n }\n\n // Limit x and y so that they are within the chart rect\n positions.x1 = Math.min(Math.max(positions.x1, chartRect.x1), chartRect.x2);\n positions.x2 = Math.min(Math.max(positions.x2, chartRect.x1), chartRect.x2);\n positions.y1 = Math.min(Math.max(positions.y1, chartRect.y2), chartRect.y1);\n positions.y2 = Math.min(Math.max(positions.y2, chartRect.y2), chartRect.y1);\n\n var metaData = Chartist.getMetaData(series, valueIndex);\n\n // Create bar element\n bar = seriesElement.elem('line', positions, options.classNames.bar).attr({\n 'ct:value': [value.x, value.y].filter(Chartist.isNumeric).join(','),\n 'ct:meta': Chartist.serialize(metaData)\n });\n\n this.eventEmitter.emit('draw', Chartist.extend({\n type: 'bar',\n value: value,\n index: valueIndex,\n meta: metaData,\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n chartRect: chartRect,\n group: seriesElement,\n element: bar\n }, positions));\n }.bind(this));\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n bounds: valueAxis.bounds,\n chartRect: chartRect,\n axisX: axisX,\n axisY: axisY,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new bar chart and returns API object that you can use for later changes.\n *\n * @memberof Chartist.Bar\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object that needs to consist of a labels and a series array\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object which exposes the API for the created chart\n *\n * @example\n * // Create a simple bar chart\n * var data = {\n * labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // In the global name space Chartist we call the Bar function to initialize a bar chart. As a first parameter we pass in a selector where we would like to get our chart created and as a second parameter we pass our data object.\n * new Chartist.Bar('.ct-chart', data);\n *\n * @example\n * // This example creates a bipolar grouped bar chart where the boundaries are limitted to -10 and 10\n * new Chartist.Bar('.ct-chart', {\n * labels: [1, 2, 3, 4, 5, 6, 7],\n * series: [\n * [1, 3, 2, -5, -3, 1, -6],\n * [-5, -2, -4, -1, 2, -3, 1]\n * ]\n * }, {\n * seriesBarDistance: 12,\n * low: -10,\n * high: 10\n * });\n *\n */\n function Bar(query, data, options, responsiveOptions) {\n Chartist.Bar.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating bar chart type in Chartist namespace\n Chartist.Bar = Chartist.Base.extend({\n constructor: Bar,\n createChart: createChart\n });\n\n}(this || global, Chartist));\n;/**\n * The pie chart module of Chartist that can be used to draw pie, donut or gauge charts\n *\n * @module Chartist.Pie\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in line charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Pie\n */\n var defaultOptions = {\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: 5,\n // Override the class names that are used to generate the SVG structure of the chart\n classNames: {\n chartPie: 'ct-chart-pie',\n chartDonut: 'ct-chart-donut',\n series: 'ct-series',\n slicePie: 'ct-slice-pie',\n sliceDonut: 'ct-slice-donut',\n sliceDonutSolid: 'ct-slice-donut-solid',\n label: 'ct-label'\n },\n // The start angle of the pie chart in degrees where 0 points north. A higher value offsets the start angle clockwise.\n startAngle: 0,\n // An optional total you can specify. By specifying a total value, the sum of the values in the series must be this total in order to draw a full pie. You can use this parameter to draw only parts of a pie or gauge charts.\n total: undefined,\n // If specified the donut CSS classes will be used and strokes will be drawn instead of pie slices.\n donut: false,\n // If specified the donut segments will be drawn as shapes instead of strokes.\n donutSolid: false,\n // Specify the donut stroke width, currently done in javascript for convenience. May move to CSS styles in the future.\n // This option can be set as number or string to specify a relative width (i.e. 100 or '30%').\n donutWidth: 60,\n // If a label should be shown or not\n showLabel: true,\n // Label position offset from the standard position which is half distance of the radius. This value can be either positive or negative. Positive values will position the label away from the center.\n labelOffset: 0,\n // This option can be set to 'inside', 'outside' or 'center'. Positioned with 'inside' the labels will be placed on half the distance of the radius to the border of the Pie by respecting the 'labelOffset'. The 'outside' option will place the labels at the border of the pie and 'center' will place the labels in the absolute center point of the chart. The 'center' option only makes sense in conjunction with the 'labelOffset' option.\n labelPosition: 'inside',\n // An interpolation function for the label value\n labelInterpolationFnc: Chartist.noop,\n // Label direction can be 'neutral', 'explode' or 'implode'. The labels anchor will be positioned based on those settings as well as the fact if the labels are on the right or left side of the center of the chart. Usually explode is useful when labels are positioned far away from the center.\n labelDirection: 'neutral',\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // If true empty values will be ignored to avoid drawing unncessary slices and labels\n ignoreEmptyValues: false\n };\n\n /**\n * Determines SVG anchor position based on direction and center parameter\n *\n * @param center\n * @param label\n * @param direction\n * @return {string}\n */\n function determineAnchorPosition(center, label, direction) {\n var toTheRight = label.x > center.x;\n\n if(toTheRight && direction === 'explode' ||\n !toTheRight && direction === 'implode') {\n return 'start';\n } else if(toTheRight && direction === 'implode' ||\n !toTheRight && direction === 'explode') {\n return 'end';\n } else {\n return 'middle';\n }\n }\n\n /**\n * Creates the pie chart\n *\n * @param options\n */\n function createChart(options) {\n var data = Chartist.normalizeData(this.data);\n var seriesGroups = [],\n labelsGroup,\n chartRect,\n radius,\n labelRadius,\n totalDataSum,\n startAngle = options.startAngle;\n\n // Create SVG.js draw\n this.svg = Chartist.createSvg(this.container, options.width, options.height,options.donut ? options.classNames.chartDonut : options.classNames.chartPie);\n // Calculate charting rect\n chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n // Get biggest circle radius possible within chartRect\n radius = Math.min(chartRect.width() / 2, chartRect.height() / 2);\n // Calculate total of all series to get reference value or use total reference from optional options\n totalDataSum = options.total || data.normalized.series.reduce(function(previousValue, currentValue) {\n return previousValue + currentValue;\n }, 0);\n\n var donutWidth = Chartist.quantity(options.donutWidth);\n if (donutWidth.unit === '%') {\n donutWidth.value *= radius / 100;\n }\n\n // If this is a donut chart we need to adjust our radius to enable strokes to be drawn inside\n // Unfortunately this is not possible with the current SVG Spec\n // See this proposal for more details: http://lists.w3.org/Archives/Public/www-svg/2003Oct/0000.html\n radius -= options.donut && !options.donutSolid ? donutWidth.value / 2 : 0;\n\n // If labelPosition is set to `outside` or a donut chart is drawn then the label position is at the radius,\n // if regular pie chart it's half of the radius\n if(options.labelPosition === 'outside' || options.donut && !options.donutSolid) {\n labelRadius = radius;\n } else if(options.labelPosition === 'center') {\n // If labelPosition is center we start with 0 and will later wait for the labelOffset\n labelRadius = 0;\n } else if(options.donutSolid) {\n labelRadius = radius - donutWidth.value / 2;\n } else {\n // Default option is 'inside' where we use half the radius so the label will be placed in the center of the pie\n // slice\n labelRadius = radius / 2;\n }\n // Add the offset to the labelRadius where a negative offset means closed to the center of the chart\n labelRadius += options.labelOffset;\n\n // Calculate end angle based on total sum and current data value and offset with padding\n var center = {\n x: chartRect.x1 + chartRect.width() / 2,\n y: chartRect.y2 + chartRect.height() / 2\n };\n\n // Check if there is only one non-zero value in the series array.\n var hasSingleValInSeries = data.raw.series.filter(function(val) {\n return val.hasOwnProperty('value') ? val.value !== 0 : val !== 0;\n }).length === 1;\n\n // Creating the series groups\n data.raw.series.forEach(function(series, index) {\n seriesGroups[index] = this.svg.elem('g', null, null);\n }.bind(this));\n //if we need to show labels we create the label group now\n if(options.showLabel) {\n labelsGroup = this.svg.elem('g', null, null);\n }\n\n // Draw the series\n // initialize series groups\n data.raw.series.forEach(function(series, index) {\n // If current value is zero and we are ignoring empty values then skip to next value\n if (data.normalized.series[index] === 0 && options.ignoreEmptyValues) return;\n\n // If the series is an object and contains a name or meta data we add a custom attribute\n seriesGroups[index].attr({\n 'ct:series-name': series.name\n });\n\n // Use series class from series data or if not set generate one\n seriesGroups[index].addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(index))\n ].join(' '));\n\n // If the whole dataset is 0 endAngle should be zero. Can't divide by 0.\n var endAngle = (totalDataSum > 0 ? startAngle + data.normalized.series[index] / totalDataSum * 360 : 0);\n\n // Use slight offset so there are no transparent hairline issues\n var overlappigStartAngle = Math.max(0, startAngle - (index === 0 || hasSingleValInSeries ? 0 : 0.2));\n\n // If we need to draw the arc for all 360 degrees we need to add a hack where we close the circle\n // with Z and use 359.99 degrees\n if(endAngle - overlappigStartAngle >= 359.99) {\n endAngle = overlappigStartAngle + 359.99;\n }\n\n var start = Chartist.polarToCartesian(center.x, center.y, radius, overlappigStartAngle),\n end = Chartist.polarToCartesian(center.x, center.y, radius, endAngle);\n\n var innerStart,\n innerEnd,\n donutSolidRadius;\n\n // Create a new path element for the pie chart. If this isn't a donut chart we should close the path for a correct stroke\n var path = new Chartist.Svg.Path(!options.donut || options.donutSolid)\n .move(end.x, end.y)\n .arc(radius, radius, 0, endAngle - startAngle > 180, 0, start.x, start.y);\n\n // If regular pie chart (no donut) we add a line to the center of the circle for completing the pie\n if(!options.donut) {\n path.line(center.x, center.y);\n } else if (options.donutSolid) {\n donutSolidRadius = radius - donutWidth.value;\n innerStart = Chartist.polarToCartesian(center.x, center.y, donutSolidRadius, startAngle - (index === 0 || hasSingleValInSeries ? 0 : 0.2));\n innerEnd = Chartist.polarToCartesian(center.x, center.y, donutSolidRadius, endAngle);\n path.line(innerStart.x, innerStart.y);\n path.arc(donutSolidRadius, donutSolidRadius, 0, endAngle - startAngle > 180, 1, innerEnd.x, innerEnd.y);\n }\n\n // Create the SVG path\n // If this is a donut chart we add the donut class, otherwise just a regular slice\n var pathClassName = options.classNames.slicePie;\n if (options.donut) {\n pathClassName = options.classNames.sliceDonut;\n if (options.donutSolid) {\n pathClassName = options.classNames.sliceDonutSolid;\n }\n }\n var pathElement = seriesGroups[index].elem('path', {\n d: path.stringify()\n }, pathClassName);\n\n // Adding the pie series value to the path\n pathElement.attr({\n 'ct:value': data.normalized.series[index],\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // If this is a donut, we add the stroke-width as style attribute\n if(options.donut && !options.donutSolid) {\n pathElement._node.style.strokeWidth = donutWidth.value + 'px';\n }\n\n // Fire off draw event\n this.eventEmitter.emit('draw', {\n type: 'slice',\n value: data.normalized.series[index],\n totalDataSum: totalDataSum,\n index: index,\n meta: series.meta,\n series: series,\n group: seriesGroups[index],\n element: pathElement,\n path: path.clone(),\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n // If we need to show labels we need to add the label for this slice now\n if(options.showLabel) {\n var labelPosition;\n if(data.raw.series.length === 1) {\n // If we have only 1 series, we can position the label in the center of the pie\n labelPosition = {\n x: center.x,\n y: center.y\n };\n } else {\n // Position at the labelRadius distance from center and between start and end angle\n labelPosition = Chartist.polarToCartesian(\n center.x,\n center.y,\n labelRadius,\n startAngle + (endAngle - startAngle) / 2\n );\n }\n\n var rawValue;\n if(data.normalized.labels && !Chartist.isFalseyButZero(data.normalized.labels[index])) {\n rawValue = data.normalized.labels[index];\n } else {\n rawValue = data.normalized.series[index];\n }\n\n var interpolatedValue = options.labelInterpolationFnc(rawValue, index);\n\n if(interpolatedValue || interpolatedValue === 0) {\n var labelElement = labelsGroup.elem('text', {\n dx: labelPosition.x,\n dy: labelPosition.y,\n 'text-anchor': determineAnchorPosition(center, labelPosition, options.labelDirection)\n }, options.classNames.label).text('' + interpolatedValue);\n\n // Fire off draw event\n this.eventEmitter.emit('draw', {\n type: 'label',\n index: index,\n group: labelsGroup,\n element: labelElement,\n text: '' + interpolatedValue,\n x: labelPosition.x,\n y: labelPosition.y\n });\n }\n }\n\n // Set next startAngle to current endAngle.\n // (except for last slice)\n startAngle = endAngle;\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n chartRect: chartRect,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new pie chart and returns an object that can be used to redraw the chart.\n *\n * @memberof Chartist.Pie\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object in the pie chart needs to have a series property with a one dimensional data array. The values will be normalized against each other and don't necessarily need to be in percentage. The series property can also be an array of value objects that contain a value property and a className property to override the CSS class name for the series group.\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object with a version and an update method to manually redraw the chart\n *\n * @example\n * // Simple pie chart example with four series\n * new Chartist.Pie('.ct-chart', {\n * series: [10, 2, 4, 3]\n * });\n *\n * @example\n * // Drawing a donut chart\n * new Chartist.Pie('.ct-chart', {\n * series: [10, 2, 4, 3]\n * }, {\n * donut: true\n * });\n *\n * @example\n * // Using donut, startAngle and total to draw a gauge chart\n * new Chartist.Pie('.ct-chart', {\n * series: [20, 10, 30, 40]\n * }, {\n * donut: true,\n * donutWidth: 20,\n * startAngle: 270,\n * total: 200\n * });\n *\n * @example\n * // Drawing a pie chart with padding and labels that are outside the pie\n * new Chartist.Pie('.ct-chart', {\n * series: [20, 10, 30, 40]\n * }, {\n * chartPadding: 30,\n * labelOffset: 50,\n * labelDirection: 'explode'\n * });\n *\n * @example\n * // Overriding the class names for individual series as well as a name and meta data.\n * // The name will be written as ct:series-name attribute and the meta data will be serialized and written\n * // to a ct:meta attribute.\n * new Chartist.Pie('.ct-chart', {\n * series: [{\n * value: 20,\n * name: 'Series 1',\n * className: 'my-custom-class-one',\n * meta: 'Meta One'\n * }, {\n * value: 10,\n * name: 'Series 2',\n * className: 'my-custom-class-two',\n * meta: 'Meta Two'\n * }, {\n * value: 70,\n * name: 'Series 3',\n * className: 'my-custom-class-three',\n * meta: 'Meta Three'\n * }]\n * });\n */\n function Pie(query, data, options, responsiveOptions) {\n Chartist.Pie.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating pie chart type in Chartist namespace\n Chartist.Pie = Chartist.Base.extend({\n constructor: Pie,\n createChart: createChart,\n determineAnchorPosition: determineAnchorPosition\n });\n\n}(this || global, Chartist));\n\nreturn Chartist;\n\n}));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://graph_class/./node_modules/chartist/dist/chartist.js?"); + +/***/ }), + +/***/ "./node_modules/mxgraph/javascript/dist/build.js": +/*!*******************************************************!*\ + !*** ./node_modules/mxgraph/javascript/dist/build.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {\nif (true) {\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n} else {}\n}(this, function () {\nreturn function (opts) {\nfor (var name in opts) { this[name] = opts[name]; }\nvar __mxOutput = {};\n/**\n * Copyright (c) 2006-2017, JGraph Ltd\n * Copyright (c) 2006-2017, Gaudenz Alder\n */\nvar mxClient =\n{\n\t/**\n\t * Class: mxClient\n\t *\n\t * Bootstrapping mechanism for the mxGraph thin client. The production version\n\t * of this file contains all code required to run the mxGraph thin client, as\n\t * well as global constants to identify the browser and operating system in\n\t * use. You may have to load chrome://global/content/contentAreaUtils.js in\n\t * your page to disable certain security restrictions in Mozilla.\n\t * \n\t * Variable: VERSION\n\t *\n\t * Contains the current version of the mxGraph library. The strings that\n\t * communicate versions of mxGraph use the following format.\n\t * \n\t * versionMajor.versionMinor.buildNumber.revisionNumber\n\t * \n\t * Current version is 4.0.4.\n\t */\n\tVERSION: '4.0.4',\n\n\t/**\n\t * Variable: IS_IE\n\t *\n\t * True if the current browser is Internet Explorer 10 or below. Use \n\t * to detect IE 11.\n\t */\n\tIS_IE: navigator.userAgent.indexOf('MSIE') >= 0,\n\n\t/**\n\t * Variable: IS_IE6\n\t *\n\t * True if the current browser is Internet Explorer 6.x.\n\t */\n\tIS_IE6: navigator.userAgent.indexOf('MSIE 6') >= 0,\n\n\t/**\n\t * Variable: IS_IE11\n\t *\n\t * True if the current browser is Internet Explorer 11.x.\n\t */\n\tIS_IE11: !!navigator.userAgent.match(/Trident\\/7\\./),\n\n\t/**\n\t * Variable: IS_EDGE\n\t *\n\t * True if the current browser is Microsoft Edge.\n\t */\n\tIS_EDGE: !!navigator.userAgent.match(/Edge\\//),\n\n\t/**\n\t * Variable: IS_QUIRKS\n\t *\n\t * True if the current browser is Internet Explorer and it is in quirks mode.\n\t */\n\tIS_QUIRKS: navigator.userAgent.indexOf('MSIE') >= 0 && (document.documentMode == null || document.documentMode == 5),\n\n\t/**\n\t * Variable: IS_EM\n\t * \n\t * True if the browser is IE11 in enterprise mode (IE8 standards mode).\n\t */\n\tIS_EM: 'spellcheck' in document.createElement('textarea') && document.documentMode == 8,\n\n\t/**\n\t * Variable: VML_PREFIX\n\t * \n\t * Prefix for VML namespace in node names. Default is 'v'.\n\t */\n\tVML_PREFIX: 'v',\n\n\t/**\n\t * Variable: OFFICE_PREFIX\n\t * \n\t * Prefix for VML office namespace in node names. Default is 'o'.\n\t */\n\tOFFICE_PREFIX: 'o',\n\n\t/**\n\t * Variable: IS_NS\n\t *\n\t * True if the current browser is Netscape (including Firefox).\n\t */\n \tIS_NS: navigator.userAgent.indexOf('Mozilla/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('MSIE') < 0 &&\n \t\tnavigator.userAgent.indexOf('Edge/') < 0,\n\n\t/**\n\t * Variable: IS_OP\n\t *\n\t * True if the current browser is Opera.\n\t */\n \tIS_OP: navigator.userAgent.indexOf('Opera/') >= 0 ||\n \t\tnavigator.userAgent.indexOf('OPR/') >= 0,\n\n\t/**\n\t * Variable: IS_OT\n\t *\n\t * True if -o-transform is available as a CSS style, ie for Opera browsers\n\t * based on a Presto engine with version 2.5 or later.\n\t */\n \tIS_OT: navigator.userAgent.indexOf('Presto/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/2.4.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/2.3.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/2.2.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/2.1.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/2.0.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Presto/1.') < 0,\n \t\n\t/**\n\t * Variable: IS_SF\n\t *\n\t * True if the current browser is Safari.\n\t */\n \tIS_SF: navigator.userAgent.indexOf('AppleWebKit/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('Chrome/') < 0 &&\n \t\tnavigator.userAgent.indexOf('Edge/') < 0,\n \t\n\t/**\n\t * Variable: IS_IOS\n\t * \n\t * Returns true if the user agent is an iPad, iPhone or iPod.\n\t */\n \tIS_IOS: (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false),\n \t\t\n\t/**\n\t * Variable: IS_GC\n\t *\n\t * True if the current browser is Google Chrome.\n\t */\n \tIS_GC: navigator.userAgent.indexOf('Chrome/') >= 0 &&\n\t\tnavigator.userAgent.indexOf('Edge/') < 0,\n\t\n\t/**\n\t * Variable: IS_CHROMEAPP\n\t *\n\t * True if the this is running inside a Chrome App.\n\t */\n \tIS_CHROMEAPP: window.chrome != null && chrome.app != null && chrome.app.runtime != null,\n\n\t/**\n\t * Variable: IS_FF\n\t *\n\t * True if the current browser is Firefox.\n\t */\n \tIS_FF: navigator.userAgent.indexOf('Firefox/') >= 0,\n \t\n\t/**\n\t * Variable: IS_MT\n\t *\n\t * True if -moz-transform is available as a CSS style. This is the case\n\t * for all Firefox-based browsers newer than or equal 3, such as Camino,\n\t * Iceweasel, Seamonkey and Iceape.\n\t */\n \tIS_MT: (navigator.userAgent.indexOf('Firefox/') >= 0 &&\n\t\tnavigator.userAgent.indexOf('Firefox/1.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Firefox/2.') < 0) ||\n \t\t(navigator.userAgent.indexOf('Iceweasel/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('Iceweasel/1.') < 0 &&\n \t\tnavigator.userAgent.indexOf('Iceweasel/2.') < 0) ||\n \t\t(navigator.userAgent.indexOf('SeaMonkey/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('SeaMonkey/1.') < 0) ||\n \t\t(navigator.userAgent.indexOf('Iceape/') >= 0 &&\n \t\tnavigator.userAgent.indexOf('Iceape/1.') < 0),\n\n\t/**\n\t * Variable: IS_VML\n\t *\n\t * True if the browser supports VML.\n\t */\n \tIS_VML: navigator.appName.toUpperCase() == 'MICROSOFT INTERNET EXPLORER',\n\n\t/**\n\t * Variable: IS_SVG\n\t *\n\t * True if the browser supports SVG.\n\t */\n \tIS_SVG: navigator.appName.toUpperCase() != 'MICROSOFT INTERNET EXPLORER',\n\n\t/**\n\t * Variable: NO_FO\n\t *\n\t * True if foreignObject support is not available. This is the case for\n\t * Opera, older SVG-based browsers and all versions of IE.\n\t */\n \tNO_FO: !document.createElementNS || document.createElementNS('http://www.w3.org/2000/svg',\n \t\t'foreignObject') != '[object SVGForeignObjectElement]' || navigator.userAgent.indexOf('Opera/') >= 0,\n\n\t/**\n\t * Variable: IS_WIN\n\t *\n\t * True if the client is a Windows.\n\t */\n \tIS_WIN: navigator.appVersion.indexOf('Win') > 0,\n\n\t/**\n\t * Variable: IS_MAC\n\t *\n\t * True if the client is a Mac.\n\t */\n \tIS_MAC: navigator.appVersion.indexOf('Mac') > 0,\n\t\n\t/**\n\t * Variable: IS_CHROMEOS\n\t *\n\t * True if the client is a Chrome OS.\n\t */\n \tIS_CHROMEOS: /\\bCrOS\\b/.test(navigator.userAgent),\n\n\t/**\n\t * Variable: IS_TOUCH\n\t * \n\t * True if this device supports touchstart/-move/-end events (Apple iOS,\n\t * Android, Chromebook and Chrome Browser on touch-enabled devices).\n\t */\n \tIS_TOUCH: 'ontouchstart' in document.documentElement,\n\n\t/**\n\t * Variable: IS_POINTER\n\t * \n\t * True if this device supports Microsoft pointer events (always false on Macs).\n\t */\n \tIS_POINTER: window.PointerEvent != null && !(navigator.appVersion.indexOf('Mac') > 0),\n\n\t/**\n\t * Variable: IS_LOCAL\n\t *\n\t * True if the documents location does not start with http:// or https://.\n\t */\n \tIS_LOCAL: document.location.href.indexOf('http://') < 0 &&\n \t\t\t document.location.href.indexOf('https://') < 0,\n\n\t/**\n\t * Variable: defaultBundles\n\t * \n\t * Contains the base names of the default bundles if mxLoadResources is false.\n\t */\n \tdefaultBundles: [],\n\n\t/**\n\t * Function: isBrowserSupported\n\t *\n\t * Returns true if the current browser is supported, that is, if\n\t * or is true.\n\t * \n\t * Example:\n\t * \n\t * (code)\n\t * if (!mxClient.isBrowserSupported())\n\t * {\n\t * mxUtils.error('Browser is not supported!', 200, false);\n\t * }\n\t * (end)\n\t */\n\tisBrowserSupported: function()\n\t{\n\t\treturn mxClient.IS_VML || mxClient.IS_SVG;\n\t},\n\n\t/**\n\t * Function: link\n\t *\n\t * Adds a link node to the head of the document. Use this\n\t * to add a stylesheet to the page as follows:\n\t *\n\t * (code)\n\t * mxClient.link('stylesheet', filename);\n\t * (end)\n\t *\n\t * where filename is the (relative) URL of the stylesheet. The charset\n\t * is hardcoded to ISO-8859-1 and the type is text/css.\n\t * \n\t * Parameters:\n\t * \n\t * rel - String that represents the rel attribute of the link node.\n\t * href - String that represents the href attribute of the link node.\n\t * doc - Optional parent document of the link node.\n\t * id - unique id for the link element to check if it already exists\n\t */\n\tlink: function(rel, href, doc, id)\n\t{\n\t\tdoc = doc || document;\n\n\t\t// Workaround for Operation Aborted in IE6 if base tag is used in head\n\t\tif (mxClient.IS_IE6)\n\t\t{\n\t\t\tdoc.write('');\n\t\t}\n\t\telse\n\t\t{\t\n\t\t\tvar link = doc.createElement('link');\n\t\t\t\n\t\t\tlink.setAttribute('rel', rel);\n\t\t\tlink.setAttribute('href', href);\n\t\t\tlink.setAttribute('charset', 'UTF-8');\n\t\t\tlink.setAttribute('type', 'text/css');\n\t\t\t\n\t\t\tif (id)\n\t\t\t{\n\t\t\t\tlink.setAttribute('id', id);\n\t\t\t}\n\t\t\t\n\t\t\tvar head = doc.getElementsByTagName('head')[0];\n\t \t\thead.appendChild(link);\n\t\t}\n\t},\n\t\n\t/**\n\t * Function: loadResources\n\t * \n\t * Helper method to load the default bundles if mxLoadResources is false.\n\t * \n\t * Parameters:\n\t * \n\t * fn - Function to call after all resources have been loaded.\n\t * lan - Optional string to pass to .\n\t */\n\tloadResources: function(fn, lan)\n\t{\n\t\tvar pending = mxClient.defaultBundles.length;\n\t\t\n\t\tfunction callback()\n\t\t{\n\t\t\tif (--pending == 0)\n\t\t\t{\n\t\t\t\tfn();\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < mxClient.defaultBundles.length; i++)\n\t\t{\n\t\t\tmxResources.add(mxClient.defaultBundles[i], lan, callback);\n\t\t}\n\t},\n\t\n\t/**\n\t * Function: include\n\t *\n\t * Dynamically adds a script node to the document header.\n\t * \n\t * In production environments, the includes are resolved in the mxClient.js\n\t * file to reduce the number of requests required for client startup. This\n\t * function should only be used in development environments, but not in\n\t * production systems.\n\t */\n\tinclude: function(src)\n\t{\n\t\tdocument.write('');\n\t}\n};\n\n/**\n * Variable: mxLoadResources\n * \n * Optional global config variable to toggle loading of the two resource files\n * in and . Default is true. NOTE: This is a global variable,\n * not a variable of mxClient. If this is false, you can use \n * with its callback to load the default bundles asynchronously.\n *\n * (code)\n * \n * \n * (end)\n */\nif (typeof(mxLoadResources) == 'undefined')\n{\n\tmxLoadResources = true;\n}\n\n/**\n * Variable: mxForceIncludes\n * \n * Optional global config variable to force loading the JavaScript files in\n * development mode. Default is undefined. NOTE: This is a global variable,\n * not a variable of mxClient.\n *\n * (code)\n * \n * \n * (end)\n */\nif (typeof(mxForceIncludes) == 'undefined')\n{\n\tmxForceIncludes = false;\n}\n\n/**\n * Variable: mxResourceExtension\n * \n * Optional global config variable to specify the extension of resource files.\n * Default is true. NOTE: This is a global variable, not a variable of mxClient.\n *\n * (code)\n * \n * \n * (end)\n */\nif (typeof(mxResourceExtension) == 'undefined')\n{\n\tmxResourceExtension = '.txt';\n}\n\n/**\n * Variable: mxLoadStylesheets\n * \n * Optional global config variable to toggle loading of the CSS files when\n * the library is initialized. Default is true. NOTE: This is a global variable,\n * not a variable of mxClient.\n *\n * (code)\n * \n * \n * (end)\n */\nif (typeof(mxLoadStylesheets) == 'undefined')\n{\n\tmxLoadStylesheets = true;\n}\n\n/**\n * Variable: basePath\n *\n * Basepath for all URLs in the core without trailing slash. Default is '.'.\n * Set mxBasePath prior to loading the mxClient library as follows to override\n * this setting:\n *\n * (code)\n * \n * \n * (end)\n * \n * When using a relative path, the path is relative to the URL of the page that\n * contains the assignment. Trailing slashes are automatically removed.\n */\nif (typeof(mxBasePath) != 'undefined' && mxBasePath.length > 0)\n{\n\t// Adds a trailing slash if required\n\tif (mxBasePath.substring(mxBasePath.length - 1) == '/')\n\t{\n\t\tmxBasePath = mxBasePath.substring(0, mxBasePath.length - 1);\n\t}\n\n\tmxClient.basePath = mxBasePath;\n}\nelse\n{\n\tmxClient.basePath = '.';\n}\n\n/**\n * Variable: imageBasePath\n *\n * Basepath for all images URLs in the core without trailing slash. Default is\n * + '/images'. Set mxImageBasePath prior to loading the\n * mxClient library as follows to override this setting:\n *\n * (code)\n * \n * \n * (end)\n * \n * When using a relative path, the path is relative to the URL of the page that\n * contains the assignment. Trailing slashes are automatically removed.\n */\nif (typeof(mxImageBasePath) != 'undefined' && mxImageBasePath.length > 0)\n{\n\t// Adds a trailing slash if required\n\tif (mxImageBasePath.substring(mxImageBasePath.length - 1) == '/')\n\t{\n\t\tmxImageBasePath = mxImageBasePath.substring(0, mxImageBasePath.length - 1);\n\t}\n\n\tmxClient.imageBasePath = mxImageBasePath;\n}\nelse\n{\n\tmxClient.imageBasePath = mxClient.basePath + '/images';\t\n}\n\n/**\n * Variable: language\n *\n * Defines the language of the client, eg. en for english, de for german etc.\n * The special value 'none' will disable all built-in internationalization and\n * resource loading. See for handling identifiers\n * with and without a dash.\n * \n * Set mxLanguage prior to loading the mxClient library as follows to override\n * this setting:\n *\n * (code)\n * \n * \n * (end)\n * \n * If internationalization is disabled, then the following variables should be\n * overridden to reflect the current language of the system. These variables are\n * cleared when i18n is disabled.\n * , ,\n * , ,\n * , , ,\n * , ,\n * , ,\n * , ,\n * , ,\n * and\n * .\n */\nif (typeof(mxLanguage) != 'undefined' && mxLanguage != null)\n{\n\tmxClient.language = mxLanguage;\n}\nelse\n{\n\tmxClient.language = (mxClient.IS_IE) ? navigator.userLanguage : navigator.language;\n}\n\n/**\n * Variable: defaultLanguage\n * \n * Defines the default language which is used in the common resource files. Any\n * resources for this language will only load the common resource file, but not\n * the language-specific resource file. Default is 'en'.\n * \n * Set mxDefaultLanguage prior to loading the mxClient library as follows to override\n * this setting:\n *\n * (code)\n * \n * \n * (end)\n */\nif (typeof(mxDefaultLanguage) != 'undefined' && mxDefaultLanguage != null)\n{\n\tmxClient.defaultLanguage = mxDefaultLanguage;\n}\nelse\n{\n\tmxClient.defaultLanguage = 'en';\n}\n\n// Adds all required stylesheets and namespaces\nif (mxLoadStylesheets)\n{\n\tmxClient.link('stylesheet', mxClient.basePath + '/css/common.css');\n}\n\n/**\n * Variable: languages\n *\n * Defines the optional array of all supported language extensions. The default\n * language does not have to be part of this list. See\n * .\n *\n * (code)\n * \n * \n * (end)\n * \n * This is used to avoid unnecessary requests to language files, ie. if a 404\n * will be returned.\n */\nif (typeof(mxLanguages) != 'undefined' && mxLanguages != null)\n{\n\tmxClient.languages = mxLanguages;\n}\n\n// Adds required namespaces, stylesheets and memory handling for older IE browsers\nif (mxClient.IS_VML)\n{\n\tif (mxClient.IS_SVG)\n\t{\n\t\tmxClient.IS_VML = false;\n\t}\n\telse\n\t{\n\t\t// Enables support for IE8 standards mode. Note that this requires all attributes for VML\n\t\t// elements to be set using direct notation, ie. node.attr = value. The use of setAttribute\n\t\t// is not possible.\n\t\tif (document.documentMode == 8)\n\t\t{\n\t\t\tdocument.namespaces.add(mxClient.VML_PREFIX, 'urn:schemas-microsoft-com:vml', '#default#VML');\n\t\t\tdocument.namespaces.add(mxClient.OFFICE_PREFIX, 'urn:schemas-microsoft-com:office:office', '#default#VML');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdocument.namespaces.add(mxClient.VML_PREFIX, 'urn:schemas-microsoft-com:vml');\n\t\t\tdocument.namespaces.add(mxClient.OFFICE_PREFIX, 'urn:schemas-microsoft-com:office:office');\n\t\t}\n\n\t\t// Workaround for limited number of stylesheets in IE (does not work in standards mode)\n\t\tif (mxClient.IS_QUIRKS && document.styleSheets.length >= 30)\n\t\t{\n\t\t\t(function()\n\t\t\t{\n\t\t\t\tvar node = document.createElement('style');\n\t\t\t\tnode.type = 'text/css';\n\t\t\t\tnode.styleSheet.cssText = mxClient.VML_PREFIX + '\\\\:*{behavior:url(#default#VML)}' +\n\t\t \tmxClient.OFFICE_PREFIX + '\\\\:*{behavior:url(#default#VML)}';\n\t\t document.getElementsByTagName('head')[0].appendChild(node);\n\t\t\t})();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdocument.createStyleSheet().cssText = mxClient.VML_PREFIX + '\\\\:*{behavior:url(#default#VML)}' +\n\t\t \tmxClient.OFFICE_PREFIX + '\\\\:*{behavior:url(#default#VML)}';\n\t\t}\n\t \n\t if (mxLoadStylesheets)\n\t {\n\t \tmxClient.link('stylesheet', mxClient.basePath + '/css/explorer.css');\n\t }\n\t}\n}\n\n// PREPROCESSOR-REMOVE-START\n// If script is loaded via CommonJS, do not write + + + + + + + + + + + + + + + + + + + + + diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/arrow.gif b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/arrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..246478a864f812d93d4cd0e0d0ad1c8e2d09c825 GIT binary patch literal 66 zcmZ?wbhEHbWM|-JSjfZx1poj4Utv=LM2bII7`Ygj7<53QAbAERVV@R>f}L*~a`L;Z PKCZl?^}@uHk--`OML81Y literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/cross.gif b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/cross.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ee9c7ac517bee40b78aea03afa809631f0b69fa GIT binary patch literal 83 zcmZ?wbhEHb3k<8jPQJQ=fuv5eVo^ZVob{r>y?yxzz6n|{I3RuQNUl#q~6w6{Y!i_W*AbzM$M zv?qg)_ee+pt?W@2m!pR{B_p?CM-{APX1sq0k!v%Dx?=2xC6f&jlZz_Dn#dT_Y>InI z6zGP*0qIZBM5F|EZW=wONLxZCI;oxx8efxF<=55NtkzwRuA@S|$OSZUS~0 zbSDgzxPwEAll?BgdT}XWOAZOcMD`pUO+CGfB}rVxe|WEK0gw_Tz-cDmNG4L+O1BG& zsF@TK6o0+-x8xsR`X2n=3~i7e()sQ8nbs7jD=(px9H|qDd%c<@)UuI(EKt5ngFHjS zh|qTPjol+wD*VrOrP2AHgU&lZ7-h-S-Ry`OC^$7+KSF!aG?mu&pn3IaR(#Gf!EQP! zqeS?o6nx*@RWD5RUuQ+fDEvFrgK2PwV_AaZi_nFD)fY6UXpc#9)D{%+=WH ztBRU(0-f)NSeD3_)#+p<)n=t7Y1EDi=wXXR?Z#vSuGOPoT|XQYUp$jeW`dW9Q1kjz#P#FKJ!aH3zn{59p6;=yx%D9tmqxQwiPk>^XJ#hnQPa&UStGb;zpzVAA13RQ2C{(WQtPtlHN+xES>Qyk?T{p)3L zKdG1CZ}noWtWb#qCxunq6cmKZkSp8AJFQzC5VAmliNf$>rVM$2Q1P|$>9btrJLz|{ zSEp42us*S@mNJKs{J(s20WSGheRHFfo!iS!%VR(!BLtg%5&G73YBwnQiPTC@yb!(mV=4^=hMGc{L0KQ&GaYT41_sNl0+=?tU1#T8=w<5Hp>qu7gwyz zwLL3bXQ5-%%-%`x@Pre{8xpv$>VeI=t#(~rx$b&PV(x))i0v`~VbW)#SQBCXq2{3C z4AjaS!bRt4Q?8=ly@6M=+29nh0d(fs{K~%zNbr`+-cFUZNG!0O= ztBy>FTi+F8DTC6pr<-QLfNg0`0~OrWJ{oz=)6L|D%a{=NsYO5|-NfUp7Y1+9*lFRJ z5eJQ!*^GZ@s9{T9oBa_K8|h+p-X6RjZg2E_MT>zCjV(~r*6%7Sij>(`t)O^DQ?5kw z*5IZ}6Yl9oCX2J~K~(ouR!YtW!n|s+M;#USu3QS5lI+Z7T#@>eP@xM!TPE-?u=Htd z49Zqbfk!YI?d;mMp}J=|f0P<;(10YFMR-D=9)aeZ@G{Ezv(9sw5v++8tRHhq6NB;- zH2vx(PU1qD_8+#|>&xHm)UbkK4M?w_%wFEr_E+5T%vx9E!xmutZiFRIq28_H5VovP z_lMzL{cKdx%a2HTauX~RSRYm)64<0F_{Nbco!|_?rpPw_J}NA-umuds1iE=$J7Q`F zd!s(MKF>pom>+ITdp;<{lMnDf4uN>z#SiECQt#jM)8rIa7;kozw6%A3yMEz5P%>>m zP^aP@mh`^eyybD<|3=Fv?u;ybH7RFB;|YJx_d1J;6wJ4KGeT+E44^QNm!_X5b@{by z^qAAkM5!d@0aKxHZ8pbuQ7dm3CvtBsZV5_Hgs2II9V+0N-jO z<7fC^Ce~l|mVr*^!BrfL2MdrqJ@FI)L|?pK(7K}a393z0of$38A-e)82RKKU@XM+GiX?Y$A|=p{IK)2ld$R?8M=wUPAOfgq5a^ zjXY_~fw7l{P`h&ljSQ;F(xYQzv?H8HuM}KNO-j0-M-5?t<^wZ3n@*m2ebd~#%i(;jkY@`es^)?`9scc%tlnlUq+;7p=^6Tm`D0W}i)}TQA0bY8fVJ@Ykj4dfDYvd{ zjmUxdb}M2@x@URp28`;9B~+Ps7g`6cP9NO%S~Zm#UzG*YLiaT_OPTB(e#8W+bIJtG zHSn{{R7Ah+{aGq1u=3L$M3#B`zC!tx`wk~q^gwlhT41Cwgft#({kId%-IMMflvHxU{(d)BqpTjk&WEXSBpAD;%Rb zpPV1>?v#`9OCL@2@8?GllEy7V6uP>x>Ajs}Hm)}I8R(EtQ*KD5B(Y*OBNM)%$`!A2 zv+I7!11vu%pSE=1PZ>w~XKP*NFI`|o?X0yNT(?y(-ta%=LQ4K;p%&07YKL*_5P7rr zR9kKx+y`tt(7_svRuxC8;j)miAfSX?M|9Ladf4zeO?n&EMM2JE0Q6A5#?^TU3!~Vl zs4+YvJ!u|5x*cR;3M`2ol(60+K1QomP+|c!3SOBpo`2I4Al%NaA;URpKsgTQ`um*) z$$0jzaM_tG3$^<%+IquqoA<(IXZhE{tm>@gJUP5p{A3J6+&@8B1Ab`k#pS#XQGLsb z!I1N@6}*sK$&^j&E9UfVBsE3Cy09vRRbP@j2V8RUyS}$EzQISB8Wob;L&@gXJ0-qG zN5LYq5L0xS_C~Y5ieq)J$^evnrYxC3DF5rA^JvXg$)Z@TW4d~?c5Fm1;n8+WV9n3A zREIvTfx}B&q+1AP^S|orTG__8w)t@5vGN(1#THk!CKLHp`#)!zH7z`x^Y2abdkC%N zVpo9#I|*N>2gAEStK;2nH>2-d8UgV}Ce62}O-VSnpIx1GP7~)f>xpwmI^Gq>t9ccs zdo47kYWW=g+WUVuK=)o4jL>*SZet8NcRq)42(#4#7K&?jfMC8bH5#uho9aCC9Sc8| z&eN*3Xr9L%twp11piU_UMd7cxt!d0dy(tNJ+3&*_^j;1X9gV|DYj@pg2={0^wT+T5 z?Xw4UzW(|>jIRGsKJaB+PUaLZQP!rJ26J1VGh%$e>x-WKf|{S*YSJH@EETJjsGMoT zZ6{6eiS3#V@YL5Z@Hgy9@bEpRGI;>Z_}tQa8IhV#m14ak_?Dm8Rb(N8c>8!Bbg8nV z@Fnflx2C1NJLL_>Z|O7~CV@n+T&C@vpgqh~t(`X)qaj=ypFdgdNZsNlmAwU7;S#iO z`J>RxSlI>*l1c;-I(BztG~ID9hmZHLX}mTDprkNW`2*nM`NCrG^K)aoYd*>U5=8}T zz<8Trh(5#1==-ntBY@u7k%!+X7o>B<{Wf^*@YzUESz$bKtAufemd7|St0063A+%|% YzFqsNg>|5V=vOIWZ|#VBZRvIQe;Bk#LI3~& literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/hv.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/jscolor/hv.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5e01f8bcecc4cf835e8eeeaa43ef2c06789022 GIT binary patch literal 2865 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 E0LKozl>h($ literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/open.html b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/open.html new file mode 100644 index 0000000000000..12bb1839c3bc0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/open.html @@ -0,0 +1,222 @@ + + + + Open Diagram + + + + + +
+ + + + + + + + + + + +
+ +
+
+ + + +
+
+ + diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor.txt new file mode 100644 index 0000000000000..53e871261e23d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor.txt @@ -0,0 +1,5 @@ +askZoom=Enter zoom (%) +properties=Properties +outline=Outline +tasks=Tasks +help=Help diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_de.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_de.txt new file mode 100644 index 0000000000000..542f387c2fa7c --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_de.txt @@ -0,0 +1,5 @@ +askZoom=Zoom eingeben (%) +properties=Eigenschaften +outline=Uebersicht +tasks=Aufgaben +help=Hilfe diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_zh.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_zh.txt new file mode 100644 index 0000000000000..b37848b6eb1fe --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/editor_zh.txt @@ -0,0 +1,5 @@ +askZoom=进入缩放(%25) +properties=属性 +outline=轮廓 +tasks=任务 +help=帮助 \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph.txt new file mode 100644 index 0000000000000..baf61f88697a4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph.txt @@ -0,0 +1,11 @@ +alreadyConnected=Nodes already connected +containsValidationErrors=Contains validation errors +updatingDocument=Updating Document. Please wait... +updatingSelection=Updating Selection. Please wait... +collapse-expand=Collapse/Expand +doubleClickOrientation=Doubleclick to change orientation +close=Close +error=Error +done=Done +cancel=Cancel +ok=OK diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_de.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_de.txt new file mode 100644 index 0000000000000..299993457893e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_de.txt @@ -0,0 +1,11 @@ +alreadyConnected=Knoten schon verbunden +containsValidationErrors=Enthält Validierungsfehler +updatingDocument=Aktualisiere Dokument. Bitte warten... +updatingSelection=Aktualisiere Markierung. Bitte warten... +collapse-expand=Einklappen/Ausklappen +doubleClickOrientation=Doppelklicken um Orientierung zu ändern +close=Schliessen +error=Fehler +done=Fertig +cancel=Abbrechen +ok=OK diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_zh.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_zh.txt new file mode 100644 index 0000000000000..4958593ffe50c --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/graph_zh.txt @@ -0,0 +1,11 @@ +alreadyConnected=节点已经连接 +containsValidationErrors=包含效验错误 +updatingDocument=更新文档。请等候...... +updatingSelection=更新所选项。请等候...... +collapse-expand=折叠/展开 +doubleClickOrientation=双击以改变方向 +close=关闭 +error=错误 +done=完成 +cancel=取消 +ok=确定 \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor.txt new file mode 100644 index 0000000000000..f61eb40366d8a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor.txt @@ -0,0 +1,324 @@ +# Resources from graph.properties +alreadyConnected=Nodes already connected +cancel=Cancel +close=Close +collapse-expand=Collapse/Expand +containsValidationErrors=Contains validation errors +done=Done +doubleClickOrientation=Doubleclick to Change Orientation +error=Error +errorSavingFile=Error saving file +ok=OK +updatingDocument=Updating Document. Please wait... +updatingSelection=Updating Selection. Please wait... +# Custom resources +about=About +actualSize=Actual Size +add=Add +addLayer=Add Layer +addProperty=Add Property +addToExistingDrawing=Add to Existing Drawing +addWaypoint=Add Waypoint +advanced=Advanced +align=Align +alignment=Alignment +allChangesLost=All changes will be lost! +angle=Angle +apply=Apply +arc=Arc +arrange=Arrange +arrow=Arrow +arrows=Arrows +automatic=Automatic +autosave=Autosave +autosize=Autosize +back=Back +background=Background +backgroundColor=Background Color +backgroundImage=Background Image +basic=Basic +block=Block +blockquote=Blockquote +bold=Bold +border=Border +borderWidth=Borderwidth +borderColor=Border Color +bottom=Bottom +bottomAlign=Bottom Align +bottomLeft=Bottom Left +bottomRight=Bottom Right +bulletedList=Bulleted List +cannotOpenFile=Cannot open file +center=Center +change=Change +changeOrientation=Change Orientation +circle=Circle +classic=Classic +clearDefaultStyle=Clear Default Style +clearWaypoints=Clear Waypoints +clipart=Clipart +collapse=Collapse +collapseExpand=Collapse/Expand +collapsible=Collapsible +comic=Comic +connect=Connect +connection=Connection +connectionPoints=Connection points +connectionArrows=Connection arrows +constrainProportions=Constrain Proportions +copy=Copy +copyConnect=Copy on Connect +copySize=Copy Size +create=Create +curved=Curved +custom=Custom +cut=Cut +dashed=Dashed +decreaseIndent=Decrease Indent +default=Default +delete=Delete +deleteColumn=Delete Column +deleteRow=Delete Row +diagram=Diagram +diamond=Diamond +diamondThin=Diamond (thin) +direction=Direction +distribute=Distribute +divider=Divider +documentProperties=Document Properties +dotted=Dotted +dpi=DPI +drawing=Drawing{1} +drawingEmpty=Drawing is empty +drawingTooLarge=Drawing is too large +duplicate=Duplicate +duplicateIt=Duplicate {1} +east=East +edit=Edit +editData=Edit Data +editDiagram=Edit Diagram +editImage=Edit Image +editLink=Edit Link +editStyle=Edit Style +editTooltip=Edit Tooltip +enterGroup=Enter Group +enterValue=Enter Value +enterName=Enter Name +enterPropertyName=Enter Property Name +entityRelation=Entity Relation +exitGroup=Exit Group +expand=Expand +export=Export +extras=Extras +file=File +fileNotFound=File not found +filename=Filename +fill=Fill +fillColor=Fill Color +fitPage=One Page +fitPageWidth=Page Width +fitTwoPages=Two Pages +fitWindow=Fit Window +flip=Flip +flipH=Flip Horizontal +flipV=Flip Vertical +font=Font +fontFamily=Font Family +fontColor=Font Color +fontSize=Font Size +format=Format +formatPanel=Format Panel +general=Allgemein +formatPdf=PDF +formatPng=PNG +formatGif=GIF +formatJpg=JPEG +formatSvg=SVG +formatXml=XML +formatted=Formatted +formattedText=Formatted Text +gap=Gap +glass=Glass +general=General +global=Global +gradient=Gradient +gradientColor=Color +grid=Grid +gridSize=Grid Size +group=Group +guides=Guides +heading=Heading +height=Height +help=Help +hide=Hide +hideIt=Hide {1} +hidden=Hidden +home=Home +horizontal=Horizontal +horizontalFlow=Horizontal Flow +horizontalTree=Horizontal Tree +html=HTML +id=ID +image=Image +images=Images +import=Import +increaseIndent=Increase Indent +insert=Insert +insertColumnBefore=Insert Column Left +insertColumnAfter=Insert Column Right +insertHorizontalRule=Insert Horizontal Rule +insertImage=Insert Image +insertLink=Insert Link +insertRowBefore=Insert Row Above +insertRowAfter=Insert Row Below +invalidInput=Invalid input +invalidName=Invalid name +invalidOrMissingFile=Invalid or missing file +isometric=Isometric +italic=Italic +layers=Layers +landscape=Landscape +laneColor=Lanecolor +layout=Layout +left=Left +leftAlign=Left Align +leftToRight=Left to Right +line=Line +link=Link +lineJumps=Line jumps +lineend=Line End +lineheight=Line Height +linestart=Line Start +linewidth=Linewidth +loading=Loading +lockUnlock=Lock/Unlock +manual=Manual +middle=Middle +misc=Misc +more=More +moreResults=More Results +move=Move +moveSelectionTo=Move Selection to {1} +navigation=Navigation +new=New +noColor=No Color +noFiles=No files +noMoreResults=No more results +none=None +noResultsFor=No results for '{1}' +normal=Normal +north=North +numberedList=Numbered List +opacity=Opacity +open=Open +openArrow=Open Arrow +openFile=Open File +openLink=Open Link +openSupported=Supported format is .XML files saved from this software +openInNewWindow=Open in New Window +openInThisWindow=Open in this Window +options=Options +organic=Organic +orthogonal=Orthogonal +outline=Outline +oval=Oval +pages=Pages +pageView=Page View +pageScale=Page Scale +pageSetup=Page Setup +panTooltip=Space+Drag to Scroll +paperSize=Paper Size +paste=Paste +pasteHere=Paste Here +pasteSize=Paste Size +pattern=Pattern +perimeter=Perimeter +placeholders=Placeholders +plusTooltip=Click to connect and clone (ctrl+click to clone, shift+click to connect). Drag to connect (ctrl+drag to clone). +portrait=Portrait +position=Position +posterPrint=Poster Print +preview=Preview +print=Print +radialTree=Radial Tree +redo=Redo +removeFormat=Clear Formatting +removeFromGroup=Remove from Group +removeIt=Remove {1} +removeWaypoint=Remove Waypoint +rename=Rename +renameIt=Rename {1} +replace=Replace +replaceIt={1} already exists. Do you want to replace it? +replaceExistingDrawing=Replace existing drawing +reset=Reset +resetView=Reset View +reverse=Reverse +right=Right +rightAlign=Right Align +rightToLeft=Right to Left +rotate=Rotate +rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees +rotation=Rotation +rounded=Rounded +save=Save +saveAs=Save as +saved=Saved +scrollbars=Scrollbars +search=Search +searchShapes=Search Shapes +selectAll=Select All +selectEdges=Select Edges +selectFont=Select a Font +selectNone=Select None +selectVertices=Select Vertices +setAsDefaultStyle=Set as Default Style +shadow=Shadow +shape=Shape +sharp=Sharp +sidebarTooltip=Click to expand. Drag and drop shapes into the diagram. Shift+click to change selection. Alt+click to insert and connect. +simple=Simple +simpleArrow=Simple Arrow +size=Size +solid=Solid +sourceSpacing=Source Spacing +south=South +spacing=Spacing +straight=Straight +strikethrough=Strikethrough +strokeColor=Line Color +style=Style +subscript=Subscript +superscript=Superscript +table=Table +targetSpacing=Target Spacing +text=Text +textAlignment=Text Alignment +textOpacity=Text Opacity +toBack=To Back +toFront=To Front +tooltips=Tooltips +top=Top +topAlign=Top Align +topLeft=Top Left +topRight=Top Right +transparent=Transparent +turn=Rotate shape only by 90° +uml=UML +underline=Underline +undo=Undo +ungroup=Ungroup +url=URL +untitledLayer=Untitled Layer +vertical=Vertical +verticalFlow=Vertical Flow +verticalTree=Vertical Tree +view=View +waypoints=Waypoints +west=West +width=Width +wordWrap=Word Wrap +writingDirection=Writing Direction +zoom=Zoom +zoomIn=Zoom In +zoomOut=Zoom Out diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor_de.txt b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor_de.txt new file mode 100644 index 0000000000000..23f0dcd12e6e4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/grapheditor_de.txt @@ -0,0 +1,324 @@ +# Resources from graph.properties +alreadyConnected=Knoten schon verbunden +cancel=Abbrechen +close=Schliessen +collapse-expand=Einklappen/Ausklappen +containsValidationErrors=Enthält Validierungsfehler +done=Fertig +doubleClickOrientation=Doppelklicken um Orientierung zu ändern +error=Fehler +errorSavingFile=Fehler beim Speichern der Datei +ok=OK +updatingDocument=Aktualisiere Dokument. Bitte warten... +updatingSelection=Aktualisiere Markierung. Bitte warten... +# Custom resources +about=Über +actualSize=Tatsächliche Grösse +add=Hinzufügen +addLayer=Ebene einfügen +addProperty=Eigenschaft einfügen +addToExistingDrawing=In vorhandene Zeichnung einfügen +addWaypoint=Wegpunkt einfügen +advanced=Erweitert +align=Ausrichten +alignment=Ausrichtung +allChangesLost=Alle Änderungen gehen verloren! +angle=Winkel +apply=Anwenden +arc=Bogen +arrange=Anordnen +arrow=Pfeil +arrows=Pfeile +automatic=Automatisch +autosave=Automatisch Speichern +autosize=Grösse anpassen +back=Zurück +background=Hintergrund +backgroundColor=Hintergrundfarbe +backgroundImage=Hintergrundbild +basic=Einfach +block=Block +blockquote=Zitat +bold=Fett +border=Rahmen +borderWidth=Rahmenbreite +borderColor=Rahmenfarbe +bottom=Unten +bottomAlign=Unten +bottomLeft=Unten links +bottomRight=Unten rechts +bulletedList=Aufzählungsliste +cannotOpenFile=Kann Datei nicht öffnen +center=Zentriert +change=Ändern +changeOrientation=Orientierung ändern +circle=Kreis +classic=Klassisch +clearDefaultStyle=Standardstyle löschen +clearWaypoints=Wegpunkte löschen +clipart=Clipart +collapse=Einklappen +collapseExpand=Ein-/Ausklappen +collapsible=Einklappbar +comic=Comic +connect=Verbinden +connection=Verbindung +connectionPoints=Verbindungspunkte +connectionArrows=Verbindungspfeile +constrainProportions=Proportionen beibehalten +copy=Kopieren +copyConnect=Beim Verbinden kopieren +copySize=Grösse kopieren +create=Erstellen +curved=Gebogen +custom=Benutzerdefiniert +cut=Ausschneiden +dashed=Gestrichelt +decreaseIndent=Einzug verringern +default=Vorgegeben +delete=Löschen +deleteColumn=Spalte löschen +deleteRow=Zeile löschen +diagram=Diagramm +diamond=Diamant +diamondThin=Diamant (Schmal) +direction=Richtung +distribute=Verteilen +divider=Treelinie +documentProperties=Dokumenteigenschaften +dotted=Punktiert +dpi=DPI +drawing=Zeichnung{1} +drawingEmpty=Zeichnung ist leer +drawingTooLarge=Zeichnung ist zu gross +duplicate=Duplizieren +duplicateIt={1} duplizieren +east=Ost +edit=Bearbeiten +editData=Metadaten bearbeiten +editDiagram=Diagramm bearbeiten +editImage=Bild bearbeiten +editLink=Link bearbeiten +editStyle=Style bearbeiten +editTooltip=Tooltip bearbeiten +enterGroup=In Gruppe hinein +enterValue=Wert eingeben +enterName=Namen eingeben +enterPropertyName=Eigenschaftsname eingeben +entityRelation=Entity Relation +exitGroup=Aus Gruppe heraus +expand=Ausklappen +export=Exportieren +extras=Extras +file=Datei +fileNotFound=Datei nicht gefunden +filename=Dateiname +fill=Füllen +fillColor=Füllfarbe +fitPage=Ganze Seite +fitPageWidth=Seitenbreite +fitTwoPages=Zwei Seiten +fitWindow=An Fenstergrösse anpassen +flip=Spiegeln +flipH=Horizontal Spiegeln +flipV=Vertikal Spiegeln +font=Schrift +fontFamily=Schriftart +fontColor=Schriftfarbe +fontSize=Schriftgrösse +format=Format +formatPanel=Bereich "Formatieren" +general=Allgemein +formatPdf=PDF +formatPng=PNG +formatGif=GIF +formatJpg=JPEG +formatSvg=SVG +formatXml=XML +formatted=Formatiert +formattedText=Formatierter Text +gap=Gap +glass=Glas +general=Allgemein +global=Global +gradient=Verlauf +gradientColor=Farbe +grid=Gitternetz +gridSize=Gitternetzgrösse +group=Gruppieren +guides=Führungslinien +heading=Überschrift +height=Höhe +help=Hilfe +hide=Verstecken +hideIt={1} verstecken +hidden=Versteckt +home=Ursprung +horizontal=Horizontal +horizontalFlow=Horizontaler Fluss +horizontalTree=Horizontaler Baum +html=HTML +id=ID +image=Bild +images=Bilder +import=Importieren +increaseIndent=Einzug vergrössern +insert=Einfügen +insertColumnBefore=Spalte links einfügen +insertColumnAfter=Spalte rechts einfügen +insertHorizontalRule=Horizontale Linie einfügen +insertImage=Bild einfügen +insertLink=Link einfügen +insertRowBefore=Zeile oberhalb einfügen +insertRowAfter=Zeile unterhalb einfügen +invalidInput=Ungültige Eingabe +invalidName=Ungültiger Name +invalidOrMissingFile=Ungültige oder fehlende Datei +isometric=Isometrisch +italic=Kursiv +layers=Ebenen +landscape=Querformat +laneColor=Lane-Farbe +layout=Layout +left=Links +leftAlign=Links +leftToRight=Von links nach rechts +line=Linie +lineJumps=Liniensprünge +link=Link +lineend=Linienende +lineheight=Zeilenhöhe +linestart=Linienanfang +linewidth=Linienbreite +loading=Wird geladen +lockUnlock=Sperren/Entsperren +manual=Manuell +middle=Mitte +misc=Verschiedenes +more=Mehr +moreResults=Mehr Resultate +move=Verschieben +moveSelectionTo=Markierung in {1} einfügen +navigation=Navigation +new=Neu +noColor=Keine Farbe +noFiles=Keine Dateien +noMoreResults=Keine Weiteren Resultate +none=Ohne +noResultsFor=Keine Resultate für '{1}' +normal=Normal +north=Nord +numberedList=Nummerierte Liste +opacity=Deckkraft +open=Öffnen +openArrow=Offen +openFile=Datei öffnen +openLink=Link öffnen +openSupported=Unterstützte Formate sind mit dieser Anwendung erstellte .XML Dateien +openInNewWindow=In neuem Fenster öffnen +openInThisWindow=In diesem Fenster öffnen +options=Optionen +organic=Organisch +orthogonal=Orthogonal +outline=Übersicht +oval=Oval +pages=Seiten +pageView=Seitenansicht +pageScale=Seitenskalierung +pageSetup=Seite einrichten +panTooltip=Leertaste+Ziehen um zu scrollen +paperSize=Papiergrösse +paste=Einfügen +pasteHere=Hier einfügen +pasteSize=Grösse einfügen +pattern=Muster +perimeter=Umfang +placeholders=Platzhalter +plusTooltip=Klicken zum Verbinden und Klonen (Ctrl-Taste gedrückt halten zum Klonen, Shift+Klick zum Verbinden). Ziehen zum verbinden (Ctrl-Taste gedrückt halten zum Klonen). +portrait=Hochformat +position=Position +posterPrint=Posterdruck +preview=Vorschau +print=Drucken +radialTree=Radialer Baum +redo=Wiederherstellen +removeFormat=Formatierung entfernen +removeFromGroup=Aus Gruppe entfernen +removeIt={1} entfernen +removeWaypoint=Wegpunkt entfernen +rename=Umbenennen +renameIt={1} umbenennen +replace=Ersetzen +replaceIt={1} existiert bereits. Soll die Datei überschrieben werden? +replaceExistingDrawing=Vorhandene Zeichnung ersetzen +reset=Zurücksetzen +resetView=Ansicht zurücksetzen +reverse=Umdrehen +right=Rechts +rightAlign=Rechts +rightToLeft=Von rechts nach links +rotate=Rotieren +rotateTooltip=Klicken und ziehen um zu rotieren, klicken um nur Form um 90 Grad zu drehen +rotation=Rotation +rounded=Abgerundet +save=Speichern +saveAs=Speichern unter +saved=Gespeichert +scrollbars=Scrollbars +search=Suchen +searchShapes=Formen suchen +selectAll=Alles markieren +selectEdges=Kanten markieren +selectFont=Schriftart wählen +selectNone=Markierung aufheben +selectVertices=Knoten markieren +setAsDefaultStyle=Als Standardstyle festlegen +shadow=Schatten +shape=Shape +sharp=Eckig +sidebarTooltip=Klicken um zu erweitern. Objekte per Drag & Drop ins Diagramm einfügen. Shift+Klick um die Markierung zu ändern. Alt+Klick zum Einfügen und Verbinden. +simple=Einfach +simpleArrow=Einfacher Pfeil +size=Grösse +solid=Durchgehend +sourceSpacing=Anfangsabstand +south=Süd +spacing=Abstand +straight=Gerade +strikethrough=Durchgestrichen +strokeColor=Linienfarbe +style=Style +subscript=Tiefgestellt +superscript=Hochgestellt +table=Tabelle +targetSpacing=Endabstand +text=Text +textAlignment=Text Ausrichtung +textOpacity=Text Deckkraft +toBack=Nach hinten +toFront=Nach vorne +tooltips=Tooltips +top=Oben +topLeft=Oben links +topRight=Oben rechts +topAlign=Oben +transparent=Transparent +turn=Nur Form um 90° drehen +uml=UML +underline=Unterstrichen +undo=Rückgängig +ungroup=Gruppierung aufheben +untitledLayer=Unbenannte Ebene +url=URL +vertical=Vertikal +verticalFlow=Vertikaler Fluss +verticalTree=Vertikaler Baum +view=Ansicht +waypoints=Wegpunkte +west=West +width=Breite +wordWrap=Autom. Zeilenumbruch +writingDirection=Textrichtung +zoom=Zoom +zoomIn=Hineinzoomen +zoomOut=Herauszoomen diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help.html b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help.html new file mode 100644 index 0000000000000..4d2ecbcbfd575 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help.html @@ -0,0 +1,20 @@ + + + + Graph Editor Help + + + + +

Graph Editor Help

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed + diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

+ + diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help_de.html b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help_de.html new file mode 100644 index 0000000000000..165f552cd9d5f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/resources/help_de.html @@ -0,0 +1,20 @@ + + + + Graph Editor Hilfe + + + + +

Graph Editor Hilfe

+

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy + eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam + voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet + clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit + amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam + nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed + diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. + Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor + sit amet.

+ + diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/android/android.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/android/android.xml new file mode 100644 index 0000000000000..7293db8db42f0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/android/android.xml @@ -0,0 +1,1905 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/arrows.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/arrows.xml new file mode 100644 index 0000000000000..57483be2bf3fe --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/arrows.xml @@ -0,0 +1,846 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/atlassian.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/atlassian.xml new file mode 100644 index 0000000000000..630d729957989 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/atlassian.xml @@ -0,0 +1,713 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/compute.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/compute.xml new file mode 100644 index 0000000000000..e85c1e5fe6eda --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/compute.xml @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/content_delivery.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/content_delivery.xml new file mode 100644 index 0000000000000..93ad07cbfa34b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/content_delivery.xml @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/database.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/database.xml new file mode 100644 index 0000000000000..ab71f9518c11e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/database.xml @@ -0,0 +1,1358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/deployment_management.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/deployment_management.xml new file mode 100644 index 0000000000000..3709e5cf5f248 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/deployment_management.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/groups.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/groups.xml new file mode 100644 index 0000000000000..3ecf05193ae07 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/groups.xml @@ -0,0 +1,1798 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/messaging.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/messaging.xml new file mode 100644 index 0000000000000..39a7c31e30685 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/messaging.xml @@ -0,0 +1,670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/misc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/misc.xml new file mode 100644 index 0000000000000..af463eb17ec2b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/misc.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/networking.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/networking.xml new file mode 100644 index 0000000000000..622e6e9cb1d76 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/networking.xml @@ -0,0 +1,872 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/non_service_specific.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/non_service_specific.xml new file mode 100644 index 0000000000000..6b34676e3e953 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/non_service_specific.xml @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/on_demand_workforce.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/on_demand_workforce.xml new file mode 100644 index 0000000000000..87b8722bad835 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/on_demand_workforce.xml @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/storage.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/storage.xml new file mode 100644 index 0000000000000..b51465e8082c3 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws/storage.xml @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/administration_and_security.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/administration_and_security.xml new file mode 100644 index 0000000000000..2f4ca8f640d32 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/administration_and_security.xml @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/analytics.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/analytics.xml new file mode 100644 index 0000000000000..6deb0ce718679 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/analytics.xml @@ -0,0 +1,1318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/app_services.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/app_services.xml new file mode 100644 index 0000000000000..55c87fa0559be --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/app_services.xml @@ -0,0 +1,2362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/compute_and_networking.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/compute_and_networking.xml new file mode 100644 index 0000000000000..0607b63bba9a2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/compute_and_networking.xml @@ -0,0 +1,6215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/database.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/database.xml new file mode 100644 index 0000000000000..df1f8bdfc4a0e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/database.xml @@ -0,0 +1,6832 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/deployment_and_management.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/deployment_and_management.xml new file mode 100644 index 0000000000000..659d1c1802688 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/deployment_and_management.xml @@ -0,0 +1,2785 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/developer_tools.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/developer_tools.xml new file mode 100644 index 0000000000000..d41b7fdf64abb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/developer_tools.xml @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/enterprise_applications.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/enterprise_applications.xml new file mode 100644 index 0000000000000..55e64c84e2d19 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/enterprise_applications.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/game_development.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/game_development.xml new file mode 100644 index 0000000000000..914931fece707 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/game_development.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/internet_of_things.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/internet_of_things.xml new file mode 100644 index 0000000000000..1bf2dc13879e0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/internet_of_things.xml @@ -0,0 +1,4799 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/management_tools.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/management_tools.xml new file mode 100644 index 0000000000000..ab0dfdd8f9fd1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/management_tools.xml @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/mobile_services.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/mobile_services.xml new file mode 100644 index 0000000000000..0627177ccd91f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/mobile_services.xml @@ -0,0 +1,1141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/networking.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/networking.xml new file mode 100644 index 0000000000000..1ee2a45737460 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/networking.xml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/non-service_specific.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/non-service_specific.xml new file mode 100644 index 0000000000000..d67340d5069a0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/non-service_specific.xml @@ -0,0 +1,2641 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/on-demand_workforce.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/on-demand_workforce.xml new file mode 100644 index 0000000000000..aebc020f7b3cf --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/on-demand_workforce.xml @@ -0,0 +1,886 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/sdks.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/sdks.xml new file mode 100644 index 0000000000000..48ed4a3f38a69 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/sdks.xml @@ -0,0 +1,1351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/security_and_identity.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/security_and_identity.xml new file mode 100644 index 0000000000000..d55dad44dde17 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/security_and_identity.xml @@ -0,0 +1,715 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/storage_and_content_delivery.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/storage_and_content_delivery.xml new file mode 100644 index 0000000000000..f7b3cb4fa62bc --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws2/storage_and_content_delivery.xml @@ -0,0 +1,2780 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3.xml new file mode 100644 index 0000000000000..ab27f1eac3fba --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3.xml @@ -0,0 +1,34201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3d.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3d.xml new file mode 100644 index 0000000000000..5b3039443ac27 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws3d.xml @@ -0,0 +1,569 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws4.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws4.xml new file mode 100644 index 0000000000000..feb4cb2897f6f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/aws4.xml @@ -0,0 +1,56477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/azure.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/azure.xml new file mode 100644 index 0000000000000..734581ac4ed0e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/azure.xml @@ -0,0 +1,5541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/basic.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/basic.xml new file mode 100644 index 0000000000000..a87ac8fa1a254 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/basic.xml @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bootstrap.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bootstrap.xml new file mode 100644 index 0000000000000..8cb896db3fa63 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bootstrap.xml @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bpmn.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bpmn.xml new file mode 100644 index 0000000000000..af8918d9af662 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/bpmn.xml @@ -0,0 +1,1162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cabinets.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cabinets.xml new file mode 100644 index 0000000000000..ded6b4a0dee10 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cabinets.xml @@ -0,0 +1,2359 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/buildings.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/buildings.xml new file mode 100644 index 0000000000000..0ede78d8fb2c2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/buildings.xml @@ -0,0 +1,1449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/computers_and_peripherals.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/computers_and_peripherals.xml new file mode 100644 index 0000000000000..20c9274883ea3 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/computers_and_peripherals.xml @@ -0,0 +1,2438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/controllers_and_modules.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/controllers_and_modules.xml new file mode 100644 index 0000000000000..695fdc951aaf7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/controllers_and_modules.xml @@ -0,0 +1,1209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/directors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/directors.xml new file mode 100644 index 0000000000000..f9356345c6151 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/directors.xml @@ -0,0 +1,533 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/hubs_and_gateways.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/hubs_and_gateways.xml new file mode 100644 index 0000000000000..a64055d0dbbcf --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/hubs_and_gateways.xml @@ -0,0 +1,812 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/misc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/misc.xml new file mode 100644 index 0000000000000..5434d3a3b73d0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/misc.xml @@ -0,0 +1,15890 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/modems_and_phones.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/modems_and_phones.xml new file mode 100644 index 0000000000000..4d2e83c853bd4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/modems_and_phones.xml @@ -0,0 +1,1871 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/people.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/people.xml new file mode 100644 index 0000000000000..8bf6eb89d79d6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/people.xml @@ -0,0 +1,2192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/routers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/routers.xml new file mode 100644 index 0000000000000..0bd7479a839b1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/routers.xml @@ -0,0 +1,3146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/security.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/security.xml new file mode 100644 index 0000000000000..da754dc60e305 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/security.xml @@ -0,0 +1,942 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/servers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/servers.xml new file mode 100644 index 0000000000000..4d61dfbcd629c --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/servers.xml @@ -0,0 +1,1637 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/storage.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/storage.xml new file mode 100644 index 0000000000000..495a3da9d746d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/storage.xml @@ -0,0 +1,1648 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/switches.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/switches.xml new file mode 100644 index 0000000000000..4da568b3a9d04 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/switches.xml @@ -0,0 +1,3320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/wireless.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/wireless.xml new file mode 100644 index 0000000000000..3c9a4c0cd96db --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco/wireless.xml @@ -0,0 +1,1135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/architecture.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/architecture.xml new file mode 100644 index 0000000000000..1ccb4d4fdf40b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/architecture.xml @@ -0,0 +1,5338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/capability.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/capability.xml new file mode 100644 index 0000000000000..776e0889114f5 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/capability.xml @@ -0,0 +1,8999 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/design.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/design.xml new file mode 100644 index 0000000000000..5a10e09a5299e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/design.xml @@ -0,0 +1,7556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/threat.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/threat.xml new file mode 100644 index 0000000000000..5c6ed1e51e4f9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/cisco_safe/threat.xml @@ -0,0 +1,9524 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/citrix.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/citrix.xml new file mode 100644 index 0000000000000..21379d6aface5 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/citrix.xml @@ -0,0 +1,20213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Credit_Card_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Credit_Card_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d280580ccdf91869d0c6ca475dd2d11cc4e8b0e4 GIT binary patch literal 15493 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 Hu0mjfxJow< literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Database_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Database_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..4add7147c6a58e0cd988aa024aeb72c05840ffea GIT binary patch literal 10455 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Doctor1_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Doctor1_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a4bb7b40807c6b36fc676113d5bdbc3072cb39 GIT binary patch literal 9441 zcmV<7Bp%y|P)%s_@=<_m8I@?J>TvM>n=iGhItA0#Ak9$^V!Y-}(l-tFMsvTVzeC95U% zQuWS%yQ;dXy1La`Y`NvW`tH}QUaG6^`R_UZS?(=KQ54Fxv$r{NLy!YNuARlrl^X*4 zCP|Xx^7*stOM?E%#lb*nS!v+Vzy9du|2O2WGsgjl{&wl&%3z-R@7hD*rQMO}=(di| zU~5~*6_aJt=V~j9J4V)&zg!gb|IkY(*VUs?X84>s?9x}`nj?9XvZ3i6_}CJg__e}C$w zM{@wkl6K2w3x2(A-;rxvj)CF7%oS+nxVn!@C!RO=fd?Ltvu!-iDlg#1OXt73`Y(UI zrX$ov(O7Iij)@8M(YAfFLc2d&nR5fr;CAz+3%>jQ#vNB^|62)Of7|*kd%yVLifiZO z0B{DjFI_h8OYdyhdY3FKhM7CCztPnlk#_7o^4lB$&cOER&I6CLdzbS4qQW4#T>TG; z?A&*x;@(@AJ)R?hXHdI-$=v0u)^2&x&90l*?Iy3stv{9&<?;n z_ph&Mhs)3~U!|36={)U2i0dn~QBsrZ70Pd^>pb6mGVO+NE+C%TJ+eq90x|a?e zK1weBoX?A6c*y5rjl#Wz&Bv|RTtsCRRTK?((*ODK|Iqr)yXeyMCr|n3$DZGm(*T3m zB1hY9i?O?B_4)5uzJvlkUwj4#;k)7ha3laA@q3fTkD-aWA#IOpQI(7v7fVd|B zfkXHJf~0{!GO9=+d=hS>gs+M3iZ454exHHCkKs@o`SOcs?zC|c zYkO#d^|j$uuP&I?r2AdthaOAb871PByIjAD^) za(cWptg@IIkDVBn(*T3q0$$Hy>uakwZl~iX+F<}#j#BchSG&XTT+(N{wF4}1@+b%- z!$XcnDd_i8>&Z^%0}B_rasU`y0PMBC*3Nl=EuS4sgaVQ}>3vfuxcL ziC6cB1`;SV0K14j<^lQn{>~f+801!6O7H74+0YIjZDHZZ-8o5f1BI%0 zn%Tc@23$$DKcOvD(x|$RGTcV~$>Kc!i5vh1xjpjY2c3fTTUv8#yUy^1CNK!pVI+f^ zci=P%-XXjN(giP>%z*F{_?QKSdCfT!a3+`muQ%4&)vcF)-F?eaS~7cT+>Wy#od^XR zO@LGN@A(g&f^PqX$%qGiH1)6Ben|};sU6CttRSy32Y^9r8-8*BWqyzM=Hh|?F#yDC zlSbCkqM4J_C=iDMe0hT5YtcYby#P{)pn!lBQ{}G+;wSO{iZ=U&z|F!J|MRg&*H-Pz znSeoTM-F#9*L=L=hWoy})G4W<-Q|ns>WqM`HF@(34DMXQ6*O@Hhs)ynX)|9kJW6pg zsU?y)XE13@-GQ727{rzz^mP=Mmxbe*72AKv4KMWI5WB1Hhoh0GwOmre3Ct=T4%!iqbf#I0urAcIX&!JT005FJ6igc~(R6Jb&AJ6^X00Jm9LfoA* zf7l2FjSpaGVrHTznP+(t8cd*&Dsv`a5SzSr$7YsCm(vNMDqIrg(q*LRv3<)_)|Em$ zJZvR*=@Dl+mXaMBV8{Ys(gQDseNNis^El%veI*h3lfzn=UQxUHT#5VpqC@qodH;-> zVmub`;Be&tFvv}jl#hLGXQGTtZISji!-q%@4C$p_u>Gj{lhs;44HUYN?YikFkP~Rj z0bsB%&f$KVrP3*;zm%BqF)rPbBVn^Z#cWR$f66HQ)U|+|nBf+glU0`_-pc`Cu-o{X z?_0z3_Digf!z7!97VBu$O@cnlRo1Up{l=o||8ZdGg@ig7(r5-*$z=o2gf{W!e|^d4 zbj)R;M2#Fx4u=y0l@)#FlUDjIgdbJQz-84Xl+A$As!KJ~Vd#=0X9CWc)^OcD8##pA zn3$gu#lqbNLCSH#D+Uc9Cp3Wmp3xjwG=Y@_QjP;|3Jf`eXOse9o2Hap6W704CONjR6?D?hne-$TYNr`8upLVJI)h`ctEJBk=JrW5`u-mb-_n%qJpu6 zMYHDhV3JVKq#nL%pNh|_Ubla|_ZXx_o z(;@PgSMvrB9({p_Vptlc*?h8z2^fMzQKpu+^R^_hY#OT}sR5dsn^(U6`s)R?wY4OL zL)+&~88u8w*aabcMT-b=k9Kzo5JbB=%x1tC5E7cf92ioJ(L+V~&hXEFeM7d5)sWKw zFTC)=?Z5y1?-%Fg~&!Xoknf(b=I zN`m#9yaAJ2xVoXe^gG!&UPDR)y!z^^b&ZXUkG%EPTU1(FN`HI(mF>I|I7o&$4=_k- zxwq!_Cx{_?2E5l#cY7;q`>+6ooa7B?gi-SbqHU~ZZq7EqiSezpT=st=re?0n}-4EZ|fmtzszNW1J}rx3_cMKxdpF#w>24(G!qkcMiY!&fVEM zW09;(SoAR88c?E0A*_R z)DU^{WXT~VO2J9p7r3!f-nIBE(6$>x9%#|NIt_OZ))05mlgsB0X=$O!lP3!^!2Y__I&x`*cZ7^2ssZ9x9$zS;zUI&(gz00vL+Gr7OVPd{bbzX&sb>(;GQTwKh%bL3M&K>;uJjj!@`hL3yq)h-Lk z-uy1j3>YYY>K!Pm;AIsjvLX0m)dDfvd!T90=u1{q<^XV-+u_59>$yM0PuFpuhu1jZ zLnlt0pzYhY6A0kgv17&V-{=4VTCu0IaA(C8-Lkjngs=pps(bB`)qi|66ocJ2%zim$ z(gKl4ILgOs}gpJwX)zwA8V31b=d2|546-2Mk3(?-=-GR-;mllV7 z)w}hQFh$MonWBE0(CxB>G4gv{BJ;yqC+~aT``*QEZEa67AR71Y-~TED;aUcSF9(2r zHfHq`SopXB!w1~QrTeUpH-CoEp#cB{P3R7XaT5okxivBR>}bfh-aEgh!(X>4!Rn*t zVoZ)R?wZx2|={WdmF|8(@|(LXa` zUB_Uq&jBD!W7Ro=`?LJ?L+(p@^IecYO~}Xt*a=@V2XkuTK7KeVyVgc0p8HAu#XDk> zZ@+CJh+*a%*9r380a8u<7`pN6|5nV$jl%W(;SYaEa76(|qh^9T+R@Q5n@tkjMrRHH z$$~H8{(t%DHtsi&?dtpV4S9YZWMTKUV31YtnpSZ0PG3{26LQ!e&L97F;Ih)@yfNz% zYXcJ5KDz~?99g1ZVKEIKJIT4|${SmcA3shzcI=>S+qTiJUAx4&Xbq$kB$c(({3Az> z+@Ax0+SoQ$b4M2KuiXDvDuS0u8#Zj17<9}wR=2i-H};W*G4i+)I14d#SVz<6Y%RWc zi|q3Cc)uT+*p_gstQ$$^F1f0#uC88afgk>*A!e4XbUu?t?Q3E zJi^$!xrn5!rk<|&;+Gxl2@v`#ue@T?0Air|To9b%_pxi)N;X-=XC(mGO`7o0M<1>I z%U}NTAge|9Kphtz0Fppp41_`e%E=#=Tpeu58?}xs z3&O)rzrN25j#FGamae+`8Ua9D&!7MNXF7TEWYTd7HuHh4d*B<~N1q=W{@TdjEaXBC(I(UH{IrQ*dL#EcG zRzw{U%G>BWXU>-L&+m*m{d(R%BKb^2)gLUR+Obn;=FFJ_fU8!m62EUHs%S6;a2@&o zNBA>!LmB{YzWHW=1^x#HK#4X8000D~363jwslL9R_U_%AG-$m60FHxWL;ZpaOqw)_ zX3d%Lgq;?^dB8mI=luNpUmMZ@;L@yLv(S@bZFQwjhkdS7I9d}*rpk-RYyB?x2OxN*q%^_mv| zKx4*?5t;-b;KESB$RT`afOI?ny)4f`RRulAXi!7YN`d;2v#7!8kSy;p(JQN?^Uga@ zm?5O6HIrn#MomNc`QAd9BW$h~4@m&9&HYcF;c0_9VbtG+!$}~3-G<%EvTR7CDP+Y5x5A;&=e@r=NbBQlp`6 z0a}nhyKu+>fM@>#7T}0XJ_{`XZJ;#-Qb6bcg5KQP7CC@Lix!EQ4?7DGpxY*fY`gM3Z^!_E>+@ZV?76)Jj7bZiH8eDc@M&-OfMy1u1(2PCR>(9aAj-$M zf_QF&zkdUeUnK}B$SBMaejgw-YBTKy)c^-;3I~(eDMJPTJOi)ci|h5OBdZp`j0Rgq zXty^2fEmE-gK&TR;~$FxQOrbb;CnI$bwzG+^g{_mBoCEV)rs&luIUFq_yK+V@yA*K z$fN~81YrjF`LrPe0G`R$_T_t+5k|(0#!*8dOxV#(-9fl~)2B}t-T>nADkue~$RtGU zcDtAh^j!;V`tV))hi~2~;sDTKSgCaP-FMUHKKD8L=}&)}qy=!!Fatvg0JHkxIfxly zRF?n&d}bq&O4nfbZ@&3v0RVspAVA$91{$_FmEeuw7+c}()A@h0`c3-ZU%#G?G##ep z%a_xye)TJQ^2sL!01zLz@4ov)H)?@+`MNT60KkIkb8)2D%$WrZ5XkCAOuf|taIY}i zv|X8SaPpu8~>U>xK@fB+3W#&t+zJ;crzlb`dfXOsXoG?KE z0nZ}y302)=%>wcTTr8@4 zH~1~pC7hP^0N{(6*WY8<1%I@K9Pcn|)+PB^6F5!wzL+%=9<7Nm{@&QE2LLnd`T;tQEeKFnh1Ywd1+KmJ zS~2rLB7gbIUz*;7W-ykN+l7d0N&;LjkbbBz>q{$#2_PIjv_Ao6Mns3j3^*N*q`;Tz z2@F5op1^9a7!0rJKV=X~Xgc6HKmn~Z+%m*Ta#_u6$1XCc3 z`vRMJK;m3DJUk*j7w`r0sA^b)c)n-HCewQzQeKjmf^G#dzvg2%byU^@fG^_Pdt$X zDhOV!+qa+L92go^o?5xN`8R4BM%!ut;UzeNNgBX3 zlJa!(uDPG(<>fk<;i952md|rByNZ*t5&(SB`2%o_9%nUDyxRIZsL@Qc00a*qUw{4e z!rnjj*kehbL68PnyOaXX_mbb8ddLF70-7-6Tx#Wz@K!Y_q)!gMF?E+CZbp#T5LL_^ z4}joNI)-aN^%BmLpAXMg05}H%0M=xXU6fB_(AK)bbPaCgEw|hv*#Fyazb!(-CN&;Xz<3eBW}3!uK>)?05C$2JCrv<8m>xr0=osxM8)1H3eH!ZfO`A4RL* zc$K1&u<8A7)&O0Rn3(kd0DcSSZ^L=&vlRdXay&zd)D{E~Bwokthb`@`7C>A8GY%zV zcA91aCv8y7Y1jN-4|@cuvxG%um8=C8Q%Bng+WGN&=J8<;&>oI2Uk4B!>TT(5&S6-# z27>w>#L$vJqF$eYphn1&K8Haxnu<(U6~T)D`9iuFrCN42AD_YT;T71m$!OP;61jk%{NyL1Y|C1?i$x{? zfgKr~o~Blyu!IR+euW4T3odc$99TZ0qvNFBiopnx;U;4k{X^$=K>jJoMq-RAb?! zqKaDDec)4?$(-N>CH9l-?l?j2pvQErUEN{3!(^8R0Ke)N5?#H+A_QXe1T^B9t|8C^ z;cKMvnrp5RvmE(=bIv)3e)hAUiG>_SQ-ahjG)9uo@AFb^u_tX%s6FbUNaso3O+K+e zG}awTGIg;?w_Q{)y8yr!6gge$Uju+vGA3&H*oQYJaI6jfHtGSv{y+HO15qx9GHq-s zjYS+_Rj-MoVv|Zd>BFtJx>`UZGzSfhSVXI4BoK*lon>KCQ9c-IF zIUT|``uz}0PXrK}0$Kwm0IPS`ty?F4*H~(%ea`Al04M+fV)dr;W{oqkIyDNH}a zq?WbEadLGvGXT3N;C7;TAnCKA5@2_Do1q? z)*8ZeAbR-x^Un)Xh{YN!SFWV5e)X%u-s5vg%$~!?FaySw%xJZR&a}j~tY$dvK6H!% z(N>`Wf_{%!Ib?0&?jZsIj-rLw&%J>*2DecsiG^<3c(60&cS_kM+_`T%jo>ZoUD(jt<)avR$rX)Qv>F2-=+Ax)pf#Rd zC-@ewGkL(@9%umIJ4WsRAV8SuRu17a5Hx&$bZjDpMWk>A8L&MHUpod&2TIElX28ef z&XLw73|7=rW784!&g9Hl$lVhUDC9J80qO*~JF^M^e8LW#I3l)Of9GSBdmY;)W3 z#nAg2Jksw4tnz?Nl0w>yhah3^VH(oK5R%v#XB3er(mW4#cE1fMvk21CO>pnD11}3Cc>KF!$ zV>ysOa14;((LCx2`Yc_0&HtxA{VBX)!GimqdFGj~a0YB=e*s_|1EVL6k*%jo%(xVX$VISQ~a#x}x94mz%e)wT}<`=&ZH41vTIS?pKF{YyP z^}7Zg04fqaHr=as<8yQ$-(qDC2V?GJKzyH7c5`1%fKmOMY-u=rI{1^|5t8>8$cYos>-cuo)BzN03k&&5K7CT(+E6uX=^X&iev2dFr`ZxSaDp$wLhy z=p-`$*o}>R``h1sn1!$Oa%>$|a(y}gpxtvj)$4uf;&yBdh8WlD9p{c@`a!F<;G|9? z#~G@vv)GsvIvv8-qKp6@`s7h{bn)_AY1x-oh$x^o+ieF=awLr&S0+8j3s?{IFh-fm z;gpj=S?#d_>`_a%sz1^1xZ{r3nSkw-i+wxrNU6zixYiPxa6>qS*{0)bjTaB|mlYN8+ zy20dVi&n>$r>+!|qp`@*#sk~dzP;-CV~zWhYR@@om1i?fnT+w^I#*qr5a;HU6NycWIN@EI!* zO#kz>_RHs$22x$BKB>|5bJ@6qE{jl8J-6#lo99kr=Ujf^#v5-O%@x0+InF@RKk@+4)2br86;`l?D-Pn=r$_@M0x4!lL#~*)uTZY=v`aIpE_B`BIwSUS0kOBy) z1fNdm&J_PUQwd%*XQoGv_xqSDjGH}s_Hgzjs@apMaI3|KeE|Tg_b_HC*9npiK)Wi$;a21M|u6adEDfEo{QW!Rm) z5V|9U@U2~Uo!GTRf~Ar*11pM(Ag71(Ik6MuETEr-%Xymau-YRaW1L>*BA%{p7Vt?f zBt68Dx?{2|?j372Wkw<_TL^8;1_V|x#4-Vbateecoi4_#rZnAYW_K!KyHW_uaQB n@gNQf0OVTVnh6A#xBo*?=*&L9&ev#$g?oZ|(JZ*J;7<2BnvqFMWYQ8=Mj{!Hpnq@)Ai}xdjKoF|D;vScP`OSe!>wSf zXYdnXeq!ejR_*-%uqFcN)3;6niT8%1nRiWU>^(JBo{UUt>_yYe!?0}w{aq3Cv}<%9 z8b;57Hl#=TL1sNjlz~JHkYylQ28c3{EQgFO1wa4*27~P(R8@AMWl0a}r*xpVyAECL z4d`xf!0=#2JD48__>atd&#oW7KmGq<6+D_h^_v)xxTK;w{*k8HhgVLX-XUuz4L}H> zqcw_=0SkLy+KisV-GEUK5ov~qG($$3LE)(Y2;>6EZgLMs4pjEFPVI(0@DRf0Vaz|i z8FP;@VTKhFiAWAyPka4PA|AVwnSTq`Pwx8B2l@YLSk0gOO_MbBKTny_aqY~O)@b9@ zZb$(T5d;X2uHA&QuQ~?ll*Gg9rXXP-3oaSIJ}`*-IY*yP3iEFzQ0z$C>Y&odc!a=kQP&4(yqQz1vz~TcQW7Z(`Oz-u>eb_5ZJiHTM(0 zoMD*!otX>vT`_;@PKrb<2axBve@iExxpxS%;tY_z3(}kfj;?@+%yt10Kpt2H>MCV} zc|T-#lU0}tC%FxmUHL3RG1CVt`yA}A#Kxyi#87`Fz#M0-ZvyKZcHjKr#Q!Q-b3Xpx zAtC7V)0z)|Wx=uALuF+t4EJPEH#rPJ0>VA{sgVr!Z5c*;-zxO?*CQ0MFk{AHEL^x7 zue`DZ?HyAQ3Ry^{BMz`4P!#+RV80Er3(2Q4)(8)O5etv2M)R_%9#A@`Hp?b#-FOW4 zz1Hmfj@Adj`g6N){_vmwSHPO{@&7)rreWacN1wE5X0$AYJueQS^_9)Yq$@CKs>TWL zXhCg5Iao37`Nc*gGxITH;UXmU67=;{ASz$QIp=RjGF6GPiV94s>&L$Rv#{Z%)WAb{=LZ=Twb4868i98en}tYyIgx zKe=|#-zBWsAN^@m8hmr}F}pw9a?DQj9wxka*Nd=l6lB?{5YZN}-Hr<5&xl1jVT2^g z8_vM-XT)(}-z2Pmaylry5P(Kv-@k!`iH7M-IQ=Xe(`HS=x_gdC&(M6o9R}H8&H)SU z&#y9O4KSmosvGBDc%M&Id1!fH$&nCVe&$5B4?$F~hKw!&2?3A*kpOf*IJF(~m&7rBRvL$QwPEvforpAD z4-uXMB0_zAKjzKZi{wZe)9QD_kV*XcFN-0o&vC^xJ{x2Yq`dw4_op?!j5E%B#iJ;O z%0koLeGSEoJ=^AE@7DQPbo_JZJTL`qyJ!AEEB?sdpM7-jZ4YbqbwByg+@-sI-m+|m z$r^a&zFp|p7lo|57Q&e112wDpAX2Fq<~FyYwz?aS-`$V?9vk5)S3}4$fCvo@y}0!J zhhZ2D;bwtEgyDD@o_yg%v>tBCXMj{9!|;x^ieeSxsQFtkWy&FdHL9w*5DHs)Re6DV zU@4tfopQlxtuZ`Uj_uDL*EY~u`>wq|`{?s;OIWk6{jnetKQjs_Hdqj=7Bu|@C!gBm1Ejn*7ywDRaZGts=Dep7 zAB^JVM^@UYq3E@HfBvys-&U|@UGt-Gv?}>0D;>M2ep(M^EqDeS*KL7qoR3)jshB?J z5T?#*$Ie&hqpQ6ZRdtNI>Ydo}^sNY2Ek!07M`X%%pin(X2!taRPFe91<~Q$iA&ERJ z*Y*g67uUDqnSEc)*&mg#LGPHVFe7Bvs59@yyDsnW#VMup*xJ()CD_Z;OTWK z4D?pOsJ$FO8fxfq7*(f$L=?iT07!y_z~TivvHX~AD37I!#$e=bhX+%*^_IucJ6MmZ zCAavh8B`!I_6&pz?Jv8pMt0zuRgc05$pBz_6czcm`S+dgWGup_hgV{#tNI75_4WII z`APnp!J7G@A2w7>8h#2ww6rYWj)ocCkR%{Tzz_r>1SAo*KXVYx3nG+96No2c!P#IT ztXvkTan3O}V%CDX;22e~9nAu>>dL;C&IoLJXeHu3Rcl%65AOffr_@^xYsS^zuPCn@ zdA5E==VHYXJcE1$I*6km2Knan91R*fJsU2sY_8cM+3z7t+7mgqo zz60ve{$AYqn+>q)K7(-mnVx~M14~H8j7hE7-!(gUQ0&^DAuQOo%ngQ_84GK_i_^|2 z_s6S3IG(L@ytJy6yRS7PotD`A&`QL6D}TQKm!JIDTMBE&2fr6G!utMjnRV9kiylL? z4DN|`POKEdg+*xH+=b^K7(i(17a@!akPsk}fDo89>k!U7{TZ0j1I7a=`+Mo6g$LJd z!b>mqpse`|2-TewPM(94ngtfCUSarDIVR zo(D)tZ~^dADFa&`T8WXqihtk#t51FPErB)t1K**tn#8*16SrQn^^xT`^~whkjmaDw z;Q`gQqZiNJ-3fE@=ON5Vj;dVyYi{0;(@uFFh6Jp%0yHBM2_YOdK?MtmLSVQ%fk$uM4Wr?oK%ps)qJ)z~%$Ru?D^Gt0ZF>i>?S;MAv#kqSX#fl& za?@-B!mNUfHlb|RbucOyBGQG(FN=d0FdkK6m$<25b8JzjNulQ#Y@hI{%!4;Nh11v_cu$+cUNG(G_tnU{}MF09(B1L)uNLyQb7glf-3sO}ud$P|DSpe+Zi zS&>s=F3ynv1QkKcO__``DE5x4GJ{)TmbZXGXldGoh&hb1%sMPxQCF;xEI99p&%((8 z^}s2qviyF}fd+K$oHsn!R)6$?|M|z(HyqaV)!&}cxbVRC>V}S3=jIm?tu#feb0T41Qs{%fe-?(wa$Zv=>z5L2dK-<7>}N@7cEl{qPlDtFYTL$S6k;IW6OdX zphiPg7tUGw7#eEYgHQGtiW$p{1#-f`T6nBTO+ z9V_|OVUJ>8{iRI$H3$)1kW0-AEwGfzd>~1}j&DJ#<1dIzz6jyElZwY@1u8QoE?s^nqEW9pMzgO{07i>nqr=Yr57B#ID)v2dJd}m~ z(0b9qHD5@+K3G?M^GOo&G!*>bpNHU_XmCG-tNuzPn0X3eh8o%H+fe+9q0a~oEieFd(5Z`Pj1R!E=~jtiC-d}&xpYjo|N zjYAujK`Z_BgKNI95$bQ{m6%M{umpq$ma!IBw z7^Vy^xQ>>3zwT^sGz;}Z*37VN#_qqKgH&Jn>4)$5(o^GxHRX!0Rg#bgNXV+ul~8P9 z<5%Bkwm8arLg4Zf?!!^jcl$b{?pn768`C%9(xnez#eyC%82k2ic8r&bx4l zuhypvK^2ym0#2;f4EspNSw;24V91HSa_oEHtOpLQ`SJzhhBftyum3ZIxN$-XDN4uX z#O<=+x0kiNijh<$_H?x5ze@raFT5EG<|Ggf888hAL4;%yc>d6t80mNslZ;m|Z^0DY z`rB=I->MTZIHWOqx(&q|ogIUytFQ1|TENMEb1E347k-u2=-E0S-LEWKcKCPy_R5&B zrd{#(%V>Mc0`;$v{x z6)QjhZu-HKXj2ygV9cA^jccwfLp&Wtc_fkRm9UkX7f{f2y$-Am7QS~R zwZYN9<9;Kvs#UywsHh&;01j0Jv;F1Q#*0r#uHF|)Mp^gFp%7Z>o5FGZgA{xiO#o^=`m)2 zUw_qof?zd6D`0T%RPNYtTua;Uzq)%YSTB)~%l=ldE<_AX3X`Dc&};q-Zb#k~5hs0{bzVS$TVqIDs-f{Da{ zIji9LtN_SCF)+wF3*(+*XblYQjiG(RIp1vi{a3$K64vC){&f)vx%G%(6vixB3~2P2 zClHNfP-pxJTc7?brl0&3yyv_}vGcVIHne@&_uZ4{KaLaTJ&z||UWEH^yBUpV+y=99 zE<&clhmQXSVi7wx-4??!x>mVT!iKKDt z+!wHP)&>{`kV*oZ51$2T5Mtp3X4UOLWn>`NEzR!K2(vRo77Qy7DzByhMUA5eqm+fJ zu@ss8edWN?8rXODd9X)9r?>y<>rWNIYP{r&L_+Q*A!m(gfjKbaSIxLHL6V5Yl2|tV z7l@hNXx$UXA@j#Lwq*m3p7k<9h7AJpJ%sKIajC9pM^$-fx}?JV9Zg5t-Bg%Kj^8>t z2TCiT62Ae&I;ZALP&Xad7EX9tZ%SzI)6;-^jKgP*5J-*=y_#nA8S3i zW8F8bLReoXl3y9$7-#~DB00YLpr_EgsQDEvoU;jG(?U3uffVdEczU~X{lHN2dIS%w z04pp7ZsHxeB@&Xt1cQqU$(q?`fl2`*hsx0T>`Jg!r*y2lVZ9&LJHPk@ggE_3R5RKj zI1un?^IJk-dCMQLXhB<1bEojMPLHN4pRzpD`o1*2lr82!`QzDmd)-UH8@+|i4@)ax zXmdPJLZumwHR{cA_7$NWg2^k(!H6$jcHW~*&^7m*|%XPT;;?_JU&jksh zgavw=n|#;Kd8YNX+c)Td!6+G`9`{uwx_Y)Bh5x%ED5B){M-6fy0lS z57sILt*bllzA^2>`qEd4?XQh@9?EZhW5=N4-^y3;YifJ3d91)&NQ#%h1V#YhB zr`6`HF{`lGULL@!2R?(5{Xa)z-Bz6V&IK@|MiHpu{SryZ7;(%GDGy64;P3-y!A^w0 zTAk5#_qU!TX2zsT{`HSSTbEC?`W+m%MpsQ?R(Q&(f5fCoojEAXA(&F-;8Ry=dGD&nyrZWEcc5hl#mu<&9l=w109jvPC>+bc(A>CblQ`bG;{w&p8`gI|+l_0jl1RlqX?RaC*=*J)g<}G*u z^X9+k%k~5jtc=2Aw{OOfbuMBvJ^(Vxa!H6v9>59ne}GW+(Rgm_br^o_1}s~)567G` zt9bnj0FT|(hW^T*d-?`FSC43gMB816r0&4Q*DUm9is^I+&u#bsMn9^`Nn3jb+aR`m8Qp{uh=697 zu^M1bKJ$N2QJHXJlW><;7|P(W+czTT)*s-svwL8NPQj*~mtdsz ze{kM;ucCfhRZ;T(>{IpVv_ATMXCJb4_%6k zYDT7iJx)63Aw;Xg1?4F(oKjVgfTTp{t&T?lr8SUjFGJtPQ+9XXed9c;zVtsX5NzL1 zY(ZpOm&cPplx$`RZsH93UQO)RSbk12uc)MrM{a!;y7F3t>(BFaGZ8=nQZh6Q5Hv=1 ze;a4LQ{iC$d(hr<6e{BXhBMz80s!=P#j$%+8rwO4~vdvL*7x1sy+ARfMB55kk*fn%3%!K|a| zAqD4bkqass-mzBUbV@1}LC4`GNTs5fHsdiE5fxDUErb(X`6$f(So`g7WM2YRmT}k+k*Atg?i*L4w8|gMwP1OJ8V^f4`!p2a8X*58-eE z%8H@4YaRdz)3jk27ECh(A|R8gL^@T8bh-+?z0F9as{ta^Puh##{yAWl`6|Z1Z8&-5 zPHf+K7W$KCL8aPo;;}zORYRGlMhK)68Aww?7~})RUNDRjHAGzuOb0J;qI~bO2asP? z)}W2{C*BEW6VMvOhoE%~Rf`_N$c}0x?eoFHTt-#z`qnpy?SIWHtH26rtn|FJx(dfw zS%|e$TG4Xs!!Qh0qCyc|R@%E`DOwL*1R{bR-wqL-24Pm`t|VbSg5fQnLa6a_L?*uz z0Fc@L1xU3U$>B8YjB>0_6Q(bkgyrv;TU6c1LK2H2ZGcvLmAAL!e1 zDOhXw>3lFc`3b~3&jynLP3CD-dHH|+fVBNt!4`;ZC&^&DM4}OVEU?A7M9Xu{lvcE? zcrZ8U^;Xe^r$`%Aw0-p{i9YKK`3vU?7uzC$RSG1dxtvg^JD`$n5TQvRqYSKVkgP;V zKaLa5+2B)^w<@1a;q@5cMpu^yl+XH*OEg#k{V&%d-gYYBfyJz0nEQ~iTcAY8TYx3cN8uxeDuibSdoQ^t`HAgEfOm zL5p%%S;oaw@$T>ar{K)Lkk$^U95j348D62XTv#$>qjCPrXqdefLUKX10(oV53bg{+ zYp(LeTCEHm+;;}r53K;R$X}-FTX%5ug|@O+?9Xk!74=OAi_-Xf&qiKl-FpU5HN6~^ zjd7z{qh?r13t9mbkv{9of?|&q+QT+FpSl##O*!3UvaoC;Ew3$13xZcIMvd6?mJQAx=QCP0b>&#QoD3IxR(NFLPa&&8{(sx&m2U}1oz28A{3 zOwDpCzv4%qj#X{GDb+VGZ-YK{jgj#MK+En|Og)6A6CU0cMa;FvG(LhX)Xj^`d&xYpyYJ zuHYLqP)-im*!BEpVGq9y9{wNH&98tFlNjkrVsJm9W_~4D4;&P%s5qRLo`eAK~1( z7^6e;Rx`SHos7QyOTkKjHKTI+CPZrYq4VYQ!OD#{?#1QqVv&wgvd47_!um6+k555V zhMg(~1HI3j0yR>ZPuod&AQ>?0_d}^LXNFp06n*c{7F0F-b$hB~Hk6(Q;o2av#|oi? zl~v-(`kMJ$P_tkY+!`!Mpdj-@V5gD@us{^OhHnjbLg6$qN~$XhFO#sb1l8+kaCL3+F+#oX>g@6(s}c`a*Dq97iO&b`IJocisZ;?5Dpi#lnba{1owmF660s0XI!{VYfjh(c4$D^kq)x93g zXT=e%4;Qqo!B^ZZ?25{+%#huVw3Vah)hkB_&#` zz%acG4)Koe+izb$%#5mQzI?De{6y1G_Z5CcWkD6$VTr`T-8LNeS41ZdRRGNk zCZJ;BYc=zYbV~!F4jlN9 zAC|TtSb35S9iXOy^xa@gJ^N3PCg))lf$}~}D9NKT6!ZuBI-16S#YKG?E)0vXcl{@! zQb|zazcA~>h2Zkm7X;0xr!iNZ z4ptX4qy5FJkRF^2J@Optmpy{m)Tkd&e$h|34BUN2vMquB%_jiHGN)Z23&kZlx*ggG z8|z@}d0>N(wpQfe_+XJ?voLBCcU(J6%#84=HI-#$4-bSZUZtT!*X84t50>)3rr>y0 zcj8}RR;G$!i2~az0EfbT`1er&5C!pT%!P~tvO;Dc-Cu*wm#%h{koXCvoSlRS$zoOI z6y>Nc-JQa~OO?>Zm3bub2DFjdkiYjudDgd@2@w<9f9k z>@sdl-f_*p_+W)st@&=%lx?cPsSQ*gi9f;Na0aZ(D17lZW?=a#!YoWvM23Uf1 ze(6?lF_h6k$zWKySS7(^oS(Y=>IVy9U06}|tNTP{AChhFhR!s2KzU&msH*^&5#E8S z<99+tz#;=$$Rv|dpI-a^kwREzIP_d!XwuW=l&ru= z@6|q46=jCLtshu<^L+@z zYJ~`VM)}-(U=O5`Y17cg#n57|e}PGz-}i2VROTcTr9eqfLg76oFG;UmeRm01YfdUF z`}KNM^n#KVNc4X=P)WhSR6a{2puBk<%%+$RR8e{!lnDZ3TVN^cD-p8-<{yjU<)^w} z4c235>$yPU&wyxzmd64JLxhJAYTSi%`&_7G*%+!~Pu3?3o<&eR7MMHU3t&om?P{y! z(hB7t_}6x$_TI@PfK1Q(psmS)wkLv=pFGiE>p5Xs{bDWHcH2-B1rzH8QO&KqJt0>;jzb7LAE#6odU;stH;se76*U} zDmQ_F%+@H<@pB6nM=n&8a85iNAShvjI=~j)$0O;rtIrwNLR*nl|NX;I`Hwzh>NGO( ztB?`%#;K;_Cs-pKUJtW+FHjZ&m4_k9Lm)%=z-2*{$_RaNDhLpj9uf06t*|sOcQSGy zh4ju-p?QkO`nW(%!Vd;AKw&}FXn6ni=cd=Let2B4!mHLyjmX;%mZ?o*fWH7mweE*i zF*N7`c-n=Oh3LFCs1-tXK~fh;bc3P{ikfb#v@=>3aK6UxNTC20@}1L>36n8tX)H7BPm*D9gj~0Q0G;Brs8+rojKh{yV*P^+#XVy6)js zYt9Dn@aR9{KmmJWRNnef1kQnmB6#cp=Uy;Z(*-&El_L8a?+`1ff-zbZBX>+`mlN}_4TRczkQqD=HcxXQP!5J)RfRSf ztf(>m!5>MlUH!{9@_3shJJXrcq>tq3%A|1E;{!^8unf6gLU-gYm=5E6fwCMt}T1y>|6` z-_Tn!g;%XP4!|=2LgV{kRRAsslya0b3b2sa4xYXlIvgsUu8(V~*nL_j3dg-F{ZB=q^YQc4a)7Mf3C+4p2F zD@5+tm=6oUsp++=$9%zdw;L90{x#fJXqFhzUQ~uc)Fd zkOROu8Gwm>;QB{ko1qD3gbY9^<+PAV8C->Dz)WkX!E17G9A%XNRrGp7j~}JiuKvtK zzjQ>mz74NhQw!i}01I(M4=za43xO3{p#v=(z5}VM#Mt&1K+CW!M3NZ{SC$p2DhtfC z1oZH=E(i)xmT-^ffgQo)4gjmtYghAI0?P$99l&}3O?X`o&JBo*wjO0UIanL4>c6-r zY#bROkKK~yg=R2-_&+#s+(EfFKIPSP#E*vnyd%AKb>>LE{JL(}9$vL(A%MpKG~x|; zc!6ch2pW_f{D5Ibe~h##FwuW@e(J^XPr(`?l|d#Hao7C-1b|G>r+gV;eqSS2`xFv= zryr@J)&n>{y>@l{NYBpeg5?661K`2&jKPk~D)UcbMkIPCRC#BTO|$VSDK2Vf-o(bvEFNMPLu;63TJs}ry1jJ$4GF0e)b z_XAjlH}N5i0hHC>1}3{8qvH~4qQJ@r5dbErk-0Fd_T*={>KY$ zZr)(_md%WfEI8>uA>_y33|MtjZiiXZGp3@(RG7C1L^JfkE@XOZFkpNDHsx0ZZJd2C zDjHj%2NUSndLk0y)bajP6O>7Qq2h_VZ;eF4_Mt=F7V~3&TV)ZQX*4y}o2gXVh(yAs z6}AnPQAYfjb1v59HU9;osy7l=g?tb-i+2E$d~;8u|0BI6Dt}uxkED=!tpmgMd5Fui z;iMR@ZXC!AX`7f5n(Qgzi zLK;)5e}LG6ijv(+fv|kw@>lxDU+zcu$cJFj)S|CN%X`o?<5moB8$>sM28!y&j;ZO9 zKb3EO{98sQK4L3nNlA9b7Pd4^%Sb2fR3vPfBc@$d6}NWpKEY!Cs(#a85xrM7H6fH$ zQpQZ1c}TXYB^y#nQwwFXWw zvaCc%+Tmovnl!1(+Pd}k)_9dRE?7iFixd6O=X7+C6#H| z%2ZOCQYn*#VQ8&QEwm{$8&=KK#?;*7uF=to)7}VRm2@9woVph>78-NBRn!?pfF8+U zXiEnU_FkXs+&Z$+1!s)Gu0Kb1JpD(J&Lo6@t+aL^X<-SWEun=aB-yr7mNcYg*|ueb zOeB*-GIZ7s+WEG(6UB!orUww08YRLZgqX-Oq5 zODQX>vQ*5@#8Tzfc#@D&VT}gLwlX0@N>eFiY9Sp+N|>y*DTFqegejO!P2@sjQ)o6> zh)}v|@e+GV^SL@)HuFeNmgHVcue$|PR!(->*0P>h*scc3WsU=zJJ7WyjDF*~F|DnH zl(dZZZ4MpU`iRke-~fm$X0nL2MI4vlbB2po0-PB&DOMq zr|DSroFj{0ZJ1vFOEjH36~YKsm^GBf$l)RMZSKNQ;us7XSAt zmA0y@t<3J-_gn1rx{V)JR#gK7X2_dNm{Nq4Elnwvse}lzQl=2n)XEM?Axy2=g{4hR z6k=jiFq;g7nAs#^6C_M#9df`4Q&mo?wE-Ya(=@1c{%w#es1Xd;y znM@R7cORNVs&4uet8va;RW*4Un~~UfEz#t|5J-SH2~A~CsDYwdH-Q*`El;F|2W9`^ zgGT$VJu=Zh02cxiSpZo~oFOJxQJm3C7K!XRLf>0gg5vh zlEVox+|@4zI(v-%gI$zKCqSG5lSKsU?*!IcXM+Hn#B4HA2*f5cOc0yS+S$lGIb2?* zV^!rkR#m1Wl`)Q1L^u>R*;)5nKpMot5KehQGbx*)Y=*WqDN9i*o)M{`6eWifA~Bc{ zBmKiM>VH3e-r*XvwV1vj4J6mE{ zL~Lm{X($HuHcBwwwA7u*WM)$k3&3<(FAWP%jTfx?_-(qRba%Myff+lCVB?V9xm}0;tVg)7}1e+KZ2sSg>t_|8u+EE_CcEGXaSJc}e zb$_D=#msCl3C9W*#iEKwr(k5n06Kv9M z%=%joir=Vm6O%BRVF+f!3r#q{3}zTYz+h$r5m;%0$^p_)AlOXgg=T9ai!^K!u$}k> zo3yb0=H;f>Q^=JrG}deg!A4$bY_MR1H4F$XnS~)31`9}LWq?QuhGd2TL4p|)&=Smo z1*Bl|s>!iGFlD;|3Q8DG+|t?38%JdTY0a$2xr$G_02N3mA}Fm{5s?jImWH7<8xA;avL>k|8&W%<9B@iPIAE9|SvZ$o z2-cE?)8Wt10z^`P1hW>o{xCrTU}7+VMfS$Gg#{-DX?6iQtK_>1Be!``YoUm8)~Jc0 zG*}Tqfu&6@NS%eJ$#zskHW9gyY?}nxLXj;b*|tr#7t&ikMKa#WN2S;Z8QM^a4J}Q> z&}?YQ1}iq0A*Eo0nIvmAq=a<#m1GGinWO^^j*_yr=XU=KXH5fQ7gR1*s*G6LHmr~`v<;aBr(IPU8d7UESdwJzfRU0UYe;5W zvLtCR31*VaT0oFsXaN>Nuy(9ZXu%MU^*N2}#O{qSTyV(40SKD&Dubga?I?|iwSv$f ztx37yh?OF#Njr;xlVC+;C|j{20SA_X5`vX&lP#pMg@noik||cnkg&~!wBI(<`lEqM zBn+8~*@nsp8O>-zMMx@(jc|yhRwT71sST2*hSZuQOGsuV9DpPYLknghz)CO+!K?&W z2sW4;nC!+WXO5q9kOGwjB4R+ffShH+NNEkq+M&=yS`$faE3Hk^S`ie4)WT*(f|V_x z$dZ}_lr)5$$*>ZVl`x>pjI>8gR_2Ilmz8zf`}e~J9#{MZp5QkeR;jX8G8vLqg_J5I zWSK3b9VV%5NUbdq4w2Ma3av;o+k#CgOby9e35G$;wqQdFuqFo}6QGG%<`N6T$R-%l zqb!yC<7_*tB*lPW2a;k4sR_hnYX_E)+9ItTC|VO4T1cpLMrk2f2}3KHVwEt;l?*`{ z!%*Qc)S<>28ykOa^P6}=-*i|($^#x3vu43aCPPxGh_K6rEVoUebxPP_l3E*rRYou? zVm3rLB%OUN1+#WRX#yL>p)4d#`3YRZU7^*^|8XRkGUUcCn~4My8JfsqkYFK{PNz)` z%CHcoCTVM#VkKon$7MzfBc`)ps;Z#2ZiNDVulX%Jfp0miu^=v9TrUO(AuVfAXkA6B zDlS-;leQD0LdS^NCT5$owu#Fk#9FyFXw&GwZ!ihzSmH>Eg)o@N;JD0a5+;){Sq`PO zlqoG`m}4^CM+K&09c%wlY^B`$0-~x&;4Or s0U)xMv9ZEER?om<2ENApcXR^&FX6M$0|G2jPyhe`07*qoM6N<$f|r(Y#{d8T literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Email_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Email_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..af81e0ba44cdbbda4e2289df0918610312eafdc1 GIT binary patch literal 7410 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Firewall_02_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Firewall_02_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf90fdd69674e103f32ddd56a14afb158bcb4b5 GIT binary patch literal 8428 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 KMNUMnLSTY)O;54_ literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Gear_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Gear_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..40d373515a44fdda52bfe414aed8754eada1b72f GIT binary patch literal 10678 zcmW++bySpJ6JB&wXa*-kJBzGxH9nrHqS3g#`cra8*?lb&<0Zas*+ZBfok;GJfQQ>8WDk0|0>H z{~IV}?=R_*i^o!6R?^N zGxAVm)rDKV{b*_4 z3^TCk(G$<+u6{U`LL!u?8h>rJ3c>vwlq2YmXYleceh`1*RB*r9kHsPK9jDF%9@m@8 zR}_^p#lna?h;&MVmYhd{pl@+e%r9rlyS7utEzRS7?C{kX4eRuy+?RG{bO2eX6YQQRAC?$V zV;8g*tmO;cN>_ET5;1!`c4(|{(bq~B5kn&lz=d7EXy-ArnDvV|nphBPgt~c{O}$yr zbu*t8aIM>Dmj`jm`Cm=PNGs%tYAJ7auB9WscRZ2~ID1m9&Ek_w)#Gb^cfap4PBu_Z zYg!cDl$WKbm99jpg~0{CYaGjV(OgBIJ0@P^g~8TOVp^nG-+?LACEPuL=t(T(`K50d zGTS0`o>n2f-_g+f8lmoIfYyY6G71&-peE0IpE#EKmClsN02O>dU6T#3+K^2iGM`Rb(7fqO9ZYfM~ z{0+K(G4L9}<(FYWj*rDFr(Ju`2A|iPvDOOcfrvq;x%OxN0L~TK7u}zuFY|0wvsNxa zR$h=Q$y#BEYB~R}IdTZ$e`{?#AtatsuwT)vhF!V|3* zDfLU|fi@yz(WVK!MmW=pKYj!XpfvaY8;4Azf1w>}wWrDmn%h`58I@&}J8NEU-n=1+ z+#vu;6bd6^0$<>{XcxKu;m^-zq7ZzL6~xm(<@}T3qsh0Ih}qUp(T#Y;m`DB+5@Z8V zee3hv_&8XKpW3NvD@u6YeJQ|KzVyO-n%i?^cd9EZ@%uH5e!k43o zh@)%?UvhS-%lmYCXXyU40Jv6F^{-ZjqU6v3h`2FKI6gbBaRyE&+yYQv~Zs)%&V zlYk}aMu{|n0QBeBb*H>j-1fSz>4^%e%vW}W;75_0q=okbH2glwU5rqh3ItT*lym%=+E=P4OjRPmBnfP8GfDy`q|na7eOd35;c^|#V``EjJ!j|%j_~<)!c$^ zXf%B(CVf88Wq2M-=-K5gLJzIXJ}}t@VZ|PA>!@W4+%3&mlqbqg=n*c55=TYa3x}Wg#zj^`Oq91=4QSrS%|R{RO=#b$=30(*FG6o$ zAtAK_@^8*AFNt5iHKwd!taFt5@Z3_t6iX-9G`+dRxQIquiEi zmH05&vLcx<89g<|g)w4^o3=5wk*KJD6hP&2Vm*>UDJzm?QKVc3NDoVLnb3Am`-*Ba z5Q2)%b-hmlvz;JI5nX_aY5n#3#|WX`>Bq}Mw*Wz50YuO!&{k0g1j8q~R7{x#Q6MiH z^40^ZjN$M5|Ey6mmz3Ami##1G>;o z#S{we^R8qK5avgEMzmzGzHzQpac0FBps+w**jP$i=@y+=l8pZHOe{%PD{XaP1*ZeZ zKtJ8zroQR6#GF$i@kqQ{51Q6;3Grx8^b{%bIUw;oK!}1-PG1*t1yGZFx&fwXqDG`F zoqnJ7$PCh&ex@B0M#aN3wDjUg>?!0J&f52IQWM-T_tE|o>7$N6#8U$oJ8ng(&iW52 zGis2n6j!t>WAG#rfA*pBKO{elZ9JSzHzhuQ5*%=>p7vMn3%j|A3JOz~Dv*jVa57i6 z$v#*C98RgRi(h2aaMsoCRxl;e~r)q~>J^FWw9hZYHwq`_>nbdyv)tAt|ZFZ4^feH{va zyChelmRD`CH=SOsxdub2uOu~B$;L?Ht>n4uy7;%v&*yP06jrhrDR@c=*d3DFdE zO>x70%uu%bsmj~FViC1FlGm@5CS~FFPr^5D5$(I^zxK5ENMH)@1r1%lS=ZUHU2IFj zpdF}Mc=3*3q9*gh)dqxO_qZ;VD8BWhPFeV)&wF1fC}*-Yv4~CVRg2qj_aLL>THduM z0gl9fnvYB--{s!N3_ZP!d(`v;gf~*%%o-{zjo%V1pH~n9hlP@QC~U)c(L8EC!0ZzQ5lnkp$?11rCyOgv z6PrymnHw6nPUctTEKL>RIYTwpZ zis$7Vv4Cp*4U!&gz8m*)%2)0?%s*^v>OABK`BF1KNw85&&Qtr2xZ>fdIOc zs}kIIwcT|md| zBL_9X%kvR{IbUIIv#+!__6faQ`D-=sOoylGn##_Smns7$Rm`)k^~4kHtO#?EayfDS z)!jNE9{UGR9}LOLrOB(TqRCT>()0FaAfYS3MvL8oR*$ZMkzU7y^zSL7;O}87aCZ)G z3cX7)`7a3yMw^K!?4;mN57>WW^ZUG#h$RNz_3Zv;fWzjJNbu0oSK(;g>|z+Dg719r z!zbxHKErKm;GaFU#K4YCJ{iu3o8?Vcy~g67u2xsl^<7+BY@jG*XJ=SgWfvDV><@mm zL=QXQ@AVYWKgA1}!bb=fm^}?SR`tzI@iw zl30*7ndWNYhw2(DH?Zh&V`joA?a*k^lgEEI1ZoJcqe9FH+GF*uL-b9l!+k!fJIkZdJPjLQiDgaHB7Arl^RRy- zHhLrYQ8sC_a3?A|&Q^1nVCg#s1=KBG++1%hX<&YNqur}*W(zqT@h%#dsN$J@k7%`j zk3BtueDYeFN>$vXDU)_+&=C5;N-m9h5{{@y+|ZT0QF7EZ{JXqy=R`5E-u$7kP|c|a zBx|3mKI5g>$B%m3`jEVdN$kR#n+GH|6GZ2iM9S>Jb_`uaBt&&?&V*pcKZ)Gx@w(dh zEg@7<`h!u-e4417LV5iV70Kd{p+kx`Fsy*iVBRj_YH&{XY|!FcDJ+5-2Ont!laHW2s8BpfBcLDt>@k5DQ-vl9`)#O;-jyUqnVWv!OGnIK z3sjnJTfW@NXAVA^E9%;<`&El0f{KF#1S-7ZNc`kA--_89pvJT~W0ydE6b zJ8F`be{9}p+Ewip@Lwru*BhU#RDQ*Y)nO6drnB$M6l+_q*VS5Ocf=&|q*5TkcC$0g z(OO2hzViI;rf8=(z!a+Cim@FI#Ph@JDI8(&%;d^zBpKr62|qhW9g%16?o_6QMzehk zf1h_k4ThN&F*R9L*5Ws(Y%YpusY*DCohJa+1_EnS-+4fT1<-lNiS~Mi3wLT6NYWcF z*4DhHPe#CYY4B_K%e#WqG>P3%m-RbZE~PF7UFvXKImglpA14>;jsR%=`c^B01oExg zPHgXZc^;)UeZ^XAR7;&X!S>1jAvbHjwUUu<8Fge*Oo&+M=z=ONIHa6i3!tP9bJ~UL z61~QV4w#v;x8VC~i*7;NyhU4i#Jd~|uVzPVi9Nhjwyj&rkwe1+`ta0*7fqVS-x&8f zl11u!Cu`v*{@B$BT|Q=a#9EU*3LqFU!)|N+%%QPL(?+D`zevFqut*?QpoY1{2~Ty_$L4Fi73G570gJqk&5#VyY0ughJ~ur#giq9`=J${6aY1LXH#?FCuM zRWb+vpR6i&e$uZ4-x=90U+DXx>Q! zW3|`J#zjGl9~IAQw4C;n^}=8T`sN@|;UMzGI16=Mlt^ibmpBQE48|7-RG5dn;%jCD7)N_Oyb%X(|+aFLO8h-4JWTV&N zfV4{ORbUfeHN)FOyCAOUr8p5WQ5l5-Qxwyj?IW-zU0^Gu)!MwMsM2SoS<*d zqH6^OQjSQX;DrQkB=F#O+Tc48u99F=TmBtXJaK2J7G=8<-^Cb-1RLsVJHH|{h6Hcd zb%>Wch6o38d&1!^+c6vS2?C0gkC3K_mfTRDYJ`dL zQ^bb1KQwKL`KC*|m;yP!yJ?h#1~rHl1`}wdv5oHjSL#A$Nh^ZFF;VPuF z>Gf#cFW^nwdNQb=VSD|9LKwSdWi~0LOf=FvBVP;m4W(QCF9hGCm0v~k`xXajNI^jn zlM0}ce}2GnnYZ{VeJIAJOnCtqtX|yF3Z1*Y=u$Z}2mxAZ0z-F;id=@t(7Q6&$kZ?@*4#eonCBzy4%e03 zHNq#2K&uGtkk=UgtEG(i_somYY}@bA@NR%z3lmB5r~1WFAr)rhjpIay7)}(%<8RV_ zY~QB%2m#IHbk)>r_j{-?`xOZZ`q}K4R}|F-lmyux`)YIX^dV$Fxn(CaGCP7LPTC#D z;2a?30rpCiO5CQX7|(AW^eK>qb$a_X^)btKEjD;YpIm&&5d2qlHwKNtLeIZQScn)O zb0BjZbCyZLUvlYLBTU%zqVQPW4xT-^QOG|yl|Z|KU2~VbWnttDobx!>%IgFe>0S!XyA{HX;`rQqK!HKcvO>@lrCExl#|%4M+)1N206X^_v8kms+JKK(r?vd zgYOZyx2^#OSSx`p7+=H9KZ(11F9Cpz;oZz~EZr<}JTmognV9#{5|f8@#r{wL-Wbh3 zJSFazxB+zrY3B9Tf^*lb!!i%Vx~MGDJOmG2jm8h?)Kc)r=Dre-y$44zdDdkkv&eE= zZoK|Y6F$Q<#qNpvC{M3QTwa&eyV+j3MHE1*b$I$O^ ziG;_#2^Wt=Ku`x=LgcpZm*z@%PER#I1Y6i2+oXXNG~Ljcu%pPHjm{}01-9nSy@6LU zi9RA_#*ZYel|Y#?@g@U#W3^4x=%X`ZHcSt3+pVSlX-(ZkZK#H3lB*zokMMlDf#)=I zEDtHgTGuV8xGT)cSb4X1Lv{SDlk$rFOO@-K%y3nVMZDS5_(rnhlgcH1&d>3)J5p8xn%J{}2E@zg;wD@Z*`{<=MB!x@w*P_VA@YTnn1kN#~kg%Y! zc$(mhciQ3Yt1qGzh0Mdy_w=seVl%sq@Te~{HeM%Klj~%{fH~VAmws!R62Pr!nW-)z z1a^oWZN(lHN*h&Ih;k$kZkVG`@q4$+p(LOckcIlYj3Q`{=(}$`!rVK z>pdqi5ie*o2HfumBl4ednAFJS)?4`*5{qT6|A>_1enr4zSn#b76WV^z(-{hV>ipJd zD1)ntok*TWTUr=zUxv8xuC^@wH{l`L`>ElJ1T_J5y<$=epGtfo_#Jsw;oX)^GfJO( z_6z()J|%*7=l+)adRd@vlOm5e%7n{D{HdHn4B_#tqY05QVlU}8bQg)&9}Wr~wOegg z2|A`zNU+ah>Mev!J0d2>G7>B5j|48ZB#`_iTE3=kO6`LD5xHBCtNfQ{<`PMi7eNkc zf zU{V<$r*hR&x@(eA+A~Ch9eyS?E-wE@m$AW5DlhUZkc+lK46Q+nRWB~Gw66Q}j$=?V zxIED(dZ|d-Hgkcgug7Z9#EDlDoNv!&1%rwteu;dN58g~<*aI@kjejuv)mK-n?W$e} zzv^u!vAbNHZrag724{om5pW{9RL8m2x`OWmcF5^wMzz5J@dBkuNt z(y&nAy!wc|(JcoB5goi6OO)aT%OPp(yJmo5L^bxelx@aQ)q-4_z5|Ws;@t+?0WYLx z|Gp26RDRpYPwJD~$)prD;p_K@Ep<0ouQCM56}0UQ2f*8mgLl4s2kD+tQjonac20fW zgQ%S(h4{jG7UT;)N`*P*kap6|c{nCH`=DLD8!$ju)O~&Gd?}LH>z>PrJ13$3*-|Te zDkm86T4hDsh*+4^S1DX$V|X$31PvgpoU_x*ZGno@X&68ju$L!gX`9t-3LmQLHF7k< z9}Qqte4Sl-I{hcz)cfiqzTsh+o^Z}y0w`W&a-MrJduG88Aa%qDJquXvFfc|v)T4x1 zAQ;F<_VVk3zu9s|xj))-VE1mLoIY@>D9vPBf3EKoLX7A;Iu(nyyB?7Rp+H(E-Y?`u zhp|>Pe7P}t;d0ai-PNIiA3Fjo+gjxh6BBgI%KRH4@A27#Ezz=RcT}2ZjFE|58@BJZ z`{ZBl4FPC_b3tb^P%?-0UMB#CFu0) zS0Ib>LJ@YnHB9l){3pqkcqt4>JvDTFFl}CxfAz6Fwwp+KX8@~-VG1KC9uK8S<`ID8 z*gum$4Y~|^2nTx4iX;P>L!6*hqJDrrw@-}tiy~%KpH{M`GFJ8GV%KwKqME7pT~YQ% z=87`SkU!j=U<%HFBJB6Q;nGTAz&ubE8>3h3Z>?nXr=Rr8NGfC%kgEP-N_;V;5r06& ztnAbTU@Q+^GU$l@UMM~zZyV|brKEwR1^uc38!X7b`qZABN=cYT6r6CyRqN>h0*>>; zO<&N&2dqNo;3Iiepq>0}WZ0A0PoH!46RzM0)i%(6;&FN}Fl%f{1q%=XR>~-%G?&$a zyt5Ai-6<ugC%#_ur=j?x|<3gG+_FY$3Sdok1UP>jo9hnRXR! zxwIEHl0vGvqMXJ#-X*9H?N>KEF&HoIpR#yxF963WXbR7KL|2^DE8qg26(fsb=1!^_ z@H``X1WX++KaioC;!W9g2dSlu3q>5kO z3(d>|6wyoaHx@XrG9$iW_&rvd9w0Q>+FYRw*`NUoP`2;^?EHktH#KDA-YJ^56D^xn-XTD};bHI-JoGOT{pN zl=DmOm}LE6Lt81FNa}4`>~YpP*l=um92`~=a_Czm@~7T}Y_^0Q*+d}vUoQZW18zjD z)8)OZewr!V^I;;_zJ?aTF4)F>;Nx5?Jfg}1g{>ziEnqzWe9Ai=HAIV?u-He#M0#7a zKhyzhYx^Gtdf2WeqZzc`Tv}i0uIkyAGdrpb5E2uFr@zKn^w?4u$fx%@SW70&j_im3 zdhPG}Vy?R_$sLm^ms7b+{H$@fAqM;jZOXC*pIHtM7L=1Q_FFE_bEm`46u^iVe{OOU zPwMF>d=!S2_VJBjXt^$i%wD&EEIM^ zd)$20aOjc}X3PcM;LMr{Jn$)UgFehtQ2neyu#BYMpWw@QlE3DvYOBJxpEcqv zLDi30PZtWMz{m%MCO=_W@NPksqv(7)nY#7zZgE7>bS^~Nc)yFzn%F`=C$CO^59)cb zvl%Lk|I2}>;m!s1r!Y#^Rme`C5~~`)McgJYU4^K zhsfj)UW;e+oR$*kGpKXdQ!>Jl6Ti8jhAs3lOk_V+Cg}^ehk-juqTwArZiW(lNllP+=`GuMw3&SYJi)job~9IbQeen592W4~yxLf|MWifr$$88LkaM4(# z;H)}>QNp-e5$uP64yM&$kYZ;0=MJ((+rIZmvfED>)?n+22<#Ywqb4WH&D>xN2z>97 zgqj3z|LO_g8LvEW5P=z`p?)joSt4^%uh+qZ3AeI}&l58&#*PT(9%B*A`I8jqmr3@Ej*pSHjw5ts| zruFIQ=?4$Ya!lcsEmh#Y0GyV4*#Q7^AOdXg#X@fB0Tr1Hc2PqI3-lOl&Pi&vwzF`j zbd+Z@w>oKNwE?LsDd$ojL=B-w(H~%MEuV>@c3NM`9)LLdw2wT1lEVUY4^izStN*KN z&=Miw`wb#!L1ji52Sl8W;@Bh`{ehn%1l{e8jef;25rz@L~u z>#lXYK{$(Zxt&-LnH~;lQLs0@R=CEeE@=_NeytssNLe)3O3y2j^xQr`dG zO1z7Wd8pk7$z8FR)X)u^&Wppz@TVfXqbpwU4&9s&{7cwtD!b!*?31_oc+s<&;c@1~ z1a>&tu@2sBL(_naU@Nj-_j{dq&$m{6>a_gSW9diR^dsX$x&Vt)X08R|b%Rt0N+8yUKCckH=oe{d@X+aF{gb zV^Xhc^auTgfwK6s>d1AG`rkIdl#w6WfCAWe28?-ZyX@^nMnZSXCE>uCv1E!h{4R50 zvAALZUndkN?m&M?Op1E-g$` zZHuey;mvB;!@u_J8M+9S{k@SFW~`7^;?Q5vfQ&p7K2}80`Z>gTTbrQSHItm{<$T5;hiAjdC_l*tX*Lsbxzu<$*WO9V*=O(zUPTwAJ6>+P z$ZX_i(+>uX(sQks?zXKBIBc%*O=<&9kN4&JbwWO|ZM_As`;FSgEj}j9sAE>f&8_$l z^|xt!#BPUg`OyNX2$p)+erVf5d%h=ZW|xsY3+{)8X$?B!J~?jrt%L3H6N6rYD%(4# zCLT(;P)hE#qQ$;s7gldie#pX=VUuh48TNtMBXGX^-(P81(HL5T9c?qlMwC{K1T;Tx@g(H&tH+rmLDiRd|i2?2g$_+@;Y(cOi>ypAE zVGc@b5G(m4N7BgCEQD=V+-?V$emVD)!QeXYJEANDFftSxg<^oDLyL05xldb<#@I?!Q=1w{~X zdP@{#^MC?5ZQT4J`8^P2zm@gBeXi5(O&!c{8%mXZ-(XEGXXE0A|1PAQH0w)@rm~oj z81H?3Qd54GeJDGPZd&@TZn>hBj}nWQH>fx0&o#s$(nANs)$f*=I^VqctY-fiG&=dO V^T+Gm3}nwGKvhXgu~yzH;(w<*<4gbm literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Graph_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Graph_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..7f20b4e43d1bbea5dc8ff13b3f8fe545cd36390b GIT binary patch literal 8045 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Laptop_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Laptop_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..ab7ea65966b8c15245705d9e52da2bd48df3437c GIT binary patch literal 12593 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 T`?jPB00000NkvXXu0mjfo8-Oe literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Lock_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Lock_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d815f0eb9213d17bb2e745423bf16eb629315d43 GIT binary patch literal 13233 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/MacBook_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/MacBook_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..0f6802ccfaff72aaddb71cf486277dacfacbacbc GIT binary patch literal 12713 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Monitor_Tower_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Monitor_Tower_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..223b27ad7940ec9fe5d6b57b6c3081e2c8a6c73d GIT binary patch literal 10301 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 P00000NkvXXu0mjfmi}s~ literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Piggy_Bank_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Piggy_Bank_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..89f51c15436fe01404c85c2484560c7c24ccec95 GIT binary patch literal 12780 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 NHRTsd6-bNF{{cZv_@Mv* literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Printer_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Printer_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..3cee0427c8b243db1065d2c923a08f55e7eb8650 GIT binary patch literal 12104 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 KMNUMnLSTaFwhycT literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Server_Tower_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Server_Tower_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ec7b16ddeeaafde4e3393df84e4f2bacf5dc65 GIT binary patch literal 13352 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Software_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Software_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..a3deb93e792241eb2fc903ed6fcf857c9f0c8edb GIT binary patch literal 11020 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 =881qCIkOaPe%;^oc) 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
clAghkd>xEonQf+ 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 atYVRrC;d}(dH1a-fR>uR>U(AD$o~VPRAKJ` literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Suit3_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Suit3_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..68a1f1c635f052ca0a05cc4c4d7e483977ca71ee GIT binary patch literal 8326 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.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 L)#WOlqXYj36@F>L literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Tech1_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Tech1_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..95e411012636fb96f3245ea4adf391c2c2dbfeec GIT binary patch literal 7146 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Telesales1_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Telesales1_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef7b8a7f78d138bec079e8c615d5d6c66f5abfc GIT binary patch literal 8257 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Virus_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Virus_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f0dfbcb71109eafed077b3ca675828ee4380aa9e GIT binary patch literal 11358 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

m3*ydkcVn&cZC?%&cvt9*x$gzA~G> zzqRe7-2%Ai%CWI89-~9-Y6q#EG9}UXi*qle%r`vk-g_rkdgCN%`g{QQS>{%IpE*JH zgm8k6J4_0Kow;{Uz~@q;$G&oG?9OAgen@3ue|JHTKjuvsaCbj7wu4DWp98im|chy=HWD^cW}a@5$o88CB|R zjg`?WMo0f$Tl*@_yu%pt?3e7^8LjqsuiU@?XAE4Pr}^?6a;nWk!vT85`1swgT;;rQ z3vBlQ*&wk@nc0*qAo?np`Gv#7Uw*;Pou~irUAyi-W;f{A*cXWTT{8&<3$5*%oBI2E z9}*d$+wA9rOc*Osa(p1x$nqLko7RkRa7c5@5obbPOV>FG)aF9wwLVO88wN1mw_9=d{>^t zco^oYY%Sl@mU8;SgLUXX-oL+o)!5kUuRL(zoL7vG-~BMmRmVScS24ct8y)=)9)jB` z0h5KewE*@(F|iNBJWgAsRQf)E$hDiF#Y1#EC1Ac}=gtVs-vjfvt{NNr?!z!o_GVLv gYZdT9JcPIZ59mpWL`c|mT>t<807*qoM6N<$f;<@mHvj+t literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Wireless_Router_N_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Wireless_Router_N_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9bace31753aa82f9808c07e0d4ca14706aceb26a GIT binary patch literal 7468 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 DCcjbW literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Workstation_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/Workstation_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9aeef9e1f3fdb45108d438ffdb1b3b2bdadef202 GIT binary patch literal 13635 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�ot%q=k|Y@ntGWV54g#)g3%p5+NlB7C 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 DNeeIn literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/iPad_128x128.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/clipart/iPad_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..88dc8070296eca2a664b9345d364711f196b6f17 GIT binary patch literal 11727 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/eip.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/eip.xml new file mode 100644 index 0000000000000..182a042789ad3 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/eip.xml @@ -0,0 +1,2003 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/abstract.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/abstract.xml new file mode 100644 index 0000000000000..2e4c8ee9db9a1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/abstract.xml @@ -0,0 +1,667 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/capacitors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/capacitors.xml new file mode 100644 index 0000000000000..56d2c84a3bcba --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/capacitors.xml @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/diodes.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/diodes.xml new file mode 100644 index 0000000000000..926ea01841a2e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/diodes.xml @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/electro-mechanical.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/electro-mechanical.xml new file mode 100644 index 0000000000000..8c80b44a56c8b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/electro-mechanical.xml @@ -0,0 +1,1722 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec417.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec417.xml new file mode 100644 index 0000000000000..1120c63eb7dc8 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec417.xml @@ -0,0 +1,1143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec_logic_gates.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec_logic_gates.xml new file mode 100644 index 0000000000000..e03f61efd9511 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/iec_logic_gates.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/inductors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/inductors.xml new file mode 100644 index 0000000000000..749103a196c15 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/inductors.xml @@ -0,0 +1,993 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/instruments.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/instruments.xml new file mode 100644 index 0000000000000..0555614cf2401 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/instruments.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/logic_gates.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/logic_gates.xml new file mode 100644 index 0000000000000..0ec8b3bcea817 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/logic_gates.xml @@ -0,0 +1,672 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/miscellaneous.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/miscellaneous.xml new file mode 100644 index 0000000000000..efb3c02ff7dfc --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/miscellaneous.xml @@ -0,0 +1,1649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets1.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets1.xml new file mode 100644 index 0000000000000..bfdd67b23186b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets1.xml @@ -0,0 +1,821 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets2.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets2.xml new file mode 100644 index 0000000000000..6e61085409c40 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/mosfets2.xml @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/op_amps.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/op_amps.xml new file mode 100644 index 0000000000000..05b3f894b8e4e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/op_amps.xml @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/opto_electronics.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/opto_electronics.xml new file mode 100644 index 0000000000000..922bad6403588 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/opto_electronics.xml @@ -0,0 +1,654 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/plc_ladder.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/plc_ladder.xml new file mode 100644 index 0000000000000..425c743cf9647 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/plc_ladder.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/power_semiconductors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/power_semiconductors.xml new file mode 100644 index 0000000000000..8af2dc40b141a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/power_semiconductors.xml @@ -0,0 +1,743 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/radio.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/radio.xml new file mode 100644 index 0000000000000..e79e415b796ec --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/radio.xml @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/resistors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/resistors.xml new file mode 100644 index 0000000000000..4090383adccfb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/resistors.xml @@ -0,0 +1,617 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/rot_mech.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/rot_mech.xml new file mode 100644 index 0000000000000..ef768904e3a66 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/rot_mech.xml @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/signal_sources.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/signal_sources.xml new file mode 100644 index 0000000000000..acd0dda359db0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/signal_sources.xml @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/thermionic_devices.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/thermionic_devices.xml new file mode 100644 index 0000000000000..a87d31f72ff84 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/thermionic_devices.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transistors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transistors.xml new file mode 100644 index 0000000000000..0ff4f1dab3561 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transistors.xml @@ -0,0 +1,600 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transmission.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transmission.xml new file mode 100644 index 0000000000000..d33695d541f7f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/transmission.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/waveforms.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/waveforms.xml new file mode 100644 index 0000000000000..9eb9fb9e6efa1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/electrical/waveforms.xml @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/floorplan.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/floorplan.xml new file mode 100644 index 0000000000000..41103415217a9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/floorplan.xml @@ -0,0 +1,1809 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/flowchart.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/flowchart.xml new file mode 100644 index 0000000000000..87c8b42b6af2d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/flowchart.xml @@ -0,0 +1,920 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/big_data.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/big_data.xml new file mode 100644 index 0000000000000..7d63619ef3783 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/big_data.xml @@ -0,0 +1,777 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/compute.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/compute.xml new file mode 100644 index 0000000000000..be5a41d780e67 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/compute.xml @@ -0,0 +1,708 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/developer_tools.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/developer_tools.xml new file mode 100644 index 0000000000000..d564e0e7f65a4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/developer_tools.xml @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/extras.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/extras.xml new file mode 100644 index 0000000000000..c20698ffe3c52 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/extras.xml @@ -0,0 +1,748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/identity_and_security.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/identity_and_security.xml new file mode 100644 index 0000000000000..c8b923d28514e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/identity_and_security.xml @@ -0,0 +1,681 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/machine_learning.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/machine_learning.xml new file mode 100644 index 0000000000000..e88a6a44d22d7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/machine_learning.xml @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/management_tools.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/management_tools.xml new file mode 100644 index 0000000000000..6d54f545394ad --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/management_tools.xml @@ -0,0 +1,761 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/networking.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/networking.xml new file mode 100644 index 0000000000000..6d917462f453a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/networking.xml @@ -0,0 +1,951 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/product_cards.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/product_cards.xml new file mode 100644 index 0000000000000..e54f6829f8938 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/product_cards.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/storage_databases.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/storage_databases.xml new file mode 100644 index 0000000000000..6b9c69034fce2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp/storage_databases.xml @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp2.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp2.xml new file mode 100644 index 0000000000000..b43fb71b995e7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gcp2.xml @@ -0,0 +1,23206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gmdl.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gmdl.xml new file mode 100644 index 0000000000000..4cd7576e3970e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/gmdl.xml @@ -0,0 +1,2952 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/icons.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/icons.xml new file mode 100644 index 0000000000000..2e434bb4e5dbb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/icons.xml @@ -0,0 +1,2484 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/misc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/misc.xml new file mode 100644 index 0000000000000..dc828ec1d4371 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/ios7/misc.xml @@ -0,0 +1,2184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/lean_mapping.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/lean_mapping.xml new file mode 100644 index 0000000000000..d7fe23f5af662 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/lean_mapping.xml @@ -0,0 +1,462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/advertising.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/advertising.xml new file mode 100644 index 0000000000000..790363d9a5003 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/advertising.xml @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/calendars.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/calendars.xml new file mode 100644 index 0000000000000..d81328071d142 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/calendars.xml @@ -0,0 +1,1595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/carousel.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/carousel.xml new file mode 100644 index 0000000000000..7979af3e82607 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/carousel.xml @@ -0,0 +1,599 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/charts_and_tables.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/charts_and_tables.xml new file mode 100644 index 0000000000000..08a693710172a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/charts_and_tables.xml @@ -0,0 +1,626 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/controls.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/controls.xml new file mode 100644 index 0000000000000..7a185933eb877 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/controls.xml @@ -0,0 +1,648 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/form_elements.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/form_elements.xml new file mode 100644 index 0000000000000..baba97cdc766d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/form_elements.xml @@ -0,0 +1,433 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/menus_and_buttons.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/menus_and_buttons.xml new file mode 100644 index 0000000000000..eb55a14f3241b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/menus_and_buttons.xml @@ -0,0 +1,848 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/misc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/misc.xml new file mode 100644 index 0000000000000..67df6ab17e2fa --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/misc.xml @@ -0,0 +1,2183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/tabs.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/tabs.xml new file mode 100644 index 0000000000000..f05de3e5c41c6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mockup/tabs.xml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/cloud.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/cloud.xml new file mode 100644 index 0000000000000..22fdb3f30fe01 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/cloud.xml @@ -0,0 +1,10257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/deprecated.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/deprecated.xml new file mode 100644 index 0000000000000..65f07db23659e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/deprecated.xml @@ -0,0 +1,946 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/enterprise.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/enterprise.xml new file mode 100644 index 0000000000000..c306d3d05f1ef --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/enterprise.xml @@ -0,0 +1,5289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general.xml new file mode 100644 index 0000000000000..d79a2b12e6188 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general.xml @@ -0,0 +1,1412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general_symbols.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general_symbols.xml new file mode 100644 index 0000000000000..69f84c7bc8dbe --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/general_symbols.xml @@ -0,0 +1,587 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/intune.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/intune.xml new file mode 100644 index 0000000000000..6e60eb96f8f45 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/intune.xml @@ -0,0 +1,3517 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/oms.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/oms.xml new file mode 100644 index 0000000000000..562d22cbecd8f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/oms.xml @@ -0,0 +1,1458 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/opsmanager.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/opsmanager.xml new file mode 100644 index 0000000000000..63cb46eda9434 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/opsmanager.xml @@ -0,0 +1,2900 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/other.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/other.xml new file mode 100644 index 0000000000000..81131fb0f02d6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/other.xml @@ -0,0 +1,1292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/system_center.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/system_center.xml new file mode 100644 index 0000000000000..e1924b73afb7a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/system_center.xml @@ -0,0 +1,675 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/vm.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/vm.xml new file mode 100644 index 0000000000000..306e278c34cfe --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/mscae/vm.xml @@ -0,0 +1,1949 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/networks.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/networks.xml new file mode 100644 index 0000000000000..24191cc4ab46c --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/networks.xml @@ -0,0 +1,4976 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/clouds.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/clouds.xml new file mode 100644 index 0000000000000..7559b2c43467f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/clouds.xml @@ -0,0 +1,847 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/communications.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/communications.xml new file mode 100644 index 0000000000000..8b5d43ba6a600 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/communications.xml @@ -0,0 +1,7570 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/concepts.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/concepts.xml new file mode 100644 index 0000000000000..2fa7fca02b386 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/concepts.xml @@ -0,0 +1,6700 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/databases.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/databases.xml new file mode 100644 index 0000000000000..3e6d8792df8b9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/databases.xml @@ -0,0 +1,1748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/devices.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/devices.xml new file mode 100644 index 0000000000000..71addc3ad524f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/devices.xml @@ -0,0 +1,3171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/security.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/security.xml new file mode 100644 index 0000000000000..5ec8e09018443 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/security.xml @@ -0,0 +1,2258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/servers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/servers.xml new file mode 100644 index 0000000000000..2d1366a4586ab --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/servers.xml @@ -0,0 +1,8510 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/services.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/services.xml new file mode 100644 index 0000000000000..c0e0344e2c3c8 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/services.xml @@ -0,0 +1,3232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/sites.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/sites.xml new file mode 100644 index 0000000000000..b3d0e028120fa --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/sites.xml @@ -0,0 +1,1731 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/users.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/users.xml new file mode 100644 index 0000000000000..128d5ba7dcddc --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/office/users.xml @@ -0,0 +1,2307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/agitators.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/agitators.xml new file mode 100644 index 0000000000000..97099e4da1524 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/agitators.xml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/apparatus_elements.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/apparatus_elements.xml new file mode 100644 index 0000000000000..30f1d7fb15361 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/apparatus_elements.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/centrifuges.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/centrifuges.xml new file mode 100644 index 0000000000000..4cc93ac22d9d1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/centrifuges.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors.xml new file mode 100644 index 0000000000000..596f20f5c53f4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors.xml @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors_iso.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors_iso.xml new file mode 100644 index 0000000000000..96cec30f89717 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/compressors_iso.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/crushers_grinding.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/crushers_grinding.xml new file mode 100644 index 0000000000000..e07db2b2e137a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/crushers_grinding.xml @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/driers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/driers.xml new file mode 100644 index 0000000000000..af161877c11e5 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/driers.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/engines.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/engines.xml new file mode 100644 index 0000000000000..eec950f7e0367 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/engines.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/feeders.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/feeders.xml new file mode 100644 index 0000000000000..c8208a00e7553 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/feeders.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/filters.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/filters.xml new file mode 100644 index 0000000000000..66d1972ebbf82 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/filters.xml @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/fittings.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/fittings.xml new file mode 100644 index 0000000000000..ba53e25a83a4b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/fittings.xml @@ -0,0 +1,628 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/flow_sensors.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/flow_sensors.xml new file mode 100644 index 0000000000000..bdc9b1099261d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/flow_sensors.xml @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/heat_exchangers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/heat_exchangers.xml new file mode 100644 index 0000000000000..6670b3f1af7f9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/heat_exchangers.xml @@ -0,0 +1,809 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/instruments.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/instruments.xml new file mode 100644 index 0000000000000..00c47a2e869e7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/instruments.xml @@ -0,0 +1,571 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/misc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/misc.xml new file mode 100644 index 0000000000000..01a8eae55a196 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/misc.xml @@ -0,0 +1,2058 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/mixers.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/mixers.xml new file mode 100644 index 0000000000000..a4f451d69154b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/mixers.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/piping.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/piping.xml new file mode 100644 index 0000000000000..c3111e95432df --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/piping.xml @@ -0,0 +1,748 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps.xml new file mode 100644 index 0000000000000..41e0b7ffacb27 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps.xml @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_din.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_din.xml new file mode 100644 index 0000000000000..19df0dd9d67c3 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_din.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_iso.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_iso.xml new file mode 100644 index 0000000000000..54db32bf1b7fb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/pumps_iso.xml @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/separators.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/separators.xml new file mode 100644 index 0000000000000..ddae41ed517ac --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/separators.xml @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/shaping_machines.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/shaping_machines.xml new file mode 100644 index 0000000000000..8d10ff3dfc06e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/shaping_machines.xml @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/valves.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/valves.xml new file mode 100644 index 0000000000000..5ded108c820da --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/valves.xml @@ -0,0 +1,846 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/vessels.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/vessels.xml new file mode 100644 index 0000000000000..064d6b3a7021d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/pid/vessels.xml @@ -0,0 +1,1847 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/apc.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/apc.xml new file mode 100644 index 0000000000000..e30ff08cc8783 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/apc.xml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/cisco.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/cisco.xml new file mode 100644 index 0000000000000..5d01bd4125992 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/cisco.xml @@ -0,0 +1,16373 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/dell.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/dell.xml new file mode 100644 index 0000000000000..4c04b09f09ee2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/dell.xml @@ -0,0 +1,5617 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/f5.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/f5.xml new file mode 100644 index 0000000000000..bedda621611b6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/f5.xml @@ -0,0 +1,7923 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/general.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/general.xml new file mode 100644 index 0000000000000..0dbd95ae95080 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/general.xml @@ -0,0 +1,3477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/hp.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/hp.xml new file mode 100644 index 0000000000000..87aadec6df26f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/hp.xml @@ -0,0 +1,2057 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/ibm.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/ibm.xml new file mode 100644 index 0000000000000..f08dec9596405 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/ibm.xml @@ -0,0 +1,2657 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/oracle.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/oracle.xml new file mode 100644 index 0000000000000..f056c128e6085 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/rack/oracle.xml @@ -0,0 +1,5140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/animals.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/animals.xml new file mode 100644 index 0000000000000..0b91de57a54bb --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/animals.xml @@ -0,0 +1,1515 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/food.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/food.xml new file mode 100644 index 0000000000000..6e64c8cd3932e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/food.xml @@ -0,0 +1,615 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/healthcare.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/healthcare.xml new file mode 100644 index 0000000000000..5e6ee26e90261 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/healthcare.xml @@ -0,0 +1,5753 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/nature.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/nature.xml new file mode 100644 index 0000000000000..32bb252351f02 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/nature.xml @@ -0,0 +1,1049 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/people.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/people.xml new file mode 100644 index 0000000000000..032afa34a5c94 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/people.xml @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/safety.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/safety.xml new file mode 100644 index 0000000000000..069a2018a60a4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/safety.xml @@ -0,0 +1,1644 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/science.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/science.xml new file mode 100644 index 0000000000000..b2205f0f95dc7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/science.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/sports.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/sports.xml new file mode 100644 index 0000000000000..365a8d2bbb992 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/sports.xml @@ -0,0 +1,6035 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/tech.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/tech.xml new file mode 100644 index 0000000000000..d6ad3a76d6c62 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/tech.xml @@ -0,0 +1,1295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/transportation.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/transportation.xml new file mode 100644 index 0000000000000..cf18354ed8ee7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/transportation.xml @@ -0,0 +1,6297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/travel.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/travel.xml new file mode 100644 index 0000000000000..e7094378b004a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/signs/travel.xml @@ -0,0 +1,3450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/sitemap.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/sitemap.xml new file mode 100644 index 0000000000000..30c2450dc1040 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/sitemap.xml @@ -0,0 +1,4221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/2d.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/2d.xml new file mode 100644 index 0000000000000..3ece184c71b72 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/2d.xml @@ -0,0 +1,11861 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/3d.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/3d.xml new file mode 100644 index 0000000000000..3ad8a8df7dd99 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/3d.xml @@ -0,0 +1,11155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/veeam.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/veeam.xml new file mode 100644 index 0000000000000..203064c891918 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/veeam/veeam.xml @@ -0,0 +1,12363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/vvd.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/vvd.xml new file mode 100644 index 0000000000000..8db02f8d330f1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/vvd.xml @@ -0,0 +1,11419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/webicons.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/webicons.xml new file mode 100644 index 0000000000000..d75535a7c0bda --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/webicons.xml @@ -0,0 +1,15274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/weblogos.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/weblogos.xml new file mode 100644 index 0000000000000..10f57d957f932 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/stencils/weblogos.xml @@ -0,0 +1,12167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/default.xml b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/default.xml new file mode 100644 index 0000000000000..6c124e8abf009 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/default.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/down.gif b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/down.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6c47ca134040923729cf64e8b9fa0857231b9a6 GIT binary patch literal 1113 zcmZ?wbhEHbK|1&T!DE{Y;@C{IKNi0bO(l+)L1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&Psj#ZZEyztR zNmQuF&B-gas<2f`Ovz75wF0t1!um=IU?nBlwn~m52?day&iO^D3Z{Any2%D+1`1|| zdWOa(=H}))3PuKo2Koj@`i4fjhUQkrMpgy}3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0 zuU}qXu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~ zr2NtnTP2`NAzsKWfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB z;NpiyW)Z+ZoqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;d@5Rq#zr z&ddYx!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*WnK&DpTNt@GSy-657#g~oSQ@%GJDM4r zxH+2}n7Wyp!1TK0Czs}?=9R$orXch>v@OxBG5|NZ^*``6DO z-@kqR^7+%p5AWZ-ee?R&%NNg|J$>@{(ZdJ#@7=v~`_|1H*RNf@a{1E53+K6ZM9qnzcEzM1h4fS=kHPuy>73F26CB;RB1^IcoIoVm6 z8R==MDalER3Gs2UG0{A;Cd`0selzKHgrQ9`0_gF3wJl4)%7oHr7^_7UpKA zCdNjp{}N?qO7E-ATK8?BP}H .geToolbar > div > a:active { + opacity:0.5; +} +.geBtnUp { + background-image: url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7); + _background-image: url(up.gif); + background-position: center center; + background-repeat: no-repeat; +} +.geBtnUp:active { + background-color: #4d90fe; + background-image: linear-gradient(#4d90fe 0px,#357ae8 100%); +} +.geBtnDown { + background-image: url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7); + _background-image: url(down.gif); + background-position: center center; + background-repeat: no-repeat; +} +.geBtnDown:active { + background-color: #4d90fe; + background-image: linear-gradient(#4d90fe 0px,#357ae8 100%); +} +.geColorBtn { + background-color: #f5f5f5; + background-image: linear-gradient(#f5f5f5 0px,#e1e1e1 100%); + border-radius: 4px; + border: 1px solid rgba(0,0,0,0.5); + color: #333; + cursor: default; + margin: 0px; + outline: 0; + padding: 0px; + cursor: pointer; +} +.geColorBtn:hover { + -webkit-box-shadow: 0px 1px 1px rgba(0,0,0,0.1); + -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.1); + box-shadow: 0px 1px 1px rgba(0,0,0,0.1); + border: 1px solid rgba(0,0,0,0.7); +} +.geColorBtn:active { + background-color: #4d90fe; + background-image: linear-gradient(#4d90fe 0px,#357ae8 100%); + border: 1px solid #2f5bb7; + color: #fff; +} +.geColorBtn:disabled { + opacity: .5; +} +.gePrimaryBtn, .mxWindow .gePrimaryBtn { + background-color: #4d90fe; + background-image: linear-gradient(#4d90fe 0px,#4787ed 100%); + border: 1px solid #3079ed; + color: #fff; +} +.gePrimaryBtn:hover, .gePrimaryBtn:focus { + background-color: #357ae8; + background-image: linear-gradient(#4d90fe 0px,#357ae8 100%); + border: 1px solid #2f5bb7; + color: #fff; +} +.gePrimaryBtn:disabled { + opacity: .5; +} +.geAlertLink { + color:#843534; + font-weight:700; + text-decoration:none; +} +.geActivePage { + font-weight:bold; + color:#188038 !important; +} +.geMenubarContainer, .geToolbarContainer, .geHsplit, .geVsplit { + background-color:#fbfbfb; +} +.geMenubar { + padding:0px 2px 0px 2px; + vertical-align:middle; +} +.geMenubarContainer .geItem, .geToolbar .geItem { + padding:6px 8px 6px 8px; + cursor:default; +} +.geMenubarContainer .geItem:hover { + background: #e0e0e0; +} +.geMenubarContainer .geItem:active { + background: #e8f0fe; +} +.geToolbarButton { + opacity: 0.6; +} +.geToolbarButton:active { + opacity: 0.2; +} +.mxDisabled:hover { + background:inherit !important; +} +.geMenubar a.geStatus { + color:#888888; + padding-left:6px; + display:inline-block; + cursor:default !important; +} +.geMenubar a.geStatus:hover { + background:transparent; +} +.geToolbarContainer { + border-bottom:1px solid #dadce0; +} +.geSidebarContainer .geToolbarContainer { + background:transparent; + border-bottom:none; +} +.geSidebarContainer button { + text-overflow:ellipsis; + overflow:hidden; +} +.geToolbar { + padding:1px 0px 0px 4px; + border-top:1px solid #dadce0; + -webkit-box-shadow: inset 0 1px 0 0 #fff; + -moz-box-shadow: inset 0 1px 0 0 #fff; + box-shadow: inset 0 1px 0 0 #fff; + padding-top:5px; +} +.geToolbarContainer .geSeparator { + float:left; + width:1px; + height:20px; + background:#e5e5e5; + margin-left:6px; + margin-right:6px; + margin-top:4px; +} +.geToolbarContainer .geButton { + float:left; + width:20px; + height:20px; + padding:0px 2px 4px 2px; + margin:2px; + border:1px solid transparent; + cursor:pointer; + opacity:0.6; + _filter:alpha(opacity=60); +} +.geToolbarContainer .geButton:hover { + opacity:1; + _filter:none !important; + background: #e0e0e0; +} +.geToolbarContainer .geButton:active { + background: #e8f0fe; +} +div.mxWindow .geButton { + margin: -1px 2px 2px 2px; + padding: 1px 2px 2px 1px; +} +.geToolbarContainer .geLabel { + float:left; + margin:2px; + cursor:pointer; + padding:3px 5px 3px 5px; + border:1px solid transparent; + opacity:0.6; + filter:alpha(opacity=60); +} +.geToolbarContainer .geLabel:hover { + background: #e0e0e0; + opacity:0.9; + filter:alpha(opacity=90) !important; +} +.geToolbarContainer .geLabel:active { + background: #e8f0fe; + opacity:1; + filter:none !important; +} +.geToolbarContainer .mxDisabled:hover { + border:1px solid transparent !important; + opacity:0.2 !important; + filter:alpha(opacity=20) !important; +} +.geDiagramBackdrop { + background-color: #f8f9fa; +} +.geSidebarContainer { + background:#fbfbfb; + overflow:hidden; + position:absolute; + overflow:auto; +} +.geTabContainer { + border-top:1px solid #e5e5e5; + background-color:#f1f3f4; +} +.geSidebar { + border-bottom:1px solid #e5e5e5; + padding:6px; + padding-left:10px; + _padding:2px; + _padding-left:6px; + padding-bottom:12px; + overflow:hidden; +} +.geSidebarContainer .geTitle { + display:block; + font-size:13px; + border-bottom:1px solid #e5e5e5; + font-weight:500; + padding:8px 0px 8px 14px; + margin:0px; + cursor:default; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + line-height:1.4em; +} +.geSidebarContainer .geTitle:hover { + background-color:#e0e0e0; +} +.geSidebarContainer .geDropTarget { + border-radius:10px; + border:2px dotted #b0b0b0; + text-align:center; + padding:6px; + margin:6px; + color:#a0a0a0; + fontSize:13px; +} +.geTitle img { + opacity:0.5; + _filter:alpha(opacity=50); +} +.geTitle img:hover { + opacity:1; + _filter:alpha(opacity=100); +} +.geTitle .geButton { + border:1px solid transparent; + padding:3px; + border-radius:2px; +} +.geTitle .geButton:hover { + border:1px solid gray; +} +.geSidebar .geItem { + display:inline-block; + background-repeat:no-repeat; + background-position:50% 50%; + border-radius: 8px; +} +.geSidebar .geItem:hover { + background-color:#e0e0e0; +} +.geItem { + vertical-align: top; + display: inline-block; +} +.geSidebarTooltip { + position:absolute; + background:#fbfbfb; + overflow:hidden; + box-shadow:0 2px 6px 2px rgba(60,64,67,.15); + border-radius:6px; + _filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true'); +} +.geFooterContainer { + background:#e5e5e5; + border-top:1px solid #c0c0c0; +} +.geFooterContainer a { + display:inline-block; + box-sizing:border-box; + width:100%; + white-space:nowrap; + font-size:14px; + color:#235695; + font-weight:bold; + text-decoration:none; +} +.geFooterContainer table { + border-collapse:collapse; + margin:0 auto; +} +.geFooterContainer td { + border-left:1px solid #c0c0c0; + border-right:1px solid #c0c0c0; +} +.geFooterContainer td:hover { + background-color: #b3b3b3; +} +.geHsplit { + cursor:col-resize; + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=); + _background-image:url('thumb_vertical.png'); + background-repeat:no-repeat; + background-position:center center; +} +.geVsplit { + font-size:1pt; + cursor:row-resize; + background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=); + _background-image:url('thumb_horz.png'); + background-repeat:no-repeat; + background-position:center center; +} +.geHsplit { + border-left:1px solid #e5e5e5; + border-right:1px solid #e5e5e5; +} +.geVSplit { + border-top:1px solid #e5e5e5; + border-bottom:1px solid #e5e5e5; +} +.geHsplit:hover, .geVsplit:hover { + background-color:#e0e0e0; +} +.geDialog { + position:absolute; + background:white; + line-height:1em; + overflow:hidden; + padding:30px; + border:1px solid #acacac; + -webkit-box-shadow:0px 0px 2px 2px #d5d5d5; + -moz-box-shadow:0px 0px 2px 2px #d5d5d5; + box-shadow:0px 0px 2px 2px #d5d5d5; + _filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=2, OffY=2, Color='#d5d5d5', Positive='true'); + z-index: 2; +} +.geTransDialog { + position:absolute; + overflow:hidden; + padding:30px; + z-index: 2; +} +.geDialogClose { + position:absolute; + width:9px; + height:9px; + opacity:0.5; + cursor:pointer; + _filter:alpha(opacity=50); +} +.geDialogClose:hover { + opacity:1; +} +.geDialogTitle { + box-sizing:border-box; + white-space:nowrap; + background:rgb(229, 229, 229); + border-bottom:1px solid rgb(192, 192, 192); + font-size:15px; + font-weight:bold; + text-align:center; + color:rgb(35, 86, 149); +} +.geDialogFooter { + background:whiteSmoke; + white-space:nowrap; + text-align:right; + box-sizing:border-box; + border-top:1px solid #e5e5e5; + color:darkGray; +} +.geSprite { + background:url('data:image/png;base64,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') no-repeat; + _background:url('sprites.png') no-repeat top left; + width:21px; + height:21px; +} +.geBaseButton { + padding:10px; + border-radius:6px; + border:1px solid #c0c0c0; + cursor:pointer; + background-color:#ececec; + background-image:linear-gradient(#ececec 0%, #fcfcfc 100%); +} +.geBaseButton:hover { + background:#ececec; +} +.geBigButton { + color:#ffffff; + border: none; + padding:10px; + font-size:14pt; + white-space: nowrap; + border-radius:6px; + text-shadow: rgb(41, 89, 137) 0px 1px 0px; + background-color:#428bca; + background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%); + -webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px; + -moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px; + box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px; +} +.geBigButton:hover { + background-color:#2d6ca2; + background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%); +} +.geBigButton:active { + background-color: rgb(54, 115, 181); + background-image: none; +} +@media print { + div.geNoPrint { display: none !important; } +} +.geSprite-actualsize { background-position: 0 0; } +.geSprite-bold { background-position: 0 -46px; } +.geSprite-bottom { background-position: 0 -92px; } +.geSprite-center { background-position: 0 -138px; } +.geSprite-delete { background-position: 0 -184px; } +.geSprite-fillcolor { background-position: 0 -229px; } +.geSprite-fit { background-position: 0 -277px; } +.geSprite-fontcolor { background-position: 0 -322px; } +.geSprite-gradientcolor { background-position: 0 -368px; } +.geSprite-image { background-position: 0 -414px; } +.geSprite-italic { background-position: 0 -460px; } +.geSprite-left { background-position: 0 -505px; } +.geSprite-middle { background-position: 0 -552px; } +.geSprite-print { background-position: 0 -598px; } +.geSprite-redo { background-position: 0 -644px; } +.geSprite-right { background-position: 0 -689px; } +.geSprite-shadow { background-position: 0 -735px; } +.geSprite-strokecolor { background-position: 0 -782px; } +.geSprite-top { background-position: 0 -828px; } +.geSprite-underline { background-position: 0 -874px; } +.geSprite-undo { background-position: 0 -920px; } +.geSprite-zoomin { background-position: 0 -966px; } +.geSprite-zoomout { background-position: 0 -1012px; } +.geSprite-arrow { background-position: 0 -1059px; } +.geSprite-linkedge { background-position: 0 -1105px; } +.geSprite-straight { background-position: 0 -1150px; } +.geSprite-entity { background-position: 0 -1196px; } +.geSprite-orthogonal { background-position: 0 -1242px; } +.geSprite-curved { background-position: 0 -1288px; } +.geSprite-noarrow { background-position: 0 -1334px; } +.geSprite-endclassic { background-position: 0 -1380px; } +.geSprite-endopen { background-position: 0 -1426px; } +.geSprite-endblock { background-position: 0 -1472px; } +.geSprite-endoval { background-position: 0 -1518px; } +.geSprite-enddiamond { background-position: 0 -1564px; } +.geSprite-endthindiamond { background-position: 0 -1610px; } +.geSprite-endclassictrans { background-position: 0 -1656px; } +.geSprite-endblocktrans { background-position: 0 -1702px; } +.geSprite-endovaltrans { background-position: 0 -1748px; } +.geSprite-enddiamondtrans { background-position: 0 -1794px; } +.geSprite-endthindiamondtrans { background-position: 0 -1840px; } +.geSprite-startclassic { background-position: 0 -1886px; } +.geSprite-startopen { background-position: 0 -1932px; } +.geSprite-startblock { background-position: 0 -1978px; } +.geSprite-startoval { background-position: 0 -2024px; } +.geSprite-startdiamond { background-position: 0 -2070px; } +.geSprite-startthindiamond { background-position: 0 -2116px; } +.geSprite-startclassictrans { background-position: 0 -2162px; } +.geSprite-startblocktrans { background-position: 0 -2208px; } +.geSprite-startovaltrans { background-position: 0 -2254px; } +.geSprite-startdiamondtrans { background-position: 0 -2300px; } +.geSprite-startthindiamondtrans { background-position: 0 -2346px; } +.geSprite-globe { background-position: 0 -2392px; } +.geSprite-orderedlist { background-position: 0 -2438px; } +.geSprite-unorderedlist { background-position: 0 -2484px; } +.geSprite-horizontalrule { background-position: 0 -2530px; } +.geSprite-link { background-position: 0 -2576px; } +.geSprite-indent { background-position: 0 -2622px; } +.geSprite-outdent { background-position: 0 -2668px; } +.geSprite-code { background-position: 0 -2714px; } +.geSprite-fontbackground { background-position: 0 -2760px; } +.geSprite-removeformat { background-position: 0 -2806px; } +.geSprite-superscript { background-position: 0 -2852px; } +.geSprite-subscript { background-position: 0 -2898px; } +.geSprite-table { background-position: 0 -2944px; } +.geSprite-deletecolumn { background-position: 0 -2990px; } +.geSprite-deleterow { background-position: 0 -3036px; } +.geSprite-insertcolumnafter { background-position: 0 -3082px; } +.geSprite-insertcolumnbefore { background-position: 0 -3128px; } +.geSprite-insertrowafter { background-position: 0 -3174px; } +.geSprite-insertrowbefore { background-position: 0 -3220px; } +.geSprite-grid { background-position: 0 -3272px; } +.geSprite-guides { background-position: 0 -3324px; } +.geSprite-dots { background-position: 0 -3370px; } +.geSprite-alignleft { background-position: 0 -3416px; } +.geSprite-alignright { background-position: 0 -3462px; } +.geSprite-aligncenter { background-position: 0 -3508px; } +.geSprite-aligntop { background-position: 0 -3554px; } +.geSprite-alignbottom { background-position: 0 -3600px; } +.geSprite-alignmiddle { background-position: 0 -3646px; } +.geSprite-justifyfull { background-position: 0 -3692px; } +.geSprite-formatpanel { background-position: 0 -3738px; } +.geSprite-connection { background-position: 0 -3784px; } +.geSprite-vertical { background-position: 0 -3830px; } +.geSprite-simplearrow { background-position: 0 -3876px; } +.geSprite-plus { background-position: 0 -3922px; } +.geSprite-rounded { background-position: 0 -3968px; } +.geSprite-toback { background-position: 0 -4014px; } +.geSprite-tofront { background-position: 0 -4060px; } +.geSprite-duplicate { background-position: 0 -4106px; } +.geSprite-insert { background-position: 0 -4152px; } +.geSprite-endblockthin { background-position: 0 -4201px; } +.geSprite-endblockthintrans { background-position: 0 -4247px; } +.geSprite-enderone { background-position: 0 -4293px; } +.geSprite-enderonetoone { background-position: 0 -4339px; } +.geSprite-enderonetomany { background-position: 0 -4385px; } +.geSprite-endermany { background-position: 0 -4431px; } +.geSprite-enderoneopt { background-position: 0 -4477px; } +.geSprite-endermanyopt { background-position: 0 -4523px; } +.geSprite-endclassicthin { background-position: 0 -4938px; } +.geSprite-endclassicthintrans { background-position: 0 -4984px; } +.geSprite-enddash { background-position: 0 -5029px; } +.geSprite-endcircleplus { background-position: 0 -5075px; } +.geSprite-endcircle { background-position: 0 -5121px; } +.geSprite-endasync { background-position: 0 -5167px; } +.geSprite-endasynctrans { background-position: 0 -5213px; } +.geSprite-startblockthin { background-position: 0 -4569px; } +.geSprite-startblockthintrans { background-position: 0 -4615px; } +.geSprite-starterone { background-position: 0 -4661px; } +.geSprite-starteronetoone { background-position: 0 -4707px; } +.geSprite-starteronetomany { background-position: 0 -4753px; } +.geSprite-startermany { background-position: 0 -4799px; } +.geSprite-starteroneopt { background-position: 0 -4845px; } +.geSprite-startermanyopt { background-position: 0 -4891px; } +.geSprite-startclassicthin { background-position: 0 -5259px; } +.geSprite-startclassicthintrans { background-position: 0 -5305px; } +.geSprite-startdash { background-position: 0 -5351px; } +.geSprite-startcircleplus { background-position: 0 -5397px; } +.geSprite-startcircle { background-position: 0 -5443px; } +.geSprite-startasync { background-position: 0 -5489px; } +.geSprite-startasynctrans { background-position: 0 -5535px; } +.geSprite-startcross { background-position: 0 -5581px; } +.geSprite-startopenthin { background-position: 0 -5627px; } +.geSprite-startopenasync { background-position: 0 -5673px; } +.geSprite-endcross { background-position: 0 -5719px; } +.geSprite-endopenthin { background-position: 0 -5765px; } +.geSprite-endopenasync { background-position: 0 -5811px; } +.geSprite-verticalelbow { background-position: 0 -5857px; } +.geSprite-horizontalelbow { background-position: 0 -5903px; } +.geSprite-horizontalisometric { background-position: 0 -5949px; } +.geSprite-verticalisometric { background-position: 0 -5995px; } +html div.mxRubberband { + border-color:#0000DD; + background:#99ccff; +} +td.mxPopupMenuIcon div { + width:16px; + height:16px; +} +.geEditor div.mxPopupMenu { + box-shadow:0 2px 6px 2px rgba(60,64,67,.15); + background:white; + border-radius:4px; + border:none; + padding:3px; +} +html table.mxPopupMenu { + border-collapse:collapse; + margin:0px; +} +html td.mxPopupMenuItem { + padding:7px 30px 7px 30px; + font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial; + font-size:10pt; +} +html td.mxPopupMenuIcon { + background-color:white; + padding:0px; +} +td.mxPopupMenuIcon .geIcon { + padding:2px; + padding-bottom:4px; + margin:2px; + border:1px solid transparent; + opacity:0.5; + _width:26px; + _height:26px; +} +td.mxPopupMenuIcon .geIcon:hover { + border:1px solid gray; + border-radius:2px; + opacity:1; +} +html tr.mxPopupMenuItemHover { + background-color: #eeeeee; + color: black; +} +table.mxPopupMenu hr { + color:#cccccc; + background-color:#cccccc; + border:none; + height:1px; +} +table.mxPopupMenu tr { + font-size:4pt; +} +html td.mxWindowTitle { + font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial; + text-align:left; + font-size:12px; + color:rgb(112, 112, 112); + padding:4px; +} diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/help.css b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/help.css new file mode 100644 index 0000000000000..20014a83d4098 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/help.css @@ -0,0 +1,4 @@ +body { + font-family:Arial Unicode MS,Arial,Helvetica; + font-size:10pt; +} diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/sprites.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..23e1b491b6d3fafd7887dba6d1b32309e04bd3b2 GIT binary patch literal 10155 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_horz.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_horz.png new file mode 100644 index 0000000000000000000000000000000000000000..f2896f5c0c9ab969a0a9d8592a382294cc7577a0 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!VDxgys+>CQW60^A+E;8#{d8S&&|yZ2nguv z>T+~+tf{GqkB>hQ7daiMM#R&_F@$4ga)N1iae{z|h)6=iW(Hw1#?$#J0zZKA44$rj JF6*2UngA#o9_j!9 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_vertical.png b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/styles/thumb_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a22e029c85ee85d86724ba4ef3cc46c61fe0f5 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c8!VDzudVhQjq$C1-LR^iFjsO4upPQQ-5D?JS z)#d2uSW{CIA0K}rE^<0hjjX4OV+hC0WC4K$0ntz)>ec`M|1&T!DE{Y;@C{IKNi0bO(l+)L1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&Psj#ZZEyztR zNmQuF&B-gas<2f`Ovz75wF0t1!um=IU?nBlwn~m52?day&iO^D3Z{Any2%D+1`1|| zdWOa(=H}))3PuKo2Koj@`i4fjhUQkrMpgy}3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0 zuU}qXu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~ zr2NtnTP2`NAzsKWfE$}vtOxdvUUGh}ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB z;NpiyW)Z+ZoqU2Pda%GTJ1y;^Qsfi`|MIrh5Ij~R+$jC3rFV4s>P;d@5Rq#zr z&ddYx!Rmc|tvvIJOA_;vQ$1a5m4GJbWoD*WnK&DpTNt^xSy-657#g~oSQ@%GJDM4r zxH+2}n7Wyp!1TK0Czs}?=9R$oroi>O8sO9mN(#9JK$~4si!#enQ{0O3a}~f|w#vlq z78ji6LG`BKbc>5CPQCg-$LND17Ac}(Lcr7mV#1RxkONQnsd>QEUIa|mjQ{`r{qy_R z&mZ5vef{$J)5j0*-@SeF`qj%9&!0Vg^7zri2lwyYy>t84%^TORUA=Po(!~qs&z(JU z`qar2$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY)5ZeMTG_VdAT{+ zS(zE>X{jm6Nr?&Zaj`McQIQehVWAmo_rKzE=rmCW>q^KY-Co3Z@B`F~;CMqH&FX p#0V@KezE{bCI%f~Il%xbI~bVwru1`6U=y6t6wuXL=*`Mt4FE#dhL8XN literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/viewer.html b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/viewer.html new file mode 100644 index 0000000000000..beb91b98fbf2e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/mxgraph/javascript/dist/viewer.html @@ -0,0 +1,71 @@ + + + + + Grapheditor viewer + + + + + + + + + + Input: +
+ +
+ +

+ + + diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/bpmn/mxBpmnShape2.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/bpmn/mxBpmnShape2.js new file mode 100644 index 0000000000000..ee677ee890324 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/bpmn/mxBpmnShape2.js @@ -0,0 +1,662 @@ +"use strict"; + +function mxBpmnShape(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxBpmnShape, mxShape); +mxBpmnShape.prototype.customProperties = [{ + name: 'symbol', + dispName: 'Event', + type: 'enum', + defVal: 'general', + enumList: [{ + val: 'general', + dispName: 'General' + }, { + val: 'message', + dispName: 'Message' + }, { + val: 'timer', + dispName: 'Timer' + }, { + val: 'escalation', + dispName: 'Escalation' + }, { + val: 'conditional', + dispName: 'Conditional' + }, { + val: 'link', + dispName: 'Link' + }, { + val: 'error', + dispName: 'Error' + }, { + val: 'cancel', + dispName: 'Cancel' + }, { + val: 'compensation', + dispName: 'Compensation' + }, { + val: 'signal', + dispName: 'Signal' + }, { + val: 'multiple', + dispName: 'Multiple' + }, { + val: 'parallelMultiple', + dispName: 'Parallel Multiple' + }, { + val: 'terminate', + dispName: 'Terminate' + }, { + val: 'exclusiveGw', + dispName: 'Exclusive Gw' + }, { + val: 'parallelGw', + dispName: 'Parallel Gw' + }, { + val: 'complexGw', + dispName: 'Complex Gw' + }] +}, { + name: 'outline', + dispName: 'Event Type', + type: 'enum', + defVal: 'standard', + enumList: [{ + val: 'standard', + dispName: 'Standard' + }, { + val: 'eventInt', + dispName: 'Interrupting' + }, { + val: 'eventNonint', + dispName: 'Non-Interrupting' + }, { + val: 'catching', + dispName: 'Catching' + }, { + val: 'boundInt', + dispName: 'Bound Interrupting' + }, { + val: 'boundNonint', + dispName: 'Bound Non-Interrupting' + }, { + val: 'throwing', + dispName: 'Throwing' + }, { + val: 'end', + dispName: 'End' + }, { + val: 'none', + dispName: 'None' + }] +}, { + name: 'background', + dispName: 'Background', + type: 'enum', + defVal: 'none', + enumList: [{ + val: 'gateway', + dispName: 'Gateway' + }, { + val: 'none', + dispName: 'None' + }] +}]; +mxBpmnShape.prototype.eventTypeEnum = { + START_STANDARD: 'standard', + EVENT_SP_INT: 'eventInt', + EVENT_SP_NONINT: 'eventNonint', + CATCHING: 'catching', + BOUND_INT: 'boundInt', + BOUND_NONINT: 'boundNonint', + THROWING: 'throwing', + END: 'end', + NONE: 'none', + GATEWAY: 'gateway' +}; +mxBpmnShape.prototype.eventEnum = { + GENERAL: 'general', + MESSAGE: 'message', + TIMER: 'timer', + ESCALATION: 'escalation', + CONDITIONAL: 'conditional', + LINK: 'link', + ERROR: 'error', + CANCEL: 'cancel', + COMPENSATION: 'compensation', + SIGNAL: 'signal', + MULTIPLE: 'multiple', + PAR_MULTI: 'parallelMultiple', + TERMINATE: 'terminate', + GW_EXCLUSIVE: 'exclusiveGw', + GW_PARALLEL: 'parallelGw', + GW_COMPLEX: 'complexGw' +}; +mxBpmnShape.prototype.miscEnum = { + OUTLINE: 'outline', + BACKGROUND: 'background', + SYMBOL: 'symbol', + GATEWAY: 'gateway' +}; + +mxBpmnShape.prototype.paintVertexShape = function (c, x, y, w, h) { + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.BACKGROUND); + var bg = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.BACKGROUND, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) { + c.setShadow(false); + } + + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.OUTLINE); + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.SYMBOL); +}; + +mxBpmnShape.prototype.redrawPath = function (c, x, y, w, h, layer) { + var bg = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.BACKGROUND, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (layer == mxBpmnShape.prototype.miscEnum.BACKGROUND) { + if (bg != null) { + var f = this.backgrounds[bg]; + + if (f != null) { + c.translate(x, y); + f.call(this, c, x, y, w, h, layer); + } + } + } else if (layer == mxBpmnShape.prototype.miscEnum.OUTLINE) { + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) { + c.translate(w / 4, h / 4); + h /= 2; + w /= 2; + this.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), new mxConnectionConstraint(new mxPoint(0.75, 0.75), false)]; + } else { + this.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.145, 0.145), false), new mxConnectionConstraint(new mxPoint(0.145, 0.855), false), new mxConnectionConstraint(new mxPoint(0.855, 0.145), false), new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)]; + } + + var o = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.OUTLINE, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (o != null) { + var f = this.outlines[o]; + + if (f != null) { + f.call(this, c, x, y, w, h, bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY); + } + } + } else if (layer == mxBpmnShape.prototype.miscEnum.SYMBOL) { + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) { + h /= 2; + w /= 2; + } + + var s = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.SYMBOL, null); + + if (s != null) { + var f = this.symbols[s]; + var isInverse = false; + + if (f != null) { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + var o = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.OUTLINE, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (s === mxBpmnShape.prototype.eventEnum.MESSAGE) { + c.translate(w * 0.15, h * 0.3); + w = w * 0.7; + h = h * 0.4; + } else if (s === mxBpmnShape.prototype.eventEnum.TIMER) { + c.translate(w * 0.11, h * 0.11); + w = w * 0.78; + h = h * 0.78; + } else if (s === mxBpmnShape.prototype.eventEnum.ESCALATION) { + c.translate(w * 0.19, h * 0.15); + w = w * 0.62; + h = h * 0.57; + } else if (s === mxBpmnShape.prototype.eventEnum.CONDITIONAL) { + c.translate(w * 0.3, h * 0.16); + w = w * 0.4; + h = h * 0.68; + } else if (s === mxBpmnShape.prototype.eventEnum.LINK) { + c.translate(w * 0.27, h * 0.33); + w = w * 0.46; + h = h * 0.34; + } else if (s === mxBpmnShape.prototype.eventEnum.ERROR) { + c.translate(w * 0.212, h * 0.243); + w = w * 0.58; + h = h * 0.507; + } else if (s === mxBpmnShape.prototype.eventEnum.CANCEL) { + c.translate(w * 0.22, h * 0.22); + w = w * 0.56; + h = h * 0.56; + } else if (s === mxBpmnShape.prototype.eventEnum.COMPENSATION) { + c.translate(w * 0.28, h * 0.35); + w = w * 0.44; + h = h * 0.3; + } else if (s === mxBpmnShape.prototype.eventEnum.SIGNAL) { + c.translate(w * 0.19, h * 0.15); + w = w * 0.62; + h = h * 0.57; + } else if (s === mxBpmnShape.prototype.eventEnum.MULTIPLE) { + c.translate(w * 0.2, h * 0.19); + w = w * 0.6; + h = h * 0.565; + } else if (s === mxBpmnShape.prototype.eventEnum.PAR_MULTI) { + c.translate(w * 0.2, h * 0.2); + w = w * 0.6; + h = h * 0.6; + } else if (s === mxBpmnShape.prototype.eventEnum.TERMINATE) { + c.translate(w * 0.05, h * 0.05); + w = w * 0.9; + h = h * 0.9; + } else if (s === mxBpmnShape.prototype.eventEnum.GW_EXCLUSIVE) { + c.translate(w * 0.12, 0); + w = w * 0.76; + } + + isInverse = false; + + if (s === 'star') { + c.setFillColor(strokeColor); + } else if (o === mxBpmnShape.prototype.eventTypeEnum.THROWING || o === mxBpmnShape.prototype.eventTypeEnum.END) { + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + isInverse = true; + } + + f.call(this, c, x, y, w, h, layer, isInverse); + + if (s === 'star') { + c.setFillColor(fillColor); + } else if (o === mxBpmnShape.prototype.eventTypeEnum.THROWING || o === mxBpmnShape.prototype.eventTypeEnum.END) { + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + } + } + } + } +}; + +mxBpmnShape.prototype.backgrounds = { + 'none': function none(c, x, y, w, h) {}, + 'gateway': function gateway(c, x, y, w, h) { + c.begin(); + c.moveTo(w / 2, 0); + c.lineTo(w, h / 2); + c.lineTo(w / 2, h); + c.lineTo(0, h / 2); + c.close(); + c.fillAndStroke(); + } +}; +mxBpmnShape.prototype.outlines = { + 'none': function none(c, x, y, w, h, isGateway) { + if (!isGateway) { + c.setShadow(false); + } + }, + 'standard': function standard(c, x, y, w, h, isGateway) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + }, + 'eventInt': function eventInt(c, x, y, w, h, isGateway) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + }, + 'eventNonint': function eventNonint(c, x, y, w, h, isGateway) { + var dashed = c.state.dashed; + c.setDashed(true); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setDashed(dashed); + + if (!isGateway) { + c.setShadow(false); + } + }, + 'catching': function catching(c, x, y, w, h, isGateway) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(inset, inset, w - 2 * inset, h - 2 * inset); + c.stroke(); + }, + 'boundInt': function boundInt(c, x, y, w, h, isGateway) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(inset, inset, w - 2 * inset, h - 2 * inset); + c.stroke(); + }, + 'boundNonint': function boundNonint(c, x, y, w, h, isGateway) { + var dashed = c.state.dashed; + c.setDashed(true); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(inset, inset, w - 2 * inset, h - 2 * inset); + c.stroke(); + c.setDashed(dashed); + }, + 'throwing': function throwing(c, x, y, w, h, isGateway) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(w * 0.02 + inset, h * 0.02 + inset, w * 0.96 - 2 * inset, h * 0.96 - 2 * inset); + c.stroke(); + }, + 'end': function end(c, x, y, w, h, isGateway) { + var sw = c.state.strokeWidth; + c.setStrokeWidth(sw * 3); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeWidth(sw); + + if (!isGateway) { + c.setShadow(false); + } + } +}; +mxBpmnShape.prototype.symbols = { + 'general': function general(c, x, y, w, h) {}, + 'message': function message(c, x, y, w, h, layer, isInverse) { + c.rect(0, 0, w, h); + c.fillAndStroke(); + var fc = mxUtils.getValue(this.style, "fillColor", "none"); + + if (fc === 'none') { + if (isInverse) { + c.setStrokeColor('#ffffff'); + } + } + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.stroke(); + }, + 'timer': function timer(c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.0642); + c.moveTo(w * 0.7484, h * 0.0654); + c.lineTo(w * 0.7126, h * 0.1281); + c.moveTo(w * 0.93, h * 0.2471); + c.lineTo(w * 0.8673, h * 0.2854); + c.moveTo(w, h * 0.5); + c.lineTo(w * 0.9338, h * 0.5); + c.moveTo(w * 0.93, h * 0.7509); + c.lineTo(w * 0.8673, h * 0.7126); + c.moveTo(w * 0.7484, h * 0.9326); + c.lineTo(w * 0.7126, h * 0.8699); + c.moveTo(w * 0.5, h * 0.9338); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.2496, h * 0.9325); + c.lineTo(w * 0.2854, h * 0.8699); + c.moveTo(w * 0.068, h * 0.7509); + c.lineTo(w * 0.1307, h * 0.7126); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.0642, h * 0.5); + c.moveTo(w * 0.068, h * 0.2471); + c.lineTo(w * 0.1307, h * 0.2854); + c.moveTo(w * 0.2496, h * 0.0654); + c.lineTo(w * 0.2854, h * 0.1281); + c.moveTo(w * 0.5246, h * 0.0706); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.7804, h * 0.5118); + c.stroke(); + }, + 'escalation': function escalation(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.5); + c.close(); + c.fillAndStroke(); + }, + 'conditional': function conditional(c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.1027); + c.lineTo(w * 0.798, h * 0.1027); + c.moveTo(0, h * 0.3669); + c.lineTo(w * 0.798, h * 0.3669); + c.moveTo(0, h * 0.6311); + c.lineTo(w * 0.798, h * 0.6311); + c.moveTo(0, h * 0.8953); + c.lineTo(w * 0.798, h * 0.8953); + c.stroke(); + }, + 'link': function link(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.76); + c.lineTo(0, h * 0.24); + c.lineTo(w * 0.63, h * 0.24); + c.lineTo(w * 0.63, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.63, h); + c.lineTo(w * 0.63, h * 0.76); + c.close(); + c.fillAndStroke(); + }, + 'error': function error(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3287, h * 0.123); + c.lineTo(w * 0.6194, h * 0.6342); + c.lineTo(w, 0); + c.lineTo(w * 0.6625, h * 0.939); + c.lineTo(w * 0.3717, h * 0.5064); + c.close(); + c.fillAndStroke(); + }, + 'cancel': function cancel(c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.1051, 0); + c.lineTo(w * 0.5, h * 0.3738); + c.lineTo(w * 0.8909, 0); + c.lineTo(w, h * 0.1054); + c.lineTo(w * 0.623, h * 0.5); + c.lineTo(w, h * 0.8926); + c.lineTo(w * 0.8909, h); + c.lineTo(w * 0.5, h * 0.6242); + c.lineTo(w * 0.1051, h); + c.lineTo(0, h * 0.8926); + c.lineTo(w * 0.373, h * 0.5); + c.lineTo(0, h * 0.1054); + c.close(); + c.fillAndStroke(); + }, + 'compensation': function compensation(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + }, + 'signal': function signal(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + }, + 'multiple': function multiple(c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.39); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.39); + c.lineTo(w * 0.815, h); + c.lineTo(w * 0.185, h); + c.close(); + c.fillAndStroke(); + }, + 'parallelMultiple': function parallelMultiple(c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.38, 0); + c.lineTo(w * 0.62, 0); + c.lineTo(w * 0.62, h * 0.38); + c.lineTo(w, h * 0.38); + c.lineTo(w, h * 0.62); + c.lineTo(w * 0.62, h * 0.62); + c.lineTo(w * 0.62, h); + c.lineTo(w * 0.38, h); + c.lineTo(w * 0.38, h * 0.62); + c.lineTo(0, h * 0.62); + c.lineTo(0, h * 0.38); + c.lineTo(w * 0.38, h * 0.38); + c.close(); + c.fillAndStroke(); + }, + 'terminate': function terminate(c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + }, + 'exclusiveGw': function exclusiveGw(c, x, y, w, h) { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.105, 0); + c.lineTo(w * 0.5, h * 0.38); + c.lineTo(w * 0.895, h * 0); + c.lineTo(w, h * 0.11); + c.lineTo(w * 0.6172, h * 0.5); + c.lineTo(w, h * 0.89); + c.lineTo(w * 0.895, h); + c.lineTo(w * 0.5, h * 0.62); + c.lineTo(w * 0.105, h); + c.lineTo(0, h * 0.89); + c.lineTo(w * 0.3808, h * 0.5); + c.lineTo(0, h * 0.11); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + }, + 'parallelGw': function parallelGw(c, x, y, w, h) { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.38, 0); + c.lineTo(w * 0.62, 0); + c.lineTo(w * 0.62, h * 0.38); + c.lineTo(w, h * 0.38); + c.lineTo(w, h * 0.62); + c.lineTo(w * 0.62, h * 0.62); + c.lineTo(w * 0.62, h); + c.lineTo(w * 0.38, h); + c.lineTo(w * 0.38, h * 0.62); + c.lineTo(0, h * 0.62); + c.lineTo(0, h * 0.38); + c.lineTo(w * 0.38, h * 0.38); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + }, + 'complexGw': function complexGw(c, x, y, w, h) { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h * 0.44); + c.lineTo(w * 0.36, h * 0.44); + c.lineTo(w * 0.1, h * 0.18); + c.lineTo(w * 0.18, h * 0.1); + c.lineTo(w * 0.44, h * 0.36); + c.lineTo(w * 0.44, 0); + c.lineTo(w * 0.56, 0); + c.lineTo(w * 0.56, h * 0.36); + c.lineTo(w * 0.82, h * 0.1); + c.lineTo(w * 0.90, h * 0.18); + c.lineTo(w * 0.64, h * 0.44); + c.lineTo(w, h * 0.44); + c.lineTo(w, h * 0.56); + c.lineTo(w * 0.64, h * 0.56); + c.lineTo(w * 0.9, h * 0.82); + c.lineTo(w * 0.82, h * 0.9); + c.lineTo(w * 0.56, h * 0.64); + c.lineTo(w * 0.56, h); + c.lineTo(w * 0.44, h); + c.lineTo(w * 0.44, h * 0.64); + c.lineTo(w * 0.18, h * 0.9); + c.lineTo(w * 0.1, h * 0.82); + c.lineTo(w * 0.36, h * 0.56); + c.lineTo(0, h * 0.56); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + }, + 'star': function star(c, x, y, w, h) { + c.translate(w / 5, h / 6); + h *= 2 / 3; + w *= 3 / 5; + c.begin(); + c.moveTo(0, h / 4); + c.lineTo(w / 3, h / 4); + c.lineTo(w / 2, 0); + c.lineTo(2 * w / 3, h / 4); + c.lineTo(w, h / 4); + c.lineTo(5 * w / 6, h / 2); + c.lineTo(w, 3 * h / 4); + c.lineTo(2 * w / 3, 3 * h / 4); + c.lineTo(w / 2, h); + c.lineTo(w / 3, 3 * h / 4); + c.lineTo(0, 3 * h / 4); + c.lineTo(w / 6, h / 2); + c.close(); + c.fillAndStroke(); + } +}; +mxCellRenderer.registerShape('mxgraph.bpmn.shape', mxBpmnShape); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/er/mxER.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/er/mxER.js new file mode 100644 index 0000000000000..60639caaa2a2d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/er/mxER.js @@ -0,0 +1,994 @@ +"use strict"; + +function mxShapeEREntity(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEREntity, mxShape); + +mxShapeEREntity.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeEREntity.prototype.background = function (c, x, y, w, h, rSize, fontColor) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'rect') { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'dblFrame') { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } +}; + +mxShapeEREntity.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.entity', mxShapeEREntity); +mxShapeEREntity.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeEREntityExt(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEREntityExt, mxShape); + +mxShapeEREntityExt.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var attributes = mxUtils.getValue(this.style, 'subText', '+ attribute 1,+ attribute 2,+ attribute 3').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + var mainColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#008cff'); + var attrColor = mxUtils.getValue(this.style, 'fillColor2', '#ffffff'); + var maxTextWidth = 0; + c.translate(x, y); + var rSize = 10; + var barY = fontSize * 1.25; + + for (var i = 0; i < attributes.length; i++) { + var currWidth = mxUtils.getSizeForString(attributes[i], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + w = Math.max(w, 2 * rSize, maxTextWidth + rSize); + h = Math.max(h, 2 * rSize, (attributes.length + 1) * barY); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.shapes(c, x, y, w, h, fontSize, mainColor, attrColor, rSize, barY); + this.mainText(c, x, y, w, h, mainText, fontSize, attrColor); + this.attrText(c, x, y, w, h, attributes, fontSize, strokeColor, barY, rSize); +}; + +mxShapeEREntityExt.prototype.background = function (c, x, y, w, h, rSize) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + c.begin(); + + if (buttonStyle === 'round') { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } else if (buttonStyle === 'rect') { + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeEREntityExt.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, fontSize * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeEREntityExt.prototype.shapes = function (c, x, y, w, h, fontSize, mainColor, attrColor, rSize, barY) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, barY); + c.lineTo(0, barY); + c.close(); + c.fill(); + c.setFillColor(attrColor); + c.begin(); + c.moveTo(w, barY); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, barY); + c.close(); + c.fill(); + } else if (buttonStyle === 'rect') { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, barY); + c.lineTo(0, barY); + c.close(); + c.fill(); + c.setFillColor(attrColor); + c.begin(); + c.moveTo(0, barY); + c.lineTo(w, barY); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + } + + c.begin(); + + if (buttonStyle === 'round') { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } else if (buttonStyle === 'rect') { + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.stroke(); +}; + +mxShapeEREntityExt.prototype.attrText = function (c, x, y, w, h, attributes, fontSize, fontColor, barY, rSize) { + for (var i = 0; i < attributes.length; i++) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(rSize * 0.5, (i + 1.5) * barY, 0, 0, attributes[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.er.entityExt', mxShapeEREntityExt); +mxShapeEREntityExt.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERAttribute(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERAttribute, mxShape); + +mxShapeERAttribute.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERAttribute.prototype.background = function (c, x, y, w, h, rSize, fontColor) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'simple').toString(); + + if (buttonStyle === 'simple') { + c.begin(); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + } else if (buttonStyle === 'dblFrame') { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.ellipse(rSize * 0.1, rSize * 0.1, w - rSize * 0.2, h - rSize * 0.2); + c.stroke(); + } +}; + +mxShapeERAttribute.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.attribute', mxShapeERAttribute); +mxShapeERAttribute.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), new mxConnectionConstraint(new mxPoint(0.856, 0.144), false), new mxConnectionConstraint(new mxPoint(0.856, 0.856), false), new mxConnectionConstraint(new mxPoint(0.144, 0.856), false), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +function mxShapeERHas(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERHas, mxShape); + +mxShapeERHas.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERHas.prototype.background = function (c, x, y, w, h, rSize, fontColor) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'rhombus').toString(); + + if (buttonStyle === 'rhombus') { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'dblFrame') { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1, h * 0.5); + c.lineTo(w * 0.5, h * 0.1); + c.lineTo(w * 0.9, h * 0.5); + c.lineTo(w * 0.5, h * 0.9); + c.close(); + c.stroke(); + } +}; + +mxShapeERHas.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.has', mxShapeERHas); +mxShapeERHas.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), new mxConnectionConstraint(new mxPoint(0.75, 0.75), false)]; + +function mxShapeERCloud(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERCloud, mxShape); + +mxShapeERCloud.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERCloud.prototype.background = function (c, x, y, w, h, rSize, fontColor) { + c.begin(); + c.moveTo(0.25 * w, 0.25 * h); + c.curveTo(0.05 * w, 0.25 * h, 0, 0.5 * h, 0.16 * w, 0.55 * h); + c.curveTo(0, 0.66 * h, 0.18 * w, 0.9 * h, 0.31 * w, 0.8 * h); + c.curveTo(0.4 * w, h, 0.7 * w, h, 0.8 * w, 0.8 * h); + c.curveTo(w, 0.8 * h, w, 0.6 * h, 0.875 * w, 0.5 * h); + c.curveTo(w, 0.3 * h, 0.8 * w, 0.1 * h, 0.625 * w, 0.2 * h); + c.curveTo(0.5 * w, 0.05 * h, 0.3 * w, 0.05 * h, 0.25 * w, 0.25 * h); + c.fillAndStroke(); +}; + +mxShapeERCloud.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.cloud', mxShapeERCloud); +mxShapeERCloud.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.08, 0.5), false), new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), new mxConnectionConstraint(new mxPoint(0.5, 0.1), false), new mxConnectionConstraint(new mxPoint(0.5, 0.92), false), new mxConnectionConstraint(new mxPoint(0.24, 0.24), false), new mxConnectionConstraint(new mxPoint(0.22, 0.8), false), new mxConnectionConstraint(new mxPoint(0.81, 0.2), false), new mxConnectionConstraint(new mxPoint(0.78, 0.78), false)]; + +function mxShapeERHierarchy(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERHierarchy, mxShape); + +mxShapeERHierarchy.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'main').toString().split(','); + var subText = mxUtils.getValue(this.style, 'subText', 'sub').toString().split(','); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.shapeText(c, x, y, w, h, mainText, subText, fontSize, fontColor); +}; + +mxShapeERHierarchy.prototype.background = function (c, x, y, w, h, rSize, fontColor) { + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'rect') { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'dblFrame') { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } + + var trX = 0; + var trY = 0; + + if (buttonStyle === 'round') { + trX = w * 0.5; + trY = rSize; + c.translate(trX, trY); + w = w * 0.5 - rSize; + h = h - 2 * rSize; + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'rect') { + trX = w * 0.5; + trY = rSize; + c.translate(trX, trY); + w = w * 0.5 - rSize; + h = h - 2 * rSize; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } else if (buttonStyle === 'dblFrame') { + trX = w * 0.5; + trY = rSize * 0.15; + c.translate(trX, trY); + w = w * 0.5 - rSize * 0.15; + h = h - rSize * 0.3; + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } + + c.translate(-trX, -trY); +}; + +mxShapeERHierarchy.prototype.shapeText = function (c, x, y, w, h, text, subText, fontSize, fontColor, rSize) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.25, (h - fontSize) * 0.5, 0, 0, text[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.25, (h + fontSize) * 0.5, 0, 0, text[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.7, (h - fontSize) * 0.5, 0, 0, subText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.7, (h + fontSize) * 0.5, 0, 0, subText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.hierarchy', mxShapeERHierarchy); +mxShapeERHierarchy.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERNote(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERNote, mxShape); + +mxShapeERNote.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + var backColor = mxUtils.getValue(this.style, 'fillColor2', '#ffffff'); + c.translate(x, y); + var flipSize = 20; + w = Math.max(w, flipSize * 2); + h = Math.max(h, flipSize * 2); + this.background(c, x, y, w, h, flipSize); + c.setShadow(false); + this.flipShape(c, x, y, w, h, flipSize, backColor); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERNote.prototype.background = function (c, x, y, w, h, flipSize) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - flipSize, 0); + c.lineTo(w, flipSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERNote.prototype.flipShape = function (c, x, y, w, h, flipSize, backColor) { + c.setLineJoin('round'); + c.setFillColor(backColor); + c.begin(); + c.moveTo(w - flipSize, 0); + c.lineTo(w, flipSize); + c.lineTo(w - flipSize, flipSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERNote.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.note', mxShapeERNote); +mxShapeERNote.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERChen(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERChen, mxShape); + +mxShapeERChen.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var flipSize = 20; + w = Math.max(w, flipSize * 2); + h = Math.max(h, flipSize * 2); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERChen.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERChen.prototype.foreground = function (c, x, y, w, h, fontSize, fontColor) { + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.75); + c.lineTo(w, h * 0.75); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.25, h); + c.moveTo(w * 0.5, h * 0.25); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.75, h * 0.5); + c.lineTo(w * 0.75, h); + c.stroke(); + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.125, 0, 0, 'ERD Peter Chen\'s Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(fontSize * 0.85); + c.text(w * 0.25, h * 0.375, 0, 0, 'Cardinality', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.375, 0, 0, 'Optionality', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(fontSize * 0.7); + c.text(w * 0.125, h * 0.625, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.375, h * 0.625, 0, 0, 'One', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.625, h * 0.625, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.875, h * 0.625, 0, 0, 'Optional', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.125, h * 0.875, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.375, h * 0.875, 0, 0, 'Many', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.625, h * 0.875, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.875, h * 0.875, 0, 0, 'Mandatory', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.chens', mxShapeERChen); +mxShapeERChen.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERBachman(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERBachman, mxShape); + +mxShapeERBachman.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERBachman.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERBachman.prototype.foreground = function (c, x, y, w, h, fontSize, fontColor) { + c.begin(); + c.moveTo(0, h * 0.125); + c.lineTo(w, h * 0.125); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + c.moveTo(0, h * 0.375); + c.lineTo(w, h * 0.375); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.625); + c.lineTo(w, h * 0.625); + c.moveTo(0, h * 0.75); + c.lineTo(w, h * 0.75); + c.moveTo(0, h * 0.875); + c.lineTo(w, h * 0.875); + c.moveTo(w * 0.5, h * 0.125); + c.lineTo(w * 0.5, h); + c.stroke(); + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.0625, 0, 0, 'ERD Bachman\'s Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(fontSize * 0.85); + c.text(w * 0.52, h * 0.1875, 0, 0, 'Relationship', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.3125, 0, 0, 'Cardinality (One)', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.4375, 0, 0, 'Cardinality (Many)', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.5625, 0, 0, 'Mandatory, One', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.6875, 0, 0, 'Mandatory, Many', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.8125, 0, 0, 'Optional, One', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.9375, 0, 0, 'Optional, Many', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var textWidth = mxUtils.getSizeForString('has/forms', fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.begin(); + c.moveTo(w * 0.04, h * 0.1875); + c.lineTo(w * 0.25 - textWidth * 0.5, h * 0.1875); + c.moveTo(w * 0.25 + textWidth * 0.5, h * 0.1875); + c.lineTo(w * 0.46, h * 0.1875); + c.text(w * 0.25, h * 0.1875, 0, 0, 'has/forms', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, true, 0, 0); + c.moveTo(w * 0.04, h * 0.3125); + c.lineTo(w * 0.46, h * 0.3125); + c.moveTo(w * 0.04, h * 0.4375); + c.lineTo(w * 0.46, h * 0.4375); + c.moveTo(w * 0.46, h * 0.4050); + c.lineTo(w * 0.4, h * 0.4375); + c.lineTo(w * 0.46, h * 0.47); + c.moveTo(w * 0.04, h * 0.5625); + c.lineTo(w * 0.46, h * 0.5625); + c.moveTo(w * 0.38, h * 0.53); + c.lineTo(w * 0.38, h * 0.595); + c.moveTo(w * 0.04, h * 0.6875); + c.lineTo(w * 0.46, h * 0.6875); + c.moveTo(w * 0.46, h * 0.655); + c.lineTo(w * 0.4, h * 0.6875); + c.lineTo(w * 0.46, h * 0.72); + c.moveTo(w * 0.38, h * 0.655); + c.lineTo(w * 0.38, h * 0.72); + c.moveTo(w * 0.04, h * 0.8125); + c.lineTo(w * 0.46, h * 0.8125); + c.moveTo(w * 0.04, h * 0.9375); + c.lineTo(w * 0.46, h * 0.9375); + c.moveTo(w * 0.46, h * 0.9050); + c.lineTo(w * 0.4, h * 0.9375); + c.lineTo(w * 0.46, h * 0.97); + c.stroke(); + var ellSize = h / 15; + c.begin(); + c.ellipse(w * 0.46 - ellSize, h * 0.8125 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); + c.begin(); + c.ellipse(w * 0.4 - ellSize, h * 0.9375 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.er.bachmans', mxShapeERBachman); +mxShapeERBachman.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERInfEng(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERInfEng, mxShape); + +mxShapeERInfEng.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + w = Math.max(w, h / 1.5); + h = Math.max(h, fontSize * 5); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERInfEng.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERInfEng.prototype.foreground = function (c, x, y, w, h, fontSize, fontColor) { + c.begin(); + c.moveTo(0, h * 0.2); + c.lineTo(w, h * 0.2); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(0, h * 0.6); + c.lineTo(w, h * 0.6); + c.moveTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + c.moveTo(w * 0.5, h * 0.2); + c.lineTo(w * 0.5, h); + c.stroke(); + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.1, 0, 0, 'ERD Information Engineering Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(fontSize * 0.85); + c.text(w * 0.52, h * 0.3, 0, 0, 'Zero or one', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.5, 0, 0, 'One only', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.7, 0, 0, 'Zero or more', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.9, 0, 0, 'One or more', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var ellSize = h / 12; + c.begin(); + c.moveTo(w * 0.04, h * 0.3); + c.lineTo(w * 0.46, h * 0.3); + c.moveTo(w * 0.46 - ellSize, h * 0.25); + c.lineTo(w * 0.46 - ellSize, h * 0.35); + c.moveTo(w * 0.04, h * 0.5); + c.lineTo(w * 0.46, h * 0.5); + c.moveTo(w * 0.46 - ellSize * 2, h * 0.45); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.55); + c.moveTo(w * 0.46 - ellSize * 2.5, h * 0.45); + c.lineTo(w * 0.46 - ellSize * 2.5, h * 0.55); + c.moveTo(w * 0.04, h * 0.7); + c.lineTo(w * 0.46, h * 0.7); + c.moveTo(w * 0.46, h * 0.65); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.7); + c.lineTo(w * 0.46, h * 0.75); + c.stroke(); + c.moveTo(w * 0.04, h * 0.9); + c.lineTo(w * 0.46, h * 0.9); + c.moveTo(w * 0.46, h * 0.85); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.9); + c.lineTo(w * 0.46, h * 0.95); + c.moveTo(w * 0.46 - ellSize * 2.5, h * 0.85); + c.lineTo(w * 0.46 - ellSize * 2.5, h * 0.95); + c.stroke(); + c.begin(); + c.ellipse(w * 0.46 - ellSize * 3, h * 0.3 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); + c.begin(); + c.ellipse(w * 0.46 - ellSize * 3, h * 0.7 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.er.ie', mxShapeERInfEng); +mxShapeERInfEng.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; +mxMarker.addMarker('ERone', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); +mxMarker.addMarker('ERmandOne', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.moveTo(pe.x - nx - ny / 2, pe.y - ny + nx / 2); + c.lineTo(pe.x - nx + ny / 2, pe.y - ny - nx / 2); + c.stroke(); + }; +}); +mxMarker.addMarker('ERmany', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); +mxMarker.addMarker('ERoneToMany', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx - ny / 2, pe.y - ny + nx / 2); + c.lineTo(pe.x - nx + ny / 2, pe.y - ny - nx / 2); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); +mxMarker.addMarker('ERzeroToMany', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + c.begin(); + c.ellipse(pe.x - 1.5 * nx - a, pe.y - 1.5 * ny - a, 2 * a, 2 * a); + + if (filled) { + var oldColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + c.setFillColor('#ffffff'); + c.fillAndStroke(); + c.setFillColor(oldColor); + } else { + c.stroke(); + } + + c.begin(); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); +mxMarker.addMarker('ERzeroToOne', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + c.begin(); + c.ellipse(pe.x - 1.5 * nx - a, pe.y - 1.5 * ny - a, 2 * a, 2 * a); + + if (filled) { + var oldColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + c.setFillColor('#ffffff'); + c.fillAndStroke(); + c.setFillColor(oldColor); + } else { + c.stroke(); + } + + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); + +function mxShapeERRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeERRRect, mxShape); +mxShapeERRRect.prototype.cst = { + RRECT: 'mxgraph.er.rrect', + R_SIZE: 'rSize' +}; +mxShapeERRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Rounding Size', + type: 'float' +}]; + +mxShapeERRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeERRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeERRRect.prototype.cst.RRECT, mxShapeERRRect); +mxShapeERRRect.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxShapeERAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeERAnchor, mxShape); +mxShapeERAnchor.prototype.cst = { + ANCHOR: 'mxgraph.er.anchor' +}; + +mxShapeERAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeERAnchor.prototype.cst.ANCHOR, mxShapeERAnchor); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/ios7/mxIOS7Ui.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/ios7/mxIOS7Ui.js new file mode 100644 index 0000000000000..87199cf925321 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/ios7/mxIOS7Ui.js @@ -0,0 +1,1283 @@ +"use strict"; + +var mxIOS7C = { + MAIN_TEXT: 'mainText', + SUB_TEXT: 'subText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + BAR_POS: 'barPos', + BUTTON_TEXT: 'buttonText', + BUTTON_STATE: 'buttonState', + SELECTED: '+', + STATE_ON: 'on', + STATE_OFF: 'off', + GRID_SIZE: 'gridSize', + SHAPE_IOS7_APP_BAR: 'mxgraph.ios7ui.appBar', + SHAPE_IOS7_ON_OFF_BUTTON: 'mxgraph.ios7ui.onOffButton', + SHAPE_IOS7_SLIDER: 'mxgraph.ios7ui.slider', + SHAPE_IOS7_DOWNLOAD_BAR: 'mxgraph.ios7ui.downloadBar', + SHAPE_IOS7_ICON: 'mxgraph.ios7ui.icon', + SHAPE_IOS7_HOR_BUTTON_BAR: 'mxgraph.ios7ui.horButtonBar', + SHAPE_IOS7_PAGE_CONTROL: 'mxgraph.ios7ui.pageControl', + SHAPE_IOS7_EXPAND: 'mxgraph.ios7ui.expand', + SHAPE_IOS7_ICON_GRID: 'mxgraph.ios7ui.iconGrid', + SHAPE_IOS7_PHONE: 'mxgraph.ios7ui.phone', + SHAPE_IOS7_SEARCH_BOX: 'mxgraph.ios7ui.searchBox', + SHAPE_IOS7_URL: 'mxgraph.ios7ui.url', + SHAPE_IOS7_ACTION_DIALOG: 'mxgraph.ios7ui.actionDialog', + STYLE_FILLCOLOR2: 'fillColor2', + STYLE_FILLCOLOR3: 'fillColor3', + STYLE_TEXTCOLOR: 'textColor', + STYLE_TEXTCOLOR2: 'textColor2', + STYLE_STROKECOLOR2: 'strokeColor2', + STYLE_STROKECOLOR3: 'strokeColor3', + STYLE_TEXTSIZE: 'textSize' +}; + +function mxShapeIOS7AppBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7AppBar, mxShape); +mxShapeIOS7AppBar.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill Color 2', + type: 'color' +}]; + +mxShapeIOS7AppBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeIOS7AppBar.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7AppBar.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#222222')); + c.ellipse(5, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(9, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(13, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(17, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(21, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(54, h * 0.5 + 2, 2, 2); + c.fillAndStroke(); + c.setStrokeWidth(2); + c.begin(); + c.moveTo(52, h * 0.5 + 1); + c.arcTo(3.5, 3.5, 0, 0, 1, 58, h * 0.5 + 1); + c.stroke(); + c.begin(); + c.moveTo(50, h * 0.5 - 1); + c.arcTo(6, 6, 0, 0, 1, 60, h * 0.5 - 1); + c.stroke(); + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 6, h * 0.5 - 2); + c.lineTo(w - 6, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + c.setStrokeWidth(1); + c.begin(); + c.moveTo(w - 44, h * 0.5 - 2.5); + c.lineTo(w - 36, h * 0.5 + 2.5); + c.lineTo(w - 40, h * 0.5 + 5); + c.lineTo(w - 40, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 2.5); + c.lineTo(w - 44, h * 0.5 + 2.5); + c.stroke(); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_APP_BAR, mxShapeIOS7AppBar); + +function mxShapeIOS7OnOffButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7OnOffButton, mxShape); +mxShapeIOS7OnOffButton.prototype.customProperties = [{ + name: 'buttonState', + dispName: 'Button State', + type: 'enum', + enumList: [{ + val: 'on', + dispName: 'On' + }, { + val: 'off', + dispName: 'Off' + }] +}, { + name: 'strokeColor2', + dispName: 'Stroke Color 2', + type: 'color' +}, { + name: 'fillColor2', + dispName: 'Fill Color 2', + type: 'color' +}]; + +mxShapeIOS7OnOffButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + w = Math.max(w, 2 * h); + var state = mxUtils.getValue(this.style, mxIOS7C.BUTTON_STATE, mxIOS7C.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(false); + this.foreground(c, x, y, w, h, state); +}; + +mxShapeIOS7OnOffButton.prototype.background = function (c, x, y, w, h, state) { + if (state === mxIOS7C.STATE_ON) { + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } else if (state === mxIOS7C.STATE_OFF) { + c.setStrokeColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#aaaaaa')); + c.setFillColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#ffffff')); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } +}; + +mxShapeIOS7OnOffButton.prototype.foreground = function (c, x, y, w, h, state) { + c.setFillColor('#ffffff'); + + if (state === mxIOS7C.STATE_ON) { + c.ellipse(w - h + 1, 1, h - 2, h - 2); + c.fill(); + } else { + c.ellipse(0, 0, h, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ON_OFF_BUTTON, mxShapeIOS7OnOffButton); + +function mxShapeIOS7Slider(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.barPos = 80; +} + +; +mxUtils.extend(mxShapeIOS7Slider, mxShape); + +mxShapeIOS7Slider.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeIOS7Slider.prototype.foreground = function (c, w, h) { + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + var barPos = mxUtils.getValue(this.style, mxIOS7C.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#a0a0a0')); + c.ellipse(truePos - 5, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_SLIDER, mxShapeIOS7Slider); + +Graph.handleFactory[mxIOS7C.SHAPE_IOS7_SLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + return new mxPoint(bounds.x + barPos / 100 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeIOS7DownloadBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.barPos = 80; +} + +; +mxUtils.extend(mxShapeIOS7DownloadBar, mxShape); +mxShapeIOS7DownloadBar.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 30 +}, { + name: 'strokeColor2', + dispName: 'Stroke Color 2', + type: 'color' +}]; + +mxShapeIOS7DownloadBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.foreground(c, w, h); +}; + +mxShapeIOS7DownloadBar.prototype.foreground = function (c, w, h) { + var fieldText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, ''); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var barPos = mxUtils.getValue(this.style, mxIOS7C.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var truePos = w * barPos / 100; + c.setStrokeWidth(2); + c.setStrokeColor(mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '')); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.setStrokeColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '')); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(truePos, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_DOWNLOAD_BAR, mxShapeIOS7DownloadBar); + +Graph.handleFactory[mxIOS7C.SHAPE_IOS7_DOWNLOAD_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + return new mxPoint(bounds.x + barPos / 100 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeIOS7Icon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7Icon, mxShape); + +mxShapeIOS7Icon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.foreground(c, w, h); +}; + +mxShapeIOS7Icon.prototype.foreground = function (c, w, h) { + c.setGradient('#00D0F0', '#0080F0', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, w * 0.1, h * 0.1); + c.fill(); + var fieldText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, ''); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.5, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ICON, mxShapeIOS7Icon); + +function mxShapeIOS7horButtonBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7horButtonBar, mxShape); + +mxShapeIOS7horButtonBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 2.5; + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxIOS7C.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 10); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeIOS7horButtonBar.prototype.background = function (c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, bgColor, selectedFillColor, selectedButton) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(frameColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + var buttonLeft = 0; + c.setStrokeColor(mxConstants.NONE); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + c.setFillColor('#0080F0'); + + if (selectedButton === 0) { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } else if (selectedButton !== -1) { + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeIOS7horButtonBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxIOS7C.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_HOR_BUTTON_BAR, mxShapeIOS7horButtonBar); + +function mxShapeIOS7pageControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7pageControl, mxShape); + +mxShapeIOS7pageControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.25 - rSize * 0.5, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.5 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.75 - rSize * 1.5, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_PAGE_CONTROL, mxShapeIOS7pageControl); + +function mxShapeIOS7iconGrid(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7iconGrid, mxShape); +mxShapeIOS7iconGrid.prototype.customProperties = [{ + name: 'gridSize', + dispName: 'Grid Size', + type: 'String' +}]; + +mxShapeIOS7iconGrid.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxIOS7C.GRID_SIZE, '4,7').toString().split(','); + var boxSizeX = w / (parseInt(gridSize[0], 10) + (gridSize[0] - 1) * 0.1); + var boxSizeY = h / (parseInt(gridSize[1], 10) + (gridSize[1] - 1) * 0.1); + + for (var i = 0; i < gridSize[0]; i++) { + for (var j = 0; j < gridSize[1]; j++) { + c.rect(boxSizeX * 1.1 * i, boxSizeY * 1.1 * j, boxSizeX, boxSizeY); + c.fill(); + } + } +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ICON_GRID, mxShapeIOS7iconGrid); + +function mxShapeIOS7phone(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7phone, mxShape); + +mxShapeIOS7phone.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 25; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeIOS7phone.prototype.foreground = function (c, x, y, w, h, rSize) { + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.stroke(); + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.stroke(); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.stroke(); + c.roundrect(w * 0.4575, h * 0.905, w * 0.085, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_PHONE, mxShapeIOS7phone); + +function mxShapeIOS7searchBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7searchBox, mxShape); + +mxShapeIOS7searchBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeIOS7searchBox.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7searchBox.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, 'Search'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + var rSize = Math.min(w, h) * 0.1; + c.setFillColor('#ffffff'); + c.roundrect(w * 0.05, h * 0.15, w * 0.5, h * 0.7, rSize, rSize); + c.fillAndStroke(); + c.setFontColor(fontColor); + c.setFontSize(Math.min(h * 0.7, w * 0.1)); + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeColor(strokeColor2); + c.ellipse(w * 0.05 + 3, h * 0.5 - 3, 4, 4); + c.stroke(); + c.begin(); + c.moveTo(w * 0.05 + 8, h * 0.5 + 3.5); + c.lineTo(w * 0.05 + 6, h * 0.5 + 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_SEARCH_BOX, mxShapeIOS7searchBox); + +function mxShapeIOS7URL(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7URL, mxShape); + +mxShapeIOS7URL.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeIOS7URL.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7URL.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, 'draw.io'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + var rSize = Math.min(w, h) * 0.1; + c.setFillColor('#d8d8d8'); + c.roundrect(w * 0.05, h * 0.15, w * 0.9, h * 0.7, rSize, rSize); + c.fill(); + c.setFontColor(fontColor); + c.setFontSize(Math.min(h * 0.7, w * 0.1)); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.95 - 5, h * 0.5); + c.arcTo(3, 3, 0, 1, 1, w * 0.95 - 8, h * 0.5 - 3); + c.stroke(); + c.setFillColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.95 - 8, h * 0.5 - 4); + c.lineTo(w * 0.95 - 6, h * 0.5 - 3); + c.lineTo(w * 0.95 - 8, h * 0.5 - 2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_URL, mxShapeIOS7URL); + +function mxShapeIOS7Actiondialog(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7Actiondialog, mxShape); + +mxShapeIOS7Actiondialog.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxIOS7C.MAIN_TEXT, 'Main Text'); + var subText = mxUtils.getValue(this.style, mxIOS7C.SUB_TEXT, 'Sub Text'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + c.setFillColor('#e0e0e0'); + c.roundrect(w * 0.05, h * 0.1, w * 0.9, h * 0.35, w * 0.025, h * 0.05); + c.fill(); + c.roundrect(w * 0.05, h * 0.55, w * 0.9, h * 0.35, w * 0.025, h * 0.05); + c.fill(); + c.setFontStyle(mxConstants.FONT_BOLD); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); + this.subText(c, x, y, w, h, subText, fontSize / 1.4, fontColor); +}; + +mxShapeIOS7Actiondialog.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7Actiondialog.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.4, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeIOS7Actiondialog.prototype.subText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.7, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ACTION_DIALOG, mxShapeIOS7Actiondialog); + +function mxShapeIOS7Anchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeIOS7Anchor, mxShape); +mxShapeIOS7Anchor.prototype.cst = { + ANCHOR: 'mxgraph.ios7ui.anchor' +}; + +mxShapeIOS7Anchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeIOS7Anchor.prototype.cst.ANCHOR, mxShapeIOS7Anchor); + +function mxShapeIOS7RRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7RRect, mxShape); +mxShapeIOS7RRect.prototype.cst = { + RRECT: 'mxgraph.ios7ui.rrect', + R_SIZE: 'rSize' +}; +mxShapeIOS7RRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 3 +}]; + +mxShapeIOS7RRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7RRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7RRect.prototype.cst.RRECT, mxShapeIOS7RRect); + +function mxShapeIOS7LeftButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7LeftButton, mxShape); +mxShapeIOS7LeftButton.prototype.cst = { + LEFT_BUTTON: 'mxgraph.ios7ui.leftButton', + R_SIZE: 'rSize' +}; +mxShapeIOS7LeftButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 3 +}]; + +mxShapeIOS7LeftButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7LeftButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7LeftButton.prototype.cst.LEFT_BUTTON, mxShapeIOS7LeftButton); + +function mxShapeIOS7RightButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7RightButton, mxShape); +mxShapeIOS7RightButton.prototype.cst = { + RIGHT_BUTTON: 'mxgraph.ios7ui.rightButton', + R_SIZE: 'rSize' +}; +mxShapeIOS7RightButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 3 +}]; + +mxShapeIOS7RightButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7RightButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7RightButton.prototype.cst.RIGHT_BUTTON, mxShapeIOS7RightButton); + +function mxShapeIOS7TopButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7TopButton, mxShape); +mxShapeIOS7TopButton.prototype.cst = { + TOP_BUTTON: 'mxgraph.ios7ui.topButton', + R_SIZE: 'rSize' +}; +mxShapeIOS7TopButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 3 +}]; + +mxShapeIOS7TopButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7TopButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, h); + c.lineTo(0, h); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7TopButton.prototype.cst.TOP_BUTTON, mxShapeIOS7TopButton); + +function mxShapeIOS7BottomButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7BottomButton, mxShape); +mxShapeIOS7BottomButton.prototype.cst = { + BOTTOM_BUTTON: 'mxgraph.ios7ui.bottomButton', + R_SIZE: 'rSize' +}; +mxShapeIOS7BottomButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 3 +}]; + +mxShapeIOS7BottomButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7BottomButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, 0); + c.lineTo(0, 0); + c.lineTo(0, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, rSize, h); + c.lineTo(w - rSize, h); + c.arcTo(rSize, rSize, 0, 0, 0, w, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7BottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeIOS7BottomButton); + +function mxShapeIOS7HorLines(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7HorLines, mxShape); +mxShapeIOS7HorLines.prototype.cst = { + HOR_LINES: 'mxgraph.ios7ui.horLines' +}; + +mxShapeIOS7HorLines.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fill(); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7HorLines.prototype.cst.HOR_LINES, mxShapeIOS7HorLines); + +function mxShapeIOS7MarginRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7MarginRect, mxShape); +mxShapeIOS7MarginRect.prototype.customProperties = [{ + name: 'rx', + dispName: 'Hor. Rounding Size', + type: 'float', + min: 0, + defVal: 3 +}, { + name: 'ry', + dispName: 'Ver. Rounding Size', + type: 'float', + min: 0, + defVal: 3 +}, { + name: 'rectMargin', + dispName: 'Global Margin', + type: 'float', + min: 0, + defVal: 5 +}, { + name: 'rectMarginTop', + dispName: 'Top Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginLeft', + dispName: 'Left Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginBottom', + dispName: 'Bottom Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginRight', + dispName: 'Right Margin', + type: 'float', + min: 0, + defVal: 0 +}]; +mxShapeIOS7MarginRect.prototype.cst = { + SHAPE_MARGIN_RECT: 'mxgraph.ios7ui.marginRect', + MARGIN: 'rectMargin', + RX: 'rx', + RY: 'ry', + MARGIN_TOP: 'rectMarginTop', + MARGIN_LEFT: 'rectMarginLeft', + MARGIN_BOTTOM: 'rectMarginBottom', + MARGIN_RIGHT: 'rectMarginRight' +}; + +mxShapeIOS7MarginRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeIOS7MarginRect.prototype.background = function (c, x, y, w, h, state) { + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_RIGHT, '0')); + var rx = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.RX, '0')); + var ry = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.RY, '0')); + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 > 0 && h1 > 0) { + c.begin(); + c.roundrect(x1, y1, w1, h1, rx, ry); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeIOS7MarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeIOS7MarginRect); + +function mxShapeIOS7Callout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7Callout, mxShape); +mxShapeIOS7Callout.prototype.cst = { + SHAPE_CALLOUT: 'mxgraph.ios7ui.callout' +}; + +mxShapeIOS7Callout.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeIOS7Callout.prototype.background = function (c, x, y, w, h, state) { + var r = 10; + + if (w >= 30 && h >= 20) { + c.begin(); + c.moveTo(15, h - r * 0.3); + c.arcTo(r * 2, r, 0, 0, 1, 0, h); + c.arcTo(r * 1.5, r * 1.5, 0, 0, 0, 10, h - r * 1); + c.lineTo(r, r); + c.arcTo(r, r, 0, 0, 1, r * 2, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - r); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r * 2, h); + c.arcTo(r, r, 0, 0, 1, r * 1.5, h - r * 0.3); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeIOS7Callout.prototype.cst.SHAPE_CALLOUT, mxShapeIOS7Callout); + +function mxShapeIOS7SelectBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.dx2 = 70; + this.size = 10; +} + +; +mxUtils.extend(mxShapeIOS7SelectBar, mxActor); +mxShapeIOS7SelectBar.prototype.cst = { + SELECT_BAR: 'mxgraph.ios7ui.selectBar' +}; +mxShapeIOS7SelectBar.prototype.customProperties = [{ + name: 'dx', + dispName: 'Callout Position', + type: 'float', + min: 0, + defVal: 120 +}, { + name: 'dx2', + dispName: 'Field Size', + type: 'float', + min: 0, + defVal: 75 +}, { + name: 'size', + dispName: 'Rounding size', + type: 'float', + min: 0, + defVal: 5 +}, { + name: 'dy', + dispName: 'Callout Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeIOS7SelectBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var dy = Math.max(0, Math.min(h, (w - Math.max(20, r) - r) / 2, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + r = Math.min(h / 2, w / 2, r); + dx = Math.max(r + dy, dx); + dx = Math.min(w - r - dy, w - 20 - dy, dx); + c.begin(); + c.moveTo(dx - dy, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, 0, h - r); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - r); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(dx + dy, h); + c.lineTo(dx, h + dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w - Math.max(20, r), 0); + c.lineTo(w - Math.max(20, r), h); + c.stroke(); + var currDx = dx2; + c.begin(); + + while (currDx < w - Math.max(20, r)) { + c.moveTo(currDx, 0); + c.lineTo(currDx, h); + currDx = currDx + dx2; + } + + c.stroke(); + var w1 = Math.min(Math.max(20, r), h); + var x1 = w - w1 * 0.5; + var y1 = h * 0.5; + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '')); + c.begin(); + c.moveTo(x1 - w1 * 0.15, y1 - w1 * 0.225); + c.lineTo(x1 + w1 * 0.25, y1); + c.lineTo(x1 - w1 * 0.15, y1 + w1 * 0.225); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7SelectBar.prototype.cst.SELECT_BAR, mxShapeIOS7SelectBar); +mxShapeIOS7SelectBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeIOS7SelectBar.prototype.cst.SELECT_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height); + }, function (bounds, pt) { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), bounds.y + bounds.height + dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, pt.y - bounds.y - bounds.height))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + return new mxPoint(bounds.x + bounds.width - size, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.height / 2, bounds.x + bounds.width - pt.x))) / 100; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + }); + handles.push(handle4); + return handles; +}; + +function mxShapeIOS7Slider2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIOS7Slider2, mxShape); +mxShapeIOS7Slider2.prototype.cst = { + SHAPE_SLIDER: 'mxgraph.ios7ui.slider', + BAR_POS: 'barPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeIOS7Slider2.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 20 +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeIOS7Slider2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeIOS7Slider2.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7Slider2.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7Slider2.prototype.cst.BAR_POS, '40')) / 100; + barPos = Math.max(0, Math.min(1, barPos)); + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7Slider2.prototype.cst.SHAPE_SLIDER, mxShapeIOS7Slider2); +mxShapeIOS7Slider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeIOS7Slider2.prototype.cst.SHAPE_SLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupButtons.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupButtons.js new file mode 100644 index 0000000000000..51124248f753f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupButtons.js @@ -0,0 +1,794 @@ +"use strict"; + +function mxShapeMockupMultiButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupMultiButton, mxShape); +mxShapeMockupMultiButton.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_MULTILINE_BUTTON: 'mxgraph.mockup.buttons.multiButton', + SUB_TEXT: 'subText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + BUTTON_STYLE: 'buttonStyle', + ROUND: 'round', + CHEVRON: 'chevron' +}; +mxShapeMockupMultiButton.prototype.customProperties = [{ + name: 'buttonStyle', + dispName: 'Style', + type: 'enum', + defVal: 'round', + enumList: [{ + val: 'round', + dispName: 'Round' + }, { + val: 'chevron', + dispName: 'Chevron' + }] +}]; + +mxShapeMockupMultiButton.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.MAIN_TEXT, 'Main Text'); + var subText = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.SUB_TEXT, 'Sub Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.TEXT_SIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + c.setFontStyle(mxConstants.FONT_BOLD); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); + this.subText(c, x, y, w, h, subText, fontSize / 1.4, fontColor); +}; + +mxShapeMockupMultiButton.prototype.background = function (c, x, y, w, h) { + var buttonStyle = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.BUTTON_STYLE, mxShapeMockupMultiButton.prototype.cst.ROUND).toString(); + var rSize = 10; + c.begin(); + + if (buttonStyle === mxShapeMockupMultiButton.prototype.cst.ROUND) { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } else if (buttonStyle === mxShapeMockupMultiButton.prototype.cst.CHEVRON) { + c.moveTo(0, h * 0.1); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, w * 0.0334, 0); + c.lineTo(w * 0.768, 0); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.8014, h * 0.0399); + c.lineTo(w * 0.99, h * 0.4585); + c.arcTo(w * 0.09, h * 0.1, 0, 0, 1, w * 0.99, h * 0.5415); + c.lineTo(w * 0.8014, h * 0.9568); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.768, h); + c.lineTo(w * 0.0334, h); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, 0, h * 0.9); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupMultiButton.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.4, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeMockupMultiButton.prototype.subText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.7, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupMultiButton.prototype.cst.SHAPE_MULTILINE_BUTTON, mxShapeMockupMultiButton); + +function mxShapeMockupButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupButton, mxShape); +mxShapeMockupButton.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_BUTTON: 'mxgraph.mockup.buttons.button', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + BUTTON_STYLE: 'buttonStyle', + ROUND: 'round', + CHEVRON: 'chevron' +}; +mxShapeMockupButton.prototype.customProperties = [{ + name: 'buttonStyle', + dispName: 'Style', + type: 'enum', + defVal: 'round', + enumList: [{ + val: 'round', + dispName: 'Round' + }, { + val: 'chevron', + dispName: 'Chevron' + }] +}]; + +mxShapeMockupButton.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.MAIN_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.TEXT_SIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupButton.prototype.background = function (c, x, y, w, h) { + var buttonStyle = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.BUTTON_STYLE, mxShapeMockupButton.prototype.cst.ROUND).toString(); + var rSize = 10; + c.begin(); + + if (buttonStyle === mxShapeMockupButton.prototype.cst.ROUND) { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } else if (buttonStyle === mxShapeMockupButton.prototype.cst.CHEVRON) { + c.moveTo(0, h * 0.1); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, w * 0.0334, 0); + c.lineTo(w * 0.768, 0); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.8014, h * 0.0399); + c.lineTo(w * 0.99, h * 0.4585); + c.arcTo(w * 0.09, h * 0.1, 0, 0, 1, w * 0.99, h * 0.5415); + c.lineTo(w * 0.8014, h * 0.9568); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.768, h); + c.lineTo(w * 0.0334, h); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, 0, h * 0.9); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupButton.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w / 2, h / 2, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupButton.prototype.cst.SHAPE_BUTTON, mxShapeMockupButton); + +function mxShapeMockupHorButtonBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupHorButtonBar, mxShape); +mxShapeMockupHorButtonBar.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_HOR_BUTTON_BAR: 'mxgraph.mockup.buttons.horButtonBar', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupHorButtonBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupHorButtonBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + c.setFontStyle(mxConstants.FONT_BOLD); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupHorButtonBar.prototype.background = function (c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } else if (selectedButton !== -1) { + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupHorButtonBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxShapeMockupHorButtonBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupHorButtonBar.prototype.cst.SHAPE_HOR_BUTTON_BAR, mxShapeMockupHorButtonBar); + +function mxShapeMockupVerButtonBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupVerButtonBar, mxShape); +mxShapeMockupVerButtonBar.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_VER_BUTTON_BAR: 'mxgraph.mockup.buttons.verButtonBar', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupVerButtonBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 10; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupVerButtonBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight); + c.setShadow(false); + var currWidth = 0; + c.setFontStyle(mxConstants.FONT_BOLD); + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize); + } +}; + +mxShapeMockupVerButtonBar.prototype.background = function (c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currHeight = i * minButtonHeight * h / minH; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + + c.stroke(); + c.setFillColor(selectedFillColor); + + if (selectedButton === 0) { + c.begin(); + var buttonBottom = minButtonHeight * h / minH; + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.begin(); + var buttonTop = h - minButtonHeight * h / minH; + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } else if (selectedButton !== -1) { + c.begin(); + var buttonTop = minButtonHeight * selectedButton * h / minH; + var buttonBottom = minButtonHeight * (selectedButton + 1) * h / minH; + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupVerButtonBar.prototype.buttonText = function (c, w, h, textString, fontSize) { + if (textString.charAt(0) === mxShapeMockupVerButtonBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupVerButtonBar.prototype.cst.SHAPE_VER_BUTTON_BAR, mxShapeMockupVerButtonBar); + +function mxShapeMockupOnOffButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupOnOffButton, mxShape); +mxShapeMockupOnOffButton.prototype.cst = { + SHAPE_ON_OFF_BUTTON: 'mxgraph.mockup.buttons.onOffButton', + BUTTON_STATE: 'buttonState', + STATE_ON: 'on', + STATE_OFF: 'off', + FILL_COLOR2: 'fillColor2', + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize' +}; +mxShapeMockupOnOffButton.prototype.customProperties = [{ + name: 'buttonState', + dispName: 'Button State', + type: 'enum', + enumList: [{ + val: 'on', + dispName: 'On' + }, { + val: 'off', + dispName: 'Off' + }] +}]; + +mxShapeMockupOnOffButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + w = Math.max(w, 10); + h = Math.max(h, 10); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupOnOffButton.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeMockupOnOffButton.prototype.foreground = function (c, x, y, w, h) { + var state = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.BUTTON_STATE, mxShapeMockupOnOffButton.prototype.cst.STATE_ON); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.FILL_COLOR2, '#008cff'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.TEXT_COLOR, '#ffffff,#999999').toString().split(','); + var mainText = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.MAIN_TEXT, 'ON,OFF').toString().split(','); + var textSize = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.TEXT_SIZE, '17'); + + if (state === mxShapeMockupOnOffButton.prototype.cst.STATE_ON) { + c.setFillColor(fillColor2); + c.setFontColor(textColor[0]); + c.roundrect(0, 0, w * 0.75, h, 10, 10); + } else { + c.setFontColor(textColor[1]); + c.roundrect(w * 0.25, 0, w * 0.75, h, 10, 10); + } + + c.fillAndStroke(); + c.setFontSize(textSize); + c.setFontStyle(mxConstants.FONT_BOLD); + + if (state === mxShapeMockupOnOffButton.prototype.cst.STATE_ON) { + c.text(w * 0.375, h * 0.5, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (state === mxShapeMockupOnOffButton.prototype.cst.STATE_OFF) { + c.text(w * 0.625, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupOnOffButton.prototype.cst.SHAPE_ON_OFF_BUTTON, mxShapeMockupOnOffButton); + +function mxShapeMockupRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRRect, mxShape); +mxShapeMockupRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRRect.prototype.cst.RRECT, mxShapeMockupRRect); + +function mxShapeMockupAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupAnchor, mxShape); +mxShapeMockupAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.anchor' +}; +mxShapeMockupAnchor.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupAnchor.prototype.cst.ANCHOR, mxShapeMockupAnchor); + +function mxShapeMockupTopButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupTopButton, mxShape); +mxShapeMockupTopButton.prototype.cst = { + TOP_BUTTON: 'mxgraph.mockup.topButton', + R_SIZE: 'rSize' +}; +mxShapeMockupTopButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupTopButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupTopButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTopButton.prototype.cst.TOP_BUTTON, mxShapeMockupTopButton); + +function mxShapeMockupBottomButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBottomButton, mxShape); +mxShapeMockupBottomButton.prototype.cst = { + BOTTOM_BUTTON: 'mxgraph.mockup.bottomButton', + R_SIZE: 'rSize' +}; +mxShapeMockupBottomButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupBottomButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupBottomButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeMockupBottomButton); + +function mxShapeMockupRightButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRightButton, mxShape); +mxShapeMockupRightButton.prototype.cst = { + RIGHT_BUTTON: 'mxgraph.mockup.rightButton', + R_SIZE: 'rSize' +}; +mxShapeMockupRightButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupRightButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRightButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRightButton.prototype.cst.RIGHT_BUTTON, mxShapeMockupRightButton); + +function mxShapeMockupLeftButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupLeftButton, mxShape); +mxShapeMockupLeftButton.prototype.cst = { + LEFT_BUTTON: 'mxgraph.mockup.leftButton', + R_SIZE: 'rSize' +}; +mxShapeMockupLeftButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupLeftButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupLeftButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLeftButton.prototype.cst.LEFT_BUTTON, mxShapeMockupLeftButton); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupContainers.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupContainers.js new file mode 100644 index 0000000000000..c82f3c153ba8d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupContainers.js @@ -0,0 +1,1685 @@ +"use strict"; + +function mxShapeMockupVideoPlayer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.barPos = 20; + this.barHeight = 30; +} + +; +mxUtils.extend(mxShapeMockupVideoPlayer, mxShape); +mxShapeMockupVideoPlayer.prototype.cst = { + FILL_COLOR2: 'fillColor2', + TEXT_COLOR: 'textColor', + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SHAPE_VIDEO_PLAYER: 'mxgraph.mockup.containers.videoPlayer', + BAR_POS: 'barPos', + BAR_HEIGHT: 'barHeight' +}; +mxShapeMockupVideoPlayer.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'textColor', + dispName: 'Text Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Stroke3 Color', + type: 'color' +}, { + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 100, + defVal: 20 +}, { + name: 'barHeight', + dispName: 'Video Bar Height', + type: 'float', + min: 0, + defVal: 30 +}]; + +mxShapeMockupVideoPlayer.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var buttonColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.FILL_COLOR2, '#c4c4c4'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var filledColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.STROKE_COLOR2, '#008cff'); + var emptyColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + var barHeight = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.BAR_HEIGHT, '30'); + w = Math.max(w, 5 * barHeight); + h = Math.max(h, barHeight + 10); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, buttonColor, frameColor, filledColor, emptyColor, barHeight); +}; + +mxShapeMockupVideoPlayer.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupVideoPlayer.prototype.otherShapes = function (c, x, y, w, h, buttonColor, frameColor, filledColor, emptyColor, barHeight) { + var barPos = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.BAR_POS, '20'); + barPos = Math.max(0, barPos); + barPos = Math.min(100, barPos); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var buttonR = 8; + var barY = h - barHeight; + var barMin = buttonR; + var barMax = w - buttonR; + var barRange = barMax - barMin; + var realBarPos = barRange * barPos / 100; + var barEnd = barMin + realBarPos; + c.setStrokeColor(filledColor); + c.begin(); + c.moveTo(0, barY); + c.lineTo(barEnd, barY); + c.stroke(); + c.setStrokeColor(emptyColor); + c.begin(); + c.moveTo(barEnd, barY); + c.lineTo(w, barY); + c.stroke(); + c.setStrokeColor(frameColor); + c.begin(); + c.ellipse(barEnd - buttonR, barY - buttonR, 2 * buttonR, 2 * buttonR); + c.fillAndStroke(); + c.begin(); + c.setStrokeWidth(strokeWidth / 2); + c.ellipse(barEnd - buttonR * 0.5, barY - buttonR * 0.5, buttonR, buttonR); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth); + var iconSize = barHeight * 0.3; + var iconY = h - (barHeight + iconSize) * 0.5; + var iconX = barHeight * 0.3; + c.setFillColor(buttonColor); + c.setStrokeColor(buttonColor); + c.begin(); + c.moveTo(iconX, iconY); + c.lineTo(iconX + iconSize, iconY + iconSize * 0.5); + c.lineTo(iconX, iconY + iconSize); + c.close(); + c.fillAndStroke(); + var speakerX = barHeight; + var speakerY = h - barHeight; + c.moveTo(speakerX + barHeight * 0.05, speakerY + barHeight * 0.4); + c.lineTo(speakerX + barHeight * 0.15, speakerY + barHeight * 0.4); + c.lineTo(speakerX + barHeight * 0.3, speakerY + barHeight * 0.25); + c.lineTo(speakerX + barHeight * 0.3, speakerY + barHeight * 0.75); + c.lineTo(speakerX + barHeight * 0.15, speakerY + barHeight * 0.6); + c.lineTo(speakerX + barHeight * 0.05, speakerY + barHeight * 0.6); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(speakerX + barHeight * 0.4, speakerY + barHeight * 0.35); + c.arcTo(barHeight * 0.2, barHeight * 0.3, 0, 0, 1, speakerX + barHeight * 0.4, speakerY + barHeight * 0.65); + c.moveTo(speakerX + barHeight * 0.425, speakerY + barHeight * 0.25); + c.arcTo(barHeight * 0.225, barHeight * 0.35, 0, 0, 1, speakerX + barHeight * 0.425, speakerY + barHeight * 0.75); + c.stroke(); + var screenX = w - barHeight * 1.3; + c.begin(); + c.moveTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.4); + c.lineTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.3); + c.lineTo(screenX + barHeight * 0.25, speakerY + barHeight * 0.3); + c.moveTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.6); + c.lineTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.7); + c.lineTo(screenX + barHeight * 0.25, speakerY + barHeight * 0.7); + c.moveTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.4); + c.lineTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.3); + c.lineTo(screenX + barHeight * 0.75, speakerY + barHeight * 0.3); + c.moveTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.6); + c.lineTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.7); + c.lineTo(screenX + barHeight * 0.75, speakerY + barHeight * 0.7); + c.stroke(); + var textColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.TEXT_COLOR, '#666666'); + c.begin(); + c.setFontSize(barHeight * 0.5); + c.setFontColor(textColor); + c.text(barHeight * 1.9, h - barHeight * 0.45, 0, 0, '0:00/3:53', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupVideoPlayer.prototype.cst.SHAPE_VIDEO_PLAYER, mxShapeMockupVideoPlayer); + +Graph.handleFactory[mxShapeMockupVideoPlayer.prototype.cst.SHAPE_VIDEO_PLAYER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + var barH = parseFloat(mxUtils.getValue(this.state.style, 'barHeight', this.barHeight)); + return new mxPoint(bounds.x + (bounds.width - 16) * barPos / bounds.width / 100 * bounds.width + 8, bounds.y + bounds.height - barH - 20); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + var handle2 = Graph.createHandle(state, ['barHeight'], function (bounds) { + var barHeight = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'barHeight', this.barHeight)))); + return new mxPoint(bounds.x + bounds.width - 20, bounds.y + bounds.height - barHeight); + }, function (bounds, pt) { + this.state.style['barHeight'] = Math.round(1000 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 1000; + }); + handles.push(handle2); + return handles; +}; + +function mxShapeMockupAccordion(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupAccordion, mxShape); +mxShapeMockupAccordion.prototype.cst = { + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + TEXT_SIZE: 'textSize', + SHAPE_ACCORDION: 'mxgraph.mockup.containers.accordion', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + MAIN_TEXT: 'mainText' +}; + +mxShapeMockupAccordion.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.MAIN_TEXT, '+Group 1, Group 2, Group 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 10; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupAccordion.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight); + c.setShadow(false); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = 0; + + if (selectedButton === -1 || i <= selectedButton) { + currHeight = i * minButtonHeight + minButtonHeight * 0.5; + } else { + currHeight = trueH - (buttonNum - i - 0.5) * minButtonHeight; + } + + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize); + } +}; + +mxShapeMockupAccordion.prototype.background = function (c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton) { + if (selectedButton === -1 || i < selectedButton) { + var currHeight = i * minButtonHeight; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } else { + var currHeight = h - (buttonNum - i) * minButtonHeight; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + } + + c.stroke(); + c.setStrokeColor(mxConstants.NONE); + c.setFillColor(selectedFillColor); + + if (selectedButton !== -1) { + c.begin(); + var buttonTop = minButtonHeight * selectedButton; + var buttonBottom = minButtonHeight * (selectedButton + 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxShapeMockupAccordion.prototype.buttonText = function (c, w, h, textString, fontSize) { + if (textString.charAt(0) === mxShapeMockupAccordion.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupAccordion.prototype.cst.SHAPE_ACCORDION, mxShapeMockupAccordion); + +function mxShapeMockupBrowserWindow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBrowserWindow, mxShape); +mxShapeMockupBrowserWindow.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + MAIN_TEXT: 'mainText', + SHAPE_BROWSER_WINDOW: 'mxgraph.mockup.containers.browserWindow' +}; +mxShapeMockupBrowserWindow.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Stroke3 Color', + type: 'color' +}]; + +mxShapeMockupBrowserWindow.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + w = Math.max(w, 260); + h = Math.max(h, 110); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupBrowserWindow.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupBrowserWindow.prototype.otherShapes = function (c, x, y, w, h, frameColor, insideColor, closeColor) { + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.MAIN_TEXT, 'http://www.draw.io,Page 1').toString().split(','); + c.setStrokeColor(frameColor); + c.ellipse(w - 75, 5, 20, 20); + c.stroke(); + c.ellipse(w - 50, 5, 20, 20); + c.stroke(); + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + c.setStrokeColor(insideColor); + c.begin(); + c.moveTo(0, 40); + c.lineTo(30, 40); + c.lineTo(30, 15); + c.arcTo(5, 5, 0, 0, 1, 35, 10); + c.lineTo(170, 10); + c.arcTo(5, 5, 0, 0, 1, 175, 15); + c.lineTo(175, 40); + c.lineTo(w, 40); + c.stroke(); + c.begin(); + c.moveTo(0, 110); + c.lineTo(w, 110); + c.stroke(); + c.begin(); + c.moveTo(100, 60); + c.arcTo(5, 5, 0, 0, 1, 105, 55); + c.lineTo(w - 15, 55); + c.arcTo(5, 5, 0, 0, 1, w - 10, 60); + c.lineTo(w - 10, 85); + c.arcTo(5, 5, 0, 0, 1, w - 15, 90); + c.lineTo(105, 90); + c.arcTo(5, 5, 0, 0, 1, 100, 85); + c.close(); + c.stroke(); + var textColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.TEXT_COLOR, '#666666'); + c.setFontColor(textColor); + c.setFontSize(17); + c.text(65, 25, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(130, 73, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.stroke(); + c.translate(37, 17); + c.begin(); + c.moveTo(0, 0); + c.lineTo(11, 0); + c.lineTo(15, 4); + c.lineTo(15, 18); + c.lineTo(0, 18); + c.close(); + c.stroke(); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.moveTo(11, 0); + c.lineTo(11, 4); + c.lineTo(15, 5); + c.stroke(); + c.setStrokeWidth(strokeWidth * 2); + c.translate(70, 47); + c.begin(); + c.moveTo(0, 0); + c.lineTo(11, 0); + c.lineTo(15, 4); + c.lineTo(15, 18); + c.lineTo(0, 18); + c.close(); + c.stroke(); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.moveTo(11, 0); + c.lineTo(11, 4); + c.lineTo(15, 5); + c.stroke(); + var iSi = 20; + c.setFillColor(insideColor); + c.begin(); + c.setStrokeWidth(strokeWidth * 2); + c.translate(-95, 0); + c.moveTo(0, iSi * 0.5); + c.lineTo(iSi * 0.5, 0); + c.lineTo(iSi * 0.5, iSi * 0.3); + c.lineTo(iSi, iSi * 0.3); + c.lineTo(iSi, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi); + c.close(); + c.fillAndStroke(); + c.begin(); + c.translate(30, 0); + c.moveTo(iSi, iSi * 0.5); + c.lineTo(iSi * 0.5, 0); + c.lineTo(iSi * 0.5, iSi * 0.3); + c.lineTo(0, iSi * 0.3); + c.lineTo(0, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi); + c.close(); + c.fillAndStroke(); + c.begin(); + c.translate(30, 0); + c.moveTo(iSi * 0.78, iSi * 0.665); + c.arcTo(iSi * 0.3, iSi * 0.3, 0, 1, 1, iSi * 0.675, iSi * 0.252); + c.lineTo(iSi * 0.595, iSi * 0.325); + c.lineTo(iSi * 0.99, iSi * 0.415); + c.lineTo(iSi * 0.9, iSi * 0.04); + c.lineTo(iSi * 0.815, iSi * 0.12); + c.arcTo(iSi * 0.49, iSi * 0.49, 0, 1, 0, iSi * 0.92, iSi * 0.8); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBrowserWindow.prototype.cst.SHAPE_BROWSER_WINDOW, mxShapeMockupBrowserWindow); + +function mxShapeMockupUserMale(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupUserMale, mxShape); +mxShapeMockupUserMale.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + SHAPE_MALE_USER: 'mxgraph.mockup.containers.userMale' +}; +mxShapeMockupUserMale.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}]; + +mxShapeMockupUserMale.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupUserMale.prototype.cst.STROKE_COLOR2, '#008cff'); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, insideColor, frameColor); +}; + +mxShapeMockupUserMale.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupUserMale.prototype.otherShapes = function (c, x, y, w, h, insideColor, frameColor) { + c.setStrokeColor(insideColor); + c.setLineCap('round'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.5, h * 0.6721); + c.curveTo(w * 0.3891, h * 0.6721, w * 0.31, h * 0.5648, w * 0.31, h * 0.3962); + c.curveTo(w * 0.31, h * 0.3656, w * 0.3012, h * 0.3473, w * 0.3051, h * 0.3227); + c.curveTo(w * 0.3126, h * 0.2762, w * 0.3124, h * 0.2212, w * 0.332, h * 0.1939); + c.curveTo(w * 0.354, h * 0.1633, w * 0.4382, h * 0.12, w * 0.5, h * 0.12); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3046, h * 0.3716); + c.curveTo(w * 0.3046, h * 0.3716, w * 0.3046, h * 0.341, w * 0.2826, h * 0.3594); + c.curveTo(w * 0.2606, h * 0.3778, w * 0.2661, h * 0.4452, w * 0.266, h * 0.4452); + c.quadTo(w * 0.2715, h * 0.4942, w * 0.277, h * 0.5065); + c.curveTo(w * 0.2825, h * 0.5187, w * 0.277, h * 0.5187, w * 0.2935, h * 0.5371); + c.curveTo(w * 0.31, h * 0.5554, w * 0.3375, h * 0.5615, w * 0.3375, h * 0.5616); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3829, h * 0.6213); + c.curveTo(w * 0.3829, h * 0.6213, w * 0.405, h * 0.7704, w * 0.2921, h * 0.7888); + c.curveTo(w * 0.2536, h * 0.795, w * 0.1328, h * 0.85, w * 0.1052, h * 0.8745); + c.curveTo(w * 0.0776, h * 0.899, w * 0.0641, h * 0.9316, w * 0.0571, h * 0.9622); + c.quadTo(w * 0.05, h, w * 0.05, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3427, h * 0.4185); + c.curveTo(w * 0.3427, h * 0.4185, w * 0.3427, h * 0.3839, w * 0.3427, h * 0.3593); + c.curveTo(w * 0.3427, h * 0.3348, w * 0.3663, h * 0.3103, w * 0.3718, h * 0.3041); + c.curveTo(w * 0.3773, h * 0.298, w * 0.3822, h * 0.2673, w * 0.3877, h * 0.2551); + c.curveTo(w * 0.3932, h * 0.2429, w * 0.4095, h * 0.2429, w * 0.4259, h * 0.2367); + c.curveTo(w * 0.4424, h * 0.2306, w * 0.4984, h * 0.2357, w * 0.4984, h * 0.2357); + c.stroke(); + c.begin(); + c.moveTo(w * 0.365, h * 0.7427); + c.curveTo(w * 0.365, h * 0.7427, w * 0.3772, h * 0.8076, w * 0.4286, h * 0.8224); + c.curveTo(w * 0.4816, h * 0.8377, w * 0.5028, h * 0.8347, w * 0.5028, h * 0.8347); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3322, h * 0.7764); + c.curveTo(w * 0.3322, h * 0.7764, w * 0.3556, h * 0.8386, w * 0.4038, h * 0.8684); + c.curveTo(w * 0.4533, h * 0.8991, w * 0.5029, h * 0.8929, w * 0.5029, h * 0.8929); + c.stroke(); + c.begin(); + c.moveTo(w * 0.2717, h * 0.9); + c.lineTo(w * 0.2717, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1671, h * 0.8991); + c.curveTo(w * 0.1671, h * 0.8991, w * 0.1726, h * 0.9114, w * 0.1836, h * 0.9481); + c.curveTo(w * 0.1946, h * 0.9849, w * 0.2, h, w * 0.2, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.6721); + c.curveTo(w * 0.6109, h * 0.6721, w * 0.69, h * 0.5648, w * 0.69, h * 0.3962); + c.curveTo(w * 0.69, h * 0.3656, w * 0.6988, h * 0.3473, w * 0.6949, h * 0.3227); + c.curveTo(w * 0.6847, h * 0.2762, w * 0.6876, h * 0.2212, w * 0.668, h * 0.1939); + c.curveTo(w * 0.646, h * 0.1633, w * 0.5618, h * 0.12, w * 0.5, h * 0.12); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6954, h * 0.3716); + c.curveTo(w * 0.6954, h * 0.3716, w * 0.6954, h * 0.341, w * 0.7174, h * 0.3594); + c.curveTo(w * 0.7394, h * 0.3778, w * 0.7339, h * 0.4452, w * 0.734, h * 0.4452); + c.quadTo(w * 0.7285, h * 0.4942, w * 0.723, h * 0.5065); + c.curveTo(w * 0.7175, h * 0.5187, w * 0.723, h * 0.5187, w * 0.7065, h * 0.5371); + c.curveTo(w * 0.69, h * 0.5554, w * 0.6625, h * 0.5615, w * 0.6625, h * 0.5616); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6171, h * 0.6213); + c.curveTo(w * 0.6171, h * 0.6213, w * 0.595, h * 0.7704, w * 0.7079, h * 0.7888); + c.curveTo(w * 0.7464, h * 0.795, w * 0.8672, h * 0.85, w * 0.8948, h * 0.8745); + c.curveTo(w * 0.9224, h * 0.899, w * 0.9359, h * 0.9316, w * 0.9429, h * 0.9622); + c.quadTo(w * 0.95, h, w * 0.95, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6573, h * 0.4185); + c.curveTo(w * 0.6573, h * 0.4185, w * 0.6573, h * 0.3839, w * 0.6573, h * 0.3593); + c.curveTo(w * 0.6573, h * 0.3348, w * 0.6337, h * 0.3103, w * 0.6282, h * 0.3041); + c.curveTo(w * 0.6227, h * 0.298, w * 0.6178, h * 0.2673, w * 0.6123, h * 0.2551); + c.curveTo(w * 0.6068, h * 0.2429, w * 0.5905, h * 0.2429, w * 0.5741, h * 0.2367); + c.curveTo(w * 0.5576, h * 0.2306, w * 0.5016, h * 0.2357, w * 0.5016, h * 0.2357); + c.stroke(); + c.begin(); + c.moveTo(w * 0.635, h * 0.7427); + c.curveTo(w * 0.635, h * 0.7427, w * 0.6228, h * 0.8076, w * 0.5714, h * 0.8224); + c.curveTo(w * 0.5184, h * 0.8377, w * 0.4972, h * 0.8347, w * 0.4972, h * 0.8347); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6678, h * 0.7764); + c.curveTo(w * 0.6678, h * 0.7764, w * 0.6444, h * 0.8386, w * 0.5962, h * 0.8684); + c.curveTo(w * 0.5467, h * 0.8991, w * 0.4971, h * 0.8929, w * 0.4971, h * 0.8929); + c.stroke(); + c.begin(); + c.moveTo(w * 0.7283, h * 0.9); + c.lineTo(w * 0.7283, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.8329, h * 0.8991); + c.curveTo(w * 0.8329, h * 0.8991, w * 0.8274, h * 0.9114, w * 0.8164, h * 0.9481); + c.curveTo(w * 0.8054, h * 0.9849, w * 0.8, h, w * 0.8, h); + c.stroke(); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupUserMale.prototype.cst.SHAPE_MALE_USER, mxShapeMockupUserMale); + +function mxShapeMockupUserFemale(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupUserFemale, mxShape); +mxShapeMockupUserFemale.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + SHAPE_FEMALE_USER: 'mxgraph.mockup.containers.userFemale' +}; +mxShapeMockupUserFemale.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}]; + +mxShapeMockupUserFemale.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupUserFemale.prototype.cst.STROKE_COLOR2, '#008cff'); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, insideColor, frameColor); +}; + +mxShapeMockupUserFemale.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupUserFemale.prototype.otherShapes = function (c, x, y, w, h, insideColor, frameColor) { + c.setStrokeColor(insideColor); + c.setLineCap('round'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.3148, h * 0.468); + c.curveTo(w * 0.3045, h * 0.3195, w * 0.3176, h * 0.2383, w * 0.3302, h * 0.2069); + c.curveTo(w * 0.3508, h * 0.1557, w * 0.44, h * 0.1156, w * 0.5026, h * 0.1156); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5029, h * 0.6728); + c.curveTo(w * 0.4616, h * 0.6728, w * 0.4018, h * 0.6177, w * 0.3663, h * 0.5653); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3108, h * 0.4021); + c.curveTo(w * 0.3108, h * 0.4021, w * 0.3091, h * 0.3765, w * 0.2891, h * 0.3933); + c.curveTo(w * 0.2691, h * 0.4101, w * 0.2782, h * 0.4661, w * 0.2782, h * 0.4661); + c.quadTo(w * 0.2862, h * 0.5067, w * 0.2922, h * 0.5166); + c.curveTo(w * 0.2982, h * 0.5265, w * 0.2929, h * 0.5268, w * 0.3097, h * 0.5412); + c.stroke(); + c.begin(); + c.moveTo(w * 0.4038, h * 0.6176); + c.curveTo(w * 0.4038, h * 0.6176, w * 0.4324, h * 0.7778, w * 0.3375, h * 0.7963); + c.curveTo(w * 0.3054, h * 0.8026, w * 0.1753, h * 0.8578, w * 0.15, h * 0.8826); + c.curveTo(w * 0.1247, h * 0.9074, w * 0.1126, h * 0.9412, w * 0.1063, h * 0.9722); + c.curveTo(w * 0.10, h * 1.0032, w * 0.1, h, w * 0.1, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6377, h * 0.3365); + c.curveTo(w * 0.5927, h * 0.2634, w * 0.5206, h * 0.2634, w * 0.5206, h * 0.2634); + c.quadTo(w * 0.3769, h * 0.2591, w * 0.3713, h * 0.2659); + c.curveTo(w * 0.3657, h * 0.2727, w * 0.3405, h * 0.3674, w * 0.3405, h * 0.3946); + c.curveTo(w * 0.3405, h * 0.4218, w * 0.3405, h * 0.4602, w * 0.3405, h * 0.4602); + c.quadTo(w * 0.3546, h * 0.6401, w * 0.3546, h * 0.6626); + c.stroke(); + c.begin(); + c.moveTo(w * 0.2931, h * 0.818); + c.curveTo(w * 0.2931, h * 0.818, w * 0.3224, h * 0.9159, w * 0.3826, h * 0.9677); + c.curveTo(w * 0.4446, h * 1.01, w * 0.5065, h, w * 0.5065, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.2995, h * 0.9106); + c.lineTo(w * 0.2995, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.2081, h * 0.907); + c.curveTo(w * 0.2081, h * 0.907, w * 0.2131, h * 0.9194, w * 0.2232, h * 0.9565); + c.curveTo(w * 0.2333, h * 0.9936, w * 0.24, h, w * 0.24, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6951, h * 0.4988); + c.curveTo(w * 0.6951, h * 0.4662, w * 0.7042, h * 0.3453, w * 0.7, h * 0.32); + c.curveTo(w * 0.6923, h * 0.273, w * 0.6926, h * 0.2175, w * 0.6727, h * 0.19); + c.curveTo(w * 0.6504, h * 0.159, w * 0.5651, h * 0.1157, w * 0.5025, h * 0.1157); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5029, h * 0.6728); + c.curveTo(w * 0.5546, h * 0.6728, w * 0.6107, h * 0.6316, w * 0.6461, h * 0.5602); + c.stroke(); + c.begin(); + c.moveTo(w * 0.696, h * 0.4022); + c.curveTo(w * 0.696, h * 0.4022, w * 0.6983, h * 0.3766, w * 0.7179, h * 0.4106); + c.curveTo(w * 0.7375, h * 0.4278, w * 0.7273, h * 0.4836, w * 0.7273, h * 0.4836); + c.quadTo(w * 0.7184, h * 0.5241, w * 0.7123, h * 0.5338); + c.curveTo(w * 0.7062, h * 0.5436, w * 0.7114, h * 0.544, w * 0.6943, h * 0.558); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5995, h * 0.6278); + c.curveTo(w * 0.5995, h * 0.6278, w * 0.5724, h * 0.7777, w * 0.6663, h * 0.7963); + c.curveTo(w * 0.6984, h * 0.8026, w * 0.8386, h * 0.8578, w * 0.8638, h * 0.8826); + c.curveTo(w * 0.8891, h * 0.9074, w * 0.9016, h * 0.9412, w * 0.9079, h * 0.9722); + c.curveTo(w * 0.9142, h * 1.0032, w * 0.91, h, w * 0.91, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6545, h * 0.6802); + c.lineTo(w * 0.6545, h * 0.3986); + c.stroke(); + c.begin(); + c.moveTo(w * 0.7132, h * 0.8078); + c.curveTo(w * 0.7132, h * 0.8078, w * 0.6839, h * 0.916, w * 0.6237, h * 0.9678); + c.curveTo(w * 0.5617, h * 1.01, w * 0.4998, h, w * 0.4998, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.7111, h * 0.9106); + c.lineTo(w * 0.7111, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.8075, h * 0.907); + c.curveTo(w * 0.8075, h * 0.907, w * 0.8025, h * 0.9194, w * 0.7924, h * 0.9565); + c.curveTo(w * 0.7823, h * 0.9936, w * 0.775, h, w * 0.775, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.3148, h * 0.5448); + c.curveTo(w * 0.3148, h * 0.5448, w * 0.32, h * 0.6216, w * 0.3148, h * 0.6677); + c.quadTo(w * 0.2891, h * 0.7343, w * 0.2891, h * 0.7343); + c.lineTo(w * 0.3303, h * 0.7625); + c.lineTo(w * 0.39, h * 0.7625); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6852, h * 0.5448); + c.curveTo(w * 0.6852, h * 0.5448, w * 0.68, h * 0.6216, w * 0.6852, h * 0.6677); + c.quadTo(w * 0.7109, h * 0.7343, w * 0.7109, h * 0.7343); + c.lineTo(w * 0.6697, h * 0.7625); + c.lineTo(w * 0.62, h * 0.7625); + c.stroke(); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupUserFemale.prototype.cst.SHAPE_FEMALE_USER, mxShapeMockupUserFemale); + +function mxShapeMockupGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupGroup, mxShape); +mxShapeMockupGroup.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + FILL_COLOR2: 'fillColor2', + SHAPE_GROUP: 'mxgraph.mockup.containers.group' +}; + +mxShapeMockupGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + var groupString = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.MAIN_TEXT, 'Group').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.TEXT_SIZE, '17'); + var textWidth = mxUtils.getSizeForString(groupString, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (textWidth === 0) { + textWidth = Math.max(80, textWidth); + } + + c.translate(x, y); + w = Math.max(w, textWidth + 15); + h = Math.max(h, fontSize + 10); + this.background(c, w, h, textWidth, fontSize); + c.setShadow(false); + this.foreground(c, w, h, textWidth, fontSize); + this.buttonText(c, w, h, groupString, fontSize); +}; + +mxShapeMockupGroup.prototype.background = function (c, w, h, textWidth, fontSize) { + c.roundrect(0, fontSize * 0.5, w, h - fontSize * 0.5, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupGroup.prototype.foreground = function (c, w, h, textWidth, fontSize) { + var fillColor = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.FILL_COLOR2, '#000000'); + c.setFillColor(fillColor); + c.roundrect(3, 0, textWidth + 6, fontSize * 1.5, fontSize * 0.25, fontSize * 0.25); + c.fill(); +}; + +mxShapeMockupGroup.prototype.buttonText = function (c, w, h, textString, fontSize) { + var fontColor = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.TEXT_COLOR, '#ffffff'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(6, 0, 0, 0, textString, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_TOP, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupGroup.prototype.cst.SHAPE_GROUP, mxShapeMockupGroup); + +function mxShapeMockupWindow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupWindow, mxShape); +mxShapeMockupWindow.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SHAPE_WINDOW: 'mxgraph.mockup.containers.window' +}; +mxShapeMockupWindow.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Stroke3 Color', + type: 'color' +}]; + +mxShapeMockupWindow.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + c.translate(x, y); + h = Math.max(h, 30); + w = Math.max(w, 90); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupWindow.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupWindow.prototype.otherShapes = function (c, x, y, w, h, frameColor, insideColor, closeColor) { + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeColor(frameColor); + c.ellipse(w - 75, 5, 20, 20); + c.stroke(); + c.ellipse(w - 50, 5, 20, 20); + c.stroke(); + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + c.setStrokeColor(insideColor); + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.MAIN_TEXT, 'Window Title'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.TEXT_SIZE, '17').toString(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupWindow.prototype.cst.SHAPE_WINDOW, mxShapeMockupWindow); + +function mxShapeMockupHorTabBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupHorTabBar, mxShape); +mxShapeMockupHorTabBar.prototype.cst = { + BLOCK: 'block', + CONE: 'cone', + HALF_CONE: 'halfCone', + ROUND: 'round', + TEXT_SIZE: 'textSize', + TAB_NAMES: 'tabs', + TAB_STYLE: 'tabStyle', + STYLE_FILLCOLOR2: 'fillColor2', + TEXT_COLOR: 'textColor', + SEL_TEXT_COLOR: 'textColor2', + SHAPE_HOR_TAB_BAR: 'mxgraph.mockup.containers.horTabBar' +}; + +mxShapeMockupHorTabBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var minW = 2 * startOffset + (tabCount - 1) * tabOffset + tabCount * 2 * labelOffset; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) { + labelWidths[i] = 40; + } else { + labelWidths[i] = currW; + } + + ; + minW = minW + labelWidths[i]; + } + + w = Math.max(w, minW); + h = Math.max(h, tabH + rSize); + c.translate(x, y); + this.background(c, w, h, rSize, tabH); + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupHorTabBar.prototype.background = function (c, w, h, rSize, tabH) { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupHorTabBar.prototype.backTabs = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_STYLE, mxShapeMockupHorTabBar.prototype.cst.BLOCK); + var currW = startOffset; + + for (var i = 0; i < tabCount; i++) { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab !== i) { + if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.BLOCK) { + c.rect(currW, 0, tabW, tabH); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.HALF_CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupHorTabBar.prototype.focusTab = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_STYLE, mxShapeMockupHorTabBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + var currW = startOffset; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + for (var i = 0; i <= selectedTab; i++) { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab === i) { + if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.BLOCK) { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.CONE) { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.HALF_CONE) { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupHorTabBar.prototype.tabText = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) { + var fontColor = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + var currW = startOffset; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (i === selectedTab) { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + } + + var tabW = labelWidths[i] + 2 * labelOffset; + c.text(currW + labelOffset, tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + currW = currW + tabW + tabOffset; + + if (i === selectedTab) { + c.setFontColor(fontColor); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupHorTabBar.prototype.cst.SHAPE_HOR_TAB_BAR, mxShapeMockupHorTabBar); + +function mxShapeMockupVerTabBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupVerTabBar, mxShape); +mxShapeMockupVerTabBar.prototype.cst = { + BLOCK: 'block', + ROUND: 'round', + TEXT_SIZE: 'textSize', + TAB_NAMES: 'tabs', + TAB_STYLE: 'tabStyle', + STYLE_FILLCOLOR2: 'fillColor2', + TEXT_COLOR: 'textColor', + SEL_TEXT_COLOR: 'textColor2', + SHAPE_VER_TAB_BAR: 'mxgraph.mockup.containers.verTabBar' +}; + +mxShapeMockupVerTabBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + var currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) { + labelWidths[i] = 42; + } else { + labelWidths[i] = currW; + } + } + + var tabW = 2 * labelOffset + Math.max.apply(Math, labelWidths); + var minW = tabW + rSize; + w = Math.max(w, minW); + h = Math.max(h, 2 * startOffset + tabCount * tabH + (tabCount - 1) * tabOffset); + c.translate(x, y); + this.background(c, w, h, rSize, tabW); + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupVerTabBar.prototype.background = function (c, w, h, rSize, tabW) { + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupVerTabBar.prototype.backTabs = function (c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_STYLE, mxShapeMockupVerTabBar.prototype.cst.BLOCK); + var currH = startOffset; + + for (var i = 0; i < tabCount; i++) { + if (selectedTab !== i) { + if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.BLOCK) { + c.rect(0, currH, tabW, tabH); + } else if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(tabW, currH + tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 0, tabW - rSize, currH + tabH); + c.lineTo(rSize, currH + tabH); + c.arcTo(rSize, rSize, 0, 0, 1, 0, currH + tabH - rSize); + c.lineTo(0, currH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, currH); + c.lineTo(tabW - rSize, currH); + c.arcTo(rSize, rSize, 0, 0, 0, tabW, currH - rSize); + } + + c.fillAndStroke(); + } + + currH = currH + tabH + tabOffset; + } +}; + +mxShapeMockupVerTabBar.prototype.focusTab = function (c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_STYLE, mxShapeMockupVerTabBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + + if (selectedTab !== -1) { + var currH = startOffset + (tabH + tabOffset) * selectedTab; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.BLOCK) { + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, currH + tabH); + c.lineTo(0, currH + tabH); + c.lineTo(0, currH); + c.lineTo(tabW, currH); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.close(); + } else if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, currH + tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 0, tabW - rSize, currH + tabH); + c.lineTo(rSize, currH + tabH); + c.arcTo(rSize, rSize, 0, 0, 1, 0, currH + tabH - rSize); + c.lineTo(0, currH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, currH); + c.lineTo(tabW - rSize, currH); + c.arcTo(rSize, rSize, 0, 0, 0, tabW, currH - rSize); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.close(); + } + + c.fillAndStroke(); + } +}; + +mxShapeMockupVerTabBar.prototype.tabText = function (c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) { + var fontColor = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + var currH = startOffset; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (i === selectedTab) { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + } + + c.text(tabW * 0.5, currH + tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + currH = currH + tabH + tabOffset; + + if (i === selectedTab) { + c.setFontColor(fontColor); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupVerTabBar.prototype.cst.SHAPE_VER_TAB_BAR, mxShapeMockupVerTabBar); + +function mxShapeMockupAlertBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupAlertBox, mxShape); +mxShapeMockupAlertBox.prototype.cst = { + MAIN_TEXT: 'mainText', + SUB_TEXT: 'subText', + BUTTON_TEXT: 'buttonText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SHAPE_ALERT_BOX: 'mxgraph.mockup.containers.alertBox' +}; + +mxShapeMockupAlertBox.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + c.translate(x, y); + h = Math.max(h, 75); + w = Math.max(w, 90); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupAlertBox.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupAlertBox.prototype.foreground = function (c, x, y, w, h, frameColor, insideColor, closeColor) { + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + c.setStrokeColor(insideColor); + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.MAIN_TEXT, 'Window Title').toString(); + var subText = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.SUB_TEXT, 'Sub Text').toString().split(','); + var buttonText = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.BUTTON_TEXT, 'OK,Cancel').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.TEXT_SIZE, '17').toString(); + var buttonCount = buttonText.length; + var buttonOffset = 10; + var buttonW = (w - buttonOffset * (buttonCount + 1)) / buttonCount; + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var currW = buttonOffset; + + for (var i = 0; i < buttonText.length; i++) { + if (buttonText[i] !== '') { + c.rect(currW, h - 10 - fontSize * 1.5, buttonW, fontSize * 1.5); + c.stroke(); + c.text(currW + buttonW * 0.5, h - 10 - fontSize * 0.75, 0, 0, buttonText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currW = currW + buttonW + buttonOffset; + } + + for (var i = 0; i < subText.length; i++) { + c.text(w * 0.5, 30 + fontSize * (i * 1.5 + 0.75), 0, 0, subText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupAlertBox.prototype.cst.SHAPE_ALERT_BOX, mxShapeMockupAlertBox); + +function mxShapeMockupContainersRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupContainersRRect, mxShape); +mxShapeMockupContainersRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.containers.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupContainersRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupContainersRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContainersRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersRRect.prototype.cst.RRECT, mxShapeMockupContainersRRect); + +function mxShapeMockupContainersAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupContainersAnchor, mxShape); +mxShapeMockupContainersAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.containers.anchor' +}; + +mxShapeMockupContainersAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupContainersAnchor.prototype.cst.ANCHOR, mxShapeMockupContainersAnchor); + +function mxShapeMockupContrainersTopButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupContrainersTopButton, mxShape); +mxShapeMockupContrainersTopButton.prototype.cst = { + TOP_BUTTON: 'mxgraph.mockup.containers.topButton', + R_SIZE: 'rSize' +}; +mxShapeMockupContrainersTopButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupContrainersTopButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContrainersTopButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContrainersTopButton.prototype.cst.TOP_BUTTON, mxShapeMockupContrainersTopButton); + +function mxShapeMockupContainersLeftButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupContainersLeftButton, mxShape); +mxShapeMockupContainersLeftButton.prototype.cst = { + LEFT_BUTTON: 'mxgraph.mockup.containers.leftButton', + R_SIZE: 'rSize' +}; +mxShapeMockupContainersLeftButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupContainersLeftButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContainersLeftButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersLeftButton.prototype.cst.LEFT_BUTTON, mxShapeMockupContainersLeftButton); + +function mxShapeMockupContainersMarginRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupContainersMarginRect, mxShape); +mxShapeMockupContainersMarginRect.prototype.cst = { + SHAPE_MARGIN_RECT: 'mxgraph.mockup.containers.marginRect', + MARGIN: 'rectMargin', + MARGIN_TOP: 'rectMarginTop', + MARGIN_LEFT: 'rectMarginLeft', + MARGIN_BOTTOM: 'rectMarginBottom', + MARGIN_RIGHT: 'rectMarginRight' +}; +mxShapeMockupContainersMarginRect.prototype.customProperties = [{ + name: 'rectMargin', + dispName: 'Global Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginTop', + dispName: 'Top Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginLeft', + dispName: 'Left Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginBottom', + dispName: 'Bottom Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginRight', + dispName: 'Right Margin', + type: 'float', + min: 0, + defVal: 0 +}]; + +mxShapeMockupContainersMarginRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupContainersMarginRect.prototype.background = function (c, x, y, w, h, state) { + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_RIGHT, '0')); + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 > 0 && h1 > 0) { + c.begin(); + c.roundrect(x1, y1, w1, h1, 10, 10); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersMarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeMockupContainersMarginRect); + +function mxShapeMockupContainersMarginRect2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupContainersMarginRect2, mxShape); +mxShapeMockupContainersMarginRect2.prototype.cst = { + SHAPE_MARGIN_RECT: 'mxgraph.mockup.containers.marginRect2', + MARGIN: 'rectMargin', + MARGIN_TOP: 'rectMarginTop', + MARGIN_LEFT: 'rectMarginLeft', + MARGIN_BOTTOM: 'rectMarginBottom', + MARGIN_RIGHT: 'rectMarginRight' +}; +mxShapeMockupContainersMarginRect2.prototype.customProperties = [{ + name: 'rectMargin', + dispName: 'Global Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginTop', + dispName: 'Top Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginLeft', + dispName: 'Left Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginBottom', + dispName: 'Bottom Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginRight', + dispName: 'Right Margin', + type: 'float', + min: 0, + defVal: 0 +}]; + +mxShapeMockupContainersMarginRect2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupContainersMarginRect2.prototype.background = function (c, x, y, w, h, state) { + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_RIGHT, '0')); + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 > 0 && h1 > 0) { + c.begin(); + c.rect(x1, y1, w1, h1); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersMarginRect2.prototype.cst.SHAPE_MARGIN_RECT, mxShapeMockupContainersMarginRect2); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupForms.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupForms.js new file mode 100644 index 0000000000000..9019abeb84039 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupForms.js @@ -0,0 +1,1925 @@ +"use strict"; + +function mxShapeMockupCheckboxGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCheckboxGroup, mxShape); +mxShapeMockupCheckboxGroup.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SELECTED: '+', + SHAPE_CHECKBOX_GROUP: 'mxgraph.mockup.forms.checkboxGroup' +}; + +mxShapeMockupCheckboxGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.TEXT_SIZE, '17').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.MAIN_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 15; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeMockupCheckboxGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.rect(0, 0, trueW, trueH); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeMockupCheckboxGroup.prototype.cst.SELECTED) { + c.setFontColor(fontColor[1]); + currText = optionText[i].substring(1); + selected = i; + } else { + c.setFontColor(fontColor[0]); + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#999999'); + + if (selected === i) { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setStrokeColor('#333333'); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } else { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape(mxShapeMockupCheckboxGroup.prototype.cst.SHAPE_CHECKBOX_GROUP, mxShapeMockupCheckboxGroup); + +function mxShapeMockupRadioGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRadioGroup, mxShape); +mxShapeMockupRadioGroup.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SELECTED: '+', + SHAPE_RADIO_GROUP: 'mxgraph.mockup.forms.radioGroup' +}; + +mxShapeMockupRadioGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.TEXT_SIZE, '17').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.MAIN_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 15; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeMockupRadioGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.rect(0, 0, trueW, trueH); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeMockupRadioGroup.prototype.cst.SELECTED) { + c.setFontColor(fontColor[1]); + currText = optionText[i].substring(1); + selected = i; + } else { + c.setFontColor(fontColor[0]); + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setStrokeColor('#999999'); + + if (selected === i) { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setFillColor('#333333'); + c.setStrokeColor('#333333'); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } else { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRadioGroup.prototype.cst.SHAPE_RADIO_GROUP, mxShapeMockupRadioGroup); + +function mxShapeMockupColorPicker(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupColorPicker, mxShape); +mxShapeMockupColorPicker.prototype.cst = { + COLOR: 'chosenColor', + SHAPE_COLOR_PICKER: 'mxgraph.mockup.forms.colorPicker' +}; +mxShapeMockupColorPicker.prototype.customProperties = [{ + name: 'chosenColor', + dispName: 'Current Color', + type: 'color' +}]; + +mxShapeMockupColorPicker.prototype.paintVertexShape = function (c, x, y, w, h) { + var chosenColor = mxUtils.getValue(this.style, mxShapeMockupColorPicker.prototype.cst.COLOR, '#aaddff'); + c.translate(x, y); + c.setStrokeColor('#999999'); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(chosenColor); + c.rect(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.fill(); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.75, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.95, h); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 0, w, h * 0.95); + c.lineTo(w, h * 0.75); + c.close(); + c.fill(); + c.setFillColor('#999999'); + c.begin(); + c.moveTo(w * 0.77, h * 0.77); + c.lineTo(w * 0.875, h * 0.98); + c.lineTo(w * 0.98, h * 0.77); + c.close(); + c.fill(); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupColorPicker.prototype.cst.SHAPE_COLOR_PICKER, mxShapeMockupColorPicker); + +function mxShapeMockupComboBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupComboBox, mxShape); +mxShapeMockupComboBox.prototype.cst = { + MAIN_TEXT: 'mainText', + FILL_COLOR2: 'fillColor2', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_COMBO_BOX: 'mxgraph.mockup.forms.comboBox' +}; +mxShapeMockupComboBox.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}]; + +mxShapeMockupComboBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); + this.mainText(c, x, y, w, h); +}; + +mxShapeMockupComboBox.prototype.background = function (c, x, y, w, h) { + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupComboBox.prototype.foreground = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.FILL_COLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, w - 30, 0, 30, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 30, 0); + c.lineTo(w - 5, 0); + c.arcTo(5, 5, 0, 0, 1, w, 5); + c.lineTo(w, h - 5); + c.arcTo(5, 5, 0, 0, 1, w - 5, h); + c.lineTo(w - 30, h); + c.close(); + c.fillAndStroke(); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 22, h * 0.5 - 5); + c.lineTo(w - 15, h * 0.5 + 5); + c.lineTo(w - 8, h * 0.5 - 5); + c.fill(); +}; + +mxShapeMockupComboBox.prototype.mainText = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.MAIN_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.TEXT_SIZE, '17').toString(); + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupComboBox.prototype.cst.SHAPE_COMBO_BOX, mxShapeMockupComboBox); + +function mxShapeMockupSpinner(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupSpinner, mxShape); +mxShapeMockupSpinner.prototype.cst = { + LAYOUT: 'spinLayout', + SPINNER_STYLE: 'spinStyle', + ADJ_STYLE: 'adjStyle', + LAYOUT_RIGHT: 'right', + LAYOUT_LEFT: 'left', + LAYOUT_TOP: 'top', + LAYOUT_BOTTOM: 'bottom', + LAYOUT_VERTICAL: 'vertical', + LAYOUT_HORIZONTAL: 'horizontal', + SPINNER_MERGED: 'merged', + SPINNER_NORMAL: 'normal', + ADJ_TRIANGLE: 'triangle', + ADJ_PLUSMINUS: 'plusMinus', + ADJ_ARROW: 'arrow', + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_SPINNER: 'mxgraph.mockup.forms.spinner' +}; +mxShapeMockupSpinner.prototype.customProperties = [{ + name: 'spinLayout', + dispName: 'Layout', + type: 'enum', + enumList: [{ + val: 'right', + dispName: 'Right' + }, { + val: 'left', + dispName: 'Left' + }, { + val: 'top', + dispName: 'Top' + }, { + val: 'bottom', + dispName: 'Bottom' + }, { + val: 'vertical', + dispName: 'Vertical' + }, { + val: 'horizontal', + dispName: 'Horizontal' + }] +}, { + name: 'spinStyle', + dispName: 'Spinner Style', + type: 'enum', + enumList: [{ + val: 'merged', + dispName: 'Merged' + }, { + val: 'normal', + dispName: 'Normal' + }] +}, { + name: 'adjStyle', + dispName: 'Button Style', + type: 'enum', + enumList: [{ + val: 'triangle', + dispName: 'Triangle' + }, { + val: 'plusMinus', + dispName: '+/-' + }, { + val: 'arrow', + dispName: 'Arrow' + }] +}]; + +mxShapeMockupSpinner.prototype.paintVertexShape = function (c, x, y, w, h) { + var spinnerLayout = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.LAYOUT, mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT); + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, spinnerLayout); + this.mainText(c, w, h, spinnerLayout); +}; + +mxShapeMockupSpinner.prototype.background = function (c, w, h) { + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeMockupSpinner.prototype.foreground = function (c, w, h, spinnerLayout) { + var spinnerStyle = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.SPINNER_STYLE, mxShapeMockupSpinner.prototype.cst.SPINNER_NORMAL); + var adjStyle = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.ADJ_STYLE, mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(fillColor); + + if (spinnerStyle === mxShapeMockupSpinner.prototype.cst.SPINNER_NORMAL) { + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) { + c.begin(); + c.moveTo(w - 20, 0); + c.lineTo(w - 20, h); + c.moveTo(w - 20, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) { + c.begin(); + c.moveTo(20, 0); + c.lineTo(20, h); + c.moveTo(20, h * 0.5); + c.lineTo(0, h * 0.5); + c.stroke(); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.moveTo(w * 0.5, 15); + c.lineTo(w * 0.5, 0); + c.stroke(); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) { + c.begin(); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.moveTo(w * 0.5, h - 15); + c.lineTo(w * 0.5, h); + c.stroke(); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.stroke(); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) { + c.begin(); + c.moveTo(20, 0); + c.lineTo(20, h); + c.moveTo(w - 20, 0); + c.lineTo(w - 20, h); + c.stroke(); + } + } + + c.setStrokeColor(fillColor); + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w - 14, h * 0.25 + 4.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.lineTo(w - 6, h * 0.25 + 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w - 10, h * 0.25 - 4); + c.lineTo(w - 10, h * 0.25 + 4); + c.moveTo(w - 14, h * 0.25); + c.lineTo(w - 6, h * 0.25); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w - 14, h * 0.25 + 1.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.lineTo(w - 6, h * 0.25 + 1.5); + c.close(); + c.moveTo(w - 10, h * 0.25 + 4.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(14, h * 0.25 + 4.5); + c.lineTo(10, h * 0.25 - 2.5); + c.lineTo(6, h * 0.25 + 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(10, h * 0.25 - 4); + c.lineTo(10, h * 0.25 + 4); + c.moveTo(14, h * 0.25); + c.lineTo(6, h * 0.25); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(14, h * 0.25 + 1.5); + c.lineTo(10, h * 0.25 - 2.5); + c.lineTo(6, h * 0.25 + 1.5); + c.close(); + c.moveTo(10, h * 0.25 + 4.5); + c.lineTo(10, h * 0.25 - 2.5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.75 + 4, 12); + c.lineTo(w * 0.75, 5); + c.lineTo(w * 0.75 - 4, 12); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.75, 3.5); + c.lineTo(w * 0.75, 11.5); + c.moveTo(w * 0.75 + 4, 7.5); + c.lineTo(w * 0.75 - 4, 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.75 + 4, 9); + c.lineTo(w * 0.75, 5); + c.lineTo(w * 0.75 - 4, 9); + c.close(); + c.moveTo(w * 0.75, 12); + c.lineTo(w * 0.75, 5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.75 + 4, h - 5); + c.lineTo(w * 0.75, h - 12); + c.lineTo(w * 0.75 - 4, h - 5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.75, h - 3.5); + c.lineTo(w * 0.75, h - 11.5); + c.moveTo(w * 0.75 + 4, h - 7.5); + c.lineTo(w * 0.75 - 4, h - 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.75 + 4, h - 6); + c.lineTo(w * 0.75, h - 10); + c.lineTo(w * 0.75 - 4, h - 6); + c.close(); + c.moveTo(w * 0.75, h - 3); + c.lineTo(w * 0.75, h - 10); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.5 + 4, 12); + c.lineTo(w * 0.5, 5); + c.lineTo(w * 0.5 - 4, 12); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.5, 3.5); + c.lineTo(w * 0.5, 11.5); + c.moveTo(w * 0.5 + 4, 7.5); + c.lineTo(w * 0.5 - 4, 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.5 + 4, 9); + c.lineTo(w * 0.5, 5); + c.lineTo(w * 0.5 - 4, 9); + c.close(); + c.moveTo(w * 0.5, 12); + c.lineTo(w * 0.5, 5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w - 6, h * 0.5 + 4.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.lineTo(w - 14, h * 0.5 + 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w - 10, h * 0.5 - 4); + c.lineTo(w - 10, h * 0.5 + 4); + c.moveTo(w - 14, h * 0.5); + c.lineTo(w - 6, h * 0.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w - 14, h * 0.5 + 1.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.lineTo(w - 6, h * 0.5 + 1.5); + c.close(); + c.moveTo(w - 10, h * 0.5 + 4.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.fillAndStroke(); + } + } + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w - 14, h * 0.75 - 4.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.lineTo(w - 6, h * 0.75 - 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w - 14, h * 0.75); + c.lineTo(w - 6, h * 0.75); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w - 14, h * 0.75 - 1.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.lineTo(w - 6, h * 0.75 - 1.5); + c.close(); + c.moveTo(w - 10, h * 0.75 - 4.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(14, h * 0.75 - 4.5); + c.lineTo(10, h * 0.75 + 2.5); + c.lineTo(6, h * 0.75 - 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(14, h * 0.75); + c.lineTo(6, h * 0.75); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(14, h * 0.75 - 1.5); + c.lineTo(10, h * 0.75 + 2.5); + c.lineTo(6, h * 0.75 - 1.5); + c.close(); + c.moveTo(10, h * 0.75 - 4.5); + c.lineTo(10, h * 0.75 + 2.5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.25 + 4, 5); + c.lineTo(w * 0.25, 12); + c.lineTo(w * 0.25 - 4, 5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.25 + 4, 7.5); + c.lineTo(w * 0.25 - 4, 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.25 + 4, 6); + c.lineTo(w * 0.25, 10); + c.lineTo(w * 0.25 - 4, 6); + c.close(); + c.moveTo(w * 0.25, 3); + c.lineTo(w * 0.25, 10); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 12); + c.lineTo(w * 0.25, h - 5); + c.lineTo(w * 0.25 - 4, h - 12); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 7.5); + c.lineTo(w * 0.25 - 4, h - 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 9); + c.lineTo(w * 0.25, h - 5); + c.lineTo(w * 0.25 - 4, h - 9); + c.close(); + c.moveTo(w * 0.25, h - 12); + c.lineTo(w * 0.25, h - 5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 12); + c.lineTo(w * 0.5, h - 5); + c.lineTo(w * 0.5 - 4, h - 12); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 7.5); + c.lineTo(w * 0.5 - 4, h - 7.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 9); + c.lineTo(w * 0.5, h - 5); + c.lineTo(w * 0.5 - 4, h - 9); + c.close(); + c.moveTo(w * 0.5, h - 12); + c.lineTo(w * 0.5, h - 5); + c.fillAndStroke(); + } + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) { + if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) { + c.begin(); + c.moveTo(6, h * 0.5 - 4.5); + c.lineTo(10, h * 0.5 + 2.5); + c.lineTo(14, h * 0.5 - 4.5); + c.close(); + c.fillAndStroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) { + c.begin(); + c.moveTo(14, h * 0.5); + c.lineTo(6, h * 0.5); + c.stroke(); + } else if (adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) { + c.begin(); + c.moveTo(14, h * 0.5 - 1.5); + c.lineTo(10, h * 0.5 + 2.5); + c.lineTo(6, h * 0.5 - 1.5); + c.close(); + c.moveTo(10, h * 0.5 - 4.5); + c.lineTo(10, h * 0.5 + 2.5); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupSpinner.prototype.mainText = function (c, w, h, spinnerLayout) { + var spinnerText = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.MAIN_TEXT, '100').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.TEXT_SIZE, '17'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.TEXT_COLOR, '#666666'); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) { + c.text((w - 20) * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) { + c.text((w + 20) * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) { + c.text(w * 0.5, (h + 15) * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) { + c.text(w * 0.5, (h - 15) * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) { + c.text(w * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) { + c.text(w * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupSpinner.prototype.cst.SHAPE_SPINNER, mxShapeMockupSpinner); + +function mxShapeMockupMenuBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupMenuBar, mxShape); +mxShapeMockupMenuBar.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_MENU_BAR: 'mxgraph.mockup.forms.menuBar', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupMenuBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.MAIN_TEXT, '+Menu 1, Menu 2, Menu 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupMenuBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupMenuBar.prototype.background = function (c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) { + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + if (selectedButton !== -1) { + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } + + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupMenuBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxShapeMockupMenuBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupMenuBar.prototype.cst.SHAPE_MENU_BAR, mxShapeMockupMenuBar); + +function mxShapeMockupHorSlider(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupHorSlider, mxShape); +mxShapeMockupHorSlider.prototype.cst = { + STYLE: 'sliderStyle', + SLIDER_BASIC: 'basic', + SLIDER_FANCY: 'fancy', + SLIDER_POS: 'sliderPos', + HANDLE_TRIANGLE: 'triangle', + HANDLE_CIRCLE: 'circle', + HANDLE_HANDLE: 'handle', + HANDLE_STYLE: 'handleStyle', + FILL_COLOR2: 'fillColor2', + SHAPE_HOR_SLIDER: 'mxgraph.mockup.forms.horSlider' +}; +mxShapeMockupHorSlider.prototype.customProperties = [{ + name: 'sliderStyle', + dispName: 'Slider Style', + type: 'enum', + enumList: [{ + val: 'basic', + dispName: 'Basic' + }, { + val: 'fancy', + dispName: 'Fancy' + }] +}, { + name: 'handleStyle', + dispName: 'Handle Style', + type: 'enum', + enumList: [{ + val: 'triangle', + dispName: 'Triangle' + }, { + val: 'circle', + dispName: 'Circle' + }, { + val: 'handle', + dispName: 'Handle' + }] +}, { + name: 'sliderPos', + dispName: 'Handle Position', + type: 'float' +}, { + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}]; + +mxShapeMockupHorSlider.prototype.paintVertexShape = function (c, x, y, w, h) { + var sliderStyle = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.STYLE, mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC); + var rSize = 5; + c.translate(x, y); + this.background(c, w, h, rSize, sliderStyle); + c.setShadow(false); + this.foreground(c, w, h, rSize, sliderStyle); + this.sliderPos = 20; +}; + +mxShapeMockupHorSlider.prototype.background = function (c, w, h, rSize, sliderStyle) { + if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_FANCY) { + c.roundrect(0, h * 0.5 - rSize, w, 2 * rSize, rSize, rSize); + c.fillAndStroke(); + } +}; + +mxShapeMockupHorSlider.prototype.foreground = function (c, w, h, rSize, sliderStyle) { + var sliderPos = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.SLIDER_POS, '20'); + var handleStyle = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.HANDLE_STYLE, mxShapeMockupHorSlider.prototype.cst.HANDLE_CIRCLE); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + sliderPos = Math.min(100, sliderPos); + sliderPos = Math.max(0, sliderPos); + + if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC) { + c.setStrokeColor(fillColor2); + var barCenterPos = w * sliderPos / 100; + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barCenterPos, h * 0.5); + c.stroke(); + c.setStrokeColor(strokeColor); + } else if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_FANCY) { + var barCenterPos = 10 + (w - 10) * sliderPos / 100; + c.setFillColor(fillColor2); + c.roundrect(0, h * 0.5 - rSize, barCenterPos, 2 * rSize, rSize, rSize); + c.fillAndStroke(); + c.setFillColor(fillColor); + } + + var handleCenterPos = 5 + (w - 10) * sliderPos / 100; + + if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_CIRCLE) { + c.ellipse(handleCenterPos - 10, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + } else if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_TRIANGLE) { + c.begin(); + c.moveTo(handleCenterPos - 10, h * 0.5 + 10); + c.lineTo(handleCenterPos, h * 0.5 - 10); + c.lineTo(handleCenterPos + 10, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); + } else if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_HANDLE) { + c.begin(); + c.moveTo(handleCenterPos - 7, h * 0.5 + 10); + c.lineTo(handleCenterPos - 7, h * 0.5); + c.lineTo(handleCenterPos, h * 0.5 - 10); + c.lineTo(handleCenterPos + 7, h * 0.5); + c.lineTo(handleCenterPos + 7, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupHorSlider.prototype.cst.SHAPE_HOR_SLIDER, mxShapeMockupHorSlider); + +Graph.handleFactory[mxShapeMockupHorSlider.prototype.cst.SHAPE_HOR_SLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['sliderPos'], function (bounds) { + var sliderPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'sliderPos', this.sliderPos)))); + return new mxPoint(bounds.x + (bounds.width - 10) * sliderPos / bounds.width / 100 * bounds.width + 5, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['sliderPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeMockupListBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupListBox, mxShape); +mxShapeMockupListBox.prototype.cst = { + MAIN_TEXT: 'mainText', + SUB_TEXT: 'subText', + BUTTON_TEXT: 'buttonText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SELECTED_COLOR: 'selectedColor', + SELECTED: '+', + SHAPE_LIST_BOX: 'mxgraph.mockup.forms.listBox' +}; + +mxShapeMockupListBox.prototype.paintVertexShape = function (c, x, y, w, h) { + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.TEXT_SIZE, '17').toString(); + var selectedButton = -1; + var maxShapeWidth = w; + var subText = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.SUB_TEXT, 'Sub Text').toString().split(','); + + for (var i = 0; i < subText.length; i++) { + var itemText = subText[i]; + + if (itemText.charAt(0) === mxShapeMockupListBox.prototype.cst.SELECTED) { + itemText = subText[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(itemText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxShapeWidth) { + maxShapeWidth = currWidth; + } + } + + c.translate(x, y); + w = Math.min(w, maxShapeWidth); + h = Math.max(h, 30 + subText.length * fontSize * 1.5); + this.background(c, w, h, bgColor, frameColor); + c.setShadow(false); + this.foreground(c, w, h, frameColor, selectedButton, subText, fontSize); +}; + +mxShapeMockupListBox.prototype.background = function (c, w, h, bgColor, frameColor) { + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupListBox.prototype.foreground = function (c, w, h, frameColor, selectedButton, subText, fontSize) { + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var selectedColor = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.SELECTED_COLOR, '#ddeeff'); + + if (selectedButton !== -1) { + c.setFillColor(selectedColor); + c.rect(0, 30 + selectedButton * fontSize * 1.5, w, fontSize * 1.5); + c.fill(); + } + + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.MAIN_TEXT, 'Window Title').toString(); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + c.setFontColor(fontColor[1]); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor(fontColor[0]); + + for (var i = 0; i < subText.length; i++) { + var currText = subText[i]; + + if (currText.charAt(0) === mxShapeMockupListBox.prototype.cst.SELECTED) { + currText = subText[i].substring(1); + } + + c.text(10, 30 + fontSize * (i * 1.5 + 0.75), 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupListBox.prototype.cst.SHAPE_LIST_BOX, mxShapeMockupListBox); + +function mxShapeMockupPwField(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPwField, mxShape); +mxShapeMockupPwField.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_PW_FIELD: 'mxgraph.mockup.forms.pwField' +}; + +mxShapeMockupPwField.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupPwField.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPwField.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.MAIN_TEXT, '******'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.TEXT_SIZE, '17'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupPwField.prototype.cst.SHAPE_PW_FIELD, mxShapeMockupPwField); + +function mxShapeMockupSplitter(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupSplitter, mxShape); +mxShapeMockupSplitter.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_SPLITTER: 'mxgraph.mockup.forms.splitter' +}; + +mxShapeMockupSplitter.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(w, 35); + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSplitter.prototype.background = function (c, w, h) { + c.begin(); + c.moveTo(0, h * 0.5 - 5); + c.lineTo(w, h * 0.5 - 5); + c.lineTo(w, h * 0.5 + 5); + c.lineTo(0, h * 0.5 + 5); + c.close(); + c.fill(); +}; + +mxShapeMockupSplitter.prototype.foreground = function (c, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.begin(); + c.moveTo(0, h * 0.5 - 5); + c.lineTo(w, h * 0.5 - 5); + c.moveTo(w, h * 0.5 + 5); + c.lineTo(0, h * 0.5 + 5); + c.stroke(); + c.setFillColor(strokeColor); + c.ellipse(w * 0.5 - 17, h * 0.5 - 2, 4, 4); + c.fill(); + c.ellipse(w * 0.5 - 2, h * 0.5 - 2, 4, 4); + c.fill(); + c.ellipse(w * 0.5 + 13, h * 0.5 - 2, 4, 4); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSplitter.prototype.cst.SHAPE_SPLITTER, mxShapeMockupSplitter); + +function mxShapeMockupWedgeBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupWedgeBar, mxShape); +mxShapeMockupWedgeBar.prototype.cst = { + BLOCK: 'block', + CONE: 'cone', + HALF_CONE: 'halfCone', + ROUND: 'round', + TEXT_SIZE: 'textSize', + TAB_NAMES: 'tabs', + TAB_STYLE: 'tabStyle', + STYLE_FILLCOLOR2: 'fillColor2', + TEXT_COLOR: 'textColor', + SEL_TEXT_COLOR: 'textColor2', + SHAPE_WEDGE_BAR: 'mxgraph.mockup.forms.wedgeBar' +}; + +mxShapeMockupWedgeBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var minW = 2 * startOffset + (tabCount - 1) * tabOffset + tabCount * 2 * labelOffset; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + var currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) { + labelWidths[i] = 42; + } else { + labelWidths[i] = currW; + } + + minW = minW + labelWidths[i]; + } + + w = Math.max(w, minW); + h = Math.max(h, tabH + rSize); + c.translate(x, y); + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupWedgeBar.prototype.backTabs = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_STYLE, mxShapeMockupWedgeBar.prototype.cst.BLOCK); + var currW = startOffset; + + for (var i = 0; i < tabCount; i++) { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab !== i) { + if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.BLOCK) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.HALF_CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupWedgeBar.prototype.focusTab = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) { + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_STYLE, mxShapeMockupWedgeBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + var currW = startOffset; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + for (var i = 0; i <= selectedTab; i++) { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab === i) { + if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.BLOCK) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.HALF_CONE) { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.ROUND) { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupWedgeBar.prototype.tabText = function (c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) { + var fontColor = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_SIZE, '17').toString(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + var currW = startOffset; + + for (var i = 0; i < tabCount; i++) { + var currLabel = tabNames[i]; + + if (i === selectedTab) { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') { + currLabel = currLabel.substring(1); + } + + var tabW = labelWidths[i] + 2 * labelOffset; + c.text(currW + labelOffset, tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + currW = currW + tabW + tabOffset; + + if (i === selectedTab) { + c.setFontColor(fontColor); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupWedgeBar.prototype.cst.SHAPE_WEDGE_BAR, mxShapeMockupWedgeBar); + +function mxShapeMockupSearchBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupSearchBox, mxShape); +mxShapeMockupSearchBox.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + STROKE_COLOR2: 'strokeColor2', + SHAPE_SEARCH_BOX: 'mxgraph.mockup.forms.searchBox' +}; +mxShapeMockupSearchBox.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Icon Color', + type: 'color' +}]; + +mxShapeMockupSearchBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSearchBox.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupSearchBox.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.MAIN_TEXT, 'Search'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.TEXT_COLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.STROKE_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.TEXT_SIZE, '17'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeColor(strokeColor2); + c.ellipse(w - 15, h * 0.5 - 8, 10, 10); + c.stroke(); + c.begin(); + c.moveTo(w - 19, h * 0.5 + 9); + c.lineTo(w - 13, h * 0.5 + 1); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSearchBox.prototype.cst.SHAPE_SEARCH_BOX, mxShapeMockupSearchBox); + +function mxShapeMockupSignIn(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupSignIn, mxShape); +mxShapeMockupSignIn.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + TEXT_SIZE: 'textSize', + TEXT_SIZE2: 'textSize2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SHAPE_SIGN_IN: 'mxgraph.mockup.forms.signIn' +}; + +mxShapeMockupSignIn.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSignIn.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupSignIn.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.MAIN_TEXT, 'Sign In,User Name:,johndoe,Password:,********,Forgot Password?,New User,SIGN IN,SIGN UP').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_COLOR, '#666666'); + var fontColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_SIZE, '12'); + var fontSize2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_SIZE2, '15'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.STROKE_COLOR2, '#ddeeff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.FILL_COLOR2, '#66bbff'); + c.setFillColor(fillColor2); + c.roundrect(w * 0.09, h * 0.52, w * 0.36, h * 0.09, 5, 5); + c.fill(); + c.roundrect(w * 0.09, h * 0.84, w * 0.36, h * 0.09, 5, 5); + c.fill(); + c.rect(w * 0.05, h * 0.22, w * 0.75, h * 0.08); + c.stroke(); + c.rect(w * 0.05, h * 0.4, w * 0.75, h * 0.08); + c.stroke(); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(2); + c.begin(); + c.moveTo(w * 0.05, h * 0.12); + c.lineTo(w * 0.95, h * 0.12); + c.moveTo(w * 0.05, h * 0.72); + c.lineTo(w * 0.95, h * 0.72); + c.stroke(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(w * 0.05, h * 0.1, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.2, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.075, h * 0.26, 0, 0, mainText[2], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.38, 0, 0, mainText[3], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.075, h * 0.44, 0, 0, mainText[4], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.8, 0, 0, mainText[6], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeWidth(1); + c.setFontColor('#9999ff'); + c.setStrokeColor('#9999ff'); + var forgotW = mxUtils.getSizeForString(mainText[5], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.text(w * 0.05, h * 0.7, 0, 0, mainText[5], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.05, h * 0.7); + c.lineTo(w * 0.05 + forgotW, h * 0.7); + c.stroke(); + c.setFontColor(fontColor2); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(fontSize2); + c.text(w * 0.27, h * 0.565, 0, 0, mainText[7], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.27, h * 0.885, 0, 0, mainText[8], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupSignIn.prototype.cst.SHAPE_SIGN_IN, mxShapeMockupSignIn); + +function mxShapeMockupCalendar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCalendar, mxShape); +mxShapeMockupCalendar.prototype.cst = { + SHAPE_CALENDAR: 'mxgraph.mockup.forms.calendar', + DAYS: 'days', + SELECTED_DAY: 'selDay', + PREV_DAYS: 'prevDays', + FIRST_DAY: 'firstDay', + START_ON: 'startOn', + DAY_NAMES: 'dayNames', + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2' +}; + +mxShapeMockupCalendar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupCalendar.prototype.background = function (c, w, h) { + c.roundrect(0, 0, w, h, w * 0.0312, h * 0.0286); + c.fillAndStroke(); +}; + +mxShapeMockupCalendar.prototype.foreground = function (c, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.STROKE_COLOR2, '#008cff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.MAIN_TEXT, ''); + var textSize = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_SIZE, '15'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_COLOR, '#999999'); + var textColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var days = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.DAYS, '30'), 10); + var prevDays = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.PREV_DAYS, '31'), 10); + var firstDay = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.FIRST_DAY, '0'), 10); + var startOn = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.START_ON, '6', 10)); + var dayNames = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.DAY_NAMES, 'Mo,Tu,We,Th,Fr,Sa,Su').toString().split(','); + var selDay = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.SELECTED_DAY, '24'), 10); + fistDay = Math.max(firstDay, 0); + startOn = Math.max(startOn, 0); + fistDay = Math.min(firstDay, 6); + startOn = Math.min(startOn, 6); + c.roundrect(w * 0.05, h * 0.0457, w * 0.1438, h * 0.1029, w * 0.025, h * 0.0229); + c.stroke(); + c.roundrect(w * 0.8125, h * 0.0457, w * 0.1438, h * 0.1029, w * 0.025, h * 0.0229); + c.stroke(); + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.1438, h * 0.0743); + c.lineTo(w * 0.1, h * 0.0971); + c.lineTo(w * 0.1438, h * 0.12); + c.moveTo(w * 0.8625, h * 0.0743); + c.lineTo(w * 0.9062, h * 0.0971); + c.lineTo(w * 0.8625, h * 0.12); + c.stroke(); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.0971, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var range = w * 0.875; + var cellSize = range / 7; + + for (var i = 0; i < 7; i++) { + var currX = w * 0.0625 + cellSize * 0.5 + i * cellSize; + var j = i + startOn; + + if (j > 6) { + j = j - 7; + } + + c.text(currX, h * 0.2114, 0, 0, dayNames[j], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.setStrokeWidth(1); + var x = 0; + var selX = -1; + var selY = -1; + + if (firstDay !== startOn) { + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor2); + var diff = firstDay - startOn; + + if (diff < 0) { + diff = diff + 7; + } + + for (var i = 0; i < diff; i++) { + var currX = w * 0.0625 + i * cellSize; + c.rect(currX, h * 0.2686, cellSize, h * 0.1143); + c.fillAndStroke(); + var tmp = prevDays - diff + i + 1; + c.text(currX + cellSize * 0.5, h * 0.2686 + cellSize * 0.5, 0, 0, tmp.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + x = diff; + } + + c.setFillColor(fillColor); + c.setStrokeColor(strokeColor); + var y = 0; + + for (var i = 0; i < days; i++) { + var d = i + 1; + var currX = w * 0.0625 + x * cellSize; + var currY = h * 0.2686 + y * h * 0.1143; + + if (d === selDay) { + selX = currX; + selY = currY; + } else { + c.rect(currX, currY, cellSize, h * 0.1143); + c.fillAndStroke(); + c.text(currX + cellSize * 0.5, currY + cellSize * 0.5, 0, 0, d.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (x < 6) { + x++; + } else { + x = 0; + y++; + } + } + + var i = 1; + c.setFillColor(fillColor2); + + while (y < 6) { + var currX = w * 0.0625 + x * cellSize; + var currY = h * 0.2686 + y * h * 0.1143; + c.rect(currX, currY, cellSize, h * 0.1143); + c.fillAndStroke(); + c.text(currX + cellSize * 0.5, currY + cellSize * 0.5, 0, 0, i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + if (x < 6) { + x++; + } else { + x = 0; + y++; + } + + i++; + } + + if (selX >= 0) { + c.setStrokeColor('#ff0000'); + c.setStrokeWidth(2); + c.setFillColor(strokeColor2); + c.setFontColor(textColor2); + c.rect(selX, selY, cellSize, h * 0.1143); + c.fillAndStroke(); + c.text(selX + cellSize * 0.5, selY + cellSize * 0.5, 0, 0, selDay.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupCalendar.prototype.cst.SHAPE_CALENDAR, mxShapeMockupCalendar); + +function mxShapeMockupEmailForm(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupEmailForm, mxShape); +mxShapeMockupEmailForm.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + SHOW_CC: 'showCC', + SHOW_BCC: 'showBCC', + TEXT_SIZE: 'textSize', + SHAPE_EMAIL_FORM: 'mxgraph.mockup.forms.emailForm' +}; + +mxShapeMockupEmailForm.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontSize = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.TEXT_SIZE, '12'); + var showCC = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.SHOW_CC, 'true'); + var showBCC = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.SHOW_BCC, 'true'); + var tabX = fontSize * 4; + var optCount = 0; + + if (showCC === 'true') { + optCount++; + } + + if (showBCC === 'true') { + optCount++; + } + + w = Math.max(w, fontSize * 5); + h = Math.max(h, fontSize * 10.5 + optCount * fontSize * 3); + c.translate(x, y); + this.background(c, w, h, fontSize, tabX, showCC, showBCC); + c.setShadow(false); + this.foreground(c, w, h, fontSize, tabX, showCC, showBCC); +}; + +mxShapeMockupEmailForm.prototype.background = function (c, w, h, fontSize, tabX, showCC, showBCC) { + var messX = fontSize * 9; + + if (showCC === 'true') { + messX = messX + fontSize * 3; + c.rect(tabX, fontSize * 9, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + } + + if (showBCC === 'true') { + c.rect(tabX, messX, w - tabX, fontSize * 1.5); + messX = messX + fontSize * 3; + c.fillAndStroke(); + } + + c.rect(tabX, 0, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(tabX, fontSize * 3, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(tabX, fontSize * 6, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(0, messX, w, h - messX); + c.fillAndStroke(); +}; + +mxShapeMockupEmailForm.prototype.foreground = function (c, w, h, fontSize, tabX, showCC, showBCC) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.MAIN_TEXT, 'john@jgraph.com,Greeting,fred@jgraph.com,,,Lorem ipsum').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.TEXT_COLOR, '#666666'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(tabX - fontSize * 0.5, fontSize * 0.75, 0, 0, 'From', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX - fontSize * 0.5, fontSize * 3.75, 0, 0, 'Subject', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX - fontSize * 0.5, fontSize * 6.75, 0, 0, 'To', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 0.75, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 3.75, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 6.75, 0, 0, mainText[2], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var messX = fontSize * 9; + + if (showCC === 'true') { + messX = messX + fontSize * 3; + c.text(tabX - fontSize * 0.5, fontSize * 9.75, 0, 0, 'CC', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 9.75, 0, 0, mainText[3], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (showBCC === 'true') { + c.text(tabX - fontSize * 0.5, messX + fontSize * 0.75, 0, 0, 'BCC', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, messX + fontSize * 0.75, 0, 0, mainText[4], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + messX = messX + fontSize * 3; + } + + c.text(fontSize * 0.5, messX + fontSize * 0.75, 0, 0, mainText[5], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupEmailForm.prototype.cst.SHAPE_EMAIL_FORM, mxShapeMockupEmailForm); + +function mxShapeMockupFormsRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupFormsRRect, mxShape); +mxShapeMockupFormsRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.forms.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupFormsRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupFormsRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupFormsRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsRRect.prototype.cst.RRECT, mxShapeMockupFormsRRect); + +function mxShapeMockupFormsAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupFormsAnchor, mxShape); +mxShapeMockupFormsAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.forms.anchor' +}; + +mxShapeMockupFormsAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupFormsAnchor.prototype.cst.ANCHOR, mxShapeMockupFormsAnchor); + +function mxShapeMockupFormsCheckbox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupFormsCheckbox, mxShape); +mxShapeMockupFormsCheckbox.prototype.cst = { + CHECKBOX: 'mxgraph.mockup.forms.checkbox' +}; + +mxShapeMockupFormsCheckbox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsCheckbox.prototype.cst.CHECKBOX, mxShapeMockupFormsCheckbox); + +function mxShapeMockupFormsURect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupFormsURect, mxShape); +mxShapeMockupFormsURect.prototype.cst = { + U_RECT: 'mxgraph.mockup.forms.uRect' +}; + +mxShapeMockupFormsURect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsURect.prototype.cst.U_RECT, mxShapeMockupFormsURect); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupGraphics.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupGraphics.js new file mode 100644 index 0000000000000..a7069e5148c21 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupGraphics.js @@ -0,0 +1,997 @@ +"use strict"; + +function mxShapeMockupBarChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBarChart, mxShape); +mxShapeMockupBarChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + FILL_COLOR2: 'fillColor2', + FILL_COLOR3: 'fillColor3', + SHAPE_BAR_CHART: 'mxgraph.mockup.graphics.barChart' +}; +mxShapeMockupBarChart.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Stroke3 Color', + type: 'color' +}, { + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Fill3 Color', + type: 'color' +}]; + +mxShapeMockupBarChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupBarChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBarChart.prototype.bars = function (c, x, y, w, h) { + var barStroke = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.FILL_COLOR3, '#dddddd'); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + c.rect(0, h * 0.2, w * 0.75, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.45, w * 0.6, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.7, w * 0.95, h * 0.05); + c.fillAndStroke(); + c.setFillColor(barFill2); + c.rect(0, h * 0.25, w * 0.85, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.5, w * 0.65, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.75, w * 0.8, h * 0.05); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBarChart.prototype.cst.SHAPE_BAR_CHART, mxShapeMockupBarChart); + +function mxShapeMockupColumnChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupColumnChart, mxShape); +mxShapeMockupColumnChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + FILL_COLOR2: 'fillColor2', + FILL_COLOR3: 'fillColor3', + SHAPE_COLUMN_CHART: 'mxgraph.mockup.graphics.columnChart' +}; +mxShapeMockupColumnChart.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Bar Stroke Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Coord System Color', + type: 'color' +}, { + name: 'fillColor2', + dispName: 'Bar1 Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Bar2 Color', + type: 'color' +}]; + +mxShapeMockupColumnChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupColumnChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupColumnChart.prototype.bars = function (c, x, y, w, h) { + var barStroke = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.FILL_COLOR3, '#dddddd'); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + c.rect(w * 0.2, h * 0.25, w * 0.05, h * 0.75); + c.fillAndStroke(); + c.rect(w * 0.45, h * 0.4, w * 0.05, h * 0.6); + c.fillAndStroke(); + c.rect(w * 0.7, h * 0.05, w * 0.05, h * 0.95); + c.fillAndStroke(); + c.setFillColor(barFill2); + c.rect(w * 0.25, h * 0.15, w * 0.05, h * 0.85); + c.fillAndStroke(); + c.rect(w * 0.5, h * 0.35, w * 0.05, h * 0.65); + c.fillAndStroke(); + c.rect(w * 0.75, h * 0.2, w * 0.05, h * 0.8); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupColumnChart.prototype.cst.SHAPE_COLUMN_CHART, mxShapeMockupColumnChart); + +function mxShapeMockupLineChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupLineChart, mxShape); +mxShapeMockupLineChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + STROKE_COLOR4: 'strokeColor4', + SHAPE_LINE_CHART: 'mxgraph.mockup.graphics.lineChart' +}; +mxShapeMockupLineChart.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Coord. System Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Line1 Color', + type: 'color' +}, { + name: 'strokeColor4', + dispName: 'Line2 Color', + type: 'color' +}]; + +mxShapeMockupLineChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupLineChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupLineChart.prototype.bars = function (c, x, y, w, h) { + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR2, '#666666'); + var line1Stroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR3, '#008cff'); + var line2Stroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR4, '#dddddd'); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(line2Stroke); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3, h * 0.5); + c.lineTo(w * 0.6, h * 0.74); + c.lineTo(w * 0.9, h * 0.24); + c.stroke(); + c.setStrokeColor(line1Stroke); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3, h * 0.65); + c.lineTo(w * 0.6, h * 0.6); + c.lineTo(w * 0.9, h * 0.35); + c.stroke(); + c.setStrokeColor(coordStroke); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLineChart.prototype.cst.SHAPE_LINE_CHART, mxShapeMockupLineChart); + +function mxShapeMockupPieChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPieChart, mxShape); +mxShapeMockupPieChart.prototype.cst = { + PARTS: 'parts', + PART_COLORS: 'partColors', + SHAPE_PIE_CHART: 'mxgraph.mockup.graphics.pieChart' +}; +mxShapeMockupPieChart.prototype.customProperties = [{ + name: 'partsCount', + dispName: 'partsCount', + type: 'int', + defVal: 4, + dependentProps: ['partColors', 'parts'] +}, { + name: 'partColors', + dispName: 'Part Colors', + type: 'staticArr', + subType: 'color', + sizeProperty: 'partsCount', + subDefVal: '#FFFFFF' +}, { + name: 'parts', + dispName: 'Part Sizes', + type: 'staticArr', + subType: 'int', + sizeProperty: 'partsCount', + subDefVal: '10' +}]; + +mxShapeMockupPieChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupPieChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPieChart.prototype.foreground = function (c, x, y, w, h) { + var parts = mxUtils.getValue(this.style, mxShapeMockupPieChart.prototype.cst.PARTS, '10,20,30').toString().split(','); + var partNum = parts.length; + var partColors = mxUtils.getValue(this.style, mxShapeMockupPieChart.prototype.cst.PART_COLORS, '#333333,#666666,#999999').toString().split(','); + var total = 0; + + for (var i = 0; i < partNum; i++) { + total = total + parseInt(parts[i], 10); + } + + for (var i = 0; i < partNum; i++) { + if (partColors.length > i) { + c.setFillColor(partColors[i]); + } else { + c.setFillColor('#ff0000'); + } + + var beginPerc = 0; + var endPerc = 0; + var currPerc = parseInt(parts[i], 10) / total; + + if (currPerc === 0.5) { + currPerc = 0.501; + } + + for (var j = 0; j < i; j++) { + beginPerc = beginPerc + parseInt(parts[j], 10) / total; + } + + endPerc = currPerc + beginPerc; + var startAngle = 2 * Math.PI * beginPerc; + var endAngle = 2 * Math.PI * endPerc; + var x1 = w * 0.5 - w * Math.sin(startAngle) * 0.5; + var y1 = h * 0.5 - h * Math.cos(startAngle) * 0.5; + var x2 = w * 0.5 - w * Math.sin(endAngle) * 0.5; + var y2 = h * 0.5 - h * Math.cos(endAngle) * 0.5; + var largeArc = 1; + var sweep = 1; + + if (endPerc - beginPerc < 0.5) { + largeArc = 0; + } + + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(x2, y2); + c.arcTo(w * 0.5, h * 0.5, 0, largeArc, 1, x1, y1); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupPieChart.prototype.cst.SHAPE_PIE_CHART, mxShapeMockupPieChart); + +function mxShapeMockupIconGrid(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupIconGrid, mxShape); +mxShapeMockupIconGrid.prototype.cst = { + GRID_SIZE: 'gridSize', + SHAPE_ICON_GRID: 'mxgraph.mockup.graphics.iconGrid' +}; + +mxShapeMockupIconGrid.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxShapeMockupIconGrid.prototype.cst.GRID_SIZE, '3,3').toString().split(','); + this.background(c, w, h, gridSize); + c.setShadow(false); + this.foreground(c, w, h, gridSize); +}; + +mxShapeMockupIconGrid.prototype.background = function (c, w, h, gridSize) { + var boxSizeX = w / (parseInt(gridSize[0], 10) + (gridSize[0] - 1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1], 10) + (gridSize[1] - 1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) { + for (var j = 0; j < gridSize[1]; j++) { + c.rect(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j, boxSizeX, boxSizeY); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupIconGrid.prototype.foreground = function (c, w, h, gridSize) { + var boxSizeX = w / (parseInt(gridSize[0], 10) + (gridSize[0] - 1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1], 10) + (gridSize[1] - 1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) { + for (var j = 0; j < gridSize[1]; j++) { + c.begin(); + c.moveTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j + boxSizeY); + c.moveTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j + boxSizeY); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupIconGrid.prototype.cst.SHAPE_ICON_GRID, mxShapeMockupIconGrid); + +function mxShapeMockupBubbleChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBubbleChart, mxShape); +mxShapeMockupBubbleChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + FILL_COLOR2: 'fillColor2', + FILL_COLOR3: 'fillColor3', + SHAPE_BUBBLE_CHART: 'mxgraph.mockup.graphics.bubbleChart' +}; +mxShapeMockupBubbleChart.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Bubble Stroke Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Coord. System Color', + type: 'color' +}, { + name: 'fillColor2', + dispName: 'Bubble1 Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Bubble2 Color', + type: 'color' +}]; + +mxShapeMockupBubbleChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupBubbleChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBubbleChart.prototype.bars = function (c, x, y, w, h) { + var barStroke = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.FILL_COLOR3, '#dddddd'); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + var cx = w * 0.4; + var cy = h * 0.45; + var r = Math.min(h, w) * 0.14; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + cx = w * 0.1; + cy = h * 0.8; + r = Math.min(h, w) * 0.1; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + cx = w * 0.7; + cy = h * 0.7; + r = Math.min(h, w) * 0.22; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + c.setFillColor(barFill2); + cx = w * 0.15; + cy = h * 0.25; + r = Math.min(h, w) * 0.19; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + cx = w * 0.48; + cy = h * 0.7; + r = Math.min(h, w) * 0.12; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + cx = w * 0.74; + cy = h * 0.17; + r = Math.min(h, w) * 0.1; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBubbleChart.prototype.cst.SHAPE_BUBBLE_CHART, mxShapeMockupBubbleChart); + +function mxShapeMockupGauge(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.gaugePos = 25; +} + +; +mxUtils.extend(mxShapeMockupGauge, mxShape); +mxShapeMockupGauge.prototype.cst = { + SCALE_COLORS: 'scaleColors', + GAUGE_LABELS: 'gaugeLabels', + NEEDLE_COLOR: 'needleColor', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + GAUGE_POS: 'gaugePos', + SHAPE_GAUGE: 'mxgraph.mockup.graphics.gauge' +}; +mxShapeMockupGauge.prototype.customProperties = [{ + name: 'scaleColors', + dispName: 'Scale Colors', + type: 'String' +}, { + name: 'needleColor', + dispName: 'Needle Color', + type: 'color' +}, { + name: 'gaugePos', + dispName: 'Needle Position', + type: 'float', + min: 0, + max: 100, + defVal: 25 +}]; + +mxShapeMockupGauge.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupGauge.prototype.background = function (c, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupGauge.prototype.foreground = function (c, w, h) { + var gaugePos = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.GAUGE_POS, '0'); + var scaleColors = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.SCALE_COLORS, '#888888,#aaaaaa,#444444').toString().split(','); + var gaugeLabels = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.GAUGE_LABELS, 'CPU[%],0,100').toString().split(','); + var needleColor = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.NEEDLE_COLOR, '#008cff'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.TEXT_COLOR, '#666666'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.TEXT_SIZE, '12'); + gaugePos = Math.max(0, gaugePos); + gaugePos = Math.min(100, gaugePos); + c.setFillColor(scaleColors[1]); + c.begin(); + c.moveTo(w * 0.05, h * 0.5); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.95, h * 0.5); + c.lineTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 0, 0, h * 0.5); + c.close(); + c.fill(); + c.setFillColor(scaleColors[0]); + c.begin(); + c.moveTo(w * 0.05, h * 0.5); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 0, w * 0.182, h * 0.818); + c.lineTo(w * 0.146, h * 0.854); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.close(); + c.fill(); + c.setFillColor(scaleColors[2]); + c.begin(); + c.moveTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.854, h * 0.854); + c.lineTo(w * 0.818, h * 0.818); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 0, w * 0.95, h * 0.5); + c.close(); + c.fill(); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.3, 0, 0, gaugeLabels[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.2, h * 0.85, 0, 0, gaugeLabels[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8, h * 0.85, 0, 0, gaugeLabels[2], mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var needlePos = 0.75 * (2 * Math.PI * parseFloat(gaugePos) / 100) + 1.25 * Math.PI; + var x1 = w * 0.5 + w * 0.38 * Math.sin(needlePos); + var y1 = h * 0.5 - h * 0.38 * Math.cos(needlePos); + var x2 = 0; + var y2 = 0; + c.setFillColor(needleColor); + c.begin(); + c.moveTo(x1, y1); + x1 = w * 0.5 + w * 0.05 * Math.cos(needlePos); + y1 = h * 0.5 + h * 0.05 * Math.sin(needlePos); + c.lineTo(x1, y1); + x2 = w * 0.5 + w * -0.05 * Math.sin(needlePos); + y2 = h * 0.5 - h * -0.05 * Math.cos(needlePos); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 1, x2, y2); + x1 = x2; + y1 = y2; + x2 = w * 0.5 - w * 0.05 * Math.cos(needlePos); + y2 = h * 0.5 - h * 0.05 * Math.sin(needlePos); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 1, x2, y2); + c.close(); + c.fill(); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(w * 0.49, h * 0.49); + c.lineTo(w * 0.51, h * 0.49); + c.lineTo(w * 0.51, h * 0.51); + c.lineTo(w * 0.49, h * 0.51); + c.close(); + c.fill(); + c.begin(); + c.ellipse(0, 0, w, h); + c.stroke(); + c.begin(); + c.moveTo(w * 0.146, h * 0.854); + c.lineTo(w * 0.219, h * 0.781); + c.moveTo(w * 0.854, h * 0.854); + c.lineTo(w * 0.781, h * 0.781); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGauge.prototype.cst.SHAPE_GAUGE, mxShapeMockupGauge); + +Graph.handleFactory[mxShapeMockupGauge.prototype.cst.SHAPE_GAUGE] = function (state) { + var handles = [Graph.createHandle(state, ['gaugePos'], function (bounds) { + var gaugePos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'gaugePos', this.gaugePos)))); + return new mxPoint(bounds.x + bounds.width * 0.2 + gaugePos * 0.6 * bounds.width / 100, bounds.y + bounds.height * 0.8); + }, function (bounds, pt) { + this.state.style['gaugePos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeMockupPlotChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPlotChart, mxShape); +mxShapeMockupPlotChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SHAPES_COLORS: 'fillColor2', + SHAPE_PLOT_CHART: 'mxgraph.mockup.graphics.plotChart' +}; +mxShapeMockupPlotChart.prototype.customProperties = [{ + name: 'strokeColor2', + dispName: 'Bubble Stroke Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Coord. System Color', + type: 'color' +}, { + name: 'fillColor2', + dispName: 'Shapes Color', + type: 'string' +}]; + +mxShapeMockupPlotChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') { + c.setShadow(false); + } + + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupPlotChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPlotChart.prototype.foreground = function (c, x, y, w, h) { + var shapeStroke = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.STROKE_COLOR2, '#dddddd'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.STROKE_COLOR3, '#666666'); + var shapesColors = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.SHAPES_COLORS, '#00aaff,#0044ff,#008cff').toString().split(','); + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var shapeSize = Math.min(w, h) * 0.03; + c.setStrokeColor(shapeStroke); + c.setFillColor(shapesColors[0]); + var cx = w * 0.2; + var cy = h * 0.8; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + cx = w * 0.3; + cy = h * 0.65; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + cx = w * 0.6; + cy = h * 0.44; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + cx = w * 0.85; + cy = h * 0.9; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + c.setFillColor(shapesColors[1]); + cx = w * 0.08; + cy = h * 0.65; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + cx = w * 0.58; + cy = h * 0.85; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + cx = w * 0.72; + cy = h * 0.92; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + c.setFillColor(shapesColors[2]); + cx = w * 0.32; + cy = h * 0.28; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + cx = w * 0.92; + cy = h * 0.45; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + cx = w * 0.81; + cy = h * 0.37; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + cx = w * 0.51; + cy = h * 0.7; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPlotChart.prototype.cst.SHAPE_PLOT_CHART, mxShapeMockupPlotChart); + +function mxShapeMockupGanttChart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupGanttChart, mxShape); +mxShapeMockupGanttChart.prototype.cst = { + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3', + SHAPES_COLORS: 'fillColor2', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_GANTT_CHART: 'mxgraph.mockup.graphics.ganttChart' +}; + +mxShapeMockupGanttChart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupGanttChart.prototype.background = function (c, x, y, w, h, bgColor, frameColor) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupGanttChart.prototype.foreground = function (c, x, y, w, h) { + var shapesColors = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.SHAPES_COLORS, '#888888,#bbbbbb').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.TEXT_COLOR, '#666666'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.TEXT_SIZE, '#12'); + c.begin(); + c.moveTo(0, h * 0.13); + c.lineTo(w, h * 0.13); + c.moveTo(w * 0.4, 0); + c.lineTo(w * 0.4, h); + c.moveTo(w * 0.4, h * 0.065); + c.lineTo(w, h * 0.065); + c.moveTo(w * 0.03, 0); + c.lineTo(w * 0.03, h * 0.13); + c.moveTo(w * 0.1, 0); + c.lineTo(w * 0.1, h * 0.13); + c.moveTo(w * 0.315, 0); + c.lineTo(w * 0.315, h * 0.13); + c.moveTo(w * 0.45, h * 0.065); + c.lineTo(w * 0.45, h * 0.13); + c.moveTo(w * 0.5, h * 0.065); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.55, h * 0.065); + c.lineTo(w * 0.55, h * 0.13); + c.moveTo(w * 0.6, h * 0.065); + c.lineTo(w * 0.6, h); + c.moveTo(w * 0.65, h * 0.065); + c.lineTo(w * 0.65, h * 0.13); + c.moveTo(w * 0.7, h * 0.065); + c.lineTo(w * 0.7, h); + c.moveTo(w * 0.75, 0); + c.lineTo(w * 0.75, h * 0.13); + c.moveTo(w * 0.8, h * 0.065); + c.lineTo(w * 0.8, h); + c.moveTo(w * 0.85, h * 0.065); + c.lineTo(w * 0.85, h * 0.13); + c.moveTo(w * 0.9, h * 0.065); + c.lineTo(w * 0.9, h); + c.moveTo(w * 0.95, h * 0.065); + c.lineTo(w * 0.95, h * 0.13); + c.stroke(); + c.setFillColor(shapesColors[0]); + c.begin(); + c.moveTo(w * 0.41, h * 0.15); + c.lineTo(w * 0.64, h * 0.15); + c.lineTo(w * 0.64, h * 0.18); + c.lineTo(w * 0.625, h * 0.21); + c.lineTo(w * 0.61, h * 0.18); + c.lineTo(w * 0.44, h * 0.18); + c.lineTo(w * 0.425, h * 0.21); + c.lineTo(w * 0.41, h * 0.18); + c.close(); + c.moveTo(w * 0.41, h * 0.24); + c.lineTo(w * 0.49, h * 0.24); + c.lineTo(w * 0.49, h * 0.275); + c.lineTo(w * 0.41, h * 0.275); + c.close(); + c.moveTo(w * 0.46, h * 0.31); + c.lineTo(w * 0.64, h * 0.31); + c.lineTo(w * 0.64, h * 0.345); + c.lineTo(w * 0.46, h * 0.345); + c.close(); + c.moveTo(w * 0.56, h * 0.39); + c.lineTo(w * 0.69, h * 0.39); + c.lineTo(w * 0.69, h * 0.425); + c.lineTo(w * 0.56, h * 0.425); + c.close(); + c.fill(); + c.setFillColor(shapesColors[1]); + c.begin(); + c.moveTo(w * 0.46, h * 0.32); + c.lineTo(w * 0.58, h * 0.32); + c.lineTo(w * 0.58, h * 0.335); + c.lineTo(w * 0.46, h * 0.335); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGanttChart.prototype.cst.SHAPE_GANTT_CHART, mxShapeMockupGanttChart); + +function mxShapeMockupSimpleIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupSimpleIcon, mxShape); +mxShapeMockupSimpleIcon.prototype.cst = { + SIMPLE_ICON: 'mxgraph.mockup.graphics.simpleIcon' +}; + +mxShapeMockupSimpleIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.moveTo(0, h); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSimpleIcon.prototype.cst.SIMPLE_ICON, mxShapeMockupSimpleIcon); + +function mxShapeMockupGraphicsAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupGraphicsAnchor, mxShape); +mxShapeMockupGraphicsAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.graphics.anchor' +}; + +mxShapeMockupGraphicsAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupGraphicsAnchor.prototype.cst.ANCHOR, mxShapeMockupGraphicsAnchor); + +function mxShapeMockupGraphicsRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupGraphicsRRect, mxShape); +mxShapeMockupGraphicsRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.graphics.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupGraphicsRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupGraphicsRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupGraphicsRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGraphicsRRect.prototype.cst.RRECT, mxShapeMockupGraphicsRRect); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMarkup.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMarkup.js new file mode 100644 index 0000000000000..1a758108a4c76 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMarkup.js @@ -0,0 +1,132 @@ +"use strict"; + +function mxShapeMockupCurlyBrace(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCurlyBrace, mxShape); +mxShapeMockupCurlyBrace.prototype.cst = { + SHAPE_CURLY_BRACE: 'mxgraph.mockup.markup.curlyBrace' +}; + +mxShapeMockupCurlyBrace.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupCurlyBrace.prototype.background = function (c, x, y, w, h) { + var midY = h * 0.5; + var rSize = Math.min(w * 0.125, midY); + c.begin(); + c.moveTo(0, midY + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, midY); + c.lineTo(w * 0.5 - rSize, midY); + c.arcTo(rSize, rSize, 0, 0, 0, w * 0.5, midY - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, w * 0.5 + rSize, midY); + c.lineTo(w - rSize, midY); + c.arcTo(rSize, rSize, 0, 0, 1, w, midY + rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCurlyBrace.prototype.cst.SHAPE_CURLY_BRACE, mxShapeMockupCurlyBrace); + +function mxShapeMockupLine(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupLine, mxShape); +mxShapeMockupLine.prototype.cst = { + SHAPE_LINE: 'mxgraph.mockup.markup.line' +}; + +mxShapeMockupLine.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLine.prototype.cst.SHAPE_LINE, mxShapeMockupLine); + +function mxShapeMockupScratchOut(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupScratchOut, mxShape); +mxShapeMockupScratchOut.prototype.cst = { + SHAPE_SCRATCH_OUT: 'mxgraph.mockup.markup.scratchOut' +}; + +mxShapeMockupScratchOut.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.038, h * 0.095); + c.curveTo(w * 0.038, h * 0.095, w * 0.289, h * -0.045, w * 0.186, h * 0.05); + c.curveTo(w * 0.084, h * 0.145, w * -0.046, h * 0.251, w * 0.072, h * 0.208); + c.curveTo(w * 0.191, h * 0.164, w * 0.522, h * -0.09, w * 0.366, h * 0.062); + c.curveTo(w * 0.21, h * 0.215, w * -0.094, h * 0.38, w * 0.108, h * 0.304); + c.curveTo(w * 0.309, h * 0.228, w * 0.73, h * -0.126, w * 0.544, h * 0.096); + c.curveTo(w * 0.358, h * 0.319, w * -0.168, h * 0.592, w * 0.108, h * 0.476); + c.curveTo(w * 0.382, h * 0.36, w * 0.972, h * -0.138, w * 0.779, h * 0.114); + c.curveTo(w * 0.585, h * 0.365, w * -0.12, h * 0.688, w * 0.071, h * 0.639); + c.curveTo(w * 0.262, h * 0.59, w * 1.174, h * 0.012, w * 0.936, h * 0.238); + c.curveTo(w * 0.699, h * 0.462, w * -0.216, h * 0.855, w * 0.085, h * 0.806); + c.curveTo(w * 0.386, h * 0.758, w * 1.185, h * 0.26, w * 0.935, h * 0.534); + c.curveTo(w * 0.685, h * 0.808, w * -0.186, h * 0.94, w * 0.236, h * 0.895); + c.curveTo(w * 0.659, h * 0.85, w * 1.095, h * 0.608, w * 0.905, h * 0.769); + c.curveTo(w * 0.715, h * 0.93, w * 0.286, h * 0.962, w * 0.661, h * 0.931); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupScratchOut.prototype.cst.SHAPE_SCRATCH_OUT, mxShapeMockupScratchOut); + +function mxShapeMockupRedX(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRedX, mxShape); +mxShapeMockupRedX.prototype.cst = { + SHAPE_RED_X: 'mxgraph.mockup.markup.redX' +}; + +mxShapeMockupRedX.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.9, 0); + c.lineTo(w, h * 0.1); + c.lineTo(w * 0.6, h * 0.5); + c.lineTo(w, h * 0.9); + c.lineTo(w * 0.9, h); + c.lineTo(w * 0.5, h * 0.6); + c.lineTo(w * 0.1, h); + c.lineTo(0, h * 0.9); + c.lineTo(w * 0.4, h * 0.5); + c.lineTo(0, h * 0.1); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRedX.prototype.cst.SHAPE_RED_X, mxShapeMockupRedX); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMisc.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMisc.js new file mode 100644 index 0000000000000..68ceb991916ee --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupMisc.js @@ -0,0 +1,1252 @@ +"use strict"; + +function mxShapeMockupPlaybackControls(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPlaybackControls, mxShape); +mxShapeMockupPlaybackControls.prototype.cst = { + SHAPE_PLAYBACK_CONTROLS: 'mxgraph.mockup.misc.playbackControls', + FILL_COLOR2: 'fillColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR3: 'fillColor3', + STROKE_COLOR3: 'strokeColor3' +}; +mxShapeMockupPlaybackControls.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Outline Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Symbol Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Outline Stroke Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Symbol Stroke Color', + type: 'color' +}]; + +mxShapeMockupPlaybackControls.prototype.paintVertexShape = function (c, x, y, w, h) { + var controlBarHeight = 30; + var buttonSize = 22; + var h = Math.max(h, controlBarHeight); + var w = Math.max(225, w); + c.translate(x, y); + this.background(c, w, h, controlBarHeight); + c.setShadow(false); + this.foreground(c, w, h, controlBarHeight, buttonSize); +}; + +mxShapeMockupPlaybackControls.prototype.background = function (c, w, h, controlBarHeight) { + c.rect(0, (h - controlBarHeight) * 0.5, w, controlBarHeight); + c.fillAndStroke(); +}; + +mxShapeMockupPlaybackControls.prototype.foreground = function (c, w, h, controlBarHeight, buttonSize) { + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.STROKE_COLOR2, 'none'); + var fillColor3 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.FILL_COLOR3, '#ffffff'); + var strokeColor3 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.STROKE_COLOR3, 'none'); + c.setStrokeColor(strokeColor2); + c.setFillColor(fillColor2); + c.ellipse(10, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(40, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(70, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(100, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(130, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(160, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(190, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.setStrokeColor(strokeColor3); + c.setFillColor(fillColor3); + var t = h * 0.5 - controlBarHeight * 0.5; + c.begin(); + c.moveTo(16, t + 10); + c.lineTo(16, t + 20); + c.lineTo(18, t + 20); + c.lineTo(18, t + 10); + c.close(); + c.moveTo(20, t + 15); + c.lineTo(25, t + 20); + c.lineTo(25, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(44, t + 15); + c.lineTo(49, t + 20); + c.lineTo(49, t + 10); + c.close(); + c.moveTo(51, t + 15); + c.lineTo(56, t + 20); + c.lineTo(56, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(77, t + 15); + c.lineTo(82, t + 20); + c.lineTo(82, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(108, t + 10); + c.lineTo(108, t + 20); + c.lineTo(110, t + 20); + c.lineTo(110, t + 10); + c.close(); + c.moveTo(117, t + 15); + c.lineTo(112, t + 20); + c.lineTo(112, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(144, t + 15); + c.lineTo(139, t + 20); + c.lineTo(139, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(171, t + 15); + c.lineTo(166, t + 20); + c.lineTo(166, t + 10); + c.close(); + c.moveTo(178, t + 15); + c.lineTo(173, t + 20); + c.lineTo(173, t + 10); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(203, t + 10); + c.lineTo(203, t + 20); + c.lineTo(205, t + 20); + c.lineTo(205, t + 10); + c.close(); + c.moveTo(201, t + 15); + c.lineTo(196, t + 20); + c.lineTo(196, t + 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPlaybackControls.prototype.cst.SHAPE_PLAYBACK_CONTROLS, mxShapeMockupPlaybackControls); + +function mxShapeMockupProgressBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.barPos = 20; +} + +; +mxUtils.extend(mxShapeMockupProgressBar, mxShape); +mxShapeMockupProgressBar.prototype.cst = { + SHAPE_PROGRESS_BAR: 'mxgraph.mockup.misc.progressBar', + BAR_POS: 'barPos', + FILL_COLOR2: 'fillColor2' +}; +mxShapeMockupProgressBar.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Outline Color', + type: 'color' +}, { + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 80 +}]; + +mxShapeMockupProgressBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupProgressBar.prototype.background = function (c, w, h) { + c.roundrect(0, h * 0.5 - 5, w, 10, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupProgressBar.prototype.foreground = function (c, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupProgressBar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var barPos = mxUtils.getValue(this.style, mxShapeMockupProgressBar.prototype.cst.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setFillColor(fillColor2); + c.roundrect(0, h * 0.5 - 5, truePos, 10, 5, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupProgressBar.prototype.cst.SHAPE_PROGRESS_BAR, mxShapeMockupProgressBar); + +Graph.handleFactory[mxShapeMockupProgressBar.prototype.cst.SHAPE_PROGRESS_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeMockupShoppingCart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupShoppingCart, mxShape); +mxShapeMockupShoppingCart.prototype.cst = { + SHAPE_SHOPPING_CART: 'mxgraph.mockup.misc.shoppingCart' +}; + +mxShapeMockupShoppingCart.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + c.setStrokeWidth(3); + c.begin(); + c.moveTo(w * 0.975, h * 0.025); + c.lineTo(w * 0.82, h * 0.055); + c.lineTo(w * 0.59, h * 0.66); + c.lineTo(w * 0.7, h * 0.765); + c.arcTo(w * 0.06, h * 0.06, 0, 0, 1, w * 0.665, h * 0.86); + c.lineTo(w * 0.05, h * 0.86); + c.moveTo(w * 0.74, h * 0.26); + c.lineTo(w * 0.03, h * 0.28); + c.lineTo(w * 0.065, h * 0.61); + c.lineTo(w * 0.59, h * 0.66); + c.stroke(); + c.setStrokeWidth(1); + c.begin(); + c.moveTo(w * 0.15, h * 0.28); + c.lineTo(w * 0.15, h * 0.62); + c.moveTo(w * 0.265, h * 0.275); + c.lineTo(w * 0.265, h * 0.63); + c.moveTo(w * 0.38, h * 0.27); + c.lineTo(w * 0.38, h * 0.64); + c.moveTo(w * 0.495, h * 0.265); + c.lineTo(w * 0.495, h * 0.65); + c.moveTo(w * 0.61, h * 0.265); + c.lineTo(w * 0.61, h * 0.61); + c.stroke(); + c.begin(); + c.moveTo(w * 0.69, h * 0.405); + c.lineTo(w * 0.045, h * 0.405); + c.moveTo(w * 0.645, h * 0.52); + c.lineTo(w * 0.055, h * 0.52); + c.stroke(); + c.setFillColor(strokeColor); + c.ellipse(w * 0.075, h * 0.89, w * 0.1, h * 0.1); + c.fillAndStroke(); + c.ellipse(w * 0.62, h * 0.89, w * 0.1, h * 0.1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupShoppingCart.prototype.cst.SHAPE_SHOPPING_CART, mxShapeMockupShoppingCart); + +function mxShapeMockupRating(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRating, mxShape); +mxShapeMockupRating.prototype.cst = { + SHAPE_RATING: 'mxgraph.mockup.misc.rating', + RATING_STYLE: 'ratingStyle', + RATING_SCALE: 'ratingScale', + RATING_HEART: 'heart', + RATING_STAR: 'star', + EMPTY_FILL_COLOR: 'emptyFillColor', + GRADE: 'grade' +}; +mxShapeMockupRating.prototype.customProperties = [{ + name: 'ratingStyle', + dispName: 'Style', + type: 'enum', + enumList: [{ + val: 'heart', + dispName: 'Heart' + }, { + val: 'star', + dispName: 'Star' + }] +}, { + name: 'ratingScale', + dispName: 'Max. Rating', + type: 'int' +}, { + name: 'grade', + dispName: 'Current Rating', + type: 'int' +}, { + name: 'emptyFillColor', + dispName: 'Fill2 Color', + type: 'color' +}]; + +mxShapeMockupRating.prototype.paintVertexShape = function (c, x, y, w, h) { + var ratingStyle = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.RATING_STYLE, mxShapeMockupRating.prototype.cst.RATING_STAR); + var grade = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.GRADE, '5'); + var ratingScale = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.RATING_SCALE, '10'); + c.translate(x, y); + + if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_STAR) { + for (var i = 0; i < grade; i++) { + c.begin(); + c.moveTo(i * h * 1.5, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0); + c.lineTo(i * h * 1.5 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.5 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.5 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } else if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_HEART) { + for (var i = 0; i < grade; i++) { + c.begin(); + c.moveTo(i * h * 1.5 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.5 + h * 0.558, h * 0.908, i * h * 1.5 + h * 0.778, h * 0.682, i * h * 1.5 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.5 + h * 1.039, h * 0.414, i * h * 1.5 + h * 1.036, h * 0.229, i * h * 1.5 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.812, 0, i * h * 1.5 + h * 0.631, 0, i * h * 1.5 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.408, 0, i * h * 1.5 + h * 0.227, 0, i * h * 1.5 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.03, h * 0.229, i * h * 1.5, h * 0.414, i * h * 1.5 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } + + var emptyFillColor = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.EMPTY_FILL_COLOR, '#ffffff'); + c.setFillColor(emptyFillColor); + + if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_STAR) { + for (var i = grade; i < ratingScale; i++) { + c.begin(); + c.moveTo(i * h * 1.5, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0); + c.lineTo(i * h * 1.5 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.5 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.5 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } else if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_HEART) { + for (var i = grade; i < ratingScale; i++) { + c.begin(); + c.moveTo(i * h * 1.5 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.5 + h * 0.558, h * 0.908, i * h * 1.5 + h * 0.778, h * 0.682, i * h * 1.5 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.5 + h * 1.039, h * 0.414, i * h * 1.5 + h * 1.036, h * 0.229, i * h * 1.5 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.812, 0, i * h * 1.5 + h * 0.631, 0, i * h * 1.5 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.408, 0, i * h * 1.5 + h * 0.227, 0, i * h * 1.5 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.03, h * 0.229, i * h * 1.5, h * 0.414, i * h * 1.5 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRating.prototype.cst.SHAPE_RATING, mxShapeMockupRating); + +function mxShapeMockupMail(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupMail, mxShape); +mxShapeMockupMail.prototype.cst = { + SHAPE_MAIL: 'mxgraph.mockup.misc.mail2' +}; + +mxShapeMockupMail.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMail.prototype.cst.SHAPE_MAIL, mxShapeMockupMail); + +function mxShapeMockupVolumeSlider(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.barPos = 80; +} + +; +mxUtils.extend(mxShapeMockupVolumeSlider, mxShape); +mxShapeMockupVolumeSlider.prototype.cst = { + SHAPE_VOLUME_SLIDER: 'mxgraph.mockup.misc.volumeSlider', + BAR_POS: 'barPos', + FILL_COLOR2: 'fillColor2' +}; +mxShapeMockupVolumeSlider.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'barPos', + dispName: 'Handle Position', + type: 'float' +}]; + +mxShapeMockupVolumeSlider.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var barPos = mxUtils.getValue(this.style, mxShapeMockupVolumeSlider.prototype.cst.BAR_POS, '80'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupVolumeSlider.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var controlBarHeight = 25; + var h = Math.max(h, controlBarHeight); + var w = Math.max(w, 3.5 * controlBarHeight); + var speakerStartX = w - controlBarHeight; + var speakerStartY = (h - controlBarHeight) * 0.5; + c.begin(); + c.moveTo(speakerStartX + controlBarHeight * 0.05, speakerStartY + controlBarHeight * 0.35); + c.lineTo(speakerStartX + controlBarHeight * 0.15, speakerStartY + controlBarHeight * 0.35); + c.lineTo(speakerStartX + controlBarHeight * 0.3, speakerStartY + controlBarHeight * 0.2); + c.lineTo(speakerStartX + controlBarHeight * 0.3, speakerStartY + controlBarHeight * 0.8); + c.lineTo(speakerStartX + controlBarHeight * 0.15, speakerStartY + controlBarHeight * 0.65); + c.lineTo(speakerStartX + controlBarHeight * 0.05, speakerStartY + controlBarHeight * 0.65); + c.close(); + c.fill(); + var barMin = 0; + var barMax = w - controlBarHeight * 1.3; + var videoBarStartY = (h - controlBarHeight) * 0.5; + var barRange = barMax - barMin; + var barPos = barRange * barPos / 100; + var barEnd = barMin + barPos; + var soundStartX = w - controlBarHeight; + var soundStartY = (h - controlBarHeight) * 0.5; + c.begin(); + c.moveTo(soundStartX + controlBarHeight * 0.4, soundStartY + controlBarHeight * 0.35); + c.arcTo(controlBarHeight * 0.2, controlBarHeight * 0.3, 0, 0, 1, soundStartX + controlBarHeight * 0.4, soundStartY + controlBarHeight * 0.65); + c.moveTo(soundStartX + controlBarHeight * 0.425, soundStartY + controlBarHeight * 0.25); + c.arcTo(controlBarHeight * 0.225, controlBarHeight * 0.35, 0, 0, 1, soundStartX + controlBarHeight * 0.425, soundStartY + controlBarHeight * 0.75); + c.moveTo(soundStartX + controlBarHeight * 0.5, soundStartY + controlBarHeight * 0.2); + c.arcTo(controlBarHeight * 0.25, controlBarHeight * 0.4, 0, 0, 1, soundStartX + controlBarHeight * 0.5, soundStartY + controlBarHeight * 0.8); + c.fillAndStroke(); + var videoBarStartX = 0; + var videoBarStartY = (h - controlBarHeight) * 0.5; + var videoBarEndX = w - controlBarHeight * 1.3; + c.roundrect(videoBarStartX, videoBarStartY + controlBarHeight * 0.35, videoBarEndX, controlBarHeight * 0.3, 5, 5); + c.fill(); + c.setShadow(false); + c.setFillColor(fillColor2); + c.roundrect(barMin, videoBarStartY + controlBarHeight * 0.35, barEnd, controlBarHeight * 0.3, 5, 5); + c.fill(); + c.ellipse(barEnd - controlBarHeight * 0.25, videoBarStartY + controlBarHeight * 0.25, controlBarHeight * 0.5, controlBarHeight * 0.5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupVolumeSlider.prototype.cst.SHAPE_VOLUME_SLIDER, mxShapeMockupVolumeSlider); + +Graph.handleFactory[mxShapeMockupVolumeSlider.prototype.cst.SHAPE_VOLUME_SLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + return new mxPoint(bounds.x + barPos * (bounds.width - 32.5) / 100, bounds.y + bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + return handles; +}; + +function mxShapeMockupEdit(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupEdit, mxShape); +mxShapeMockupEdit.prototype.cst = { + SHAPE_EDIT: 'mxgraph.mockup.misc.editIcon' +}; + +mxShapeMockupEdit.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.11, h * 0.8); + c.lineTo(w * 0.2, h * 0.89); + c.lineTo(w * 0.05, h * 0.95); + c.close(); + c.moveTo(w * 0.74, h * 0.16); + c.lineTo(w * 0.84, h * 0.26); + c.lineTo(w * 0.22, h * 0.88); + c.lineTo(w * 0.12, h * 0.78); + c.close(); + c.moveTo(w * 0.755, h * 0.145); + c.lineTo(w * 0.82, h * 0.08); + c.lineTo(w * 0.92, h * 0.18); + c.lineTo(w * 0.855, h * 0.245); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupEdit.prototype.cst.SHAPE_EDIT, mxShapeMockupEdit); + +function mxShapeMockupPrint(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPrint, mxShape); +mxShapeMockupPrint.prototype.cst = { + SHAPE_PRINT: 'mxgraph.mockup.misc.printIcon' +}; + +mxShapeMockupPrint.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.15, h * 0.58); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.18, h * 0.55); + c.lineTo(w * 0.82, h * 0.55); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.85, h * 0.58); + c.lineTo(w * 0.85, h * 0.82); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.82, h * 0.85); + c.lineTo(w * 0.18, h * 0.85); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.15, h * 0.82); + c.close(); + c.moveTo(w * 0.7, h * 0.52); + c.lineTo(w * 0.3, h * 0.52); + c.lineTo(w * 0.3, h * 0.15); + c.lineTo(w * 0.55, h * 0.15); + c.lineTo(w * 0.55, h * 0.3); + c.lineTo(w * 0.7, h * 0.3); + c.close(); + c.moveTo(w * 0.57, h * 0.15); + c.lineTo(w * 0.7, h * 0.28); + c.lineTo(w * 0.57, h * 0.28); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPrint.prototype.cst.SHAPE_PRINT, mxShapeMockupPrint); + +function mxShapeMockupShare(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupShare, mxShape); +mxShapeMockupShare.prototype.cst = { + SHAPE_SHARE: 'mxgraph.mockup.misc.shareIcon' +}; + +mxShapeMockupShare.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.15, h * 0.18); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.18, h * 0.15); + c.lineTo(w * 0.82, h * 0.15); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.85, h * 0.18); + c.lineTo(w * 0.85, h * 0.82); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.82, h * 0.85); + c.lineTo(w * 0.18, h * 0.85); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.15, h * 0.82); + c.close(); + c.fill(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(w * 0.563, h * 0.34); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.603, h * 0.42); + c.lineTo(w * 0.44, h * 0.5); + c.lineTo(w * 0.602, h * 0.582); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.563, h * 0.653); + c.lineTo(w * 0.403, h * 0.575); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.4, h * 0.42); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupShare.prototype.cst.SHAPE_SHARE, mxShapeMockupShare); + +function mxShapeMockupTrashcan(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupTrashcan, mxShape); +mxShapeMockupTrashcan.prototype.cst = { + SHAPE_TRASHCAN: 'mxgraph.mockup.misc.trashcanIcon' +}; + +mxShapeMockupTrashcan.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.24, h * 0.24); + c.arcTo(w * 0.04, h * 0.04, 0, 0, 1, w * 0.24, h * 0.16); + c.lineTo(w * 0.4, h * 0.16); + c.lineTo(w * 0.4, h * 0.12); + c.lineTo(w * 0.6, h * 0.12); + c.lineTo(w * 0.6, h * 0.16); + c.lineTo(w * 0.76, h * 0.16); + c.arcTo(w * 0.04, h * 0.04, 0, 0, 1, w * 0.76, h * 0.24); + c.close(); + c.fill(); + c.roundrect(w * 0.26, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); + c.roundrect(w * 0.44, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); + c.roundrect(w * 0.62, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTrashcan.prototype.cst.SHAPE_TRASHCAN, mxShapeMockupTrashcan); + +function mxShapeMockupCopyright(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCopyright, mxShape); +mxShapeMockupCopyright.prototype.cst = { + SHAPE_COPYRIGHT: 'mxgraph.mockup.misc.copyrightIcon' +}; + +mxShapeMockupCopyright.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.713, h * 0.288); + c.arcTo(w * 0.3, h * 0.3, 0, 1, 0, w * 0.713, h * 0.712); + c.lineTo(w * 0.784, h * 0.783); + c.arcTo(w * 0.4, h * 0.4, 0, 1, 1, w * 0.784, h * 0.217); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCopyright.prototype.cst.SHAPE_COPYRIGHT, mxShapeMockupCopyright); + +function mxShapeMockupRegistered(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRegistered, mxShape); +mxShapeMockupRegistered.prototype.cst = { + SHAPE_REGISTERED: 'mxgraph.mockup.misc.registeredIcon' +}; + +mxShapeMockupRegistered.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.29, h * 0.9); + c.lineTo(w * 0.29, h * 0.09); + c.lineTo(w * 0.5, h * 0.09); + c.arcTo(w * 0.2195, h * 0.2195, 0, 0, 1, w * 0.545, h * 0.525); + c.lineTo(w * 0.738, h * 0.91); + c.lineTo(w * 0.674, h * 0.91); + c.lineTo(w * 0.4825, h * 0.53); + c.lineTo(w * 0.35, h * 0.53); + c.lineTo(w * 0.35, h * 0.9); + c.close(); + c.moveTo(w * 0.35, h * 0.47); + c.lineTo(w * 0.5, h * 0.47); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.5, h * 0.15); + c.lineTo(w * 0.35, h * 0.15); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRegistered.prototype.cst.SHAPE_REGISTERED, mxShapeMockupRegistered); + +function mxShapeMockupVolume(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupVolume, mxShape); +mxShapeMockupVolume.prototype.cst = { + SHAPE_VOLUME: 'mxgraph.mockup.misc.volumeIcon' +}; + +mxShapeMockupVolume.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + c.translate(x, y); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1, h * 0.3); + c.lineTo(w * 0.3, h * 0.3); + c.lineTo(w * 0.5, h * 0.15); + c.lineTo(w * 0.5, h * 0.85); + c.lineTo(w * 0.3, h * 0.7); + c.lineTo(w * 0.1, h * 0.7); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w * 0.6, h * 0.4); + c.arcTo(w * 0.2, h * 0.2, 0, 0, 1, w * 0.6, h * 0.6); + c.moveTo(w * 0.7, h * 0.3); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.7, h * 0.7); + c.moveTo(w * 0.8, h * 0.2); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.8, h * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupVolume.prototype.cst.SHAPE_VOLUME, mxShapeMockupVolume); + +function mxShapeMockupRuler(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRuler, mxShape); +mxShapeMockupRuler.prototype.cst = { + SHAPE_RULER: 'mxgraph.mockup.misc.ruler', + ORIENTATION: 'rulerOrient', + UNIT_SIZE: 'unitSize', + FACE_UP: 'up', + FACE_DOWN: 'down' +}; + +mxShapeMockupRuler.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupRuler.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRuler.prototype.foreground = function (c, w, h) { + var facing = mxUtils.getValue(this.style, mxShapeMockupRuler.prototype.cst.ORIENTATION, mxShapeMockupRuler.prototype.cst.FACE_DOWN); + var unitSize = mxUtils.getValue(this.style, mxShapeMockupRuler.prototype.cst.UNIT_SIZE, '10'); + unitSize = Math.max(unitSize, 1); + var currX = unitSize; + var i = 1; + + if (facing === mxShapeMockupRuler.prototype.cst.FACE_DOWN) { + c.begin(); + + while (currX < w) { + var remainder = i % 10; + + if (remainder === 0) { + c.moveTo(currX, h * 0.5); + c.lineTo(currX, h); + } else if (remainder === 5) { + c.moveTo(currX, h * 0.7); + c.lineTo(currX, h); + } else { + c.moveTo(currX, h * 0.8); + c.lineTo(currX, h); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } else if (facing === mxShapeMockupRuler.prototype.cst.FACE_UP) { + c.begin(); + + while (currX < w) { + var remainder = i % 10; + + if (remainder === 0) { + c.moveTo(currX, h * 0.5); + c.lineTo(currX, 0); + } else if (remainder === 5) { + c.moveTo(currX, h * 0.3); + c.lineTo(currX, 0); + } else { + c.moveTo(currX, h * 0.2); + c.lineTo(currX, 0); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRuler.prototype.cst.SHAPE_RULER, mxShapeMockupRuler); + +function mxShapeMockupRuler2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRuler2, mxShape); +mxShapeMockupRuler2.prototype.cst = { + SHAPE_RULER: 'mxgraph.mockup.misc.ruler2', + ORIENTATION: 'rulerOrient', + UNIT_SIZE: 'dx', + FACE_UP: 'up', + FACE_DOWN: 'down' +}; +mxShapeMockupRuler2.prototype.customProperties = [{ + name: 'rulerOrient', + dispName: 'Orientation', + defVal: 'up', + type: 'enum', + enumList: [{ + val: 'up', + dispName: 'Up' + }, { + val: 'down', + dispName: 'Down' + }] +}, { + name: 'dx', + dispName: 'Unit Size', + type: 'float', + min: 0, + defVal: 100 +}]; + +mxShapeMockupRuler2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupRuler2.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRuler2.prototype.foreground = function (c, x, y, w, h) { + var facing = mxUtils.getValue(this.style, mxShapeMockupRuler2.prototype.cst.ORIENTATION, mxShapeMockupRuler2.prototype.cst.FACE_DOWN); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + var dx = mxUtils.getValue(this.style, 'dx', '100'); + var unitSize = dx / 10; + this.state.style['spacingLeft'] = Math.round(1000 * Math.max(0, Math.min(w, dx))) / 1000 - 4; + unitSize = Math.max(unitSize, 1); + c.setFontColor(fontColor); + var currX = unitSize; + var i = 1; + + if (facing === mxShapeMockupRuler2.prototype.cst.FACE_DOWN) { + c.begin(); + + while (currX < w) { + var remainder = i % 10; + + if (remainder === 0) { + c.moveTo(currX, h - 10); + c.lineTo(currX, h); + var unit = this.state.view.graph.getLabel(this.state.cell); + + if (!isNaN(unit)) { + c.stroke(); + var num = i * Math.round(100 * unit) / 1000; + + if (i != 10 && num != 0) { + c.text(currX, (h - 10) * 0.5, 0, 0, num.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.begin(); + } + } else if (remainder === 5) { + c.moveTo(currX, h - 6); + c.lineTo(currX, h); + } else { + c.moveTo(currX, h - 4); + c.lineTo(currX, h); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } else if (facing === mxShapeMockupRuler2.prototype.cst.FACE_UP) { + c.begin(); + + while (currX < w) { + var remainder = i % 10; + + if (remainder === 0) { + c.moveTo(currX, 10); + c.lineTo(currX, 0); + var unit = this.state.view.graph.getLabel(this.state.cell); + + if (!isNaN(unit)) { + c.stroke(); + var num = i * Math.round(100 * unit) / 1000; + + if (i != 10 && num != 0) { + c.text(currX, (h + 10) * 0.5, 0, 0, num.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.begin(); + } + } else if (remainder === 5) { + c.moveTo(currX, 6); + c.lineTo(currX, 0); + } else { + c.moveTo(currX, 4); + c.lineTo(currX, 0); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRuler2.prototype.cst.SHAPE_RULER, mxShapeMockupRuler2); + +Graph.handleFactory[mxShapeMockupRuler2.prototype.cst.SHAPE_RULER] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'spacingLeft', 'align', 'varticalAlign', 'spacingBottom', 'spacingTop', 'spacingRight', 'spacing'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - 10); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(1000 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 1000; + this.state.style['spacingLeft'] = Math.round(1000 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 1000 - 4; + this.state.style['align'] = 'left'; + this.state.style['verticalAlign'] = 'middle'; + var facing = mxUtils.getValue(this.state.style, 'rulerOrient', '1'); + + if (facing == 'down') { + this.state.style['spacingBottom'] = 10; + this.state.style['spacingTop'] = 0; + } else { + this.state.style['spacingBottom'] = 0; + this.state.style['spacingTop'] = 10; + } + + this.state.style['spacingRight'] = 0; + this.state.style['spacing'] = 0; + })]; + return handles; +}; + +function mxShapeMockupRevisionTable(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRevisionTable, mxShape); +mxShapeMockupRevisionTable.prototype.cst = { + SHAPE_REVISION_TABLE: 'mxgraph.mockup.misc.revisionTable', + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupRevisionTable.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupRevisionTable.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRevisionTable.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.MAIN_TEXT, '').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.TEXT_COLOR, '#999999'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.TEXT_SIZE, '17'); + c.begin(); + c.moveTo(0, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(0, h * 0.67); + c.lineTo(w, h * 0.67); + c.moveTo(w * 0.125, h * 0.33); + c.lineTo(w * 0.125, h); + c.moveTo(w * 0.5, h * 0.33); + c.lineTo(w * 0.5, h); + c.stroke(); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.165, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.0625, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.3125, h * 0.5, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.5, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.0625, h * 0.835, 0, 0, mainText[4], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.3125, h * 0.835, 0, 0, mainText[5], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.835, 0, 0, mainText[6], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupRevisionTable.prototype.cst.SHAPE_REVISION_TABLE, mxShapeMockupRevisionTable); + +function mxShapeMockupStatusBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupStatusBar, mxShape); +mxShapeMockupStatusBar.prototype.cst = { + SHAPE_STATUS_BAR: 'mxgraph.mockup.misc.statusBar', + MAIN_TEXT: 'mainText', + FILL_COLOR2: 'fillColor2', + STROKE_COLOR2: 'strokeColor2', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupStatusBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + w = Math.max(w, 105); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupStatusBar.prototype.background = function (c, w, h) { + c.rect(0, h * 0.5 - 15, w, 30); + c.fillAndStroke(); +}; + +mxShapeMockupStatusBar.prototype.foreground = function (c, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.STROKE_COLOR2, '#008cff'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.MAIN_TEXT, '').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.TEXT_COLOR, '#999999'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.TEXT_SIZE, '17'); + c.setFillColor(fillColor2); + c.roundrect(5, h * 0.5 - 10, (w - 75) * 0.46, 20, 5, 5); + c.fill(); + c.roundrect(10 + (w - 75) * 0.46, h * 0.5 - 10, (w - 75) * 0.23, 20, 5, 5); + c.fill(); + c.roundrect(15 + (w - 75) * 0.69, h * 0.5 - 10, (w - 75) * 0.276, 20, 5, 5); + c.fill(); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(10, h * 0.5, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(10 + (w - 75) * 0.575, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(15 + (w - 75) * 0.828, h * 0.5, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeColor(strokeColor2); + c.ellipse(w - 25, h * 0.5 - 10, 20, 20); + c.stroke(); + c.begin(); + c.moveTo(w - 55, h * 0.5 + 10); + c.lineTo(w - 35, h * 0.5 + 10); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupStatusBar.prototype.cst.SHAPE_STATUS_BAR, mxShapeMockupStatusBar); + +function mxShapeMockupPin(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPin, mxShape); +mxShapeMockupPin.prototype.cst = { + SHAPE_PIN: 'mxgraph.mockup.misc.pin', + FILL_COLOR2: 'fillColor2', + FILL_COLOR3: 'fillColor3' +}; +mxShapeMockupPin.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Fill3 Color', + type: 'color' +}]; + +mxShapeMockupPin.prototype.paintVertexShape = function (c, x, y, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupPin.prototype.cst.FILL_COLOR2, '#000000'); + var fillColor3 = mxUtils.getValue(this.style, mxShapeMockupPin.prototype.cst.FILL_COLOR3, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setShadow(false); + c.translate(x, y); + c.setStrokeWidth(3); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.5, h); + c.stroke(); + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor); + c.setGradient(fillColor2, fillColor3, 0, 0, w, h * 0.4, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.9); + c.ellipse(0, 0, w, h * 0.4); + c.fillAndStroke(); + c.setFillColor('#ffffff'); + c.setAlpha(0.5); + c.ellipse(w * 0.2, h * 0.08, w * 0.3, h * 0.12); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPin.prototype.cst.SHAPE_PIN, mxShapeMockupPin); + +function mxShapeMockupMiscRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupMiscRRect, mxShape); +mxShapeMockupMiscRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.misc.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupMiscRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeMockupMiscRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupMiscRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMiscRRect.prototype.cst.RRECT, mxShapeMockupMiscRRect); + +function mxShapeMockupMiscAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupMiscAnchor, mxShape); +mxShapeMockupMiscAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.misc.anchor' +}; + +mxShapeMockupMiscAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupMiscAnchor.prototype.cst.ANCHOR, mxShapeMockupMiscAnchor); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupNavigation.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupNavigation.js new file mode 100644 index 0000000000000..65cf371ea4a4d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupNavigation.js @@ -0,0 +1,651 @@ +"use strict"; + +function mxShapeMockupBreadcrumb(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBreadcrumb, mxShape); +mxShapeMockupBreadcrumb.prototype.cst = { + SHAPE_BREADCRUMB: 'mxgraph.mockup.navigation.breadcrumb', + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2' +}; + +mxShapeMockupBreadcrumb.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.MAIN_TEXT, 'Layer 1, Layer 2, Layer 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_SIZE, '17').toString(); + var separatorColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#c4c4c4'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var labelOffset = 10; + + for (var i = 0; i < buttonNum; i++) { + buttonWidths[i] = mxUtils.getSizeForString(textStrings[i], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + c.setShadow(false); + this.separators(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, separatorColor); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i + 1 === buttonNum) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupBreadcrumb.prototype.separators = function (c, w, h, buttonNum, buttonWidths, labelOffset, minW, separatorColor) { + c.setStrokeColor(separatorColor); + var midY = h * 0.5; + var size = 5; + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth - size * 0.5, midY - size); + c.lineTo(currWidth + size * 0.5, midY); + c.lineTo(currWidth - size * 0.5, midY + size); + } + + c.stroke(); +}; + +mxShapeMockupBreadcrumb.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupBreadcrumb.prototype.cst.SHAPE_BREADCRUMB, mxShapeMockupBreadcrumb); + +function mxShapeMockupStepBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupStepBar, mxShape); +mxShapeMockupStepBar.prototype.cst = { + SHAPE_STEP_BAR: 'mxgraph.mockup.navigation.stepBar', + SELECTED: '+', + MAIN_TEXT: 'mainText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2' +}; +mxShapeMockupStepBar.prototype.customProperties = [{ + name: 'mainText', + dispName: 'Text', + type: 'string' +}, { + name: 'textSize', + dispName: 'Text Size', + type: 'float' +}, { + name: 'textColor', + dispName: 'Text Color', + type: 'color' +}, { + name: 'textColor2', + dispName: 'Text2 Color', + type: 'color' +}]; + +mxShapeMockupStepBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.MAIN_TEXT, 'Step 1, Step 2, Step 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_COLOR, '#666666'); + var currColor = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_SIZE, '17').toString(); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#c4c4c4'); + var doneColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var labelOffset = 10; + var selectedButton = -1; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupStepBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.stepLineBg(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, bgColor, fontSize, trueW); + c.setShadow(false); + this.stepLineFg(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, bgColor, doneColor, currColor, fontSize, trueW, selectedButton); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i >= selectedButton) { + c.setFontColor(currColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupStepBar.prototype.stepLineBg = function (c, w, h, buttonNum, buttonWidths, labelOffset, minW, bgColor, fontSize, trueW) { + c.setStrokeColor(bgColor); + c.setFillColor(bgColor); + var midY = fontSize * 2; + var size = 10; + var startX = 0; + var endX = 0; + + for (var i = 0; i < buttonNum; i++) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + currWidth = currWidth * w / minW; + + if (i === 0) { + startX = currWidth; + } else if (i + 1 === buttonNum) { + endX = currWidth; + } + + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + } + + c.begin(); + c.rect(startX, midY - size * 0.2, endX - startX, size * 0.4); + c.fillAndStroke(); +}; + +mxShapeMockupStepBar.prototype.stepLineFg = function (c, w, h, buttonNum, buttonWidths, labelOffset, minW, bgColor, doneColor, currColor, fontSize, trueW, selectedButton) { + c.setStrokeColor(doneColor); + var midY = fontSize * 2; + var size = 10 * 0.75; + var startX = 0; + var endX = 0; + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + for (var i = 0; i <= selectedButton; i++) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + currWidth = currWidth * w / minW; + + if (i === 0) { + startX = currWidth; + } else if (i === selectedButton) { + endX = currWidth; + } + } + + c.setFillColor(doneColor); + c.begin(); + c.rect(startX, midY - size * 0.15, endX - startX, size * 0.3); + c.fill(); + c.setFillColor(bgColor); + + for (var i = 0; i <= selectedButton; i++) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + currWidth = currWidth * w / minW; + + if (i === 0) { + startX = currWidth; + } else if (i + 1 === selectedButton) { + endX = currWidth; + } + + if (i < selectedButton) { + c.setStrokeWidth(strokeWidth); + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.ellipse(currWidth - size * 0.6, midY - size * 0.6, 2 * size * 0.6, 2 * size * 0.6); + c.fillAndStroke(); + } else { + c.setStrokeWidth(strokeWidth); + c.setFillColor(bgColor); + c.setStrokeColor(bgColor); + c.begin(); + c.ellipse(currWidth - size / 0.75, midY - size / 0.75, 2 * size / 0.75, 2 * size / 0.75); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth); + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + c.setFillColor(currColor); + c.setStrokeColor(currColor); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.ellipse(currWidth - size * 0.7, midY - size * 0.7, 2 * size * 0.7, 2 * size * 0.7); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupStepBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxShapeMockupStepBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, fontSize * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupStepBar.prototype.cst.SHAPE_STEP_BAR, mxShapeMockupStepBar); + +function mxShapeMockupCoverFlow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCoverFlow, mxShape); +mxShapeMockupCoverFlow.prototype.cst = { + SHAPE_COVER_FLOW: 'mxgraph.mockup.navigation.coverFlow' +}; + +mxShapeMockupCoverFlow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.0924, h * 0.07); + c.lineTo(w * 0.005, h * 0.01); + c.lineTo(w * 0.005, h * 0.99); + c.lineTo(w * 0.0924, h * 0.93); + c.moveTo(w * 0.1774, h * 0.09); + c.lineTo(w * 0.0924, h * 0.01); + c.lineTo(w * 0.0924, h * 0.99); + c.lineTo(w * 0.1774, h * 0.91); + c.moveTo(w * 0.3373, h * 0.22); + c.lineTo(w * 0.1774, h * 0.01); + c.lineTo(w * 0.1774, h * 0.99); + c.lineTo(w * 0.3373, h * 0.78); + c.moveTo(w * 0.912, h * 0.07); + c.lineTo(w * 0.998, h * 0.01); + c.lineTo(w * 0.998, h * 0.99); + c.lineTo(w * 0.912, h * 0.93); + c.moveTo(w * 0.8271, h * 0.09); + c.lineTo(w * 0.912, h * 0.01); + c.lineTo(w * 0.912, h * 0.99); + c.lineTo(w * 0.8271, h * 0.91); + c.moveTo(w * 0.6672, h * 0.22); + c.lineTo(w * 0.8271, h * 0.01); + c.lineTo(w * 0.8271, h * 0.99); + c.lineTo(w * 0.6672, h * 0.78); + c.moveTo(w * 0.3373, h * 0.005); + c.lineTo(w * 0.3373, h * 0.995); + c.lineTo(w * 0.6672, h * 0.995); + c.lineTo(w * 0.6672, h * 0.005); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCoverFlow.prototype.cst.SHAPE_COVER_FLOW, mxShapeMockupCoverFlow); + +function mxShapeMockupScrollBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupScrollBar, mxShape); +mxShapeMockupScrollBar.prototype.cst = { + SHAPE_SCROLL_BAR: 'mxgraph.mockup.navigation.scrollBar', + FILL_COLOR2: 'fillColor2', + STROKE_COLOR2: 'strokeColor2', + BAR_POS: 'barPos' +}; +mxShapeMockupScrollBar.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float' +}, { + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}]; + +mxShapeMockupScrollBar.prototype.paintVertexShape = function (c, x, y, w, h) { + h = 20; + var buttonX = 20; + w = Math.max(w, 2 * buttonX); + c.translate(x, y); + this.background(c, w, h, buttonX); + c.setShadow(false); + this.foreground(c, w, h, buttonX); + this.barPos = 20; +}; + +mxShapeMockupScrollBar.prototype.background = function (c, w, h, buttonX) { + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(buttonX, 0); + c.lineTo(buttonX, h); + c.moveTo(w - buttonX, 0); + c.lineTo(w - buttonX, h); + c.stroke(); +}; + +mxShapeMockupScrollBar.prototype.foreground = function (c, w, h, buttonX) { + var barPos = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.BAR_POS, '20'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.STROKE_COLOR2, 'none'); + barPos = Math.max(0, barPos); + barPos = Math.min(100, barPos); + c.setStrokeColor(strokeColor2); + c.setFillColor(fillColor2); + c.begin(); + c.moveTo(buttonX * 0.2, h * 0.5); + c.lineTo(buttonX * 0.8, h * 0.2); + c.lineTo(buttonX * 0.8, h * 0.8); + c.close(); + c.moveTo(w - buttonX * 0.2, h * 0.5); + c.lineTo(w - buttonX * 0.8, h * 0.2); + c.lineTo(w - buttonX * 0.8, h * 0.8); + c.close(); + c.fillAndStroke(); + var barWidth = 60; + var barMin = buttonX; + var barMax = w - buttonX; + barWidth = Math.min(barWidth, barMax - barMin); + var barCenterMin = barMin + barWidth / 2; + var barCenterMax = barMax - barWidth / 2; + var barCenterRange = barCenterMax - barCenterMin; + var barCenterPos = barCenterRange * barPos / 100; + var barStart = barMin + barCenterPos; + c.roundrect(barStart, h * 0.15, barWidth, h * 0.7, 5, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupScrollBar.prototype.cst.SHAPE_SCROLL_BAR, mxShapeMockupScrollBar); + +Graph.handleFactory[mxShapeMockupScrollBar.prototype.cst.SHAPE_SCROLL_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + return new mxPoint(bounds.x + (bounds.width - 100) * barPos / bounds.width / 100 * bounds.width + 50, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x - 50) * 100 / (bounds.width - 100)))) / 1000; + })]; + return handles; +}; + +function mxShapeMockupPagination(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPagination, mxShape); +mxShapeMockupPagination.prototype.cst = { + MAIN_TEXT: 'linkText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SHAPE_PAGINATION: 'mxgraph.mockup.navigation.pagination' +}; + +mxShapeMockupPagination.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.MAIN_TEXT, '0-9 A B C D E F G H I J K L M N O P Q R S T U V X Y Z'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.TEXT_COLOR, '#0000ff'); + c.translate(x, y); + var width = mxUtils.getSizeForString(mainText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPagination.prototype.cst.SHAPE_PAGINATION, mxShapeMockupPagination); + +function mxShapeMockupPageControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupPageControl, mxShape); +mxShapeMockupPageControl.prototype.cst = { + SHAPE_PAGE_CONTROL: 'mxgraph.mockup.navigation.pageControl' +}; + +mxShapeMockupPageControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPageControl.prototype.cst.SHAPE_PAGE_CONTROL, mxShapeMockupPageControl); + +function mxShapeMockupMapNavigator(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupMapNavigator, mxShape); +mxShapeMockupMapNavigator.prototype.cst = { + SHAPE_MAP_NAVIGATOR: 'mxgraph.mockup.navigation.mapNavigator', + FILL_COLOR2: 'fillColor2', + STROKE_COLOR2: 'strokeColor2', + STROKE_COLOR3: 'strokeColor3' +}; +mxShapeMockupMapNavigator.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}, { + name: 'strokeColor3', + dispName: 'Stroke3 Color', + type: 'color' +}]; + +mxShapeMockupMapNavigator.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupMapNavigator.prototype.background = function (c, w, h) { + c.ellipse(0, 0, w, h * 0.6); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.35, h * 0.584); + c.lineTo(w * 0.35, h * 0.95); + c.arcTo(w * 0.083, h * 0.05, 0, 0, 0, w * 0.43, h); + c.lineTo(w * 0.56, h); + c.arcTo(w * 0.083, h * 0.05, 0, 0, 0, w * 0.65, h * 0.95); + c.lineTo(w * 0.65, h * 0.584); + c.fillAndStroke(); +}; + +mxShapeMockupMapNavigator.prototype.foreground = function (c, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.STROKE_COLOR2, 'none'); + var strokeColor3 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.STROKE_COLOR3, '#ffffff'); + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.ellipse(w * 0.4, h * 0.65, w * 0.2, h * 0.12); + c.fillAndStroke(); + c.ellipse(w * 0.4, h * 0.85, w * 0.2, h * 0.12); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1806, h * 0.34); + c.lineTo(w * 0.1357, h * 0.366); + c.lineTo(w * 0.0228, h * 0.3); + c.lineTo(w * 0.1357, h * 0.234); + c.lineTo(w * 0.1806, h * 0.26); + c.lineTo(w * 0.1142, h * 0.3); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.433, h * 0.108); + c.lineTo(w * 0.3881, h * 0.08); + c.lineTo(w * 0.4994, h * 0.012); + c.lineTo(w * 0.6123, h * 0.08); + c.lineTo(w * 0.5658, h * 0.108); + c.lineTo(w * 0.4994, h * 0.068); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8198, h * 0.262); + c.lineTo(w * 0.868, h * 0.233); + c.lineTo(w * 0.9776, h * 0.3); + c.lineTo(w * 0.868, h * 0.367); + c.lineTo(w * 0.8198, h * 0.341); + c.lineTo(w * 0.8863, h * 0.3); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5641, h * 0.493); + c.lineTo(w * 0.6123, h * 0.522); + c.lineTo(w * 0.4994, h * 0.588); + c.lineTo(w * 0.3881, h * 0.521); + c.lineTo(w * 0.4363, h * 0.493); + c.lineTo(w * 0.4994, h * 0.533); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3333, h * 0.32); + c.lineTo(w * 0.3333, h * 0.28); + c.lineTo(w * 0.4163, h * 0.3); + c.close(); + c.moveTo(w * 0.4662, h * 0.2); + c.lineTo(w * 0.5326, h * 0.2); + c.lineTo(w * 0.4994, h * 0.25); + c.close(); + c.moveTo(w * 0.6654, h * 0.28); + c.lineTo(w * 0.6654, h * 0.32); + c.lineTo(w * 0.5824, h * 0.3); + c.close(); + c.moveTo(w * 0.5326, h * 0.4); + c.lineTo(w * 0.4662, h * 0.4); + c.lineTo(w * 0.4994, h * 0.35); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor3); + c.begin(); + c.moveTo(w * 0.5, h * 0.67); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(w * 0.43, h * 0.71); + c.lineTo(w * 0.57, h * 0.71); + c.moveTo(w * 0.43, h * 0.91); + c.lineTo(w * 0.57, h * 0.91); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMapNavigator.prototype.cst.SHAPE_MAP_NAVIGATOR, mxShapeMockupMapNavigator); + +function mxShapeMockupNavigationAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeMockupNavigationAnchor, mxShape); +mxShapeMockupNavigationAnchor.prototype.cst = { + ANCHOR: 'mxgraph.mockup.navigation.anchor' +}; + +mxShapeMockupNavigationAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeMockupNavigationAnchor.prototype.cst.ANCHOR, mxShapeMockupNavigationAnchor); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupText.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupText.js new file mode 100644 index 0000000000000..d8778c11ab958 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupText.js @@ -0,0 +1,643 @@ +"use strict"; + +function mxShapeMockupLink(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupLink, mxShape); +mxShapeMockupLink.prototype.cst = { + LINK_TEXT: 'linkText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SHAPE_LINK: 'mxgraph.mockup.text.link' +}; + +mxShapeMockupLink.prototype.paintVertexShape = function (c, x, y, w, h) { + var linkText = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.LINK_TEXT, 'Link'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.TEXT_COLOR, '#0000ff'); + c.translate(x, y); + var width = mxUtils.getSizeForString(linkText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.5, 0, 0, linkText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLink.prototype.cst.SHAPE_LINK, mxShapeMockupLink); + +function mxShapeMockupLinkBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupLinkBar, mxShape); +mxShapeMockupLinkBar.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_LINK_BAR: 'mxgraph.mockup.text.linkBar', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + TEXT_SIZE: 'textSize' +}; + +mxShapeMockupLinkBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeMockupLinkBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currW = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) { + buttonWidths[i] = 42; + } else { + buttonWidths[i] = currW; + } + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + c.setStrokeColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + c.setStrokeColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupLinkBar.prototype.background = function (c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) { + c.rect(0, 0, buttonRight, h); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } else if (selectedButton !== -1) { + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } + + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupLinkBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxShapeMockupLinkBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var textW = mxUtils.getSizeForString(textString, fontSize, mxConstants.DEFAULT_FONTFAMILY).width * 0.5; + + if (textString !== null && textString !== '') { + c.begin(); + c.moveTo((w + buttonWidth * 0.5) * trueW / minW - textW, h * 0.5 + fontSize * 0.5); + c.lineTo((w + buttonWidth * 0.5) * trueW / minW + textW, h * 0.5 + fontSize * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupLinkBar.prototype.cst.SHAPE_LINK_BAR, mxShapeMockupLinkBar); + +function mxShapeMockupCallout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCallout, mxShape); +mxShapeMockupCallout.prototype.cst = { + CALLOUT_TEXT: 'linkText', + CALLOUT_DIR: 'callDir', + CALLOUT_STYLE: 'callStyle', + STYLE_LINE: 'line', + STYLE_RECT: 'rect', + STYLE_ROUNDRECT: 'roundRect', + DIR_NW: 'NW', + DIR_NE: 'NE', + DIR_SE: 'SE', + DIR_SW: 'SW', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SHAPE_CALLOUT: 'mxgraph.mockup.text.callout' +}; +mxShapeMockupCallout.prototype.customProperties = [{ + name: 'callDir', + dispName: 'Direction', + type: 'enum', + enumList: [{ + val: 'NW', + dispName: 'North-West' + }, { + val: 'NE', + dispName: 'North-East' + }, { + val: 'SE', + dispName: 'South-East' + }, { + val: 'SW', + dispName: 'South-West' + }] +}, { + name: 'callStyle', + dispName: 'Style', + type: 'enum', + enumList: [{ + val: 'line', + dispName: 'Line' + }, { + val: 'rect', + dispName: 'Rectangle' + }] +}]; + +mxShapeMockupCallout.prototype.paintVertexShape = function (c, x, y, w, h) { + var calloutText = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_TEXT, 'Callout'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.TEXT_COLOR, '#666666'); + var callStyle = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_STYLE, mxShapeMockupCallout.prototype.cst.STYLE_LINE); + var callDir = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_DIR, mxShapeMockupCallout.prototype.cst.DIR_NW); + var textWidth = mxUtils.getSizeForString(calloutText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + textWidth = textWidth * 1.2; + + if (textWidth == 0) { + textWidth = 70; + } + + c.translate(x, y); + c.setFontSize(textSize); + c.setFontColor(textColor); + var callH = textSize * 1.5; + + if (callDir === mxShapeMockupCallout.prototype.cst.DIR_NW) { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) { + c.begin(); + c.moveTo(0, callH); + c.lineTo(textWidth, callH); + c.lineTo(w, h); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) { + c.rect(0, 0, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, callH); + c.lineTo(w, h); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) { + c.roundrect(0, 0, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, callH); + c.lineTo(w, h); + c.stroke(); + } + + c.text(textWidth * 0.5, callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_NE) { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) { + c.begin(); + c.moveTo(w, callH); + c.lineTo(w - textWidth, callH); + c.lineTo(0, h); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) { + c.rect(w - textWidth, 0, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, callH); + c.lineTo(0, h); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) { + c.roundrect(w - textWidth, 0, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, callH); + c.lineTo(0, h); + c.stroke(); + } + + c.text(w - textWidth * 0.5, callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_SE) { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) { + c.begin(); + c.moveTo(w, h); + c.lineTo(w - textWidth, h); + c.lineTo(0, 0); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) { + c.rect(w - textWidth, h - callH, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, h - callH); + c.lineTo(0, 0); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) { + c.roundrect(w - textWidth, h - callH, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, h - callH); + c.lineTo(0, 0); + c.stroke(); + } + + c.text(w - textWidth * 0.5, h - callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_SW) { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) { + c.begin(); + c.moveTo(0, h); + c.lineTo(textWidth, h); + c.lineTo(w, 0); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) { + c.rect(0, h - callH, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, h - callH); + c.lineTo(w, 0); + c.stroke(); + } else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) { + c.roundrect(0, h - callH, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, h - callH); + c.lineTo(w, 0); + c.stroke(); + } + + c.text(textWidth * 0.5, h - callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupCallout.prototype.cst.SHAPE_CALLOUT, mxShapeMockupCallout); + +function mxShapeMockupStickyNote(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupStickyNote, mxShape); +mxShapeMockupStickyNote.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_STICKY_NOTE: 'mxgraph.mockup.text.stickyNote' +}; + +mxShapeMockupStickyNote.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupStickyNote.prototype.background = function (c, w, h) { + c.setFillColor('#ffffcc'); + c.begin(); + c.moveTo(w * 0.03, h * 0.07); + c.lineTo(w * 0.89, h * 0.06); + c.arcTo(2.81 * w, 2.92 * h, 1, 0, 0, w * 0.99, h * 0.98); + c.lineTo(w * 0.09, h * 0.99); + c.arcTo(2.81 * w, 2.92 * h, 1, 0, 1, w * 0.03, h * 0.07); + c.close(); + c.fill(); +}; + +mxShapeMockupStickyNote.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.MAIN_TEXT, 'Note line 1,Note line 2,Note line 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.TEXT_SIZE, '17').toString(); + c.setFillColor('#ff3300'); + c.begin(); + c.moveTo(w * 0.28, 0); + c.lineTo(w * 0.59, 0); + c.lineTo(w * 0.6, h * 0.12); + c.lineTo(w * 0.28, h * 0.13); + c.close(); + c.fill(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var lineNum = mainText.length; + var textH = lineNum * fontSize * 1.5; + + for (var i = 0; i < mainText.length; i++) { + c.text(w / 2, (h - textH) / 2 + i * fontSize * 1.5 + fontSize * 0.75, 0, 0, mainText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupStickyNote.prototype.cst.SHAPE_STICKY_NOTE, mxShapeMockupStickyNote); + +function mxShapeMockupBulletedList(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupBulletedList, mxShape); +mxShapeMockupBulletedList.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + BULLET_STYLE: 'bulletStyle', + STYLE_HYPHEN: 'hyphen', + STYLE_NUM: 'number', + STYLE_DOT: 'dot', + SHAPE_BULLETED_LIST: 'mxgraph.mockup.text.bulletedList' +}; + +mxShapeMockupBulletedList.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupBulletedList.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBulletedList.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.MAIN_TEXT, 'Note line 1,Note line 2,Note line 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.TEXT_SIZE, '17'); + var bulletStyle = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.BULLET_STYLE, 'none'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + var bullet = ''; + + for (var i = 0; i < mainText.length; i++) { + var currText = ''; + + if (bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_NUM) { + currText = i + 1 + ') ' + mainText[i]; + } else if (bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_HYPHEN) { + currText = '- ' + mainText[i]; + } else if (bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_DOT) { + currText = String.fromCharCode(8226) + ' ' + mainText[i]; + } else { + currText = ' ' + mainText[i]; + } + + c.text(10, i * fontSize * 1.5 + fontSize * 0.75, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupBulletedList.prototype.cst.SHAPE_BULLETED_LIST, mxShapeMockupBulletedList); + +function mxShapeMockupTextBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupTextBox, mxShape); +mxShapeMockupTextBox.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_TEXT_BOX: 'mxgraph.mockup.text.textBox' +}; + +mxShapeMockupTextBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupTextBox.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupTextBox.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.MAIN_TEXT, 'Note line 1').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.TEXT_SIZE, '17'); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + for (var i = 0; i < mainText.length; i++) { + c.text(5, i * fontSize * 1.5 + fontSize * 0.75, 0, 0, mainText[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupTextBox.prototype.cst.SHAPE_TEXT_BOX, mxShapeMockupTextBox); + +function mxShapeMockupCaptcha(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupCaptcha, mxShape); +mxShapeMockupCaptcha.prototype.cst = { + MAIN_TEXT: 'mainText', + TEXT_COLOR: 'textColor', + TEXT_SIZE: 'textSize', + SHAPE_CAPTCHA: 'mxgraph.mockup.text.captcha' +}; + +mxShapeMockupCaptcha.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupCaptcha.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupCaptcha.prototype.foreground = function (c, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.MAIN_TEXT, 'Note line 1'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.TEXT_SIZE, '25'); + c.setFillColor('#88aaff'); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.35, 0); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.4, h * 0.75); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w * 0.7, h * 0.1); + c.lineTo(w * 0.95, h * 0.23); + c.lineTo(w, h * 0.4); + c.lineTo(w, h * 0.9); + c.lineTo(w, h); + c.lineTo(w * 0.8, h); + c.close(); + c.fill(); + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCaptcha.prototype.cst.SHAPE_CAPTCHA, mxShapeMockupCaptcha); + +function mxShapeMockupAlphanumeric(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupAlphanumeric, mxShape); +mxShapeMockupAlphanumeric.prototype.cst = { + MAIN_TEXT: 'linkText', + TEXT_SIZE: 'textSize', + TEXT_COLOR: 'textColor', + SHAPE_ALPHANUMERIC: 'mxgraph.mockup.text.alphanumeric' +}; + +mxShapeMockupAlphanumeric.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.MAIN_TEXT, '0-9 A B C D E F G H I J K L M N O P Q R S T U V X Y Z'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.TEXT_COLOR, '#0000ff'); + c.translate(x, y); + var width = mxUtils.getSizeForString(mainText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupAlphanumeric.prototype.cst.SHAPE_ALPHANUMERIC, mxShapeMockupAlphanumeric); + +function mxShapeMockupTextRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupTextRRect, mxShape); +mxShapeMockupTextRRect.prototype.cst = { + RRECT: 'mxgraph.mockup.text.rrect', + R_SIZE: 'rSize' +}; + +mxShapeMockupTextRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupTextRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTextRRect.prototype.cst.RRECT, mxShapeMockupTextRRect); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupiOS.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupiOS.js new file mode 100644 index 0000000000000..36e13ee136956 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mockup/mxMockupiOS.js @@ -0,0 +1,5224 @@ +"use strict"; + +var mxMockupC = { + BAR_HEIGHT: 'barHeight', + BAR_POS: 'barPos', + BG_STYLE: 'bgStyle', + BG_FLAT_GREEN: 'bgGreen', + BG_FLAT_WHITE: 'bgWhite', + BG_FLAT_GRAY: 'bgGray', + BG_FLAT_CUSTOM: 'bgFlat', + BG_MAP: 'bgMap', + BG_STRIPED: 'bgStriped', + BUTTON_STYLE: 'buttonStyle', + BUTTON_TEXT: 'buttonText', + BUTTON_STATE: 'buttonState', + CHEVRON: 'chevron', + GRID_SIZE: 'gridSize', + POINTER_BOTTOM: 'bottom', + POINTER_POS: 'pointerPos', + POINTER_TOP: 'top', + ROUND: 'round', + SELECTED: '+', + STATE_ON: 'on', + STATE_OFF: 'off', + SUB_TEXT: 'subText', + SHAPE_IADD_ICON: 'mxgraph.ios.iAddIcon', + SHAPE_IALERT_BOX: 'mxgraph.ios.iAlertBox', + SHAPE_IALPHA_LIST: 'mxgraph.ios.iAlphaList', + SHAPE_IAPP_BAR: 'mxgraph.ios.iAppBar', + SHAPE_IARROW_ICON: 'mxgraph.ios.iArrowIcon', + SHAPE_IBG_FLAT: 'mxgraph.ios.iBgFlat', + SHAPE_IBG_MAP: 'mxgraph.ios.iBgMap', + SHAPE_IBG_STRIPED: 'mxgraph.ios.iBgStriped', + SHAPE_IBUTTON: 'mxgraph.ios.iButton', + SHAPE_IBUTTON_BACK: 'mxgraph.ios.iButtonBack', + SHAPE_IBUTTON_FORWARD: 'mxgraph.ios.iButtonFw', + SHAPE_IBUTTON_BAR: 'mxgraph.ios.iButtonBar', + SHAPE_ICALL_BUTTONS: 'mxgraph.ios.iCallButtons', + SHAPE_ICALL_DIALOG: 'mxgraph.ios.iCallDialog', + SHAPE_ICHECKBOX_GROUP: 'mxgraph.ios.iCheckboxGroup', + SHAPE_ICHECK_ICON: 'mxgraph.ios.iCheckIcon', + SHAPE_ICLOUD_PROGRESS_BAR: 'mxgraph.ios.iCloudProgressBar', + SHAPE_ICOMBO_BOX: 'mxgraph.ios.iComboBox', + SHAPE_ICOPY: 'mxgraph.ios.iCopy', + SHAPE_ICOPY_AREA: 'mxgraph.ios.iCopyArea', + SHAPE_IICON_GRID: 'mxgraph.ios.iIconGrid', + SHAPE_IDELETE_APP: 'mxgraph.ios.iDeleteApp', + SHAPE_IDELETE_ICON: 'mxgraph.ios.iDeleteIcon', + SHAPE_IDOWNLOAD_BAR: 'mxgraph.ios.iDownloadBar', + SHAPE_IDIALOG_BOX: 'mxgraph.ios.iDialogBox', + SHAPE_IDIRECTION: 'mxgraph.ios.iDir', + SHAPE_IHOME_PAGE_CONTROL: 'mxgraph.ios.iHomePageControl', + SHAPE_IKEYB_LETTERS: 'mxgraph.ios.iKeybLett', + SHAPE_IKEYB_NUMBERS: 'mxgraph.ios.iKeybNumb', + SHAPE_IKEYB_SYMBOLS: 'mxgraph.ios.iKeybSymb', + SHAPE_ILOCATION_BAR: 'mxgraph.ios.iLocBar', + SHAPE_ILOCK_BUTTON: 'mxgraph.ios.iLockButton', + SHAPE_IHOR_BUTTON_BAR: 'mxgraph.ios.iHorButtonBar', + SHAPE_IINFO_ICON: 'mxgraph.ios.iInfoIcon', + SHAPE_ION_OFF_BUTTON: 'mxgraph.ios.iOnOffButton', + SHAPE_IOPTION: 'mxgraph.ios.iOption', + SHAPE_IPAGE_CONTROL: 'mxgraph.ios.iPageControl', + SHAPE_IPAD: 'mxgraph.ios.iPad', + SHAPE_IPHONE: 'mxgraph.ios.iPhone', + SHAPE_IPIN: 'mxgraph.ios.iPin', + SHAPE_IPREV_NEXT: 'mxgraph.ios.iPrevNext', + SHAPE_IPROGRESS_BAR: 'mxgraph.ios.iProgressBar', + SHAPE_IRADIO_GROUP: 'mxgraph.ios.iRadioGroup', + SHAPE_ISLIDER: 'mxgraph.ios.iSlider', + SHAPE_ISORT_FIND_ICON: 'mxgraph.ios.iSortFindIcon', + SHAPE_ITEXT_INPUT: 'mxgraph.ios.iTextInput', + SHAPE_ITOP_BAR: 'mxgraph.ios.iTopBar', + SHAPE_ITOP_BAR_LOCKED: 'mxgraph.ios.iTopBarLocked', + SHAPE_IURL_BAR: 'mxgraph.ios.iURLBar', + SHAPE_IVIDEO_CONTROLS: 'mxgraph.ios.iVideoControls', + SHAPE_ISCREEN_NAME_BAR: 'mxgraph.ios.iScreenNameBar', + STYLE_FILLCOLOR2: 'fillColor2', + STYLE_FILLCOLOR3: 'fillColor3', + STYLE_TEXTCOLOR: 'textColor', + STYLE_TEXTCOLOR2: 'textColor2', + STYLE_STROKECOLOR2: 'strokeColor2', + STYLE_STROKECOLOR3: 'strokeColor3' +}; + +function mxShapeMockupiPhone(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiPhone, mxShape); +mxShapeMockupiPhone.prototype.customProperties = [{ + name: 'bgStyle', + dispName: 'Background', + type: 'enum', + enumList: [{ + val: 'bgGreen', + dispName: 'Green' + }, { + val: 'bgWhite', + dispName: 'White' + }, { + val: 'bgGray', + dispName: 'Gray' + }, { + val: 'bgFlat', + dispName: 'Flat' + }, { + val: 'bgMap', + dispName: 'Map' + }, { + val: 'bgStriped', + dispName: 'Striped' + }] +}]; + +mxShapeMockupiPhone.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 25; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiPhone.prototype.background = function (c, x, y, w, h, rSize) { + c.setFillColor('#000000'); + c.setStrokeColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiPhone.prototype.foreground = function (c, x, y, w, h, rSize) { + c.setStrokeWidth(1.5); + c.begin(); + c.setGradient('#808080', '#000000', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(w * 0.325, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.close(); + c.fill(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, ''); + var bgStyle = mxUtils.getValue(this.style, mxMockupC.BG_STYLE, mxMockupC.BG_FLAT_GREEN); + c.setStrokeWidth(1); + + if (bgStyle === mxMockupC.BG_FLAT_WHITE) { + c.setFillColor('#ffffff'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_GREEN) { + c.setFillColor('#1f2923'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_GRAY) { + c.setFillColor('#dddddd'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_CUSTOM) { + c.setFillColor(fillColor); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } else if (bgStyle === mxMockupC.BG_STRIPED) { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0625, h * 0.15); + w = w * 0.875; + h = h * 0.7; + c.setFillColor('#5D7585'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + var strokeColor = '#18211b'; + var strokeColor2 = '#657E8F'; + c.setStrokeColor(strokeColor2); + var i = 5; + c.begin(); + + while (i < w) { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 5; + } + + c.stroke(); + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); + w = wOld; + h = hOld; + c.translate(-w * 0.0625, -h * 0.15); + } else if (bgStyle === mxMockupC.BG_MAP) { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0625, h * 0.15); + w = w * 0.875; + h = h * 0.7; + c.setFillColor('#ffffff'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + var fillColor2 = '#96D1FF'; + var strokeColor = '#18211b'; + var strokeColor2 = '#008cff'; + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(1); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + w = wOld; + h = hOld; + c.translate(-w * 0.0625, -h * 0.15); + } + + c.setStrokeWidth(1); + c.setStrokeColor('#18211b'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + c.setStrokeWidth(1.5); + c.setAlpha(0.8); + c.setStrokeColor('#dddddd'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + rSize = 22.5; + c.begin(); + c.setStrokeColor('#666666'); + c.roundrect(5, 5, w - 10, h - 10, rSize, rSize); + c.stroke(); + c.setAlpha(1); + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.setStrokeWidth(2.5); + c.setStrokeColor('#000000'); + c.setFillColor('#000099'); + c.fillAndStroke(); + c.begin(); + c.setStrokeWidth(1.5); + c.setFillColor('#444444'); + c.setStrokeColor('#333333'); + rSize = 4; + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.fillAndStroke(); + c.setGradient('#bbbbbb', '#000000', w * 0.4, h * 0.875, w * 0.2, h * 0.1, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.fill(); + c.setAlpha(0.5); + c.ellipse(w * 0.404, h * 0.876, w * 0.19, h * 0.095); + c.stroke(); + c.begin(); + c.setAlpha(0.85); + c.setFillColor('#000000'); + c.moveTo(w * 0.4025, h * 0.925); + c.arcTo(w * 0.0975, h * 0.04625, 0, 0, 1, w * 0.5975, h * 0.925); + c.arcTo(w * 0.2, h * 0.1, 0, 0, 1, w * 0.4025, h * 0.925); + c.close(); + c.fillAndStroke(); + c.begin(); + c.setAlpha(0.7); + c.setStrokeWidth(1.5); + c.setStrokeColor('#dddddd'); + rSize = 4; + c.roundrect(w * 0.4575, h * 0.905, w * 0.0875, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPHONE, mxShapeMockupiPhone); + +function mxShapeMockupiBgFlat(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiBgFlat, mxShape); + +mxShapeMockupiBgFlat.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupiBgFlat.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_FLAT, mxShapeMockupiBgFlat); + +function mxShapeMockupiBgStriped(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiBgStriped, mxShape); + +mxShapeMockupiBgStriped.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiBgStriped.prototype.background = function (c, x, y, w, h) { + c.setStrokeWidth(1); + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiBgStriped.prototype.foreground = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, ''); + var strokeColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, ''); + c.setStrokeColor(strokeColor2); + var i = 5; + c.begin(); + + while (i < w) { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 5; + } + + c.stroke(); + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_STRIPED, mxShapeMockupiBgStriped); + +function mxShapeMockupiBgMap(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiBgMap, mxShape); + +mxShapeMockupiBgMap.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiBgMap.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiBgMap.prototype.foreground = function (c, x, y, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, ''); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, ''); + var strokeColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, ''); + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(0.5); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth(1); + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_MAP, mxShapeMockupiBgMap); + +function mxShapeMockupiButtonBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiButtonBar, mxShape); +mxShapeMockupiButtonBar.prototype.customProperties = [{ + name: 'buttonText', + dispName: 'Labels', + type: 'string' +}, { + name: 'textColor', + dispName: 'Text Color', + type: 'color' +}, { + name: 'textColor2', + dispName: 'Text2 Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}]; + +mxShapeMockupiButtonBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 2.5; + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxMockupC.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight); + c.setShadow(false); + this.foreground(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize, separatorColor); + } +}; + +mxShapeMockupiButtonBar.prototype.background = function (c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight) { + c.begin(); + c.setStrokeWidth(1); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiButtonBar.prototype.foreground = function (c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight) { + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeWidth(strokeWidth); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currHeight = i * minButtonHeight * h / minH; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + + c.stroke(); + c.setStrokeColor(mxConstants.NONE); + + if (selectedButton === 0) { + c.begin(); + var buttonBottom = minButtonHeight * h / minH; + c.setGradient('#5D7585', '#008cff', 0, 0, w, buttonBottom, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.begin(); + var buttonTop = h - minButtonHeight * h / minH; + c.setGradient('#5D7585', '#008cff', 0, buttonTop, w, h - buttonTop, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } else if (selectedButton !== -1) { + c.begin(); + var buttonTop = minButtonHeight * selectedButton * h / minH; + var buttonBottom = minButtonHeight * (selectedButton + 1) * h / minH; + c.setGradient('#5D7585', '#008cff', 0, buttonTop, w, buttonBottom - buttonTop, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupiButtonBar.prototype.buttonText = function (c, w, h, textString, fontSize, separatorColor) { + if (textString.charAt(0) === mxMockupC.SELECTED) { + textString = textString.substring(1); + } + + c.setFontSize(fontSize); + c.text(10, h, 0, 0, textString, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var mSize = fontSize * 0.5; + c.setStrokeWidth(fontSize * 0.3); + c.setStrokeColor(separatorColor); + c.begin(); + c.moveTo(w - 20 - mSize, h - mSize); + c.lineTo(w - 20, h); + c.lineTo(w - 20 - mSize, h + mSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_BAR, mxShapeMockupiButtonBar); + +function mxShapeMockupiAppBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiAppBar, mxShape); + +mxShapeMockupiAppBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiAppBar.prototype.background = function (c, x, y, w, h) { + c.setGradient('#eeeeee', '#999999', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiAppBar.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#0099ff'); + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + c.setFillColor('#999999'); + c.ellipse(w - 56.5, h * 0.5 - 4, 8, 8); + c.fill(); + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w - 52.5, h * 0.5 - 3); + c.lineTo(w - 52.5, h * 0.5); + c.lineTo(w - 54.5, h * 0.5); + c.stroke(); + c.setStrokeWidth(0.5); + c.setStrokeColor('#333333'); + c.setFillColor('#990000'); + c.begin(); + c.moveTo(w - 45.5, h * 0.5); + c.lineTo(w - 37.5, h * 0.5 - 5); + c.lineTo(w - 41.5, h * 0.5 + 4); + c.lineTo(w - 42, h * 0.5 + 0.5); + c.close(); + c.fillAndStroke(); + c.setFillColor('#999999'); + c.setStrokeColor('#999999'); + c.begin(); + c.moveTo(w - 28.5, h * 0.5 + 3.5); + c.arcTo(3.5, 3.5, 0, 1, 1, w - 26.5, h * 0.5 + 1); + c.stroke(); + c.begin(); + c.moveTo(w - 27.25, h * 0.5 + 0.25); + c.lineTo(w - 25.75, h * 0.5 + 0.25); + c.lineTo(w - 26.5, h * 0.5 + 1.5); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - 31, h * 0.5 - 0.5); + c.arcTo(1, 1.5, 0, 0, 1, w - 29, h * 0.5 - 0.5); + c.stroke(); + c.rect(w - 31.5, h * 0.5 - 0.5, 3, 2); + c.fillAndStroke(); + c.setGradient('#eeeeee', '#444444', w - 20, h * 0.5 - 3, 16.5, 6, mxConstants.DIRECTION_NORTH, 1, 1); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.fill(); + c.setGradient('#E2FFEB', '#008215', w - 20, h * 0.5 - 3, 10, 6, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 10, h * 0.5 - 3); + c.lineTo(w - 10, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.fill(); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IAPP_BAR, mxShapeMockupiAppBar); + +function mxShapeMockupiTopBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiTopBar, mxShape); + +mxShapeMockupiTopBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiTopBar.prototype.background = function (c, x, y, w, h) { + c.setAlpha(0.5); + c.setFillColor('#999999'); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBar.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#cccccc'); + c.setStrokeColor('#cccccc'); + c.setFontColor('#cccccc'); + c.setFontSize(7.5); + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + c.text(18, h * 0.5, 0, 0, 'CARRIER', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5, 0, 0, '11:15AM', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITOP_BAR, mxShapeMockupiTopBar); + +function mxShapeMockupiTopBar2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiTopBar2, mxShape); +mxShapeMockupiTopBar2.prototype.cst = { + SHAPE_ITOP_BAR2: 'mxgraph.ios.iTopBar2' +}; + +mxShapeMockupiTopBar2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiTopBar2.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBar2.prototype.foreground = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor(strokeColor); + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupiTopBar2.prototype.cst.SHAPE_ITOP_BAR2, mxShapeMockupiTopBar2); + +function mxShapeMockupiTopBarLocked(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiTopBarLocked, mxShape); + +mxShapeMockupiTopBarLocked.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiTopBarLocked.prototype.background = function (c, x, y, w, h) { + c.setFillColor('#000000'); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBarLocked.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#cccccc'); + c.setStrokeColor('#cccccc'); + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + c.begin(); + c.moveTo(w * 0.5 - 2, h * 0.5 - 1); + c.arcTo(2, 3, 0, 0, 1, w * 0.5 + 2, h * 0.5 - 1); + c.stroke(); + c.rect(w * 0.5 - 3, h * 0.5 - 1, 6, 4); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITOP_BAR_LOCKED, mxShapeMockupiTopBarLocked); + +function mxShapeMockupiButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiButton, mxShape); + +mxShapeMockupiButton.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButton.prototype.background = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fill(); +}; + +mxShapeMockupiButton.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w / 2, h / 2, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON, mxShapeMockupiButton); + +function mxShapeMockupiButtonBack(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiButtonBack, mxShape); + +mxShapeMockupiButtonBack.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButtonBack.prototype.background = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + rSize = 2.5; + c.begin(); + c.moveTo(w, rSize); + c.arcTo(rSize, rSize, 0, 0, 0, w - rSize, 0); + c.lineTo(10, 0); + c.lineTo(0.87, h * 0.5 - 0.75); + c.arcTo(rSize, rSize, 0, 0, 0, 0.87, h * 0.5 + 0.75); + c.lineTo(10, h); + c.lineTo(w - rSize, h); + c.arcTo(rSize, rSize, 0, 0, 0, w, h - rSize); + c.close(); + c.fill(); +}; + +mxShapeMockupiButtonBack.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5 + 2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_BACK, mxShapeMockupiButtonBack); + +function mxShapeMockupiButtonForward(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiButtonForward, mxShape); + +mxShapeMockupiButtonForward.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButtonForward.prototype.background = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + rSize = 2.5; + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - 10, 0); + c.lineTo(w - 0.87, h * 0.5 - 0.75); + c.arcTo(rSize, rSize, 0, 0, 1, w - 0.87, h * 0.5 + 0.75); + c.lineTo(w - 10, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); +}; + +mxShapeMockupiButtonForward.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5 - 2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_FORWARD, mxShapeMockupiButtonForward); + +function mxShapeMockupiPrevNextButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiPrevNextButton, mxShape); + +mxShapeMockupiPrevNextButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiPrevNextButton.prototype.background = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + var rSize = 5; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fill(); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapeMockupiPrevNextButton.prototype.foreground = function (c, x, y, w, h) { + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '').toString(); + c.setFillColor(fillColor3); + c.begin(); + c.moveTo(w * 0.25, h * 0.25); + c.lineTo(w * 0.35, h * 0.75); + c.lineTo(w * 0.15, h * 0.75); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w * 0.75, h * 0.75); + c.lineTo(w * 0.85, h * 0.25); + c.lineTo(w * 0.65, h * 0.25); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPREV_NEXT, mxShapeMockupiPrevNextButton); + +function mxShapeMockupiTextInput(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiTextInput, mxShape); + +mxShapeMockupiTextInput.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#000000').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiTextInput.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fillAndStroke(); +}; + +mxShapeMockupiTextInput.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(2, h * 0.5, 0, 0, text, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITEXT_INPUT, mxShapeMockupiTextInput); + +function mxShapeMockupiRadioGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiRadioGroup, mxShape); + +mxShapeMockupiRadioGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxMockupC.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxMockupC.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#000000'); + + if (selected === i) { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setFillColor('#333333'); + c.setStrokeColor('#333333'); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } else { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IRADIO_GROUP, mxShapeMockupiRadioGroup); + +function mxShapeMockupiCheckboxGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCheckboxGroup, mxShape); + +mxShapeMockupiCheckboxGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxMockupC.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxMockupC.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#000000'); + + if (selected === i) { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setStrokeColor('#333333'); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } else { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICHECKBOX_GROUP, mxShapeMockupiCheckboxGroup); + +function mxShapeMockupiComboBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiComboBox, mxShape); + +mxShapeMockupiComboBox.prototype.paintVertexShape = function (c, x, y, w, h) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiComboBox.prototype.background = function (c, x, y, w, h) { + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fillAndStroke(); +}; + +mxShapeMockupiComboBox.prototype.foreground = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, w - 30, 0, 30, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 15, 0); + c.lineTo(w - 2.5, 0); + c.arcTo(2.5, 2.5, 0, 0, 1, w, 2.5); + c.lineTo(w, h - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, w - 2.5, h); + c.lineTo(w - 15, h); + c.close(); + c.fillAndStroke(); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 11, 5); + c.lineTo(w - 7.5, 10); + c.lineTo(w - 4, 5); + c.fill(); +}; + +mxShapeMockupiComboBox.prototype.mainText = function (c, x, y, w, h, text, fontSize, fontColor) { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOMBO_BOX, mxShapeMockupiComboBox); + +function mxShapeMockupiOnOffButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiOnOffButton, mxShape); +mxShapeMockupiOnOffButton.prototype.customProperties = [{ + name: 'buttonState', + dispName: 'State', + type: 'enum', + enumList: [{ + val: 'on', + dispName: 'On' + }, { + val: 'off', + dispName: 'Off' + }] +}]; + +mxShapeMockupiOnOffButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + w = Math.max(w, 2 * h); + var state = mxUtils.getValue(this.style, mxMockupC.BUTTON_STATE, mxMockupC.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(false); + this.foreground(c, x, y, w, h, state); + this.mainText(c, x, y, w, h, state); +}; + +mxShapeMockupiOnOffButton.prototype.background = function (c, x, y, w, h, state) { + if (state === mxMockupC.STATE_ON) { + c.setGradient('#E2FFEB', '#008215', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } else if (state === mxMockupC.STATE_OFF) { + c.setGradient('#cc9999', '#881100', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } +}; + +mxShapeMockupiOnOffButton.prototype.foreground = function (c, x, y, w, h, state) { + if (state === mxMockupC.STATE_ON) { + c.setGradient('#ffffff', '#888888', w - h, 0, h, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w - h, 0, h, h); + c.fillAndStroke(); + } else { + c.setGradient('#ffffff', '#888888', 0, 0, h, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(0, 0, h, h); + c.fillAndStroke(); + } +}; + +mxShapeMockupiOnOffButton.prototype.mainText = function (c, x, y, w, h, state) { + var mainText = mxUtils.getValue(this.style, 'mainText', null); + c.setFontColor('#ffffff'); + c.setFontSize(8.5); + + if (mainText != '') { + if (state === mxMockupC.STATE_ON) { + c.text(w * 0.5 - h * 0.4, h * 0.5, 0, 0, mainText || 'ON', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (state === mxMockupC.STATE_OFF) { + c.text(w * 0.5 + h * 0.4, h * 0.5, 0, 0, mainText || 'OFF', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ION_OFF_BUTTON, mxShapeMockupiOnOffButton); + +function mxShapeMockupiAlertBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiAlertBox, mxShape); + +mxShapeMockupiAlertBox.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(w, 15); + h = Math.max(h, 15); + c.translate(x, y); + rSize = 7.5; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiAlertBox.prototype.background = function (c, x, y, w, h, rSize) { + c.setGradient('#497198', '#193168', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.8); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiAlertBox.prototype.foreground = function (c, x, y, w, h, rSize) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text').toString().split(','); + c.setStrokeColor('#497198'); + c.setGradient('#497198', '#c5cee1', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.5); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + c.setAlpha(0.8); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + c.setGradient('#497198', '#c5cee1', 5, h - 50, w - 20, 20, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(5, h - 25, w - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + c.setAlpha(0.9); + c.setFontSize(9.5); + c.setFontColor('#ffffff'); + c.text(w * 0.5, h * 0.15, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(8); + c.text(w * 0.5, h * 0.4, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.55, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(8.5); + c.text(w * 0.5, h - 15, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IALERT_BOX, mxShapeMockupiAlertBox); + +function mxShapeMockupiDialogBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiDialogBox, mxShape); + +mxShapeMockupiDialogBox.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(w, 15); + h = Math.max(h, 15); + c.translate(x, y); + rSize = 7.5; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiDialogBox.prototype.background = function (c, x, y, w, h, rSize) { + c.setGradient('#497198', '#193168', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.8); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiDialogBox.prototype.foreground = function (c, x, y, w, h, rSize) { + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text').toString().split(','); + c.setStrokeColor('#497198'); + c.setGradient('#497198', '#c5cee1', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.5); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + c.setAlpha(0.8); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + c.setGradient('#497198', '#c5cee1', 5, h - 25, w * 0.5 - 10, 20, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(5, h - 25, w * 0.5 - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + c.roundrect(w * 0.5 + 2.5, h - 25, w * 0.5 - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + c.setAlpha(0.9); + c.setFontSize(9.5); + c.setFontColor('#ffffff'); + c.text(w * 0.5, h * 0.15, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(8); + c.text(w * 0.5, h * 0.4, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.55, 0, 0, mainText[4], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(8.5); + c.text(w * 0.25, h - 15, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h - 15, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDIALOG_BOX, mxShapeMockupiDialogBox); + +function mxShapeMockupiLockButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiLockButton, mxShape); + +mxShapeMockupiLockButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + c.setAlpha(0.7); + c.setGradient('#4A4F56', '#70757B', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + c.setAlpha(0.8); + c.setGradient('#18232D', '#1F2933', 10, 10, 154, 30, mxConstants.DIRECTION_NORTH, 1, 1); + c.roundrect(10, h * 0.5 - 15, w - 20, 30, 7.5, 7.5); + c.fill(); + c.setAlpha(1); + c.setGradient('#E9F3FD', '#ADB7C1', 12.5, 12.5, 40, 25, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(12.5, h * 0.5 - 12.5, 40, 25, 5, 5); + c.fill(); + c.setAlpha(0.8); + c.setStrokeWidth(0.5); + c.setStrokeColor('#aabbbb'); + c.setGradient('#AEB7C1', '#667079', 20, 17.5, 25, 15, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(20, h * 0.5 - 3.5); + c.lineTo(35, h * 0.5 - 3.5); + c.lineTo(35, h * 0.5 - 7.5); + c.lineTo(45, h * 0.5); + c.lineTo(35, h * 0.5 + 7.5); + c.lineTo(35, h * 0.5 + 3.5); + c.lineTo(20, h * 0.5 + 3.5); + c.close(); + c.fillAndStroke(); + var mainText = mxUtils.getValue(this.style, 'mainText', null); + + if (mainText != '') { + c.setFontSize(12.5); + c.setFontColor('#cccccc'); + c.text(w / 2 + 20.5, h / 2, 0, 0, 'slide to unlock', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ILOCK_BUTTON, mxShapeMockupiLockButton); + +function mxShapeMockupiArrowIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiArrowIcon, mxShape); + +mxShapeMockupiArrowIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiArrowIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiArrowIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.4, h * 0.22); + c.lineTo(w * 0.65, h * 0.5); + c.lineTo(w * 0.4, h * 0.78); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IARROW_ICON, mxShapeMockupiArrowIcon); + +function mxShapeMockupiDeleteIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiDeleteIcon, mxShape); + +mxShapeMockupiDeleteIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiDeleteIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiDeleteIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.75, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDELETE_ICON, mxShapeMockupiDeleteIcon); + +function mxShapeMockupiAddIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiAddIcon, mxShape); + +mxShapeMockupiAddIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeColor(strokeColor); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiAddIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(1.5); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiAddIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.75, h * 0.5); + c.moveTo(w * 0.5, h * 0.25); + c.lineTo(w * 0.5, h * 0.75); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IADD_ICON, mxShapeMockupiAddIcon); + +function mxShapeMockupiInfoIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiInfoIcon, mxShape); + +mxShapeMockupiInfoIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiInfoIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiInfoIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(2.5); + c.begin(); + c.setFillColor('#ffffff'); + c.moveTo(w * 0.47, h * 0.334); + c.arcTo(w * 0.1, h * 0.15, 60, 0, 1, w * 0.61, h * 0.42); + c.lineTo(w * 0.51, h * 0.7); + c.arcTo(w * 0.026, h * 0.03, 30, 0, 0, w * 0.54, h * 0.74); + c.lineTo(w * 0.608, h * 0.684); + c.arcTo(w * 0.02, h * 0.015, 0, 0, 1, w * 0.638, h * 0.706); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 1, w * 0.42, h * 0.865); + c.arcTo(w * 0.1, h * 0.08, -15, 0, 1, w * 0.325, h * 0.77); + c.lineTo(w * 0.358, h * 0.66); + c.lineTo(w * 0.435, h * 0.46); + c.arcTo(w * 0.023, h * 0.03, 0, 0, 0, w * 0.4, h * 0.43); + c.lineTo(w * 0.338, h * 0.484); + c.arcTo(w * 0.01, h * 0.015, 45, 0, 1, w * 0.31, h * 0.47); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.47, h * 0.334); + c.fill(); + c.begin(); + c.moveTo(w * 0.5438, h * 0.141); + c.arcTo(w * 0.0776, h * 0.0898, 40, 0, 1, w * 0.6671, h * 0.2308); + c.arcTo(w * 0.0776, h * 0.0898, 40, 0, 1, w * 0.5438, h * 0.141); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IINFO_ICON, mxShapeMockupiInfoIcon); + +function mxShapeMockupiSortFindIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiSortFindIcon, mxShape); + +mxShapeMockupiSortFindIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiSortFindIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.roundrect(0, 0, w, h, w * 0.1, h * 0.1); + c.fillAndStroke(); +}; + +mxShapeMockupiSortFindIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(Math.min(h, w) / 20); + c.begin(); + c.setFillColor('#ffffff'); + c.moveTo(w * 0.1, h * 0.25); + c.lineTo(w * 0.9, h * 0.25); + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.9, h * 0.4); + c.moveTo(w * 0.1, h * 0.55); + c.lineTo(w * 0.6, h * 0.55); + c.moveTo(w * 0.1, h * 0.7); + c.lineTo(w * 0.5, h * 0.7); + c.stroke(); + c.begin(); + c.ellipse(w * 0.6, h * 0.6, w * 0.2, h * 0.2); + c.stroke(); + c.begin(); + c.moveTo(w * 0.77, h * 0.77); + c.lineTo(w * 0.85, h * 0.85); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISORT_FIND_ICON, mxShapeMockupiSortFindIcon); + +function mxShapeMockupiCheckIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCheckIcon, mxShape); + +mxShapeMockupiCheckIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiCheckIcon.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiCheckIcon.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.5, h * 0.65); + c.lineTo(w * 0.75, h * 0.25); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICHECK_ICON, mxShapeMockupiCheckIcon); + +function mxShapeMockupiKeybLetters(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiKeybLetters, mxShape); + +mxShapeMockupiKeybLetters.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybLetters.prototype.background = function (c, x, y, w, h) { + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybLetters.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, 'Q', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, 'W', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, 'E', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, 'T', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, 'Y', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, 'U', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, 'I', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, 'O', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.0632, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.102, h * 0.375, 0, 0, 'A', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1638, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2026, h * 0.375, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2644, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3032, h * 0.375, 0, 0, 'D', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3649, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4037, h * 0.375, 0, 0, 'F', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4655, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.375, 0, 0, 'G', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5661, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6049, h * 0.375, 0, 0, 'H', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6667, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7055, h * 0.375, 0, 0, 'J', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7672, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.806, h * 0.375, 0, 0, 'K', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8678, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9066, h * 0.375, 0, 0, 'L', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1638, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2026, h * 0.625, 0, 0, 'Z', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2644, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3032, h * 0.625, 0, 0, 'X', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3649, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4037, h * 0.625, 0, 0, 'C', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4655, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, 'V', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5661, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6049, h * 0.625, 0, 0, 'B', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6667, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7055, h * 0.625, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7672, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.806, h * 0.625, 0, 0, 'M', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor('#ffffff'); + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setGradient('#8B98A8', '#677488', w * 0.8736, h * 0.53, w * 0.115, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setGradient('#8B98A8', '#677488', w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.1264, h * 0.875, 0, 0, '.?123', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.0402, h * 0.635); + c.lineTo(w * 0.0718, h * 0.58); + c.lineTo(w * 0.1034, h * 0.635); + c.lineTo(w * 0.0862, h * 0.635); + c.lineTo(w * 0.0862, h * 0.67); + c.lineTo(w * 0.0575, h * 0.67); + c.lineTo(w * 0.0575, h * 0.635); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_LETTERS, mxShapeMockupiKeybLetters); + +function mxShapeMockupiKeybNumbers(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiKeybNumbers, mxShape); + +mxShapeMockupiKeybNumbers.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybNumbers.prototype.background = function (c, x, y, w, h) { + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybNumbers.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, '2', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, '4', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, '5', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, '6', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, '7', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, '8', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, '9', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.0086, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.375, 0, 0, '-', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1092, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.375, 0, 0, '/', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2098, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.375, 0, 0, ':', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3103, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.375, 0, 0, ';', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4109, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.375, 0, 0, '(', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5115, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.375, 0, 0, ')', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6121, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.375, 0, 0, '$', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7126, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.375, 0, 0, '&', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8132, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.375, 0, 0, '@', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.9138, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.375, 0, 0, '\"', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1638, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2227, h * 0.625, 0, 0, '.', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3046, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3635, h * 0.625, 0, 0, ',', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4454, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, '?', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5862, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6451, h * 0.625, 0, 0, '!', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.727, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7859, h * 0.625, 0, 0, '\'', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setFontColor('#ffffff'); + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0718, h * 0.625, 0, 0, '#+=', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1264, h * 0.875, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_NUMBERS, mxShapeMockupiKeybNumbers); + +function mxShapeMockupiKeybSymbols(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiKeybSymbols, mxShape); + +mxShapeMockupiKeybSymbols.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybSymbols.prototype.background = function (c, x, y, w, h) { + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybSymbols.prototype.foreground = function (c, x, y, w, h, strokeColor) { + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, '[', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, ']', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, '{', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, '}', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, '%', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, '^', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, '*', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, '+', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, '=', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.0086, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.375, 0, 0, '_', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1092, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.375, 0, 0, '\\', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2098, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.375, 0, 0, '|', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3103, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.375, 0, 0, '~', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4109, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.375, 0, 0, '<', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5115, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.375, 0, 0, '>', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.6121, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.375, 0, 0, String.fromCharCode(128), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.7126, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.375, 0, 0, String.fromCharCode(parseInt('00A3', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.8132, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.375, 0, 0, String.fromCharCode(parseInt('00A5', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.9138, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.375, 0, 0, String.fromCharCode(parseInt('0095', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.1638, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2227, h * 0.625, 0, 0, '.', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.3046, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3635, h * 0.625, 0, 0, ',', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.4454, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, '?', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.5862, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6451, h * 0.625, 0, 0, '!', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.727, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7859, h * 0.625, 0, 0, '\'', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setFontColor('#ffffff'); + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0718, h * 0.625, 0, 0, '123', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1264, h * 0.875, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_SYMBOLS, mxShapeMockupiKeybSymbols); + +function mxShapeMockupiDeleteApp(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiDeleteApp, mxShape); + +mxShapeMockupiDeleteApp.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiDeleteApp.prototype.background = function (c, x, y, w, h, strokeColor) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiDeleteApp.prototype.foreground = function (c, x, y, w, h) { + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.3, h * 0.3); + c.lineTo(w * 0.7, h * 0.7); + c.moveTo(w * 0.3, h * 0.7); + c.lineTo(w * 0.7, h * 0.3); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDELETE_APP, mxShapeMockupiDeleteApp); + +function mxShapeMockupiDirection(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiDirection, mxShape); + +mxShapeMockupiDirection.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiDirection.prototype.background = function (c, x, y, w, h) { + c.setStrokeWidth(0.5); + c.setStrokeColor('#008cff'); + c.ellipse(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupiDirection.prototype.foreground = function (c, x, y, w, h) { + c.setAlpha(1); + c.setGradient('#ffffff', '#ffffff', w * 0.29, h * 0.2, w * 0.42, h * 0.3, mxConstants.DIRECTION_NORTH, 1, 0); + c.begin(); + c.moveTo(w * 0.29, h * 0.2); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.71, h * 0.2); + c.fillAndStroke(); + c.setStrokeColor('#006cdf'); + c.setGradient('#ffffff', '#007cef', w * 0.47, h * 0.47, w * 0.06, h * 0.06, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(1); + c.ellipse(w * 0.47, h * 0.47, w * 0.06, h * 0.06); + c.fillAndStroke(); + c.setFillColor('#ffffff'); + c.setAlpha(0.8); + c.ellipse(w * 0.4825, h * 0.4825, w * 0.015, h * 0.015); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDIRECTION, mxShapeMockupiDirection); + +function mxShapeMockupiLocationBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiLocationBar, mxShape); +mxShapeMockupiLocationBar.prototype.customProperties = [{ + name: 'buttonText', + dispName: 'Text', + type: 'string' +}, { + name: 'barPos', + dispName: 'Callout Position', + type: 'float', + min: 0, + defVal: 80 +}, { + name: 'pointerPos', + dispName: 'Callout Orientation', + type: 'enum', + enumList: [{ + val: 'bottom', + dispName: 'Bottom' + }, { + val: 'top', + dispName: 'Top' + }] +}]; + +mxShapeMockupiLocationBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiLocationBar.prototype.background = function (c, x, y, w, h) { + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var rSize = 2.5; + var deadzone = rSize + 7.5; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeWidth(0.5); + c.setStrokeColor('#000000'); + c.setAlpha(0.7); + c.begin(); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(truePos + 7.5, h - 7.5); + c.lineTo(truePos, h); + c.lineTo(truePos - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + } else if (pointerPos === mxMockupC.POINTER_TOP) { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize + 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 7.5); + c.lineTo(truePos - 7.5, 7.5); + c.lineTo(truePos, 0); + c.lineTo(truePos + 7.5, 7.5); + c.lineTo(w - rSize, 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize + 7.5); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiLocationBar.prototype.foreground = function (c, x, y, w, h) { + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var locText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Some Location'); + c.setAlpha(1); + c.setFontColor('#ffffff'); + c.setFontSize(9.5); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) { + c.text(5, (h - 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.translate(w - 20, (h - 7.5) * 0.5 - 7.5); + } else { + c.text(5, (h + 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.translate(w - 20, (h + 7.5) * 0.5 - 7.5); + } + + w = 15; + h = 15; + c.setGradient('#8BbEff', '#135Ec8', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeWidth(1.5); + c.setStrokeColor('#ffffff'); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.4, h * 0.22); + c.lineTo(w * 0.65, h * 0.5); + c.lineTo(w * 0.4, h * 0.78); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ILOCATION_BAR, mxShapeMockupiLocationBar); + +function mxShapeMockupiCallDialog(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCallDialog, mxShape); + +mxShapeMockupiCallDialog.prototype.paintVertexShape = function (c, x, y, w, h) { + var rSize = 5; + c.translate(x, y); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiCallDialog.prototype.background = function (c, x, y, w, h, rSize) { + c.setAlpha(0.8); + c.setStrokeColor('#888888'); + c.setStrokeWidth(1.5); + c.setFillColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiCallDialog.prototype.foreground = function (c, x, y, w, h, rSize) { + c.begin(); + c.moveTo(w * 0.33, 0); + c.lineTo(w * 0.33, h); + c.moveTo(w * 0.67, 0); + c.lineTo(w * 0.67, h); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.setStrokeColor('#000000'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(0.5); + c.roundrect(w * 0.1433, h * 0.104, w * 0.0417, h * 0.148, w * 0.02, h * 0.024); + c.fill(); + c.begin(); + c.moveTo(w * 0.14, h * 0.188); + c.lineTo(w * 0.14, h * 0.228); + c.arcTo(w * 0.025, h * 0.03, 0, 0, 0, w * 0.19, h * 0.228); + c.lineTo(w * 0.19, h * 0.188); + c.lineTo(w * 0.2, h * 0.188); + c.lineTo(w * 0.2, h * 0.228); + c.arcTo(w * 0.0367, h * 0.044, 0, 0, 1, w * 0.17, h * 0.27); + c.lineTo(w * 0.17, h * 0.296); + c.lineTo(w * 0.195, h * 0.296); + c.lineTo(w * 0.195, h * 0.308); + c.lineTo(w * 0.1367, h * 0.308); + c.lineTo(w * 0.1367, h * 0.296); + c.lineTo(w * 0.16, h * 0.296); + c.lineTo(w * 0.16, h * 0.27); + c.arcTo(w * 0.0367, h * 0.044, 0, 0, 1, w * 0.13, h * 0.228); + c.lineTo(w * 0.13, h * 0.188); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1033, h * 0.108); + c.lineTo(w * 0.24, h * 0.286); + c.lineTo(w * 0.2317, h * 0.298); + c.lineTo(w * 0.095, h * 0.12); + c.close(); + c.fillAndStroke(); + c.rect(w * 0.44, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.44, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.44, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + c.begin(); + c.moveTo(w * 0.7567, h * 0.18); + c.lineTo(w * 0.785, h * 0.18); + c.lineTo(w * 0.825, h * 0.128); + c.lineTo(w * 0.825, h * 0.28); + c.lineTo(w * 0.79, h * 0.234); + c.lineTo(w * 0.7567, h * 0.234); + c.close(); + c.fill(); + c.setStrokeWidth(1.5); + c.setStrokeColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.8383, h * 0.16); + c.arcTo(w * 0.0533, h * 0.064, 0, 0, 1, w * 0.8383, h * 0.252); + c.moveTo(w * 0.8583, h * 0.134); + c.arcTo(w * 0.0817, h * 0.098, 0, 0, 1, w * 0.8583, h * 0.276); + c.moveTo(w * 0.8767, h * 0.11); + c.arcTo(w * 0.1133, h * 0.136, 0, 0, 1, w * 0.8767, h * 0.304); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1467, h * 0.62); + c.lineTo(w * 0.1833, h * 0.62); + c.lineTo(w * 0.1833, h * 0.676); + c.lineTo(w * 0.2267, h * 0.676); + c.lineTo(w * 0.2267, h * 0.724); + c.lineTo(w * 0.1833, h * 0.724); + c.lineTo(w * 0.1833, h * 0.78); + c.lineTo(w * 0.1467, h * 0.78); + c.lineTo(w * 0.1467, h * 0.724); + c.lineTo(w * 0.105, h * 0.724); + c.lineTo(w * 0.105, h * 0.676); + c.lineTo(w * 0.1467, h * 0.676); + c.close(); + c.fill(); + c.rect(w * 0.4517, h * 0.624, w * 0.0333, h * 0.152); + c.fill(); + c.rect(w * 0.5183, h * 0.624, w * 0.0333, h * 0.152); + c.fill(); + c.begin(); + c.moveTo(w * 0.76, h * 0.752); + c.arcTo(w * 0.1, h * 0.12, 0, 0, 1, w * 0.8033, h * 0.728); + c.arcTo(w * 0.0167, h * 0.02, 0, 0, 0, w * 0.8167, h * 0.712); + c.lineTo(w * 0.8175, h * 0.7); + c.arcTo(w * 0.0267, h * 0.06, 0, 0, 1, w * 0.8067, h * 0.644); + c.arcTo(w * 0.0287, h * 0.0344, 0, 0, 1, w * 0.8633, h * 0.644); + c.arcTo(w * 0.0267, h * 0.06, 0, 0, 1, w * 0.855, h * 0.7); + c.arcTo(w * 0.05, h * 0.724, 0, 0, 1, w * 0.8633, h * 0.724); + c.arcTo(w * 0.1667, h * 0.75, 0, 0, 1, w * 0.9083, h * 0.75); + c.lineTo(w * 0.9083, h * 0.78); + c.lineTo(w * 0.76, h * 0.78); + c.close(); + c.fill(); + c.setFontColor('#ffffff'); + c.setFontSize(8.5); + c.text(w * 0.1667, h * 0.35, 0, 0, 'mute', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.35, 0, 0, 'keypad', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.35, 0, 0, 'speaker', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.85, 0, 0, 'add', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.85, 0, 0, 'pause', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.85, 0, 0, 'contacts', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setGradient('#808080', '#ffffff', 0, 0, w, h * 0.308, mxConstants.DIRECTION_NORTH, 1, 1); + c.setAlpha(0.4); + c.begin(); + c.moveTo(0, h * 0.308); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.308); + c.arcTo(w * 1.5, h * 1.8, 0, 0, 1, 0, h * 0.308); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICALL_DIALOG, mxShapeMockupiCallDialog); + +function mxShapeMockupiCallButtons(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCallButtons, mxShape); + +mxShapeMockupiCallButtons.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiCallButtons.prototype.background = function (c, x, y, w, h) { + c.setStrokeWidth(0.5); + c.setStrokeColor('#008cff'); + c.setGradient('#0F1B2B', '#4F5B6B', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiCallButtons.prototype.foreground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.1667); + c.lineTo(w, h * 0.1667); + c.moveTo(0, h * 0.3333); + c.lineTo(w, h * 0.3333); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.6667); + c.lineTo(w, h * 0.6667); + c.moveTo(0, h * 0.8333); + c.lineTo(w, h * 0.8333); + c.moveTo(w * 0.3333, h * 0.1667); + c.lineTo(w * 0.3333, h); + c.moveTo(w * 0.6667, h * 0.1667); + c.lineTo(w * 0.6667, h); + c.stroke(); + c.setFontSize(15.5); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w * 0.5, h * 0.0834, 0, 0, '(123) 456-7890', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.22, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.22, 0, 0, '2', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.22, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.3867, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3867, 0, 0, '4', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.3867, 0, 0, '5', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.5534, 0, 0, '6', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5534, 0, 0, '7', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.5534, 0, 0, '8', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(27.5); + c.text(w * 0.1667, h * 0.76, 0, 0, '*', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(15.5); + c.text(w * 0.5, h * 0.72, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.75, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setGradient('#E2FFEB', '#008215', w * 0.3333, h * 0.8333, w * 0.3333, h * 0.1667, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(w * 0.3333, h * 0.8333, w * 0.3333, h * 0.1667); + c.fillAndStroke(); + c.text(w * 0.5, h * 0.9168, 0, 0, 'Call', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontStyle(0); + c.setFontSize(8); + c.setFontColor('#bbbbbb'); + c.text(w * 0.5, h * 0.28, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.28, 0, 0, 'DEF', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.4467, 0, 0, 'GHI', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.4467, 0, 0, 'JKL', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.4467, 0, 0, 'MNO', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.6134, 0, 0, 'PQRS', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.6134, 0, 0, 'TUV', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.6134, 0, 0, 'WXYZ', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.78, 0, 0, '+', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.1028, h * 0.9464); + c.arcTo(w * 0.0862, h * 0.0652, 0, 0, 1, w * 0.1402, h * 0.9333); + c.arcTo(w * 0.0144, h * 0.0109, 0, 0, 0, w * 0.1517, h * 0.9246); + c.lineTo(w * 0.1524, h * 0.9181); + c.arcTo(w * 0.023, h * 0.0326, 0, 0, 1, w * 0.143, h * 0.8877); + c.arcTo(w * 0.0247, h * 0.0187, 0, 0, 1, w * 0.1919, h * 0.8877); + c.arcTo(w * 0.023, h * 0.0326, 0, 0, 1, w * 0.1847, h * 0.9181); + c.arcTo(w * 0.0431, h * 0.0174, 0, 0, 0, w * 0.1919, h * 0.9311); + c.arcTo(w * 0.1437, h * 0.1087, 0, 0, 1, w * 0.2307, h * 0.9453); + c.lineTo(w * 0.2307, h * 0.9616); + c.lineTo(w * 0.1028, h * 0.9616); + c.close(); + c.fill(); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(2.5); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.79, h * 0.89); + c.lineTo(w * 0.9, h * 0.89); + c.lineTo(w * 0.9, h * 0.95); + c.lineTo(w * 0.79, h * 0.95); + c.lineTo(w * 0.76, h * 0.92); + c.close(); + c.fillAndStroke(); + c.setStrokeColor('#0F1B2B'); + c.begin(); + c.moveTo(w * 0.82, h * 0.907); + c.lineTo(w * 0.85, h * 0.933); + c.moveTo(w * 0.82, h * 0.933); + c.lineTo(w * 0.85, h * 0.907); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICALL_BUTTONS, mxShapeMockupiCallButtons); + +function mxShapeMockupiOption(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiOption, mxShape); +mxShapeMockupiOption.prototype.customProperties = [{ + name: 'buttonText', + dispName: 'Text', + type: 'string' +}, { + name: 'barPos', + dispName: 'Callout Position', + type: 'float', + min: 0, + defVal: 80 +}, { + name: 'pointerPos', + dispName: 'Callout Orientation', + type: 'enum', + enumList: [{ + val: 'bottom', + dispName: 'Bottom' + }, { + val: 'top', + dispName: 'Top' + }] +}]; + +mxShapeMockupiOption.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiOption.prototype.background = function (c, x, y, w, h) { + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var rSize = 2.5; + var deadzone = rSize + 7.5; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeWidth(0.5); + c.setStrokeColor('#000000'); + c.setAlpha(0.9); + c.begin(); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(truePos + 7.5, h - 7.5); + c.lineTo(truePos, h); + c.lineTo(truePos - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + } else if (pointerPos === mxMockupC.POINTER_TOP) { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize + 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 7.5); + c.lineTo(truePos - 7.5, 7.5); + c.lineTo(truePos, 0); + c.lineTo(truePos + 7.5, 7.5); + c.lineTo(w - rSize, 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize + 7.5); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiOption.prototype.foreground = function (c, x, y, w, h) { + var locText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Some Location'); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + c.setAlpha(1); + c.setFontColor('#ffffff'); + c.setFontSize(9.5); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) { + c.text(w * 0.5, (h - 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else { + c.text(w * 0.5, (h + 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IOPTION, mxShapeMockupiOption); + +function mxShapeMockupiAlphaList(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiAlphaList, mxShape); + +mxShapeMockupiAlphaList.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8'); + c.setFontColor('#999999'); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.069, 0, 0, 'A', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.1035, 0, 0, 'B', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.138, 0, 0, 'C', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.1725, 0, 0, 'D', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.207, 0, 0, 'E', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.2415, 0, 0, 'F', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.276, 0, 0, 'G', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3105, 0, 0, 'H', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.345, 0, 0, 'I', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3795, 0, 0, 'J', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.414, 0, 0, 'K', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.4485, 0, 0, 'L', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.483, 0, 0, 'M', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5175, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.552, 0, 0, 'O', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5865, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.621, 0, 0, 'Q', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.6555, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.69, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.7245, 0, 0, 'T', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.759, 0, 0, 'U', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.7935, 0, 0, 'V', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.828, 0, 0, 'W', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.8625, 0, 0, 'X', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.897, 0, 0, 'Y', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.9315, 0, 0, 'Z', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.966, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setStrokeColor('#999999'); + c.ellipse(w * 0.5 - 2.25, h * 0.0345 - 3.5, 4.5, 4.5); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5 - 4.25, h * 0.0345 + 3); + c.lineTo(w * 0.5 - 1.75, h * 0.0345); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IALPHA_LIST, mxShapeMockupiAlphaList); + +function mxShapeMockupiHorButtonBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiHorButtonBar, mxShape); +mxShapeMockupiHorButtonBar.prototype.customProperties = [{ + name: 'buttonText', + dispName: 'Labels', + type: 'string' +}, { + name: 'textColor', + dispName: 'Text Color', + type: 'color' +}, { + name: 'textColor2', + dispName: 'Text2 Color', + type: 'color' +}, { + name: 'strokeColor2', + dispName: 'Stroke2 Color', + type: 'color' +}]; + +mxShapeMockupiHorButtonBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 2.5; + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxMockupC.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 10); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupiHorButtonBar.prototype.background = function (c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + var buttonLeft = 0; + c.setStrokeColor(mxConstants.NONE); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) { + c.setGradient('#5D7585', '#008cff', 0, 0, buttonRight, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } else if (selectedButton === buttonNum - 1) { + c.setGradient('#5D7585', '#008cff', buttonLeft, 0, buttonRight - buttonLeft, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } else if (selectedButton !== -1) { + c.setGradient('#5D7585', '#008cff', buttonLeft, 0, buttonRight - buttonLeft, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupiHorButtonBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxMockupC.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IHOR_BUTTON_BAR, mxShapeMockupiHorButtonBar); + +function mxShapeMockupiPin(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiPin, mxShape); +mxShapeMockupiPin.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Fill2 Color', + type: 'color' +}, { + name: 'fillColor3', + dispName: 'Fill3 Color', + type: 'color' +}]; + +mxShapeMockupiPin.prototype.paintVertexShape = function (c, x, y, w, h) { + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#000000'); + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setShadow(false); + c.translate(x, y); + c.setStrokeWidth(1.5); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.5, h); + c.stroke(); + c.setStrokeWidth(1); + c.setStrokeColor(strokeColor); + c.setGradient(fillColor2, fillColor3, 0, 0, w, h * 0.4, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.9); + c.ellipse(0, 0, w, h * 0.4); + c.fillAndStroke(); + c.setFillColor('#ffffff'); + c.setAlpha(0.5); + c.ellipse(w * 0.2, h * 0.08, w * 0.3, h * 0.12); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPIN, mxShapeMockupiPin); + +function mxShapeMockupiVideoControls(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiVideoControls, mxShape); +mxShapeMockupiVideoControls.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 20 +}]; + +mxShapeMockupiVideoControls.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 5; + c.setStrokeWidth(1); + c.setFillColor('#000000'); + c.setStrokeColor('#bbbbbb'); + c.setAlpha(0.7); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + c.setShadow(false); + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiVideoControls.prototype.foreground = function (c, w, h, rSize) { + c.setGradient('#ffffff', '#ffffff', 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(0, h * 0.5); + c.close(); + c.fill(); + c.setAlpha(1); + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + var iconX = w * 0.1; + var iconY = h * 0.35; + c.begin(); + c.moveTo(iconX - 7.5, iconY - 2.5); + c.arcTo(6, 6, 0, 0, 1, iconX, iconY - 2.5); + c.arcTo(6, 6, 0, 0, 1, iconX + 7.5, iconY - 2.5); + c.lineTo(iconX + 7.5, iconY + 4); + c.arcTo(6, 6, 0, 0, 0, iconX, iconY + 4); + c.arcTo(6, 6, 0, 0, 0, iconX - 7.5, iconY + 4); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(iconX, iconY - 2.5); + c.lineTo(iconX, iconY + 4); + c.stroke(); + iconX = w * 0.3; + c.rect(iconX - 7.5, iconY - 5, 1, 10); + c.fill(); + c.begin(); + c.moveTo(iconX - 6.5, iconY); + c.lineTo(iconX + 0.5, iconY - 5); + c.lineTo(iconX + 0.5, iconY + 5); + c.close(); + c.fill(); + c.begin(); + c.moveTo(iconX + 0.5, iconY); + c.lineTo(iconX + 7.5, iconY - 5); + c.lineTo(iconX + 7.5, iconY + 5); + c.close(); + c.fill(); + iconX = w * 0.5; + c.begin(); + c.moveTo(iconX - 6, iconY - 5); + c.lineTo(iconX + 6, iconY); + c.lineTo(iconX - 6, iconY + 5); + c.close(); + c.fill(); + iconX = w * 0.7; + c.begin(); + c.moveTo(iconX - 7.5, iconY - 5); + c.lineTo(iconX - 0.5, iconY); + c.lineTo(iconX - 7.5, iconY + 5); + c.close(); + c.fill(); + c.begin(); + c.moveTo(iconX - 0.5, iconY - 5); + c.lineTo(iconX + 6.5, iconY); + c.lineTo(iconX - 0.5, iconY + 5); + c.close(); + c.fill(); + c.rect(iconX + 6.5, iconY - 5, 1, 10); + c.fill(); + iconX = w * 0.9; + c.rect(iconX - 7.5, iconY - 4, 15, 8); + c.stroke(); + c.setStrokeWidth(0.5); + c.begin(); + c.moveTo(iconX - 7.5, iconY - 4); + c.lineTo(iconX, iconY + 1.5); + c.lineTo(iconX + 7.5, iconY - 4); + c.stroke(); + c.begin(); + c.moveTo(iconX - 7.5, iconY + 4); + c.lineTo(iconX - 2, iconY); + c.stroke(); + c.begin(); + c.moveTo(iconX + 7.5, iconY + 4); + c.lineTo(iconX + 2, iconY); + c.stroke(); + c.setGradient('#444444', '#ffffff', w * 0.1, h * 0.75 - 2.5, w * 0.8, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.1, h * 0.75 - 2.5, w * 0.8, 5, 2.5, 2.5); + c.fill(); + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = w * 0.1; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setGradient('#96D1FF', '#003377', w * 0.1, h * 0.75 - 5, truePos - w * 0.1, 10, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.75 - 2.5); + c.lineTo(truePos, h * 0.75 + 2.5); + c.lineTo(w * 0.1 + 2.5, h * 0.75 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, w * 0.1 + 2.5, h * 0.75 - 2.5); + c.close(); + c.fill(); + c.setStrokeColor('#999999'); + c.setGradient('#444444', '#ffffff', truePos - 5, h * 0.75 - 5, 10, 10, mxConstants.DIRECTION_NORTH, 1, 1); + c.ellipse(truePos - 5, h * 0.75 - 5, 10, 10); + c.fillAndStroke(); + c.setStrokeColor('#dddddd'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IVIDEO_CONTROLS, mxShapeMockupiVideoControls); + +Graph.handleFactory[mxMockupC.SHAPE_IVIDEO_CONTROLS] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 40)))); + return new mxPoint(bounds.x + bounds.width * 0.1 + barPos * bounds.width * 0.8 / 100, bounds.y + bounds.height * 0.75); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.width * 0.1 - bounds.x) * 100 / (bounds.width * 0.8)))) / 100; + })]; + return handles; +}; + +function mxShapeMockupiURLBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiURLBar, mxShape); + +mxShapeMockupiURLBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setGradient('#cccccc', '#003377', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupiURLBar.prototype.foreground = function (c, w, h) { + c.setStrokeWidth(0.5); + c.setFillColor('#ffffff'); + c.setStrokeColor('#008cff'); + c.roundrect(w * 0.0287, h * 0.625 - 6.25, w * 0.7184, 12.5, 6.25, 6.25); + c.fillAndStroke(); + c.setGradient('#cccccc', '#001144', w * 0.7816, h * 0.625 - 6.25, w * 0.1868, 12.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeColor('#000000'); + c.roundrect(w * 0.7816, h * 0.625 - 6.25, w * 0.1868, 12.5, 2.5, 2.5); + c.fillAndStroke(); + c.setFillColor('#bbbbbb'); + c.ellipse(w * 0.7471 - 11.5, h * 0.625 - 5, 10, 10); + c.fill(); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.7471 - 8.5, h * 0.625 - 2.5); + c.lineTo(w * 0.7471 - 3.5, h * 0.625 + 2.5); + c.moveTo(w * 0.7471 - 8.5, h * 0.625 + 2.5); + c.lineTo(w * 0.7471 - 3.5, h * 0.625 - 2.5); + c.stroke(); + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '').toString().split(','); + c.setFontColor('#425664'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor('#000000'); + c.text(w * 0.06, h * 0.625, 0, 0, fieldText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor('#ffffff'); + c.text(w * 0.875, h * 0.625, 0, 0, fieldText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IURL_BAR, mxShapeMockupiURLBar); + +function mxShapeMockupiSlider(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiSlider, mxShape); +mxShapeMockupiSlider.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 20 +}]; + +mxShapeMockupiSlider.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupiSlider.prototype.foreground = function (c, w, h) { + c.setStrokeWidth(0.5); + c.setGradient('#444444', '#ffffff', 0, h * 0.5 - 2.5, w, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, h * 0.5 - 2.5, w, 5, 2.5, 2.5); + c.fill(); + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setGradient('#96D1FF', '#003377', 2.5, h * 0.5 - 2.5, truePos - 2.5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.5 - 2.5); + c.lineTo(truePos, h * 0.5 + 2.5); + c.lineTo(2.5, h * 0.5 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, 2.5, h * 0.5 - 2.5); + c.close(); + c.fill(); + c.setStrokeColor('#999999'); + c.setGradient('#444444', '#ffffff', truePos - 5, h * 0.5 - 5, 10, 10, mxConstants.DIRECTION_NORTH, 1, 1); + c.ellipse(truePos - 5, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISLIDER, mxShapeMockupiSlider); + +Graph.handleFactory[mxMockupC.SHAPE_ISLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeMockupiProgressBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiProgressBar, mxShape); +mxShapeMockupiProgressBar.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 40 +}]; + +mxShapeMockupiProgressBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupiProgressBar.prototype.foreground = function (c, w, h) { + c.setStrokeWidth(0.5); + c.setGradient('#444444', '#ffffff', 0, h * 0.5 - 2.5, w, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, h * 0.5 - 2.5, w, 5, 2.5, 2.5); + c.fill(); + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setGradient('#96D1FF', '#003377', 2.5, h * 0.5 - 2.5, truePos - 2.5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.5 - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, truePos, h * 0.5 + 2.5); + c.lineTo(2.5, h * 0.5 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, 2.5, h * 0.5 - 2.5); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPROGRESS_BAR, mxShapeMockupiProgressBar); + +Graph.handleFactory[mxMockupC.SHAPE_IPROGRESS_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeMockupiCloudProgressBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCloudProgressBar, mxShape); +mxShapeMockupiCloudProgressBar.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 20 +}]; + +mxShapeMockupiCloudProgressBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupiCloudProgressBar.prototype.foreground = function (c, w, h) { + c.setStrokeWidth(0.5); + c.setFillColor('#5C6E86'); + c.rect(0, h * 0.5 - 2.5, w, 5); + c.fill(); + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setFillColor('#8AD155'); + c.rect(0, h * 0.5 - 2.5, truePos, 5); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICLOUD_PROGRESS_BAR, mxShapeMockupiCloudProgressBar); + +Graph.handleFactory[mxMockupC.SHAPE_ICLOUD_PROGRESS_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeMockupiDownloadBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiDownloadBar, mxShape); +mxShapeMockupiDownloadBar.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 30 +}]; + +mxShapeMockupiDownloadBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setGradient('#00ccff', '#0066cc', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupiDownloadBar.prototype.foreground = function (c, w, h) { + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = w * 0.1; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeWidth(0.5); + c.setGradient('#96D1FF', '#003377', deadzone, h * 0.65 - 2.5, w - 2 * deadzone, 5, mxConstants.DIRECTION_NORTH, 1, 1); + c.roundrect(deadzone, h * 0.65 - 2.5, w - 2 * deadzone, 5, 2.5, 2.5); + c.fill(); + c.setGradient('#aaaaaa', '#ffffff', deadzone + 2.5, h * 0.65 - 2.5, truePos - deadzone - 2.5, 5, mxConstants.DIRECTION_NORTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.65 - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, truePos, h * 0.65 + 2.5); + c.lineTo(deadzone + 2.5, h * 0.65 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, deadzone + 2.5, h * 0.65 - 2.5); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDOWNLOAD_BAR, mxShapeMockupiDownloadBar); + +Graph.handleFactory[mxMockupC.SHAPE_IDOWNLOAD_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 40)))); + return new mxPoint(bounds.x + bounds.width * 0.1 + barPos * bounds.width * 0.8 / 100, bounds.y + bounds.height * 0.65); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.width * 0.1 - bounds.x) * 100 / (bounds.width * 0.8)))) / 100; + })]; + return handles; +}; + +function mxShapeMockupiScreenNameBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiScreenNameBar, mxShape); + +mxShapeMockupiScreenNameBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 5; + c.setStrokeWidth(0.5); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#00ff00'); + c.setFillColor(fillColor2); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiScreenNameBar.prototype.foreground = function (c, w, h, rSize) { + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.rect(0, 0, w, h * 0.5); + c.fill(); + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(9.5); + c.text(w * 0.5, h * 0.45, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISCREEN_NAME_BAR, mxShapeMockupiScreenNameBar); + +function mxShapeMockupiIconGrid(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiIconGrid, mxShape); +mxShapeMockupiIconGrid.prototype.customProperties = [{ + name: 'gridSize', + dispName: 'Grid Size', + type: 'string' +}]; + +mxShapeMockupiIconGrid.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxMockupC.GRID_SIZE, '3,3').toString().split(','); + this.background(c, w, h, gridSize); + c.setShadow(false); + this.foreground(c, w, h, gridSize); +}; + +mxShapeMockupiIconGrid.prototype.background = function (c, w, h, gridSize) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#00ff00'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#00ff00'); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + var boxSizeX = w / (parseInt(gridSize[0], 10) + (gridSize[0] - 1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1], 10) + (gridSize[1] - 1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) { + for (var j = 0; j < gridSize[1]; j++) { + c.rect(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j, boxSizeX, boxSizeY); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupiIconGrid.prototype.foreground = function (c, w, h, gridSize) { + var boxSizeX = w / (parseInt(gridSize[0], 10) + (gridSize[0] - 1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1], 10) + (gridSize[1] - 1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) { + for (var j = 0; j < gridSize[1]; j++) { + c.begin(); + c.moveTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j + boxSizeY); + c.moveTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j + boxSizeY); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IICON_GRID, mxShapeMockupiIconGrid); + +function mxShapeMockupiCopy(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCopy, mxShape); + +mxShapeMockupiCopy.prototype.paintVertexShape = function (c, x, y, w, h) { + var rSize = 5; + c.translate(x, y); + this.background(c, w, h, rSize); + c.setShadow(false); + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiCopy.prototype.background = function (c, w, h, rSize) { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(w * 0.5 + 7.5, h - 7.5); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiCopy.prototype.foreground = function (c, w, h, rSize) { + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, (h - 7.5) * 0.5); + c.lineTo(0, (h - 7.5) * 0.5); + c.close(); + c.fill(); + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(8.5); + c.text(w * 0.5, (h - 7.5) * 0.45, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOPY, mxShapeMockupiCopy); + +function mxShapeMockupiCopyArea(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiCopyArea, mxShape); + +mxShapeMockupiCopyArea.prototype.paintVertexShape = function (c, x, y, w, h) { + var rSize = 5; + c.translate(x, y); + this.background(c, w, h, rSize); + c.setShadow(false); + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiCopyArea.prototype.background = function (c, w, h, rSize) { + c.begin(); + c.moveTo(w * 0.5 - 20, 0 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 20 - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20 - rSize, 20); + c.lineTo(w * 0.5 + 7.5, 20); + c.lineTo(w * 0.5, 27.5); + c.lineTo(w * 0.5 - 7.5, 20); + c.lineTo(w * 0.5 - 20 + rSize, 20); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20, 20 - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiCopyArea.prototype.foreground = function (c, w, h, rSize) { + c.setAlpha(0.3); + c.setFillColor('#2266ff'); + c.rect(2.5, 27.5, w - 5, h - 30); + c.fill(); + c.setAlpha(1); + + if (h > 27.5) { + c.setStrokeColor('#ffffff'); + c.setGradient('#88ddff', '#2266ff', w * 0.5 - 2.5, 25, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.5 - 2.5, 25, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', w * 0.5 - 2.5, h - 5, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.5 - 2.5, h - 5, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', 0, h * 0.5 + 10, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(0, h * 0.5 + 10, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', w - 5, h * 0.5 + 10, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w - 5, h * 0.5 + 10, 5, 5); + c.fillAndStroke(); + } + + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#00ff00'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#00ff00'); + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor); + c.begin(); + c.moveTo(w * 0.5 - 20, 0 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 20 - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20 - rSize, 20); + c.lineTo(w * 0.5 + 7.5, 20); + c.lineTo(w * 0.5, 27.5); + c.lineTo(w * 0.5 - 7.5, 20); + c.lineTo(w * 0.5 - 20 + rSize, 20); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20, 20 - rSize); + c.close(); + c.fillAndStroke(); + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, w * 0.5 - 20, 0, 40, 10, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(w * 0.5 - 20, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 10); + c.lineTo(w * 0.5 - 20, 10); + c.close(); + c.fill(); + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(8.5); + c.text(w * 0.5, 8.75, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOPY_AREA, mxShapeMockupiCopyArea); + +function mxShapeMockupiHomePageControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiHomePageControl, mxShape); + +mxShapeMockupiHomePageControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + var rSize = Math.min(h * 0.5, w * 0.05); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(rSize * 0.2, h * 0.5 - rSize * 0.8, rSize * 1.2, rSize * 1.2); + c.stroke(); + c.begin(); + c.moveTo(rSize * 1.15, h * 0.5 + rSize * 0.25); + c.lineTo(rSize * 1.6, h * 0.5 + rSize * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IHOME_PAGE_CONTROL, mxShapeMockupiHomePageControl); + +function mxShapeMockupiPageControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiPageControl, mxShape); + +mxShapeMockupiPageControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPAGE_CONTROL, mxShapeMockupiPageControl); + +function mxShapeMockupiPad(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupiPad, mxShape); +mxShapeMockupiPad.prototype.customProperties = [{ + name: 'bgStyle', + dispName: 'Background', + type: 'enum', + enumList: [{ + val: 'bgGreen', + dispName: 'Green' + }, { + val: 'bgWhite', + dispName: 'White' + }, { + val: 'bgGray', + dispName: 'Gray' + }, { + val: 'bgFlat', + dispName: 'Flat' + }, { + val: 'bgMap', + dispName: 'Map' + }, { + val: 'bgStriped', + dispName: 'Striped' + }] +}]; + +mxShapeMockupiPad.prototype.paintVertexShape = function (c, x, y, w, h) { + var rSize = 25; + c.translate(x, y); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiPad.prototype.background = function (c, x, y, w, h, rSize) { + c.setFillColor('#000000'); + c.setStrokeColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiPad.prototype.foreground = function (c, x, y, w, h, rSize) { + c.setStrokeWidth(1.5); + c.setStrokeColor('#999999'); + c.begin(); + c.setStrokeColor('none'); + c.setFillColor('#808080'); + c.setGradient('#808080', '#000000', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(w * 0.325, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.close(); + c.fillAndStroke(); + c.begin(); + c.setFillColor('#1f2923'); + c.setStrokeColor('#18211b'); + c.setStrokeWidth(1); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, ''); + var bgStyle = mxUtils.getValue(this.style, mxMockupC.BG_STYLE, mxMockupC.BG_FLAT_GREEN); + c.setStrokeWidth(1); + + if (bgStyle === mxMockupC.BG_FLAT_WHITE) { + c.setFillColor('#ffffff'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_GREEN) { + c.setFillColor('#1f2923'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_GRAY) { + c.setFillColor('#dddddd'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } else if (bgStyle === mxMockupC.BG_FLAT_CUSTOM) { + c.setFillColor(fillColor); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } else if (bgStyle === mxMockupC.BG_STRIPED) { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0928, h * 0.08); + w = w * 0.8144; + h = h * 0.816; + c.setFillColor('#5D7585'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + var strokeColor = '#18211b'; + var strokeColor2 = '#657E8F'; + c.setStrokeColor(strokeColor2); + var i = 7; + c.begin(); + + while (i < w) { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 7; + } + + c.stroke(); + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); + w = wOld; + h = hOld; + c.translate(-w * 0.0928, -h * 0.08); + } else if (bgStyle === mxMockupC.BG_MAP) { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0928, h * 0.08); + w = w * 0.8144; + h = h * 0.816; + c.setFillColor('#ffffff'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + var fillColor2 = '#96D1FF'; + var strokeColor = '#18211b'; + var strokeColor2 = '#008cff'; + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(0.5); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + w = wOld; + h = hOld; + c.translate(-w * 0.0928, -h * 0.08); + } + + c.setStrokeWidth(1); + c.setStrokeColor('#18211b'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.stroke(); + c.setStrokeWidth(1.5); + c.setAlpha(0.8); + c.setStrokeColor('#dddddd'); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); + rSize = 22.5; + c.begin(); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(2.5, 2.5 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, 2.5 + rSize, 2.5); + c.lineTo(w - rSize - 5, 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - 2.5, rSize + 2.5); + c.lineTo(w - 2.5, h - rSize - 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize - 2.5, h - 2.5); + c.lineTo(rSize + 2.5, h - 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, 2.5, h - rSize - 2.5); + c.close(); + c.stroke(); + c.setAlpha(1); + c.ellipse(w * 0.4948, h * 0.0444, w * 0.0103, h * 0.008); + c.setStrokeWidth(2.5); + c.setStrokeColor('#000000'); + c.setFillColor('#000099'); + c.fillAndStroke(); + c.setGradient('#bbbbbb', '#000000', w * 0.4588, h * 0.912, w * 0.0825, h * 0.064, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.4588, h * 0.912, w * 0.0825, h * 0.064); + c.fill(); + c.setAlpha(0.5); + c.ellipse(w * 0.4588, h * 0.912, w * 0.0825, h * 0.064); + c.stroke(); + c.begin(); + c.setAlpha(0.85); + c.setFillColor('#000000'); + c.moveTo(w * 0.4598, h * 0.944); + c.arcTo(w * 0.0402, h * 0.0296, 0, 0, 1, w * 0.5402, h * 0.944); + c.arcTo(w * 0.0825, h * 0.064, 0, 0, 1, w * 0.4598, h * 0.944); + c.close(); + c.fillAndStroke(); + c.begin(); + c.setAlpha(0.7); + c.setStrokeWidth(1.5); + c.setStrokeColor('#dddddd'); + rSize = 4; + c.roundrect(w * 0.4814, h * 0.9296, w * 0.0371, h * 0.0288, h * 0.00515, h * 0.004); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPAD, mxShapeMockupiPad); + +function mxShapeMockupRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupRRect, mxShape); +mxShapeMockupRRect.prototype.cst = { + RRECT: 'mxgraph.ios.rrect', + R_SIZE: 'rSize' +}; +mxShapeMockupRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeMockupRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRRect.prototype.cst.RRECT, mxShapeMockupRRect); + +function mxShapeIosTopButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIosTopButton, mxShape); +mxShapeIosTopButton.prototype.cst = { + TOP_BUTTON: 'mxgraph.ios.topButton', + R_SIZE: 'rSize' +}; +mxShapeIosTopButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeIosTopButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIosTopButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosTopButton.prototype.cst.TOP_BUTTON, mxShapeIosTopButton); + +function mxShapeIosBottomButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIosBottomButton, mxShape); +mxShapeIosBottomButton.prototype.cst = { + BOTTOM_BUTTON: 'mxgraph.ios.bottomButton', + R_SIZE: 'rSize' +}; +mxShapeIosBottomButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeIosBottomButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIosBottomButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeIosBottomButton); + +function mxShapeIosAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeIosAnchor, mxShape); +mxShapeIosAnchor.prototype.cst = { + ANCHOR: 'mxgraph.ios.anchor' +}; + +mxShapeIosAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeIosAnchor.prototype.cst.ANCHOR, mxShapeIosAnchor); + +function mxShapeIosCheckbox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeIosCheckbox, mxShape); +mxShapeIosCheckbox.prototype.cst = { + CHECKBOX: 'mxgraph.ios.checkbox' +}; + +mxShapeIosCheckbox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosCheckbox.prototype.cst.CHECKBOX, mxShapeIosCheckbox); + +function mxShapeMockupFancyRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeMockupFancyRRect, mxShape); +mxShapeMockupFancyRRect.prototype.cst = { + FANCY_RRECT: 'mxgraph.ios.fancyRRect', + R_SIZE: 'rSize' +}; +mxShapeMockupFancyRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 8 +}]; + +mxShapeMockupFancyRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupFancyRRect.prototype.cst.R_SIZE, '10')); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); + c.setShadow(false); + c.setStrokeColor(fillColor); + c.setGradient(fillColor, '#ffffff', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.3); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + c.setAlpha(0.8); + c.setStrokeColor(strokeColor); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFancyRRect.prototype.cst.FANCY_RRECT, mxShapeMockupFancyRRect); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS3D.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS3D.js new file mode 100644 index 0000000000000..4e8f99a3816ce --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS3D.js @@ -0,0 +1,7001 @@ +"use strict"; + +function mxShapeAws3dArrowNE(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dArrowNE, mxShape); +mxShapeAws3dArrowNE.prototype.cst = { + ARROW_NE: 'mxgraph.aws3d.arrowNE' +}; + +mxShapeAws3dArrowNE.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w - 17, 8); + c.lineTo(w - 21, 5.5); + c.lineTo(w, 0); + c.lineTo(w - 9.7, 12.2); + c.lineTo(w - 13.9, 9.8); + c.lineTo(9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowNE.prototype.cst.ARROW_NE, mxShapeAws3dArrowNE); + +function mxShapeAws3dArrowSE(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dArrowSE, mxShape); +mxShapeAws3dArrowSE.prototype.cst = { + ARROW_SE: 'mxgraph.aws3d.arrowSE' +}; + +mxShapeAws3dArrowSE.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w - 17, h - 8); + c.lineTo(w - 21, h - 5.5); + c.lineTo(w, h); + c.lineTo(w - 9.7, h - 12.2); + c.lineTo(w - 13.9, h - 9.8); + c.lineTo(9.7, 3.5); + c.arcTo(6, 3, 0, 0, 0, 9, 0.4); + c.arcTo(5.2, 3, 0, 0, 0, 1, 1.4); + c.arcTo(6, 2.8, 0, 0, 0, 3, 5.4); + c.arcTo(5, 3, 0, 0, 0, 6.7, 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowSE.prototype.cst.ARROW_SE, mxShapeAws3dArrowSE); + +function mxShapeAws3dArrowSW(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dArrowSW, mxShape); +mxShapeAws3dArrowSW.prototype.cst = { + ARROW_SW: 'mxgraph.aws3d.arrowSW' +}; + +mxShapeAws3dArrowSW.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(17, h - 8); + c.lineTo(21, h - 5.5); + c.lineTo(0, h); + c.lineTo(9.7, h - 12.2); + c.lineTo(13.9, h - 9.8); + c.lineTo(w - 9.7, 3.5); + c.arcTo(6, 3, 0, 0, 1, w - 9, 0.4); + c.arcTo(5.2, 3, 0, 0, 1, w - 1, 1.4); + c.arcTo(6, 2.8, 0, 0, 1, w - 3, 5.4); + c.arcTo(5, 3, 0, 0, 1, w - 6.7, 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowSW.prototype.cst.ARROW_SW, mxShapeAws3dArrowSW); + +function mxShapeAws3dArrowNW(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dArrowNW, mxShape); +mxShapeAws3dArrowNW.prototype.cst = { + ARROW_NW: 'mxgraph.aws3d.arrowNW' +}; + +mxShapeAws3dArrowNW.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(17, 8); + c.lineTo(21, 5.5); + c.lineTo(0, 0); + c.lineTo(9.7, 12.2); + c.lineTo(13.9, 9.8); + c.lineTo(w - 9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 0, w - 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 0, w - 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 0, w - 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 0, w - 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowNW.prototype.cst.ARROW_NW, mxShapeAws3dArrowNW); + +function mxShapeAws3dArrowlessNE(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dArrowlessNE, mxShape); +mxShapeAws3dArrowlessNE.prototype.cst = { + ARROWLESS_NE: 'mxgraph.aws3d.arrowlessNE' +}; + +mxShapeAws3dArrowlessNE.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w - 3.1, 0); + c.lineTo(w, 1.8); + c.lineTo(9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowlessNE.prototype.cst.ARROWLESS_NE, mxShapeAws3dArrowlessNE); + +function mxShapeAws3dDashedEdgeDouble(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDashedEdgeDouble, mxShape); +mxShapeAws3dDashedEdgeDouble.prototype.cst = { + DASHED_EDGE_DOUBLE: 'mxgraph.aws3d.dashedEdgeDouble' +}; + +mxShapeAws3dDashedEdgeDouble.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setFillColor('#2D6195'); + c.save(); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(21, 5.5); + c.lineTo(0, 0); + c.lineTo(9.7, 12.2); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - 21, h - 5.5); + c.lineTo(w, h); + c.lineTo(w - 9.7, h - 12.2); + c.fillAndStroke(); + c.restore(); + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + c.begin(); + c.moveTo(7.675, 4.425); + c.lineTo(w - 7.675, h - 4.425); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedEdgeDouble.prototype.cst.DASHED_EDGE_DOUBLE, mxShapeAws3dDashedEdgeDouble); + +function mxShapeAws3dDashedArrowlessEdge(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDashedArrowlessEdge, mxShape); +mxShapeAws3dDashedArrowlessEdge.prototype.cst = { + DASHED_ARROWLESS_EDGE: 'mxgraph.aws3d.dashedArrowlessEdge' +}; + +mxShapeAws3dDashedArrowlessEdge.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedArrowlessEdge.prototype.cst.DASHED_ARROWLESS_EDGE, mxShapeAws3dDashedArrowlessEdge); + +function mxShapeAws3dDashedEdge(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDashedEdge, mxShape); +mxShapeAws3dDashedEdge.prototype.cst = { + DASHED_EDGE: 'mxgraph.aws3d.dashedEdge' +}; + +mxShapeAws3dDashedEdge.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setFillColor('#2D6195'); + c.save(); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(w - 21, 5.5); + c.lineTo(w, 0); + c.lineTo(w - 9.7, 12.2); + c.fillAndStroke(); + c.restore(); + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + c.begin(); + c.moveTo(w - 7.675, 4.425); + c.lineTo(0, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedEdge.prototype.cst.DASHED_EDGE, mxShapeAws3dDashedEdge); + +function mxShapeAws3dFlatEdge(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dFlatEdge, mxShape); +mxShapeAws3dFlatEdge.prototype.cst = { + FLAT_EDGE: 'mxgraph.aws3d.flatEdge' +}; + +mxShapeAws3dFlatEdge.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setFillColor('#F4B934'); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(w - 46, 8.8); + c.lineTo(w - 61.2, 0); + c.lineTo(w, 0); + c.lineTo(w, 35.5); + c.lineTo(w - 15.4, 26.5); + c.lineTo(30.7, h); + c.lineTo(0, h - 17.7); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dFlatEdge.prototype.cst.FLAT_EDGE, mxShapeAws3dFlatEdge); + +function mxShapeAws3dFlatDoubleEdge(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dFlatDoubleEdge, mxShape); +mxShapeAws3dFlatDoubleEdge.prototype.cst = { + FLAT_DOUBLE_EDGE: 'mxgraph.aws3d.flatDoubleEdge' +}; + +mxShapeAws3dFlatDoubleEdge.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setFillColor('#F4B934'); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(15.3, 61.9); + c.lineTo(30.8, 53.2); + c.lineTo(15.4, 44.2); + c.lineTo(0, 53.2); + c.lineTo(15.4, 8.8); + c.lineTo(92.1, 0); + c.lineTo(76.5, 8.8); + c.lineTo(92.1, 17.7); + c.lineTo(107.4, 8.8); + c.lineTo(w - 15.3, h - 61.9); + c.lineTo(w - 30.8, h - 53.2); + c.lineTo(w - 15.4, h - 44.2); + c.lineTo(w, h - 53.2); + c.lineTo(w - 15.4, h - 8.8); + c.lineTo(w - 92.1, h); + c.lineTo(w - 76.5, h - 8.8); + c.lineTo(w - 92.1, h - 17.7); + c.lineTo(w - 107.4, h - 8.8); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dFlatDoubleEdge.prototype.cst.FLAT_DOUBLE_EDGE, mxShapeAws3dFlatDoubleEdge); + +function mxShapeAws3dAMI(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dAMI, mxShape); +mxShapeAws3dAMI.prototype.cst = { + AMI: 'mxgraph.aws3d.ami', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dAMI.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6483); + c.lineTo(w * 0.0684, h * 0.4133); + c.lineTo(w * 0.5326, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w * 0.9359, h * 0.2367); + c.lineTo(w, h * 0.465); + c.lineTo(w * 0.4, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.0652, h * 0.5); + c.lineTo(w * 0.3326, h * 0.7667); + c.lineTo(w * 0.4663, h * 0.7667); + c.lineTo(w * 0.4, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4, h); + c.lineTo(w * 0.4641, h * 0.77); + c.lineTo(w * 0.9326, h * 0.355); + c.lineTo(w * 0.9347, h * 0.24); + c.lineTo(w, h * 0.4667); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.0652, h * 0.5); + c.lineTo(w * 0.3326, h * 0.7667); + c.lineTo(w * 0.4663, h * 0.7667); + c.lineTo(w * 0.4, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.4, h); + c.lineTo(w * 0.4641, h * 0.77); + c.lineTo(w * 0.9326, h * 0.355); + c.lineTo(w * 0.9347, h * 0.24); + c.lineTo(w, h * 0.4667); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.0652, h * 0.42); + c.lineTo(w * 0.0652, h * 0.5); + c.moveTo(w * 0.3337, h * 0.7667); + c.lineTo(w * 0.4, h); + c.moveTo(w * 0.9348, h * 0.355); + c.lineTo(w, h * 0.4733); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1935, h * 0.42); + c.lineTo(w * 0.5543, h * 0.0967); + c.lineTo(w * 0.6652, h * 0.1967); + c.lineTo(w * 0.3, h * 0.5133); + c.close(); + c.moveTo(w * 0.2967, h * 0.4633); + c.lineTo(w * 0.3837, h * 0.3883); + c.lineTo(w * 0.3326, h * 0.3417); + c.lineTo(w * 0.2467, h * 0.42); + c.close(); + c.moveTo(w * 0.362, h * 0.32); + c.lineTo(w * 0.412, h * 0.3633); + c.lineTo(w * 0.5054, h * 0.2867); + c.lineTo(w * 0.4522, h * 0.24); + c.close(); + c.moveTo(w * 0.5293, h * 0.26); + c.lineTo(w * 0.6109, h * 0.1933); + c.lineTo(w * 0.5511, h * 0.145); + c.lineTo(w * 0.4739, h * 0.2133); + c.close(); + c.moveTo(w * 0.3528, h * 0.557); + c.lineTo(w * 0.7137, h * 0.2337); + c.lineTo(w * 0.8246, h * 0.3337); + c.lineTo(w * 0.4593, h * 0.6503); + c.close(); + c.moveTo(w * 0.4561, h * 0.6003); + c.lineTo(w * 0.543, h * 0.5253); + c.lineTo(w * 0.492, h * 0.4787); + c.lineTo(w * 0.4061, h * 0.557); + c.close(); + c.moveTo(w * 0.5213, h * 0.457); + c.lineTo(w * 0.5713, h * 0.5003); + c.lineTo(w * 0.6648, h * 0.4237); + c.lineTo(w * 0.6115, h * 0.377); + c.close(); + c.moveTo(w * 0.6887, h * 0.397); + c.lineTo(w * 0.7702, h * 0.3303); + c.lineTo(w * 0.7104, h * 0.282); + c.lineTo(w * 0.6333, h * 0.3503); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6483); + c.lineTo(w * 0.0684, h * 0.4133); + c.lineTo(w * 0.5326, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w * 0.9359, h * 0.2367); + c.lineTo(w, h * 0.465); + c.lineTo(w * 0.4, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dAMI.prototype.cst.AMI, mxShapeAws3dAMI); + +function mxShapeAws3dSnapshot(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSnapshot, mxShape); +mxShapeAws3dSnapshot.prototype.cst = { + SNAPSHOT: 'mxgraph.aws3d.snapshot', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSnapshot.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(w, h * 0.6483); + c.lineTo(w * 0.9316, h * 0.4133); + c.lineTo(w * 0.4674, 0); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.0641, h * 0.2367); + c.lineTo(0, h * 0.465); + c.lineTo(w * 0.6, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSnapshot.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.65); + c.lineTo(w * 0.9348, h * 0.52); + c.lineTo(w * 0.6674, h * 0.7667); + c.lineTo(w * 0.5337, h * 0.7667); + c.lineTo(w * 0.6, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.6, h); + c.lineTo(w * 0.5359, h * 0.77); + c.lineTo(w * 0.0674, h * 0.355); + c.lineTo(w * 0.0653, h * 0.24); + c.lineTo(0, h * 0.4667); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w, h * 0.65); + c.lineTo(w * 0.9348, h * 0.52); + c.lineTo(w * 0.6674, h * 0.7667); + c.lineTo(w * 0.5337, h * 0.7667); + c.lineTo(w * 0.6, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6, h); + c.lineTo(w * 0.5359, h * 0.77); + c.lineTo(w * 0.0674, h * 0.355); + c.lineTo(w * 0.0653, h * 0.24); + c.lineTo(0, h * 0.4667); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.9348, h * 0.42); + c.lineTo(w * 0.9348, h * 0.52); + c.moveTo(w * 0.6663, h * 0.7667); + c.lineTo(w * 0.6, h); + c.moveTo(w * 0.0652, h * 0.355); + c.lineTo(0, h * 0.4733); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w, h * 0.6483); + c.lineTo(w * 0.9316, h * 0.4133); + c.lineTo(w * 0.4674, 0); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.0641, h * 0.2367); + c.lineTo(0, h * 0.465); + c.lineTo(w * 0.6, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSnapshot.prototype.cst.SNAPSHOT, mxShapeAws3dSnapshot); + +function mxShapeAws3dApplication(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dApplication, mxShape); +mxShapeAws3dApplication.prototype.cst = { + APPLICATION: 'mxgraph.aws3d.application', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dApplication.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 62; + var strokeWidth2 = strokeWidth * h / 68.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, h * 0.5015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.5015); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, h * 0.5015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.5015); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.6694, h * 0.0872); + c.lineTo(w * 0.7629, h * 0.1337); + c.lineTo(w * 0.2661, h * 0.3882); + c.lineTo(w * 0.2661, h * 0.5407); + c.lineTo(w * 0.1742, h * 0.4953); + c.lineTo(w * 0.1742, h * 0.3459); + c.close(); + c.moveTo(w * 0.8629, h * 0.1846); + c.lineTo(w * 0.379, h * 0.4331); + c.lineTo(w * 0.379, h * 0.5945); + c.lineTo(w * 0.2855, h * 0.5494); + c.lineTo(w * 0.2855, h * 0.3953); + c.lineTo(w * 0.7839, h * 0.1439); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplication.prototype.cst.APPLICATION, mxShapeAws3dApplication); + +function mxShapeAws3dApplicationServer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dApplicationServer, mxShape); +mxShapeAws3dApplicationServer.prototype.cst = { + APPLICATION_SERVER: 'mxgraph.aws3d.application_server', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dApplicationServer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 124; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dApplicationServer.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7236); + c.lineTo(0, h * 0.2863); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2863); + c.lineTo(w, h * 0.7236); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dApplicationServer.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplicationServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7177); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(w, h * 0.7177); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7177); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(w, h * 0.7177); + c.close(); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.4435); + c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.374, h * 0.4153); + c.lineTo(w * 0.4797, h * 0.3548); + c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.5203, h * 0.3548); + c.lineTo(w * 0.626, h * 0.4153); + c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.626, h * 0.4411); + c.lineTo(w * 0.5203, h * 0.5016); + c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.4797, h * 0.5016); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7236); + c.lineTo(0, h * 0.2863); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2863); + c.lineTo(w, h * 0.7236); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplicationServer.prototype.cst.APPLICATION_SERVER, mxShapeAws3dApplicationServer); + +function mxShapeAws3dCloudFront(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dCloudFront, mxShape); +mxShapeAws3dCloudFront.prototype.cst = { + CLOUDFRONT: 'mxgraph.aws3d.cloudfront', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dCloudFront.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 103.8; + var strokeWidth2 = strokeWidth * h / 169.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.lineTo(w * 0.0588, h * 0.1036); + c.lineTo(w * 0.3526, 0); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8316); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.5877, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCloudFront.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.0588, h * 0.106); + c.lineTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.6474, h * 0.9352); + c.lineTo(w * 0.7052, h); + c.lineTo(w * 0.5915, h); + c.lineTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8363); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.6474, h * 0.9305); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(w * 0.0559, h * 0.7291); + c.lineTo(w * 0.6474, h * 0.9364); + c.lineTo(w * 0.5896, h); + c.moveTo(w * 0.6493, h * 0.9364); + c.lineTo(w * 0.9412, h * 0.8333); + c.lineTo(w, h * 0.894); + c.stroke(); + c.begin(); + c.moveTo(w * 0.0588, h * 0.106); + c.lineTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.6474, h * 0.9352); + c.lineTo(w * 0.7052, h); + c.lineTo(w * 0.5915, h); + c.lineTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8363); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.6474, h * 0.9305); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3333, h * 0.6643); + c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.2351, h * 0.6042); + c.arcTo(w * 0.4528, h * 0.2768, 0, 0, 1, w * 0.1724, h * 0.523); + c.lineTo(w * 0.2428, h * 0.5677); + c.lineTo(w * 0.2427, h * 0.5895); + c.lineTo(w * 0.2765, h * 0.5995); + c.close(); + c.moveTo(w * 0.1599, h * 0.4935); + c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.1522, h * 0.4146); + c.arcTo(w * 0.1156, h * 0.0883, 0, 0, 1, w * 0.2071, h * 0.3486); + c.lineTo(w * 0.2013, h * 0.4187); + c.lineTo(w * 0.1859, h * 0.4146); + c.lineTo(w * 0.1859, h * 0.4464); + c.lineTo(w * 0.1907, h * 0.4493); + c.close(); + c.moveTo(w * 0.2235, h * 0.3445); + c.arcTo(w * 0.1927, h * 0.1767, 0, 0, 1, w * 0.368, h * 0.361); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.468, h * 0.4299); + c.lineTo(w * 0.368, h * 0.4034); + c.lineTo(w * 0.368, h * 0.394); + c.lineTo(w * 0.3256, h * 0.3799); + c.lineTo(w * 0.3256, h * 0.3887); + c.close(); + c.moveTo(w * 0.4855, h * 0.4499); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5337, h * 0.5395); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5328, h * 0.6302); + c.lineTo(w * 0.4952, h * 0.5589); + c.lineTo(w * 0.5019, h * 0.5595); + c.lineTo(w * 0.5019, h * 0.5265); + c.lineTo(w * 0.4855, h * 0.5194); + c.close(); + c.moveTo(w * 0.5241, h * 0.6455); + c.arcTo(w * 0.0963, h * 0.0589, 0, 0, 1, w * 0.4663, h * 0.682); + c.arcTo(w * 0.1445, h * 0.0883, 0, 0, 1, w * 0.3642, h * 0.6761); + c.lineTo(w * 0.4239, h * 0.6525); + c.lineTo(w * 0.4566, h * 0.6643); + c.lineTo(w * 0.4566, h * 0.6413); + c.close(); + c.moveTo(w * 0.3507, h * 0.6667); + c.lineTo(w * 0.2871, h * 0.5919); + c.lineTo(w * 0.4123, h * 0.6366); + c.close(); + c.moveTo(w * 0.2563, h * 0.5595); + c.lineTo(w * 0.1753, h * 0.5088); + c.lineTo(w * 0.2052, h * 0.4594); + c.close(); + c.moveTo(w * 0.2139, h * 0.4229); + c.lineTo(w * 0.2197, h * 0.3528); + c.lineTo(w * 0.3256, h * 0.4028); + c.lineTo(w * 0.2283, h * 0.4252); + c.close(); + c.moveTo(w * 0.2264, h * 0.4417); + c.lineTo(w * 0.3218, h * 0.4146); + c.lineTo(w * 0.3353, h * 0.4181); + c.lineTo(w * 0.3353, h * 0.4971); + c.lineTo(w * 0.3208, h * 0.4912); + c.lineTo(w * 0.3208, h * 0.4965); + c.lineTo(w * 0.2264, h * 0.4482); + c.close(); + c.moveTo(w * 0.2697, h * 0.5618); + c.lineTo(w * 0.2245, h * 0.4635); + c.lineTo(w * 0.2331, h * 0.4588); + c.lineTo(w * 0.3256, h * 0.5112); + c.lineTo(w * 0.3237, h * 0.5241); + c.close(); + c.moveTo(w * 0.2852, h * 0.576); + c.lineTo(w * 0.2852, h * 0.5654); + c.lineTo(w * 0.3391, h * 0.53); + c.lineTo(w * 0.3516, h * 0.5347); + c.lineTo(w * 0.4133, h * 0.6213); + c.close(); + c.moveTo(w * 0.368, h * 0.5141); + c.lineTo(w * 0.368, h * 0.5088); + c.lineTo(w * 0.3526, h * 0.5029); + c.lineTo(w * 0.3526, h * 0.4234); + c.lineTo(w * 0.3622, h * 0.4276); + c.lineTo(w * 0.4547, h * 0.5177); + c.lineTo(w * 0.4557, h * 0.5277); + c.close(); + c.moveTo(w * 0.3671, h * 0.417); + c.lineTo(w * 0.4692, h * 0.4411); + c.lineTo(w * 0.4721, h * 0.52); + c.close(); + c.moveTo(w * 0.368, h * 0.5253); + c.lineTo(w * 0.4566, h * 0.5359); + c.lineTo(w * 0.4566, h * 0.5453); + c.lineTo(w * 0.4663, h * 0.5465); + c.lineTo(w * 0.4335, h * 0.6201); + c.lineTo(w * 0.422, h * 0.616); + c.lineTo(w * 0.368, h * 0.5389); + c.close(); + c.moveTo(w * 0.4798, h * 0.5583); + c.lineTo(w * 0.5183, h * 0.629); + c.lineTo(w * 0.4557, h * 0.6313); + c.lineTo(w * 0.4557, h * 0.6237); + c.lineTo(w * 0.447, h * 0.6225); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.lineTo(w * 0.0588, h * 0.1036); + c.lineTo(w * 0.3526, 0); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8316); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.5877, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dCloudFront.prototype.cst.CLOUDFRONT, mxShapeAws3dCloudFront); + +function mxShapeAws3dDataCenter(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDataCenter, mxShape); +mxShapeAws3dDataCenter.prototype.cst = { + DATA_CENTER: 'mxgraph.aws3d.dataCenter', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dDataCenter.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 142; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7465); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataCenter.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.7465); + c.lineTo(w, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w, h * 0.7465); + c.lineTo(w, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineCap('round'); + c.setStrokeWidth(3 * strokeWidth); + c.begin(); + c.moveTo(w * 0.0894, h * 0.3838); + c.lineTo(w * 0.4187, h * 0.5493); + c.moveTo(w * 0.0894, h * 0.4331); + c.lineTo(w * 0.4187, h * 0.5986); + c.moveTo(w * 0.0894, h * 0.4824); + c.lineTo(w * 0.4187, h * 0.6479); + c.moveTo(w * 0.5854, h * 0.5493); + c.lineTo(w * 0.9146, h * 0.3838); + c.moveTo(w * 0.5854, h * 0.5986); + c.lineTo(w * 0.9146, h * 0.4331); + c.moveTo(w * 0.5854, h * 0.6479); + c.lineTo(w * 0.9146, h * 0.4824); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7465); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDataCenter.prototype.cst.DATA_CENTER, mxShapeAws3dDataCenter); + +function mxShapeAws3dDataServer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDataServer, mxShape); +mxShapeAws3dDataServer.prototype.cst = { + DATA_SERVER: 'mxgraph.aws3d.dataServer', + SHADINC_COLORS: 'shadingCols' +}; + +mxShapeAws3dDataServer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 106; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineCap('round'); + c.setStrokeWidth(3 * strokeWidth); + c.begin(); + c.moveTo(w * 0.0878, h * 0.4858); + c.lineTo(w * 0.4187, h * 0.7094); + c.moveTo(w * 0.587, h * 0.7094); + c.lineTo(w * 0.9187, h * 0.4858); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDataServer.prototype.cst.DATA_SERVER, mxShapeAws3dDataServer); + +function mxShapeAws3dElasticLoadBalancing(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dElasticLoadBalancing, mxShape); +mxShapeAws3dElasticLoadBalancing.prototype.cst = { + ELASTIC_LOAD_BALANCING: 'mxgraph.aws3d.elasticLoadBalancing', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dElasticLoadBalancing.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 88.17; + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7996); + c.lineTo(0, h * 0.1985); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w, h * 0.1985); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticLoadBalancing.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.4026); + c.lineTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.6685, h * 0.6011); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.lineTo(0, h * 0.7996); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6685, h * 0.6011); + c.lineTo(w, h * 0.4026); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.4026); + c.lineTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.6685, h * 0.6011); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.lineTo(0, h * 0.7996); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.6685, h * 0.6011); + c.lineTo(w, h * 0.4026); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.close(); + c.moveTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.3315, h); + c.stroke(); + c.restore(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.337, h * 0.1395); + c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.5, h * 0.1191); + c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.6739, h * 0.1645); + c.arcTo(w * 0.3261, h * 0.2155, 0, 0, 1, w * 0.8152, h * 0.3176); + c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.75, h * 0.4367); + c.arcTo(w * 0.3261, h * 0.3403, 0, 0, 1, w * 0.6033, h * 0.4854); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.4348, h * 0.4741); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2848, h * 0.4094); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2065, h * 0.3062); + c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.2446, h * 0.1928); + c.arcTo(w * 0.2717, h * 0.1701, 0, 0, 1, w * 0.337, h * 0.1395); + c.fill(); + c.restore(); + c.begin(); + c.moveTo(w * 0.2826, h * 0.372); + c.lineTo(w * 0.362, h * 0.3232); + c.lineTo(w * 0.4054, h * 0.3482); + c.lineTo(w * 0.4457, h * 0.2654); + c.lineTo(w * 0.4185, h * 0.2643); + c.lineTo(w * 0.4728, h * 0.2132); + c.lineTo(w * 0.4348, h * 0.1928); + c.lineTo(w * 0.5141, h * 0.144); + c.lineTo(w * 0.5837, h * 0.1883); + c.lineTo(w * 0.5043, h * 0.2348); + c.lineTo(w * 0.4848, h * 0.2223); + c.lineTo(w * 0.4967, h * 0.2688); + c.lineTo(w * 0.463, h * 0.2665); + c.lineTo(w * 0.4304, h * 0.3346); + c.lineTo(w * 0.4946, h * 0.2949); + c.lineTo(w * 0.4761, h * 0.2858); + c.lineTo(w * 0.5511, h * 0.2631); + c.lineTo(w * 0.5261, h * 0.2472); + c.lineTo(w * 0.6043, h * 0.1996); + c.lineTo(w * 0.6761, h * 0.2404); + c.lineTo(w * 0.5978, h * 0.2892); + c.lineTo(w * 0.5652, h * 0.2699); + c.lineTo(w * 0.5293, h * 0.3198); + c.lineTo(w * 0.5087, h * 0.3051); + c.lineTo(w * 0.4543, h * 0.3391); + c.lineTo(w * 0.563, h * 0.3221); + c.lineTo(w * 0.5598, h * 0.3017); + c.lineTo(w * 0.6326, h * 0.3096); + c.lineTo(w * 0.6163, h * 0.2994); + c.lineTo(w * 0.6957, h * 0.2529); + c.lineTo(w * 0.7674, h * 0.2938); + c.lineTo(w * 0.687, h * 0.3425); + c.lineTo(w * 0.6489, h * 0.321); + c.lineTo(w * 0.5707, h * 0.3539); + c.lineTo(w * 0.5674, h * 0.3369); + c.lineTo(w * 0.4293, h * 0.3618); + c.lineTo(w * 0.4641, h * 0.3834); + c.lineTo(w * 0.3859, h * 0.4299); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7996); + c.lineTo(0, h * 0.1985); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w, h * 0.1985); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticLoadBalancing.prototype.cst.ELASTIC_LOAD_BALANCING, mxShapeAws3dElasticLoadBalancing); + +function mxShapeAws3dInstance(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dInstance, mxShape); +mxShapeAws3dInstance.prototype.cst = { + INSTANCE: 'mxgraph.aws3d.instance', + SHADIG_COLORS: 'shadingCols' +}; + +mxShapeAws3dInstance.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 97; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dInstance.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.634); + c.lineTo(0, h * 0.2732); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.622, 0); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.634); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dInstance.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInstance.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2732); + c.lineTo(w * 0.5, h * 0.6392); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.634); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6392); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.6392); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2732); + c.lineTo(w * 0.5, h * 0.6392); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.634); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.6392); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.6392); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.4742); + c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.374, h * 0.4381); + c.lineTo(w * 0.4797, h * 0.3608); + c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.5203, h * 0.3608); + c.lineTo(w * 0.626, h * 0.4381); + c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.626, h * 0.4711); + c.lineTo(w * 0.5203, h * 0.5485); + c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.4797, h * 0.5485); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.634); + c.lineTo(0, h * 0.2732); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.622, 0); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.634); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dInstance.prototype.cst.INSTANCE, mxShapeAws3dInstance); + +function mxShapeAws3dInternetGateway(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dInternetGateway, mxShape); +mxShapeAws3dInternetGateway.prototype.cst = { + INTERNET_GATEWAY: 'mxgraph.aws3d.internetGateway', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dInternetGateway.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dInternetGateway.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.fillAndStroke(); + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dInternetGateway.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7849, h * 0.5039); + c.arcTo(w * 0.0343, h * 0.0632, 0, 0, 1, w * 0.7481, h * 0.4796); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.7661, h * 0.3911); + c.arcTo(w * 0.06, h * 0.0681, 0, 0, 1, w * 0.7712, h * 0.3356); + c.arcTo(w * 0.0257, h * 0.0292, 0, 0, 1, w * 0.7952, h * 0.32); + c.arcTo(w * 0.1285, h * 0.1459, 0, 0, 1, w * 0.8166, h * 0.2461); + c.arcTo(w * 0.06, h * 0.0973, 0, 0, 1, w * 0.8595, h * 0.2238); + c.arcTo(w * 0.0514, h * 0.0973, 0, 0, 1, w * 0.8937, h * 0.2743); + c.arcTo(w * 0.0428, h * 0.0778, 0, 0, 1, w * 0.9323, h * 0.3093); + c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.928, h * 0.3716); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8972, h * 0.4125); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dInternetGateway.prototype.cst.INTERNET_GATEWAY, mxShapeAws3dInternetGateway); + +function mxShapeAws3dOracleDataCenter(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dOracleDataCenter, mxShape); +mxShapeAws3dOracleDataCenter.prototype.cst = { + ORACLE_DATA_CENTER: 'mxgraph.aws3d.oracleDataCenter' +}; + +mxShapeAws3dOracleDataCenter.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 142; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleDataCenter.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleDataCenter.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#ff0000'); + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.lineTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.fill(); + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.moveTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.stroke(); + c.begin(); + c.moveTo(w * 0.0813, h * 0.7113); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549); + c.lineTo(w * 0.122, h * 0.6754); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232); + c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296); + c.close(); + c.moveTo(w * 0.1163, h * 0.7183); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831); + c.lineTo(w * 0.087, h * 0.6676); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697); + c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035); + c.close(); + c.moveTo(w * 0.1439, h * 0.743); + c.lineTo(w * 0.1439, h * 0.6866); + c.lineTo(w * 0.1846, h * 0.707); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738); + c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743); + c.lineTo(w * 0.1992, h * 0.769); + c.lineTo(w * 0.187, h * 0.7641); + c.lineTo(w * 0.1577, h * 0.7218); + c.lineTo(w * 0.1854, h * 0.7345); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155); + c.lineTo(w * 0.1528, h * 0.7007); + c.lineTo(w * 0.1528, h * 0.7472); + c.close(); + c.moveTo(w * 0.2008, h * 0.7711); + c.lineTo(w * 0.2293, h * 0.7338); + c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415); + c.lineTo(w * 0.2699, h * 0.8035); + c.lineTo(w * 0.2602, h * 0.8007); + c.lineTo(w * 0.252, h * 0.7859); + c.lineTo(w * 0.2293, h * 0.7754); + c.lineTo(w * 0.2244, h * 0.7634); + c.lineTo(w * 0.248, h * 0.7739); + c.lineTo(w * 0.235, h * 0.7444); + c.lineTo(w * 0.2122, h * 0.7768); + c.close(); + c.moveTo(w * 0.3244, h * 0.8225); + c.lineTo(w * 0.3171, h * 0.8289); + c.lineTo(w * 0.2854, h * 0.8127); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757); + c.lineTo(w * 0.3228, h * 0.7761); + c.lineTo(w * 0.3179, h * 0.7831); + c.lineTo(w * 0.2878, h * 0.7683); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042); + c.close(); + c.moveTo(w * 0.3276, h * 0.7789); + c.lineTo(w * 0.3366, h * 0.7831); + c.lineTo(w * 0.3366, h * 0.8289); + c.lineTo(w * 0.3805, h * 0.8507); + c.lineTo(w * 0.3748, h * 0.857); + c.lineTo(w * 0.3317, h * 0.8359); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275); + c.close(); + c.moveTo(w * 0.435, h * 0.8775); + c.lineTo(w * 0.4325, h * 0.8866); + c.lineTo(w * 0.3959, h * 0.8683); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563); + c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134); + c.lineTo(w * 0.435, h * 0.8324); + c.lineTo(w * 0.4285, h * 0.838); + c.lineTo(w * 0.4008, h * 0.8246); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831); + c.lineTo(w * 0.4333, h * 0.8542); + c.lineTo(w * 0.426, h * 0.8606); + c.lineTo(w * 0.3878, h * 0.8415); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585); + c.close(); + c.moveTo(w * 0.6171, h * 0.8063); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592); + c.lineTo(w * 0.5894, h * 0.8761); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458); + c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246); + c.close(); + c.moveTo(w * 0.5886, h * 0.8296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676); + c.lineTo(w * 0.6163, h * 0.8528); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155); + c.close(); + c.moveTo(w * 0.64, h * 0.85); + c.lineTo(w * 0.64, h * 0.7930); + c.lineTo(w * 0.6854, h * 0.7718); + c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127); + c.lineTo(w * 0.6992, h * 0.8218); + c.lineTo(w * 0.6854, h * 0.8282); + c.lineTo(w * 0.6569, h * 0.8141); + c.lineTo(w * 0.6805, h * 0.8021); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831); + c.lineTo(w * 0.6528, h * 0.7979); + c.lineTo(w * 0.6528, h * 0.8437); + c.close(); + c.moveTo(w * 0.7, h * 0.8204); + c.lineTo(w * 0.7301, h * 0.7507); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486); + c.lineTo(w * 0.7699, h * 0.7852); + c.lineTo(w * 0.7602, h * 0.7908); + c.lineTo(w * 0.7537, h * 0.7838); + c.lineTo(w * 0.7276, h * 0.7958); + c.lineTo(w * 0.7228, h * 0.788); + c.lineTo(w * 0.748, h * 0.7768); + c.lineTo(w * 0.7358, h * 0.7585); + c.lineTo(w * 0.7114, h * 0.8155); + c.close(); + c.moveTo(w * 0.8244, h * 0.7486); + c.lineTo(w * 0.8171, h * 0.762); + c.lineTo(w * 0.7894, h * 0.7761); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507); + c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162); + c.lineTo(w * 0.822, h * 0.7035); + c.lineTo(w * 0.8171, h * 0.7155); + c.lineTo(w * 0.7902, h * 0.7296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606); + c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767); + c.close(); + c.moveTo(w * 0.8366, h * 0.6949); + c.lineTo(w * 0.8366, h * 0.7423); + c.lineTo(w * 0.878, h * 0.7231); + c.lineTo(w * 0.874, h * 0.7338); + c.lineTo(w * 0.8333, h * 0.7535); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75); + c.lineTo(w * 0.8268, h * 0.7007); + c.close(); + c.moveTo(w * 0.9342, h * 0.6472); + c.lineTo(w * 0.9293, h * 0.6599); + c.lineTo(w * 0.9033, h * 0.6725); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817); + c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937); + c.lineTo(w * 0.9309, h * 0.6725); + c.lineTo(w * 0.9268, h * 0.6845); + c.lineTo(w * 0.887, h * 0.7035); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106); + c.lineTo(w * 0.935, h * 0.693); + c.lineTo(w * 0.9285, h * 0.7063); + c.lineTo(w * 0.9008, h * 0.7197); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.restore(); + c.setShadow(false); + c.setStrokeWidth(3 * strokeWidth); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.0894, h * 0.3838); + c.lineTo(w * 0.4187, h * 0.5493); + c.moveTo(w * 0.0894, h * 0.4331); + c.lineTo(w * 0.4187, h * 0.5986); + c.moveTo(w * 0.0894, h * 0.4824); + c.lineTo(w * 0.4187, h * 0.6479); + c.moveTo(w * 0.5854, h * 0.5492); + c.lineTo(w * 0.9146, h * 0.3838); + c.moveTo(w * 0.5854, h * 0.5986); + c.lineTo(w * 0.9146, h * 0.4331); + c.moveTo(w * 0.5854, h * 0.6479); + c.lineTo(w * 0.9146, h * 0.4824); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleDataCenter.prototype.cst.ORACLE_DATA_CENTER, mxShapeAws3dOracleDataCenter); + +function mxShapeAws3dOracleDatabaseServer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dOracleDatabaseServer, mxShape); +mxShapeAws3dOracleDatabaseServer.prototype.cst = { + ORACLE_DB_SERVER: 'mxgraph.aws3d.oracleDbServer' +}; + +mxShapeAws3dOracleDatabaseServer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 142; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleDatabaseServer.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleDatabaseServer.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#ff0000'); + c.begin(); + c.moveTo(0, h * 0.5586); + c.lineTo(w * 0.5, h * 0.8248); + c.lineTo(w, h * 0.5586); + c.lineTo(w, h * 0.6782); + c.lineTo(w * 0.5, h * 0.9453); + c.lineTo(0, h * 0.6782); + c.fill(); + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(0, h * 0.5586); + c.lineTo(w * 0.5, h * 0.8248); + c.lineTo(w, h * 0.5586); + c.moveTo(w, h * 0.6782); + c.lineTo(w * 0.5, h * 0.9453); + c.lineTo(0, h * 0.6782); + c.stroke(); + c.begin(); + c.moveTo(w * 0.0813, h * 0.6918); + c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.065, h * 0.6616); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.065, h * 0.6384); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.0797, h * 0.6315); + c.lineTo(w * 0.122, h * 0.6534); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.1358, h * 0.673); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.139, h * 0.7045); + c.arcTo(w * 0.0179, h * 0.0165, 0, 0, 1, w * 0.1187, h * 0.7113); + c.close(); + c.moveTo(w * 0.1163, h * 0.6992); + c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.1285, h * 0.6955); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1293, h * 0.6819); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1179, h * 0.6616); + c.lineTo(w * 0.087, h * 0.6451); + c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.0764, h * 0.6473); + c.arcTo(w * 0.0325, h * 0.0376, 0, 0, 0, w * 0.078, h * 0.673); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.087, h * 0.6834); + c.close(); + c.moveTo(w * 0.1439, h * 0.7256); + c.lineTo(w * 0.1439, h * 0.6654); + c.lineTo(w * 0.1846, h * 0.6872); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.1967, h * 0.6992); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2, h * 0.7203); + c.arcTo(w * 0.0138, h * 0.0165, 0, 0, 1, w * 0.1813, h * 0.7256); + c.lineTo(w * 0.1992, h * 0.7534); + c.lineTo(w * 0.187, h * 0.7481); + c.lineTo(w * 0.1577, h * 0.7029); + c.lineTo(w * 0.1854, h * 0.7165); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.1911, h * 0.7135); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 0, w * 0.1894, h * 0.7037); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.1821, h * 0.6962); + c.lineTo(w * 0.1528, h * 0.6804); + c.lineTo(w * 0.1528, h * 0.7301); + c.close(); + c.moveTo(w * 0.2008, h * 0.7556); + c.lineTo(w * 0.2293, h * 0.7158); + c.arcTo(w * 0.0065, h * 0.006, 0, 0, 1, w * 0.2382, h * 0.7143); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2431, h * 0.724); + c.lineTo(w * 0.2699, h * 0.7902); + c.lineTo(w * 0.2602, h * 0.7872); + c.lineTo(w * 0.252, h * 0.7714); + c.lineTo(w * 0.2293, h * 0.7602); + c.lineTo(w * 0.2244, h * 0.7474); + c.lineTo(w * 0.248, h * 0.7586); + c.lineTo(w * 0.235, h * 0.7271); + c.lineTo(w * 0.2122, h * 0.7617); + c.close(); + c.moveTo(w * 0.3244, h * 0.8105); + c.lineTo(w * 0.3171, h * 0.8173); + c.lineTo(w * 0.2854, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2724, h * 0.785); + c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.265, h * 0.7593); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2683, h * 0.7459); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.2829, h * 0.7405); + c.lineTo(w * 0.3228, h * 0.7609); + c.lineTo(w * 0.3179, h * 0.7684); + c.lineTo(w * 0.2878, h * 0.7526); + c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.2789, h * 0.7541); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.2748, h * 0.7684); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.2878, h * 0.7909); + c.close(); + c.moveTo(w * 0.3276, h * 0.7639); + c.lineTo(w * 0.3366, h * 0.7684); + c.lineTo(w * 0.3366, h * 0.8173); + c.lineTo(w * 0.3805, h * 0.8406); + c.lineTo(w * 0.3748, h * 0.8473); + c.lineTo(w * 0.3317, h * 0.8248); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3276, h * 0.8158); + c.close(); + c.moveTo(w * 0.435, h * 0.8692); + c.lineTo(w * 0.4325, h * 0.8789); + c.lineTo(w * 0.3959, h * 0.8594); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.3862, h * 0.8466); + c.arcTo(w * 0.0528, h * 0.0489, 0, 0, 1, w * 0.3805, h * 0.806); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3951, h * 0.8008); + c.lineTo(w * 0.435, h * 0.821); + c.lineTo(w * 0.4285, h * 0.827); + c.lineTo(w * 0.4008, h * 0.8127); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.3878, h * 0.8196); + c.lineTo(w * 0.4333, h * 0.8443); + c.lineTo(w * 0.426, h * 0.8512); + c.lineTo(w * 0.3878, h * 0.8308); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.3976, h * 0.8489); + c.close(); + c.moveTo(w * 0.6171, h * 0.7932); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.6366, h * 0.7963); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 1, w * 0.639, h * 0.8188); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.6211, h * 0.8497); + c.lineTo(w * 0.5894, h * 0.8677); + c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 1, w * 0.565, h * 0.8646); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.5659, h * 0.8354); + c.arcTo(w * 0.0488, h * 0.0451, 0, 0, 1, w * 0.5805, h * 0.8127); + c.close(); + c.moveTo(w * 0.5886, h * 0.8181); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.5748, h * 0.8368); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.574, h * 0.8527); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.587, h * 0.8586); + c.lineTo(w * 0.6163, h * 0.8428); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.6285, h * 0.8248); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6293, h * 0.8105); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.6163, h * 0.803); + c.close(); + c.moveTo(w * 0.64, h * 0.8398); + c.lineTo(w * 0.64, h * 0.779); + c.lineTo(w * 0.6854, h * 0.7563); + c.arcTo(w * 0.0106, h * 0.0098, 0, 0, 1, w * 0.7008, h * 0.7632); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6959, h * 0.7865); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6805, h * 0.8); + c.lineTo(w * 0.6992, h * 0.8097); + c.lineTo(w * 0.6854, h * 0.8166); + c.lineTo(w * 0.6569, h * 0.8015); + c.lineTo(w * 0.6805, h * 0.7887); + c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 0, w * 0.6894, h * 0.7782); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6894, h * 0.7699); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.6837, h * 0.7684); + c.lineTo(w * 0.6528, h * 0.7842); + c.lineTo(w * 0.6528, h * 0.8331); + c.close(); + c.moveTo(w * 0.7, h * 0.8082); + c.lineTo(w * 0.7301, h * 0.7338); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7358, h * 0.7271); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7415, h * 0.7316); + c.lineTo(w * 0.7699, h * 0.7707); + c.lineTo(w * 0.7602, h * 0.7766); + c.lineTo(w * 0.7537, h * 0.7692); + c.lineTo(w * 0.7276, h * 0.782); + c.lineTo(w * 0.7228, h * 0.7736); + c.lineTo(w * 0.748, h * 0.7617); + c.lineTo(w * 0.7358, h * 0.7421); + c.lineTo(w * 0.7114, h * 0.803); + c.close(); + c.moveTo(w * 0.8244, h * 0.7316); + c.lineTo(w * 0.8171, h * 0.7459); + c.lineTo(w * 0.7894, h * 0.7609); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 1, w * 0.7683, h * 0.7593); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.7667, h * 0.7338); + c.arcTo(w * 0.0488, h * 0.0452, 0, 0, 1, w * 0.7937, h * 0.697); + c.lineTo(w * 0.822, h * 0.6834); + c.lineTo(w * 0.8171, h * 0.6962); + c.lineTo(w * 0.7902, h * 0.7113); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.778, h * 0.7256); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.7756, h * 0.7444); + c.arcTo(w * 0.0077, h * 0.0072, 0, 0, 0, w * 0.787, h * 0.7512); + c.close(); + c.moveTo(w * 0.8366, h * 0.6742); + c.lineTo(w * 0.8366, h * 0.7248); + c.lineTo(w * 0.878, h * 0.7043); + c.lineTo(w * 0.874, h * 0.7158); + c.lineTo(w * 0.8333, h * 0.7368); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 1, w * 0.8268, h * 0.7324); + c.lineTo(w * 0.8268, h * 0.6804); + c.close(); + c.moveTo(w * 0.9342, h * 0.6233); + c.lineTo(w * 0.9293, h * 0.6369); + c.lineTo(w * 0.9033, h * 0.6503); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.8927, h * 0.6601); + c.arcTo(w * 0.0406, h * 0.0376, 0, 0, 0, w * 0.887, h * 0.6729); + c.lineTo(w * 0.9309, h * 0.6503); + c.lineTo(w * 0.9268, h * 0.6631); + c.lineTo(w * 0.887, h * 0.6834); + c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.8992, h * 0.691); + c.lineTo(w * 0.935, h * 0.6722); + c.lineTo(w * 0.9285, h * 0.6864); + c.lineTo(w * 0.9008, h * 0.7007); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.8829, h * 0.7015); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.8764, h * 0.6827); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.8959, h * 0.6443); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleDatabaseServer.prototype.cst.ORACLE_DB_SERVER, mxShapeAws3dOracleDatabaseServer); + +function mxShapeAws3dRdsMaster(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dRdsMaster, mxShape); +mxShapeAws3dRdsMaster.prototype.cst = { + RDS_MASTER: 'mxgraph.aws3d.rdsMaster', + SHADIG_COLORS: 'shadingCols' +}; + +mxShapeAws3dRdsMaster.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRdsMaster.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRdsMaster.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRdsMaster.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.1878, h * 0.1932); + c.lineTo(w * 0.4854, h * 0.0414); + c.lineTo(w * 0.5886, h * 0.094); + c.lineTo(w * 0.4455, h * 0.2308); + c.lineTo(w * 0.7122, h * 0.1579); + c.lineTo(w * 0.8171, h * 0.2098); + c.lineTo(w * 0.5187, h * 0.3617); + c.lineTo(w * 0.4537, h * 0.3293); + c.lineTo(w * 0.7016, h * 0.2053); + c.lineTo(w * 0.3854, h * 0.2947); + c.lineTo(w * 0.3187, h * 0.2602); + c.lineTo(w * 0.4959, h * 0.0992); + c.lineTo(w * 0.2504, h * 0.2256); + c.close(); + c.fill(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRdsMaster.prototype.cst.RDS_MASTER, mxShapeAws3dRdsMaster); + +function mxShapeAws3dRds(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dRds, mxShape); +mxShapeAws3dRds.prototype.cst = { + RDS: 'mxgraph.aws3d.rds', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dRds.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRds.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRds.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRds.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + c.setFillColor('#ffffff'); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.6053); + c.lineTo(w * 0.5, h * 0.8722); + c.lineTo(w, h * 0.6053); + c.lineTo(w, h * 0.6278); + c.lineTo(w * 0.5, h * 0.8947); + c.lineTo(0, h * 0.6278); + c.close(); + c.fill(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRds.prototype.cst.RDS, mxShapeAws3dRds); + +function mxShapeAws3dRoute53(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dRoute53, mxShape); +mxShapeAws3dRoute53.prototype.cst = { + ROUTE_53: 'mxgraph.aws3d.route53', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dRoute53.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 117; + var strokeWidth2 = strokeWidth * h / 134.4; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRoute53.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6994); + c.lineTo(0, h * 0.2009); + c.lineTo(w * 0.0427, h * 0.0781); + c.lineTo(w * 0.7974, 0); + c.lineTo(w, h * 0.1004); + c.lineTo(w, h * 0.5915); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5983, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRoute53.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRoute53.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2009); + c.lineTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.8376, h * 0.4799); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5966, h); + c.lineTo(0, h * 0.6979); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.8348, h * 0.4861); + c.lineTo(w * 0.9985, h * 0.0992); + c.lineTo(w, h * 0.5952); + c.lineTo(w * 0.8404, h * 0.9747); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.5855, h * 0.1079); + c.arcTo(w * 0.094, h * 0.0744, 0, 0, 0, w * 0.6863, h * 0.1548); + c.arcTo(w * 0.0855, h * 0.0446, 0, 0, 0, w * 0.7761, h * 0.2031); + c.lineTo(w * 0.7726, h * 0.2455); + c.arcTo(w * 0.0769, h * 0.0298, 0, 0, 0, w * 0.694, h * 0.2693); + c.arcTo(w * 0.0684, h * 0.0446, 0, 0, 1, w * 0.5897, h * 0.3051); + c.arcTo(w * 0.4274, h * 0.372, 0, 0, 0, w * 0.4573, h * 0.2753); + c.arcTo(w * 0.0855, h * 0.0744, 0, 0, 0, w * 0.4188, h * 0.2344); + c.lineTo(w * 0.3846, h * 0.2083); + c.arcTo(w * 0.0769, h * 0.0372, 0, 0, 1, w * 0.4103, h * 0.1525); + c.arcTo(w * 0.0855, h * 0.0409, 0, 0, 0, w * 0.4906, h * 0.1079); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, h * 0.2009); + c.lineTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.8376, h * 0.4799); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5966, h); + c.lineTo(0, h * 0.6979); + c.close(); + c.moveTo(w * 0.8348, h * 0.4861); + c.lineTo(w * 0.9985, h * 0.0992); + c.lineTo(w, h * 0.5952); + c.lineTo(w * 0.8404, h * 0.9747); + c.close(); + c.moveTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.6009, h); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.6994); + c.lineTo(0, h * 0.2009); + c.lineTo(w * 0.0427, h * 0.0781); + c.lineTo(w * 0.7974, 0); + c.lineTo(w, h * 0.1004); + c.lineTo(w, h * 0.5915); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5983, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRoute53.prototype.cst.ROUTE_53, mxShapeAws3dRoute53); + +function mxShapeAws3dS3Bucket(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dS3Bucket, mxShape); +mxShapeAws3dS3Bucket.prototype.cst = { + S3_BUCKET: 'mxgraph.aws3d.s3Bucket', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dS3Bucket.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 61.5; + var strokeWidth2 = strokeWidth * h / 63.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.1951, h * 0.8307); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3Bucket.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, h * 0.5564); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.1984, h * 0.8307); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.5533); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, h * 0.5564); + c.lineTo(w, h * 0.2774); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.5564); + c.lineTo(w * 0.5, h); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5008, 0); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5008, h); + c.lineTo(w * 0.1951, h * 0.8307); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dS3Bucket.prototype.cst.S3_BUCKET, mxShapeAws3dS3Bucket); + +function mxShapeAws3dS3(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dS3, mxShape); +mxShapeAws3dS3.prototype.cst = { + S3: 'mxgraph.aws3d.s3', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dS3.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 231.5; + var strokeWidth2 = strokeWidth * h / 239; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dS3.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7782); + c.lineTo(0, h * 0.3406); + c.lineTo(w * 0.5974, 0); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6674); + c.lineTo(w * 0.3991, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dS3.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.3406); + c.lineTo(w * 0.3991, h * 0.5548); + c.lineTo(w * 0.3991, h); + c.lineTo(0, h * 0.7782); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3991, h * 0.5548); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6661); + c.lineTo(w * 0.3991, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.3406); + c.lineTo(w * 0.3991, h * 0.5548); + c.lineTo(w, h * 0.2218); + c.moveTo(w * 0.3991, h * 0.5548); + c.lineTo(w * 0.3991, h); + c.moveTo(w * 0.3991, h * 0.3335); + c.lineTo(w * 0.2009, h * 0.448); + c.lineTo(w * 0.2009, h * 0.8891); + c.moveTo(w * 0.5983, h * 0.2209); + c.lineTo(w * 0.7948, h * 0.1109); + c.moveTo(w * 0.2022, h * 0.2218); + c.lineTo(w * 0.5991, h * 0.4448); + c.lineTo(w * 0.5991, h * 0.8891); + c.moveTo(w * 0.4004, h * 0.1117); + c.lineTo(w * 0.7978, h * 0.3335); + c.lineTo(w * 0.7978, h * 0.7791); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4773, h * 0.2155); + c.arcTo(w * 0.0086, h * 0.0046, 0, 0, 1, w * 0.4903, h * 0.2096); + c.arcTo(w * 0.2808, h * 0.272, 0, 0, 1, w * 0.6004, h * 0.2619); + c.arcTo(w * 0.108, h * 0.105, 0, 0, 1, w * 0.6177, h * 0.277); + c.arcTo(w * 0.0065, h * 0.0063, 0, 0, 1, w * 0.6099, h * 0.2879); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.5378, h * 0.2607); + c.arcTo(w * 0.216, h * 0.2092, 0, 0, 1, w * 0.4773, h * 0.2155); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w * 0.4687, h * 0.2138); + c.arcTo(w * 0.1512, h * 0.1464, 0, 0, 0, w * 0.4838, h * 0.2343); + c.arcTo(w * 0.2376, h * 0.2301, 0, 0, 0, w * 0.5529, h * 0.2774); + c.arcTo(w * 0.1728, h * 0.1674, 0, 0, 0, w * 0.6091, h * 0.2954); + c.lineTo(w * 0.4946, h * 0.3339); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.4549, h * 0.3205); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.419, h * 0.3004); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.3965, h * 0.2795); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7782); + c.lineTo(0, h * 0.3406); + c.lineTo(w * 0.5974, 0); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6674); + c.lineTo(w * 0.3991, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dS3.prototype.cst.S3, mxShapeAws3dS3); + +function mxShapeAws3dSimpleDB(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSimpleDB, mxShape); +mxShapeAws3dSimpleDB.prototype.cst = { + SIMPLE_DB: 'mxgraph.aws3d.simpleDb', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSimpleDB.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSimpleDB.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSimpleDB.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.1821, h * 0.182); + c.lineTo(w * 0.4659, h * 0.0308); + c.lineTo(w * 0.822, h * 0.2218); + c.lineTo(w * 0.539, h * 0.3714); + c.close(); + c.fill(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.restore(); + c.setShadow(false); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setStrokeColor(fillColor); + c.setStrokeWidth(2.2 * strokeWidth); + c.begin(); + c.moveTo(w * 0.2382, h * 0.2218); + c.lineTo(w * 0.5415, h * 0.0602); + c.moveTo(w * 0.3821, h * 0.0564); + c.lineTo(w * 0.7737, h * 0.2656); + c.moveTo(w * 0.2967, h * 0.0915); + c.lineTo(w * 0.7114, h * 0.312); + c.moveTo(w * 0.2209, h * 0.1316); + c.lineTo(w * 0.6179, h * 0.3434); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSimpleDB.prototype.cst.SIMPLE_DB, mxShapeAws3dSimpleDB); + +function mxShapeAws3dSqs(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSqs, mxShape); +mxShapeAws3dSqs.prototype.cst = { + SQS: 'mxgraph.aws3d.sqs', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSqs.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 184; + var strokeWidth2 = strokeWidth * h / 212.75; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSqs.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.lineTo(w * 0.1658, h * 0.1666); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.8337, h * 0.1666); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSqs.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSqs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.1658, h * 0.1671); + c.lineTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.3344); + c.lineTo(w * 0.8332, h * 0.1671); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7509); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.6674, h * 0.0844); + c.lineTo(w * 0.3337, h * 0.2512); + c.lineTo(w * 0.25, h * 0.7109); + c.lineTo(w * 0.25, h * 0.8736); + c.moveTo(w * 0.3326, h * 0.0839); + c.lineTo(w * 0.6674, h * 0.2512); + c.lineTo(w * 0.75, h * 0.7053); + c.lineTo(w * 0.75, h * 0.874); + c.moveTo(0, h * 0.584); + c.lineTo(w * 0.5, h * 0.8331); + c.lineTo(w, h * 0.584); + c.moveTo(w * 0.1658, h * 0.1671); + c.lineTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.8332, h * 0.1671); + c.moveTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.5, h); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3337, h * 0.1511); + c.lineTo(w * 0.4668, h * 0.0848); + c.lineTo(w * 0.6663, h * 0.184); + c.lineTo(w * 0.5337, h * 0.2503); + c.close(); + c.fill(); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(w * 0.3902, h * 0.153); + c.lineTo(w * 0.4701, h * 0.113); + c.lineTo(w * 0.4701, h * 0.153); + c.close(); + c.moveTo(w * 0.4402, h * 0.1784); + c.lineTo(w * 0.5196, h * 0.1384); + c.lineTo(w * 0.5196, h * 0.1784); + c.close(); + c.moveTo(w * 0.4908, h * 0.2033); + c.lineTo(w * 0.5701, h * 0.1633); + c.lineTo(w * 0.5701, h * 0.2033); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.lineTo(w * 0.1658, h * 0.1666); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.8337, h * 0.1666); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSqs.prototype.cst.SQS, mxShapeAws3dSqs); + +function mxShapeAws3dVpcGateway(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dVpcGateway, mxShape); +mxShapeAws3dVpcGateway.prototype.cst = { + VPC_GATEWAY: 'mxgraph.aws3d.vpcGateway', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dVpcGateway.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dVpcGateway.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.1054, 0); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3188, h * 0.7247); + c.close(); + c.fillAndStroke(); + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.3162, h * 0.2072); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.3162, h * 0.2072); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.3162, h * 0.2072); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.3162, h * 0.2072); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.1054, 0); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3188, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.6829, h * 0.1031); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.lineTo(w * 0.8946, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dVpcGateway.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.8946, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.8946, h); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.8946, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.8946, h); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.6829, h * 0.1031); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.lineTo(w * 0.8946, h); + c.close(); + c.stroke(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.5587, h * 0.7743); + c.lineTo(w * 0.5587, h * 0.6274); + c.lineTo(w * 0.5775, h * 0.6342); + c.lineTo(w * 0.5775, h * 0.57); + c.arcTo(w * 0.0428, h * 0.0486, 0, 0, 1, w * 0.6058, h * 0.5253); + c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.6564, h * 0.5447); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.6847, h * 0.607); + c.lineTo(w * 0.6847, h * 0.6877); + c.lineTo(w * 0.7001, h * 0.6946); + c.lineTo(w * 0.7001, h * 0.8405); + c.close(); + c.moveTo(w * 0.6564, h * 0.6741); + c.lineTo(w * 0.6564, h * 0.6177); + c.arcTo(w * 0.06, h * 0.0681, 0, 0, 0, w * 0.6392, h * 0.57); + c.arcTo(w * 0.0343, h * 0.0389, 0, 0, 0, w * 0.6195, h * 0.5574); + c.arcTo(w * 0.0111, h * 0.0126, 0, 0, 0, w * 0.6058, h * 0.5691); + c.lineTo(w * 0.6058, h * 0.6498); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dVpcGateway.prototype.cst.VPC_GATEWAY, mxShapeAws3dVpcGateway); + +function mxShapeAws3dWebServer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dWebServer, mxShape); +mxShapeAws3dWebServer.prototype.cst = { + WEB_SERVER: 'mxgraph.aws3d.webServer', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dWebServer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 106; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dWebServer.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dWebServer.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWebServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6651); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6651); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6651); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6651); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.5189); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.374, h * 0.4858); + c.lineTo(w * 0.4797, h * 0.4151); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.5203, h * 0.4151); + c.lineTo(w * 0.626, h * 0.4858); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.626, h * 0.516); + c.lineTo(w * 0.5203, h * 0.5868); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.4797, h * 0.5868); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWebServer.prototype.cst.WEB_SERVER, mxShapeAws3dWebServer); + +function mxShapeAws3dDynamoDB(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDynamoDB, mxShape); +mxShapeAws3dDynamoDB.prototype.cst = { + DYNAMO_DB: 'mxgraph.aws3d.dynamoDb', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dDynamoDB.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dDynamoDB.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8333); + c.lineTo(0, h * 0.1667); + c.lineTo(w * 0.3333, h * 0.0014); + c.lineTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6639, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.8333); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5014, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dDynamoDB.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(0, h * 0.3333); + c.lineTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8333); + c.lineTo(0, h * 0.1714); + c.close(); + c.moveTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6667, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w * 0.832, h * 0.3348); + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w * 0.5014, h * 0.5); + c.lineTo(w * 0.832, h * 0.3348); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.4986, h * 0.5); + c.lineTo(w * 0.4986, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.832, h * 0.3348); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.831); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(0, h * 0.3333); + c.lineTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8333); + c.lineTo(0, h * 0.1714); + c.close(); + c.moveTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6667, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w * 0.832, h * 0.3348); + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w * 0.5014, h * 0.5); + c.lineTo(w * 0.832, h * 0.3348); + c.close(); + c.moveTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.4986, h * 0.5); + c.lineTo(w * 0.4986, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w, h * 0.3333); + c.lineTo(w, h * 0.831); + c.close(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(w * 0.5, h * 0.1667); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(w * 0.5014, h * 0.5); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4876, h * 0.2262); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5647, h * 0.25); + c.arcTo(w * 0.4407, h * 0.381, 0, 0, 1, w * 0.6419, h * 0.2905); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.6799, h * 0.32); + c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.6634, h * 0.3314); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5978, h * 0.3119); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.508, h * 0.2667); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.4711, h * 0.2343); + c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.4876, h * 0.2262); + c.close(); + c.fill(); + c.begin(); + c.moveTo(w * 0.5124, h * 0.4143); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.4683, h * 0.4095); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3829, h * 0.3757); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3196, h * 0.3371); + c.arcTo(w * 0.0661, h * 0.0357, 0, 0, 1, w * 0.3058, h * 0.3081); + c.lineTo(w * 0.4612, h * 0.2333); + c.arcTo(w * 0.0661, h * 0.0476, 0, 0, 0, w * 0.4744, h * 0.2548); + c.arcTo(w * 0.3306, h * 0.2857, 0, 0, 0, w * 0.53, h * 0.2905); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 0, w * 0.6198, h * 0.3295); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.665, h * 0.3367); + c.close(); + c.moveTo(w * 0.5052, h * 0.3714); + c.arcTo(w * 0.0275, h * 0.019, 0, 0, 1, w * 0.5135, h * 0.3581); + c.arcTo(w * 0.0275, h * 0.0238, 0, 0, 1, w * 0.5344, h * 0.3571); + c.lineTo(w * 0.5405, h * 0.3471); + c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.5278, h * 0.3381); + c.arcTo(w * 0.022, h * 0.0119, 0, 0, 1, w * 0.5372, h * 0.3271); + c.lineTo(w * 0.5306, h * 0.3186); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.5041, h * 0.3143); + c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.4975, h * 0.3029); + c.lineTo(w * 0.4777, h * 0.2995); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4628, h * 0.3033); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4408, h * 0.2967); + c.lineTo(w * 0.4187, h * 0.3); + c.arcTo(w * 0.011, h * 0.0081, 0, 0, 1, w * 0.4132, h * 0.3124); + c.arcTo(w * 0.0386, h * 0.0333, 0, 0, 1, w * 0.395, h * 0.3129); + c.lineTo(w * 0.3873, h * 0.3224); + c.arcTo(w * 0.0165, h * 0.0143, 0, 0, 1, w * 0.3994, h * 0.3333); + c.arcTo(w * 0.0138, h * 0.0119, 0, 0, 1, w * 0.3901, h * 0.3433); + c.lineTo(w * 0.3994, h * 0.3514); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4215, h * 0.3548); + c.arcTo(w * 0.0165, h * 0.0119, 0, 0, 1, w * 0.4298, h * 0.3667); + c.lineTo(w * 0.449, h * 0.3714); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4711, h * 0.3657); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4887, h * 0.3724); + c.close(); + c.moveTo(w * 0.4986, h * 0.351); + c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 1, w * 0.4804, h * 0.3552); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.443, h * 0.349); + c.lineTo(w * 0.4413, h * 0.3529); + c.lineTo(w * 0.4242, h * 0.3371); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4545, h * 0.3462); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4793, h * 0.3476); + c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 0, w * 0.4986, h * 0.3448); + c.close(); + c.moveTo(w * 0.503, h * 0.3349); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4766, h * 0.3233); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 0, w * 0.4529, h * 0.32); + c.arcTo(w * 0.0551, h * 0.0476, 0, 0, 0, w * 0.4325, h * 0.3238); + c.lineTo(w * 0.427, h * 0.3195); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4556, h * 0.3157); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4851, h * 0.3232); + c.lineTo(w * 0.4876, h * 0.3181); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8333); + c.lineTo(0, h * 0.1667); + c.lineTo(w * 0.3333, h * 0.0014); + c.lineTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6639, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.8333); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5014, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDynamoDB.prototype.cst.DYNAMO_DB, mxShapeAws3dDynamoDB); + +function mxShapeAws3dElasticMapReduce(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dElasticMapReduce, mxShape); +mxShapeAws3dElasticMapReduce.prototype.cst = { + ELASTIC_MAP_REDUCE: 'mxgraph.aws3d.elasticMapReduce', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dElasticMapReduce.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dElasticMapReduce.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dElasticMapReduce.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.3336, h * 0.1789); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.359, h * 0.1789); + c.lineTo(w * 0.4001, h * 0.2015); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4008, h * 0.2135); + c.lineTo(w * 0.3574, h * 0.2368); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.3352, h * 0.2368); + c.lineTo(w * 0.2934, h * 0.2143); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.2934, h * 0.2015); + c.close(); + c.moveTo(w * 0.3705, h * 0.1729); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3705, h * 0.1602); + c.lineTo(w * 0.4139, h * 0.1368); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4336, h * 0.1368); + c.lineTo(w * 0.4811, h * 0.1617); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4811, h * 0.1708); + c.lineTo(w * 0.4328, h * 0.1955); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4156, h * 0.1955); + c.close(); + c.moveTo(w * 0.4467, h * 0.1308); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4467, h * 0.1203); + c.lineTo(w * 0.491, h * 0.0962); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5123, h * 0.0962); + c.lineTo(w * 0.559, h * 0.1203); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.559, h * 0.1293); + c.lineTo(w * 0.5123, h * 0.1549); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4918, h * 0.1549); + c.close(); + c.moveTo(w * 0.568, h * 0.1383); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5918, h * 0.1383); + c.lineTo(w * 0.6361, h * 0.1624); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6366, h * 0.1714); + c.lineTo(w * 0.5885, h * 0.1955); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.568, h * 0.1955); + c.lineTo(w * 0.523, h * 0.1714); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.523, h * 0.1616); + c.close(); + c.moveTo(w * 0.6451, h * 0.1789); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6697, h * 0.1789); + c.lineTo(w * 0.7123, h * 0.2023); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.7123, h * 0.2128); + c.lineTo(w * 0.6664, h * 0.2376); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6492, h * 0.2376); + c.lineTo(w * 0.6016, h * 0.2135); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6016, h * 0.2023); + c.close(); + c.moveTo(w * 0.6369, h * 0.2451); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6369, h * 0.2526); + c.lineTo(w * 0.5172, h * 0.3173); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4893, h * 0.3173); + c.lineTo(w * 0.3697, h * 0.2541); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3697, h * 0.2436); + c.lineTo(w * 0.4918, h * 0.1782); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5131, h * 0.1782); + c.close(); + c.fill(); + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.arcTo(w * 0., h * 0., 0, 0, 1, w * 0., h * 0.); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticMapReduce.prototype.cst.ELASTIC_MAP_REDUCE, mxShapeAws3dElasticMapReduce); + +function mxShapeAws3dRdsSlave(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dRdsSlave, mxShape); +mxShapeAws3dRdsSlave.prototype.cst = { + RDS_SLAVE: 'mxgraph.aws3d.rdsSlave' +}; + +mxShapeAws3dRdsSlave.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRdsSlave.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRdsSlave.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.2457, h * 0.2137); + c.lineTo(w * 0.5393, h * 0.0593); + c.lineTo(w * 0.6875, h * 0.1377); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.7137, h * 0.1625); + c.arcTo(w * 0.0348, h * 0.032, 0, 0, 1, w * 0.7076, h * 0.1968); + c.arcTo(w * 0.1743, h * 0.1599, 0, 0, 1, w * 0.6597, h * 0.2249); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5943, h * 0.232); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5542, h * 0.2225); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.5673, h * 0.2353); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 1, w * 0.5611, h * 0.2729); + c.lineTo(w * 0.4889, h * 0.316); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.4766, h * 0.3352); + c.lineTo(w * 0.4052, h * 0.2992); + c.arcTo(w * 0.0173, h * 0.0159, 0, 0, 1, w * 0.4121, h * 0.2841); + c.lineTo(w * 0.4914, h * 0.2368); + c.arcTo(w * 0.0218, h * 0.02, 0, 0, 0, w * 0.4897, h * 0.2129); + c.lineTo(w * 0.4409, h * 0.1857); + c.lineTo(w * 0.3145, h * 0.2529); + c.close(); + c.moveTo(w * 0.4801, h * 0.1633); + c.lineTo(w * 0.5263, h * 0.1865); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 0, w * 0.583, h * 0.1905); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 0, w * 0.6196, h * 0.1721); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.6117, h * 0.1441); + c.lineTo(w * 0.5655, h * 0.1193); + c.fill(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRdsSlave.prototype.cst.RDS_SLAVE, mxShapeAws3dRdsSlave); + +function mxShapeAws3dAMI2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dAMI2, mxShape); +mxShapeAws3dAMI2.prototype.cst = { + AMI_2: 'mxgraph.aws3d.ami2', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dAMI2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.2095, h * 0.376); + c.lineTo(w * 0.527, h * 0.104); + c.lineTo(w * 0.6338, h * 0.194); + c.lineTo(w * 0.3149, h * 0.468); + c.close(); + c.moveTo(w * 0.3716, h * 0.518); + c.lineTo(w * 0.6892, h * 0.246); + c.lineTo(w * 0.796, h * 0.336); + c.lineTo(w * 0.477, h * 0.61); + c.close(); + c.moveTo(w * 0.3108, h * 0.282); + c.lineTo(w * 0.4257, h * 0.38); + c.moveTo(w * 0.4189, h * 0.194); + c.lineTo(w * 0.5297, h * 0.288); + c.moveTo(w * 0.5838, h * 0.338); + c.lineTo(w * 0.6892, h * 0.426); + c.moveTo(w * 0.4757, h * 0.426); + c.lineTo(w * 0.5838, h * 0.518); + c.stroke(); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dAMI2.prototype.cst.AMI_2, mxShapeAws3dAMI2); + +function mxShapeAws3dEbs(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dEbs, mxShape); +mxShapeAws3dEbs.prototype.cst = { + EBS: 'mxgraph.aws3d.ebs', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dEbs.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.0033, h * 0.5276); + c.lineTo(w * 0.071, h * 0.2898); + c.moveTo(w * 0.5325, h * 0.9976); + c.lineTo(w * 0.603, h * 0.7593); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEbs.prototype.cst.EBS, mxShapeAws3dEbs); + +function mxShapeAws3dOracleServer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dOracleServer, mxShape); +mxShapeAws3dOracleServer.prototype.cst = { + ORACLE_SERVER: 'mxgraph.aws3d.oracleServer' +}; + +mxShapeAws3dOracleServer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 133; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleServer.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleServer.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#ff0000'); + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.lineTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.fill(); + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.moveTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.stroke(); + c.begin(); + c.moveTo(w * 0.0813, h * 0.7113); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549); + c.lineTo(w * 0.122, h * 0.6754); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232); + c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296); + c.close(); + c.moveTo(w * 0.1163, h * 0.7183); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831); + c.lineTo(w * 0.087, h * 0.6676); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697); + c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035); + c.close(); + c.moveTo(w * 0.1439, h * 0.743); + c.lineTo(w * 0.1439, h * 0.6866); + c.lineTo(w * 0.1846, h * 0.707); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738); + c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743); + c.lineTo(w * 0.1992, h * 0.769); + c.lineTo(w * 0.187, h * 0.7641); + c.lineTo(w * 0.1577, h * 0.7218); + c.lineTo(w * 0.1854, h * 0.7345); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155); + c.lineTo(w * 0.1528, h * 0.7007); + c.lineTo(w * 0.1528, h * 0.7472); + c.close(); + c.moveTo(w * 0.2008, h * 0.7711); + c.lineTo(w * 0.2293, h * 0.7338); + c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415); + c.lineTo(w * 0.2699, h * 0.8035); + c.lineTo(w * 0.2602, h * 0.8007); + c.lineTo(w * 0.252, h * 0.7859); + c.lineTo(w * 0.2293, h * 0.7754); + c.lineTo(w * 0.2244, h * 0.7634); + c.lineTo(w * 0.248, h * 0.7739); + c.lineTo(w * 0.235, h * 0.7444); + c.lineTo(w * 0.2122, h * 0.7768); + c.close(); + c.moveTo(w * 0.3244, h * 0.8225); + c.lineTo(w * 0.3171, h * 0.8289); + c.lineTo(w * 0.2854, h * 0.8127); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757); + c.lineTo(w * 0.3228, h * 0.7761); + c.lineTo(w * 0.3179, h * 0.7831); + c.lineTo(w * 0.2878, h * 0.7683); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042); + c.close(); + c.moveTo(w * 0.3276, h * 0.7789); + c.lineTo(w * 0.3366, h * 0.7831); + c.lineTo(w * 0.3366, h * 0.8289); + c.lineTo(w * 0.3805, h * 0.8507); + c.lineTo(w * 0.3748, h * 0.857); + c.lineTo(w * 0.3317, h * 0.8359); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275); + c.close(); + c.moveTo(w * 0.435, h * 0.8775); + c.lineTo(w * 0.4325, h * 0.8866); + c.lineTo(w * 0.3959, h * 0.8683); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563); + c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134); + c.lineTo(w * 0.435, h * 0.8324); + c.lineTo(w * 0.4285, h * 0.838); + c.lineTo(w * 0.4008, h * 0.8246); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831); + c.lineTo(w * 0.4333, h * 0.8542); + c.lineTo(w * 0.426, h * 0.8606); + c.lineTo(w * 0.3878, h * 0.8415); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585); + c.close(); + c.moveTo(w * 0.6171, h * 0.8063); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592); + c.lineTo(w * 0.5894, h * 0.8761); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458); + c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246); + c.close(); + c.moveTo(w * 0.5886, h * 0.8296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676); + c.lineTo(w * 0.6163, h * 0.8528); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155); + c.close(); + c.moveTo(w * 0.64, h * 0.85); + c.lineTo(w * 0.64, h * 0.7930); + c.lineTo(w * 0.6854, h * 0.7718); + c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127); + c.lineTo(w * 0.6992, h * 0.8218); + c.lineTo(w * 0.6854, h * 0.8282); + c.lineTo(w * 0.6569, h * 0.8141); + c.lineTo(w * 0.6805, h * 0.8021); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831); + c.lineTo(w * 0.6528, h * 0.7979); + c.lineTo(w * 0.6528, h * 0.8437); + c.close(); + c.moveTo(w * 0.7, h * 0.8204); + c.lineTo(w * 0.7301, h * 0.7507); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486); + c.lineTo(w * 0.7699, h * 0.7852); + c.lineTo(w * 0.7602, h * 0.7908); + c.lineTo(w * 0.7537, h * 0.7838); + c.lineTo(w * 0.7276, h * 0.7958); + c.lineTo(w * 0.7228, h * 0.788); + c.lineTo(w * 0.748, h * 0.7768); + c.lineTo(w * 0.7358, h * 0.7585); + c.lineTo(w * 0.7114, h * 0.8155); + c.close(); + c.moveTo(w * 0.8244, h * 0.7486); + c.lineTo(w * 0.8171, h * 0.762); + c.lineTo(w * 0.7894, h * 0.7761); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507); + c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162); + c.lineTo(w * 0.822, h * 0.7035); + c.lineTo(w * 0.8171, h * 0.7155); + c.lineTo(w * 0.7902, h * 0.7296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606); + c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767); + c.close(); + c.moveTo(w * 0.8366, h * 0.6949); + c.lineTo(w * 0.8366, h * 0.7423); + c.lineTo(w * 0.878, h * 0.7231); + c.lineTo(w * 0.874, h * 0.7338); + c.lineTo(w * 0.8333, h * 0.7535); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75); + c.lineTo(w * 0.8268, h * 0.7007); + c.close(); + c.moveTo(w * 0.9342, h * 0.6472); + c.lineTo(w * 0.9293, h * 0.6599); + c.lineTo(w * 0.9033, h * 0.6725); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817); + c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937); + c.lineTo(w * 0.9309, h * 0.6725); + c.lineTo(w * 0.9268, h * 0.6845); + c.lineTo(w * 0.887, h * 0.7035); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106); + c.lineTo(w * 0.935, h * 0.693); + c.lineTo(w * 0.9285, h * 0.7063); + c.lineTo(w * 0.9008, h * 0.7197); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.3873); + c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.374, h * 0.3626); + c.lineTo(w * 0.4797, h * 0.3098); + c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.5203, h * 0.3098); + c.lineTo(w * 0.626, h * 0.3626); + c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.626, h * 0.3852); + c.lineTo(w * 0.5203, h * 0.438); + c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.4797, h * 0.438); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleServer.prototype.cst.ORACLE_SERVER, mxShapeAws3dOracleServer); + +function mxShapeAws3dSecureConnection(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSecureConnection, mxShape); +mxShapeAws3dSecureConnection.prototype.cst = { + SECURE_CONNECTION: 'mxgraph.aws3d.secureConnection' +}; + +mxShapeAws3dSecureConnection.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 57; + var strokeWidth2 = strokeWidth * h / 34; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSecureConnection.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.begin(); + c.moveTo(w * 0.0058, h * 0.3889); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0774, h * 0.1856); + c.arcTo(w * 0.5241, h * 0.8839, 0, 0, 1, w * 0.308, h * 0.0262); + c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.6417, h * 0.056); + c.arcTo(w * 0.6988, h * 1.1786, 0, 0, 1, w * 0.9106, h * 0.277); + c.arcTo(w * 0.2621, h * 0.442, 0, 0, 1, w, h * 0.5451); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.9474, h * 0.7808); + c.arcTo(w * 0.4368, h * 0.7366, 0, 0, 1, w * 0.7186, h * 0.9605); + c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.3045, h * 0.9104); + c.arcTo(w * 0.6115, h * 1.0312, 0, 0, 1, w * 0.0687, h * 0.6747); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0058, h * 0.3889); + c.close(); + c.fill(); +}; + +mxShapeAws3dSecureConnection.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.2661, h * 0.5068); + c.lineTo(w * 0.5002, h * 0.7336); + c.lineTo(w * 0.6626, h * 0.5775); + c.lineTo(w * 0.6469, h * 0.5539); + c.lineTo(w * 0.6958, h * 0.5097); + c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.7325, h * 0.4066); + c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.6889, h * 0.3153); + c.arcTo(w * 0.1747, h * 0.2946, 0, 0, 0, w * 0.5928, h * 0.2622); + c.arcTo(w * 0.1398, h * 0.2357, 0, 0, 0, w * 0.5107, h * 0.3005); + c.lineTo(w * 0.446, h * 0.3654); + c.lineTo(w * 0.4268, h * 0.3477); + c.close(); + c.moveTo(w * 0.4949, h * 0.4184); + c.lineTo(w * 0.5491, h * 0.3624); + c.arcTo(w * 0.1222, h * 0.2062, 0, 0, 1, w * 0.6277, h * 0.3536); + c.arcTo(w * 0.0874, h * 0.1179, 0, 0, 1, w * 0.6679, h * 0.3978); + c.arcTo(w * 0.0175, h * 0.0295, 0, 0, 1, w * 0.6626, h * 0.439); + c.lineTo(w * 0.5928, h * 0.5068); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSecureConnection.prototype.cst.SECURE_CONNECTION, mxShapeAws3dSecureConnection); + +function mxShapeAws3dEmailService(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dEmailService, mxShape); +mxShapeAws3dEmailService.prototype.cst = { + EMAIL_SERVICE: 'mxgraph.aws3d.email_service', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dEmailService.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 151; + var strokeWidth2 = strokeWidth * h / 192; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dEmailService.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8182); + c.lineTo(0, h * 0.1818); + c.lineTo(w * 0.4007, 0); + c.lineTo(w * 0.606, 0); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dEmailService.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEmailService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.4546); + c.lineTo(w * 0.5993, h * 0.4546); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.lineTo(0, h * 0.8182); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5993, h * 0.4546); + c.lineTo(w, h * 0.2727); + c.lineTo(w * 0.8013, h * 0.1792); + c.lineTo(w * 0.8013, h * 0.0883); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.4546); + c.lineTo(w * 0.5993, h * 0.4546); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.lineTo(0, h * 0.8182); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5993, h * 0.4546); + c.lineTo(w, h * 0.2727); + c.lineTo(w * 0.8013, h * 0.1792); + c.lineTo(w * 0.8013, h * 0.0883); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.202, h * 0.0883); + c.lineTo(w * 0.202, h * 0.1818); + c.lineTo(w * 0.4007, h * 0.2727); + c.lineTo(w * 0.5993, h * 0.2727); + c.lineTo(w * 0.798, h * 0.1818); + c.moveTo(w * 0.2053, h * 0.1818); + c.lineTo(w * 0.0033, h * 0.2714); + c.moveTo(w * 0.4007, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.9961); + c.moveTo(w * 0.5993, h * 0.2727); + c.lineTo(w * 0.5993, h * 0.4546); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4437, h * 0.0779); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 1, w * 0.404, h * 0.0706); + c.arcTo(w * 0.0464, h * 0.0364, 0, 0, 1, w * 0.3815, h * 0.0421); + c.arcTo(w * 0.053, h * 0.026, 0, 0, 1, w * 0.4205, h * 0.0187); + c.arcTo(w * 0.1987, h * 0.1558, 0, 0, 1, w * 0.4768, h * 0.0203); + c.arcTo(w * 0.0795, h * 0.0364, 0, 0, 1, w * 0.5199, h * 0.0494); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.5099, h * 0.0649); + c.arcTo(w * 0.0795, h * 0.0623, 0, 0, 1, w * 0.4536, h * 0.0727); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4404, h * 0.0597); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4219, h * 0.0566); + c.arcTo(w * 0.0199, h * 0.0114, 0, 0, 1, w * 0.4172, h * 0.0431); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4483, h * 0.0416); + c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 1, w * 0.457, h * 0.053); + c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 0, w * 0.4669, h * 0.0431); + c.arcTo(w * 0.0166, h * 0.0166, 0, 0, 0, w * 0.4464, h * 0.0358); + c.lineTo(w * 0.4437, h * 0.0338); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4603, h * 0.0322); + c.arcTo(w * 0.0397, h * 0.0156, 0, 0, 1, w * 0.4755, h * 0.0462); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4669, h * 0.0545); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 1, w * 0.453, h * 0.0608); + c.arcTo(w * 0.0099, h * 0.0078, 0, 0, 0, w * 0.4636, h * 0.0675); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.498, h * 0.0623); + c.arcTo(w * 0.0185, h * 0.0145, 0, 0, 0, w * 0.5079, h * 0.0457); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4848, h * 0.0296); + c.arcTo(w * 0.0993, h * 0.0779, 0, 0, 0, w * 0.455, h * 0.0234); + c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.4172, h * 0.026); + c.arcTo(w * 0.0397, h * 0.0312, 0, 0, 0, w * 0.3927, h * 0.039); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 0, w * 0.3974, h * 0.0571); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4205, h * 0.0701); + c.arcTo(w * 0.0331, h * 0.026, 0, 0, 0, w * 0.4404, h * 0.0722); + c.moveTo(w * 0.42, h * 0.049); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.055); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.45, h * 0.049); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.043); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.42, h * 0.049); + c.close(); + c.moveTo(w * 0.4669, h * 0.0894); + c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.5099, h * 0.0831); + c.lineTo(w * 0.6689, h * 0.1543); + c.lineTo(w * 0.4887, h * 0.1371); + c.close(); + c.moveTo(w * 0.3887, h * 0.0769); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.4205, h * 0.0888); + c.arcTo(w * 0.0662, h * 0.026, 0, 0, 0, w * 0.447, h * 0.0894); + c.lineTo(w * 0.4735, h * 0.1512); + c.lineTo(w * 0.6689, h * 0.1688); + c.lineTo(w * 0.5199, h * 0.2364); + c.lineTo(w * 0.2815, h * 0.1273); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8182); + c.lineTo(0, h * 0.1818); + c.lineTo(w * 0.4007, 0); + c.lineTo(w * 0.606, 0); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEmailService.prototype.cst.EMAIL_SERVICE, mxShapeAws3dEmailService); + +function mxShapeAws3dWorker(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dWorker, mxShape); +mxShapeAws3dWorker.prototype.cst = { + WORKER: 'mxgraph.aws3d.worker', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dWorker.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 74; + var strokeWidth2 = strokeWidth * h / 50; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorker.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.2892, h * 0.2104); + c.lineTo(w * 0.3595, h * 0.1503); + c.lineTo(w * 0.3973, h * 0.1844); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.4486, h * 0.1703); + c.lineTo(w * 0.4486, h * 0.1242); + c.lineTo(w * 0.5527, h * 0.1242); + c.lineTo(w * 0.5527, h * 0.1703); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.6149, h * 0.1924); + c.lineTo(w * 0.6527, h * 0.1603); + c.lineTo(w * 0.7257, h * 0.2224); + c.lineTo(w * 0.6892, h * 0.2545); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.7162, h * 0.3106); + c.lineTo(w * 0.7676, h * 0.3106); + c.lineTo(w * 0.7676, h * 0.3988); + c.lineTo(w * 0.7162, h * 0.3988); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.6973, h * 0.4409); + c.lineTo(w * 0.7378, h * 0.475); + c.lineTo(w * 0.6635, h * 0.5371); + c.lineTo(w * 0.6297, h * 0.505); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.5527, h * 0.5351); + c.lineTo(w * 0.5527, h * 0.5812); + c.lineTo(w * 0.45, h * 0.5812); + c.lineTo(w * 0.45, h * 0.5351); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.3878, h * 0.513); + c.lineTo(w * 0.3514, h * 0.5431); + c.lineTo(w * 0.2784, h * 0.481); + c.lineTo(w * 0.3149, h * 0.4509); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.2865, h * 0.3968); + c.lineTo(w * 0.2351, h * 0.3968); + c.lineTo(w * 0.2351, h * 0.3086); + c.lineTo(w * 0.2865, h * 0.3086); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.3203, h * 0.2425); + c.close(); + c.moveTo(w * 0.4054, h * 0.2445); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.3554, h * 0.2986); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.3432, h * 0.3567); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.3635, h * 0.4208); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.4122, h * 0.4649); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4122, h * 0.4649); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5676, h * 0.4749); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.6351, h * 0.4228); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.6595, h * 0.3467); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.6149, h * 0.2605); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5419, h * 0.2204); + c.arcTo(w * 0.3378, h * 0.501, 0, 0, 0, w * 0.4649, h * 0.2184); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4054, h * 0.2445); + c.close(); + c.moveTo(w * 0.473, h * 0.2806); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.55, h * 0.2866); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 1, w * 0.5892, h * 0.3307); + c.arcTo(w * 0.0338, h * 0.0501, 0, 0, 1, w * 0.5824, h * 0.3888); + c.arcTo(w * 0.0946, h * 0.1403, 0, 0, 1, w * 0.5216, h * 0.4269); + c.arcTo(w * 0.1622, h * 0.2405, 0, 0, 1, w * 0.4432, h * 0.4128); + c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4108, h * 0.3527); + c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4351, h * 0.2986); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 1, w * 0.473, h * 0.2806); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWorker.prototype.cst.WORKER, mxShapeAws3dWorker); + +function mxShapeAws3dApplication2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dApplication2, mxShape); +mxShapeAws3dApplication2.prototype.cst = { + APPLICATION2: 'mxgraph.aws3d.application2', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dApplication2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 62; + var strokeWidth2 = strokeWidth * h / 53.5; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6766); + c.lineTo(0, h * 0.3271); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.3271); + c.lineTo(w * 0.5, h * 0.6449); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6766); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6449); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.3271); + c.lineTo(w * 0.5, h * 0.6449); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6766); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.6449); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1742, h * 0.6355); + c.lineTo(w * 0.1742, h * 0.4393); + c.lineTo(w * 0.6726, h * 0.1121); + c.lineTo(w * 0.7661, h * 0.1738); + c.lineTo(w * 0.2661, h * 0.4991); + c.lineTo(w * 0.2661, h * 0.6916); + c.close(); + c.moveTo(w * 0.2871, h * 0.7084); + c.lineTo(w * 0.2871, h * 0.514); + c.lineTo(w * 0.7823, h * 0.1869); + c.lineTo(w * 0.8629, h * 0.2374); + c.lineTo(w * 0.379, h * 0.5626); + c.lineTo(w * 0.379, h * 0.7607); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6766); + c.lineTo(0, h * 0.3271); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplication2.prototype.cst.APPLICATION2, mxShapeAws3dApplication2); + +function mxShapeAws3dElasticBeanstalk(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dElasticBeanstalk, mxShape); +mxShapeAws3dElasticBeanstalk.prototype.cst = { + ELASTIC_BEANSTALK: 'mxgraph.aws3d.elasticBeanstalk', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dElasticBeanstalk.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 140; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6239); + c.lineTo(0, h * 0.3754); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticBeanstalk.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.3754); + c.lineTo(w * 0.5, h * 0.7514); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6239); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.7514); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.3754); + c.lineTo(w * 0.5, h * 0.7514); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6239); + c.close(); + c.moveTo(w * 0.5, h * 0.7514); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.2485, h * 0.187); + c.lineTo(w * 0.7493, h * 0.5623); + c.lineTo(w * 0.7493, h * 0.8123); + c.stroke(); + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7763, h * 0.2063); + c.lineTo(w * 0.2749, h * 0.5817); + c.lineTo(w * 0.2749, h * 0.8309); + c.lineTo(w * 0.2204, h * 0.7894); + c.lineTo(w * 0.2204, h * 0.5394); + c.lineTo(w * 0.7185, h * 0.1619); + c.close(); + c.fill(); + c.restore(); + c.begin(); + c.moveTo(w * 0.1713, h * 0.543); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2028, h * 0.5723); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2281, h * 0.6096); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2402, h * 0.644); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2424, h * 0.6848); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.216, h * 0.6612); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.1895, h * 0.6239); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.1719, h * 0.5824); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.1713, h * 0.543); + c.close(); + c.moveTo(w * 0.2507, h * 0.7794); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.254, h * 0.7421); + c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.27, h * 0.7264); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2986, h * 0.73); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3234, h * 0.7457); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3218, h * 0.7815); + c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.3019, h * 0.7987); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.27, h * 0.7923); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2507, h * 0.7794); + c.close(); + c.moveTo(w * 0.2799, h * 0.5265); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.3003, h * 0.515); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3317, h * 0.515); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3774, h * 0.5315); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4033, h * 0.5487); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3906, h * 0.5595); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3493, h * 0.5616); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3069, h * 0.5444); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2799, h * 0.5265); + c.close(); + c.moveTo(w * 0.2887, h * 0.3933); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.314, h * 0.414); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3322, h * 0.4391); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.3344, h * 0.4699); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.3196, h * 0.485); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2887, h * 0.4592); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.27, h * 0.4269); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.2727, h * 0.4054); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2887, h * 0.3933); + c.close(); + c.moveTo(w * 0.4613, h * 0.262); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4867, h * 0.2827); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5049, h * 0.3078); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.5071, h * 0.3386); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4922, h * 0.3537); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4613, h * 0.3279); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4426, h * 0.2956); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.4453, h * 0.2741); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4613, h * 0.262); + c.close(); + c.moveTo(w * 0.4525, h * 0.3952); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4729, h * 0.3837); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5043, h * 0.3837); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.55, h * 0.4002); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5759, h * 0.4174); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5633, h * 0.4282); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5219, h * 0.4303); + c.arcTo(w * 0.1653, h * 0.1074, 0, 0, 1, w * 0.4795, h * 0.4131); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4525, h * 0.3952); + c.close(); + c.moveTo(w * 0.6217, h * 0.1426); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6471, h * 0.1633); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6652, h * 0.1884); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.6674, h * 0.2192); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6526, h * 0.2342); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6217, h * 0.2085); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.603, h * 0.1762); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.6057, h * 0.1547); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6217, h * 0.1426); + c.close(); + c.moveTo(w * 0.6129, h * 0.2758); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.6333, h * 0.2643); + c.arcTo(w * 0.0826, h * 0.1433, 0, 0, 1, w * 0.6647, h * 0.2643); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7104, h * 0.2808); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298); + c.arcTo(w * 0.0826, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.6823, h * 0.3109); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6399, h * 0.2937); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6129, h * 0.2758); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6239); + c.lineTo(0, h * 0.3754); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticBeanstalk.prototype.cst.ELASTIC_BEANSTALK, mxShapeAws3dElasticBeanstalk); + +function mxShapeAws3dSimpleDB2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSimpleDB2, mxShape); +mxShapeAws3dSimpleDB2.prototype.cst = { + SIMPLE_DB_2: 'mxgraph.aws3d.simpleDb2', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSimpleDB2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSimpleDB2.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8183); + c.lineTo(0, h * 0.1848); + c.lineTo(w * 0.3366, 0); + c.lineTo(w * 0.6293, h * 0.0021); + c.lineTo(w, h * 0.1833); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6694, h); + c.lineTo(w * 0.4986, h * 0.9091); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSimpleDB2.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.1848); + c.lineTo(w * 0.168, h * 0.1833); + c.lineTo(0, h * 0.365); + c.lineTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8183); + c.close(); + c.moveTo(w * 0.4986, h * 0.9078); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.6667, h * 0.5457); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.4986, h * 0.9076); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.8292, h * 0.1822); + c.lineTo(w, h * 0.1848); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5441); + c.lineTo(w, h * 0.3666); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.1848); + c.lineTo(w * 0.168, h * 0.1833); + c.lineTo(0, h * 0.365); + c.lineTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8183); + c.close(); + c.moveTo(w * 0.4986, h * 0.9078); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.6667, h * 0.5457); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.4986, h * 0.9076); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.8292, h * 0.1822); + c.lineTo(w, h * 0.1848); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5441); + c.lineTo(w, h * 0.3666); + c.close(); + c.moveTo(w * 0.1669, h * 0.1828); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.8314, h * 0.1833); + c.lineTo(w * 0.4986, h * 0.0031); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.2634, h * 0.1833); + c.lineTo(w * 0.5003, h * 0.0535); + c.lineTo(w * 0.7394, h * 0.1833); + c.lineTo(w * 0.5003, h * 0.3136); + c.close(); + c.fill(); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000'); + c.restore(); + c.setShadow(false); + c.setStrokeWidth(3 * strokeWidth); + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(w * 0.3003, h * 0.2108); + c.lineTo(w * 0.5642, h * 0.068); + c.moveTo(w * 0.4429, h * 0.0693); + c.lineTo(w * 0.7059, h * 0.2121); + c.moveTo(w * 0.6667, h * 0.2458); + c.lineTo(w * 0.3974, h * 0.0992); + c.moveTo(w * 0.3499, h * 0.1277); + c.lineTo(w * 0.6088, h * 0.2698); + c.moveTo(w * 0.3009, h * 0.1556); + c.lineTo(w * 0.5496, h * 0.2913); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8183); + c.lineTo(0, h * 0.1848); + c.lineTo(w * 0.3366, 0); + c.lineTo(w * 0.6293, h * 0.0021); + c.lineTo(w, h * 0.1833); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6694, h); + c.lineTo(w * 0.4986, h * 0.9091); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSimpleDB2.prototype.cst.SIMPLE_DB_2, mxShapeAws3dSimpleDB2); + +function mxShapeAws3dWorkflowService(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dWorkflowService, mxShape); +mxShapeAws3dWorkflowService.prototype.cst = { + WORKFLOW_SERVICE: 'mxgraph.aws3d.workflowService', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dWorkflowService.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dWorkflowService.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2481, 0); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4984, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dWorkflowService.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorkflowService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2486, 0); + c.lineTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.4984, h); + c.close(); + c.moveTo(w * 0.7497, h * 0.3531); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4984, h); + c.lineTo(w * 0.7486, h * 0.3531); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4967, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.7497, h * 0.3531); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.close(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2486, 0); + c.lineTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.4984, h); + c.lineTo(w * 0.7486, h * 0.3531); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4967, h); + c.close(); + c.moveTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.7508, h * 0.3531); + c.moveTo(w * 0.2488, h * 0.353); + c.lineTo(0, h * 0.6486); + c.stroke(); + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeWidth(2 * strokeWidth); + c.begin(); + c.ellipse(w * 0.2925, h * 0.031, w * 0.4116, h * 0.2925); + c.fill(); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(w * 0.5252, h * 0.0465); + c.lineTo(w * 0.5873, h * 0.0903); + c.lineTo(w * 0.5483, h * 0.1173); + c.lineTo(w * 0.4874, h * 0.0728); + c.close(); + c.moveTo(w * 0.4896, h * 0.1132); + c.lineTo(w * 0.5005, h * 0.1705); + c.lineTo(w * 0.4182, h * 0.1631); + c.lineTo(w * 0.4122, h * 0.1058); + c.close(); + c.moveTo(w * 0.3584, h * 0.1631); + c.lineTo(w * 0.4204, h * 0.2062); + c.lineTo(w * 0.3825, h * 0.2332); + c.lineTo(w * 0.32, h * 0.19); + c.close(); + c.moveTo(w * 0.4594, h * 0.2338); + c.lineTo(w * 0.5214, h * 0.2783); + c.lineTo(w * 0.4835, h * 0.3053); + c.lineTo(w * 0.4215, h * 0.2608); + c.close(); + c.moveTo(w * 0.5187, h * 0.0943); + c.lineTo(w * 0.4879, h * 0.1152); + c.moveTo(w * 0.421, h * 0.1624); + c.lineTo(w * 0.3895, h * 0.1846); + c.moveTo(w * 0.5, h * 0.1698); + c.lineTo(w * 0.5554, h * 0.2089); + c.lineTo(w * 0.4885, h * 0.2567); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2481, 0); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4984, h); + c.close(); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWorkflowService.prototype.cst.WORKFLOW_SERVICE, mxShapeAws3dWorkflowService); + +function mxShapeAws3dDecider(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dDecider, mxShape); +mxShapeAws3dDecider.prototype.cst = { + DECIDER: 'mxgraph.aws3d.decider', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dDecider.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 74; + var strokeWidth2 = strokeWidth * h / 50; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDecider.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + c.setStrokeWidth(1.6 * strokeWidth); + c.setLineJoin('square'); + c.begin(); + c.moveTo(w * 0.4973, h * 0.1523); + c.lineTo(w * 0.5608, h * 0.0982); + c.lineTo(w * 0.6581, h * 0.1844); + c.lineTo(w * 0.5986, h * 0.2365); + c.close(); + c.moveTo(w * 0.3784, h * 0.2164); + c.lineTo(w * 0.5054, h * 0.2305); + c.lineTo(w * 0.5203, h * 0.3407); + c.lineTo(w * 0.3892, h * 0.3246); + c.close(); + c.moveTo(w * 0.2932, h * 0.3246); + c.lineTo(w * 0.3919, h * 0.4128); + c.lineTo(w * 0.3334, h * 0.4647); + c.lineTo(w * 0.2357, h * 0.38); + c.close(); + c.moveTo(w * 0.4568, h * 0.4649); + c.lineTo(w * 0.5554, h * 0.5511); + c.lineTo(w * 0.4932, h * 0.6032); + c.lineTo(w * 0.3946, h * 0.517); + c.close(); + c.moveTo(w * 0.5473, h * 0.1924); + c.lineTo(w * 0.5027, h * 0.2365); + c.moveTo(w * 0.4, h * 0.3186); + c.lineTo(w * 0.3446, h * 0.3667); + c.moveTo(w * 0.5189, h * 0.3387); + c.lineTo(w * 0.6081, h * 0.4148); + c.lineTo(w * 0.5068, h * 0.501); + c.stroke(); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDecider.prototype.cst.DECIDER, mxShapeAws3dDecider); + +function mxShapeAws3dSearchEngine(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSearchEngine, mxShape); +mxShapeAws3dSearchEngine.prototype.cst = { + SEARCH_ENGINE: 'mxgraph.aws3d.searchEngine', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSearchEngine.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSearchEngine.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSearchEngine.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSearchEngine.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.moveTo(w * 0.1667, h * 0.5459); + c.lineTo(w * 0.2486, h * 0.7704); + c.moveTo(w * 0.4164, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.lineTo(w * 0.4989, h); + c.stroke(); + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3427, h * 0.179); + c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 1, w * 0.3267, h * 0.1487); + c.arcTo(w * 0.0664, h * 0.0365, 0, 0, 1, w * 0.3621, h * 0.1227); + c.arcTo(w * 0.1052, h * 0.0992, 0, 0, 1, w * 0.4247, h * 0.1195); + c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4884, h * 0.1018); + c.arcTo(w * 0.1329, h * 0.1253, 0, 0, 1, w * 0.5548, h * 0.1112); + c.arcTo(w * 0.0377, h * 0.0344, 0, 0, 1, w * 0.572, h * 0.166); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.6047, h * 0.1775); + c.arcTo(w * 0.021, h * 0.0198, 0, 0, 1, w * 0.5936, h * 0.2046); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.6008, h * 0.2416); + c.arcTo(w * 0.072, h * 0.0678, 0, 0, 1, w * 0.5437, h * 0.2677); + c.arcTo(w * 0.1052, h * 0.0939, 0, 0, 1, w * 0.4828, h * 0.2563); + c.close(); + c.moveTo(w * 0.448, h * 0.2156); + c.arcTo(w * 0.0111, h * 0.0104, 0, 0, 0, w * 0.459, h * 0.2255); + c.arcTo(w * 0.0138, h * 0.013, 0, 0, 0, w * 0.4729, h * 0.2182); + c.lineTo(w * 0.4773, h * 0.1874); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.5116, h * 0.1759); + c.arcTo(w * 0.0277, h * 0.0626, 0, 0, 0, w * 0.5233, h * 0.1503); + c.arcTo(w * 0.0554, h * 0.0261, 0, 0, 0, w * 0.5022, h * 0.1336); + c.arcTo(w * 0.0886, h * 0.0835, 0, 0, 0, w * 0.4607, h * 0.1305); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4313, h * 0.142); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.4175, h * 0.1597); + c.arcTo(w * 0.0249, h * 0.0235, 0, 0, 0, w * 0.4313, h * 0.1822); + c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 0, w * 0.4535, h * 0.1884); + c.close(); + c.moveTo(w * 0.4718, h * 0.1764); + c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 1, w * 0.4496, h * 0.1754); + c.arcTo(w * 0.0221, h * 0.0157, 0, 0, 1, w * 0.4369, h * 0.1634); + c.arcTo(w * 0.0221, h * 0.0183, 0, 0, 1, w * 0.4496, h * 0.1467); + c.arcTo(w * 0.0609, h * 0.0574, 0, 0, 1, w * 0.4759, h * 0.1414); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.5033, h * 0.1514); + c.arcTo(w * 0.0443, h * 0.0209, 0, 0, 1, w * 0.495, h * 0.1701); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.4718, h * 0.1764); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSearchEngine.prototype.cst.SEARCH_ENGINE, mxShapeAws3dSearchEngine); + +function mxShapeAws3dSecurityTokenService(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dSecurityTokenService, mxShape); +mxShapeAws3dSecurityTokenService.prototype.cst = { + SECURITY_TOKEN_SERVICE: 'mxgraph.aws3d.securityTokenService', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dSecurityTokenService.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSecurityTokenService.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSecurityTokenService.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSecurityTokenService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.moveTo(w * 0.1667, h * 0.5459); + c.lineTo(w * 0.2486, h * 0.7704); + c.moveTo(w * 0.4164, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.lineTo(w * 0.4989, h); + c.stroke(); + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4773, h * 0.1915); + c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4358, h * 0.1968); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.3937, h * 0.1905); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 1, w * 0.3682, h * 0.1707); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.3699, h * 0.1414); + c.arcTo(w * 0.0775, h * 0.0731, 0, 0, 1, w * 0.4009, h * 0.118); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.4524, h * 0.1059); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.5028, h * 0.1112); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 1, w * 0.531, h * 0.1315); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.531, h * 0.1597); + c.lineTo(w * 0.5615, h * 0.1754); + c.lineTo(w * 0.5526, h * 0.1905); + c.lineTo(w * 0.5759, h * 0.1999); + c.lineTo(w * 0.5753, h * 0.2109); + c.lineTo(w * 0.5792, h * 0.2161); + c.lineTo(w * 0.6135, h * 0.2182); + c.lineTo(w * 0.6113, h * 0.2416); + c.lineTo(w * 0.5819, h * 0.2474); + c.close(); + c.moveTo(w * 0.4756, h * 0.1816); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.5, h * 0.1691); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.5144, h * 0.1435); + c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 0, w * 0.4967, h * 0.1247); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.4729, h * 0.1174); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 0, w * 0.4452, h * 0.1169); + c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4197, h * 0.1232); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.397, h * 0.1357); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 0, w * 0.3859, h * 0.1555); + c.arcTo(w * 0.0305, h * 0.0287, 0, 0, 0, w * 0.4053, h * 0.178); + c.arcTo(w * 0.072, h * 0.0678, 0, 0, 0, w * 0.4385, h * 0.1863); + c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4596, h * 0.1848); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4756, h * 0.1816); + c.fill(); + c.setStrokeWidth(1.5 * strokeWidth); + c.setLineJoin('round'); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.4939, h * 0.1326); + c.lineTo(w * 0.4474, h * 0.1508); + c.lineTo(w * 0.4812, h * 0.1576); + c.moveTo(w * 0.4889, h * 0.1733); + c.lineTo(w * 0.4939, h * 0.1775); + c.moveTo(w * 0.5061, h * 0.1576); + c.lineTo(w * 0.5199, h * 0.1597); + c.moveTo(w * 0.5094, h * 0.1394); + c.lineTo(w * 0.5244, h * 0.1378); + c.moveTo(w * 0.4945, h * 0.1247); + c.lineTo(w * 0.4994, h * 0.1185); + c.moveTo(w * 0.4679, h * 0.1175); + c.lineTo(w * 0.4707, h * 0.1117); + c.moveTo(w * 0.4396, h * 0.1195); + c.lineTo(w * 0.4374, h * 0.1138); + c.moveTo(w * 0.412, h * 0.1284); + c.lineTo(w * 0.4059, h * 0.1232); + c.moveTo(w * 0.3948, h * 0.1441); + c.lineTo(w * 0.3804, h * 0.1425); + c.moveTo(w * 0.3931, h * 0.1608); + c.lineTo(w * 0.3804, h * 0.1649); + c.moveTo(w * 0.4059, h * 0.1754); + c.lineTo(w * 0.3998, h * 0.1801); + c.moveTo(w * 0.4308, h * 0.1822); + c.lineTo(w * 0.4286, h * 0.1884); + c.moveTo(w * 0.4618, h * 0.1827); + c.lineTo(w * 0.4635, h * 0.1868); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSecurityTokenService.prototype.cst.SECURITY_TOKEN_SERVICE, mxShapeAws3dSecurityTokenService); + +function mxShapeAws3dGlacier(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dGlacier, mxShape); +mxShapeAws3dGlacier.prototype.cst = { + GLACIER: 'mxgraph.aws3d.glacier', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dGlacier.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dGlacier.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.8177); + c.lineTo(0, h * 0.5448); + c.lineTo(w * 0.168, h * 0.1792); + c.lineTo(w * 0.5008, 0); + c.lineTo(w * 0.8309, h * 0.1812); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8188); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dGlacier.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dGlacier.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.1658, h * 0.1802); + c.lineTo(w * 0.5008, h * 0.3651); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3339, h); + c.lineTo(0, h * 0.8177); + c.lineTo(0, h * 0.5427); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5008, h * 0.362); + c.lineTo(w * 0.8314, h * 0.1823); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8177); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.6661, h * 0.9089); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.1658, h * 0.1802); + c.lineTo(w * 0.5008, h * 0.3651); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3339, h); + c.lineTo(0, h * 0.8177); + c.lineTo(0, h * 0.5427); + c.close(); + c.moveTo(w * 0.5008, h * 0.362); + c.lineTo(w * 0.8314, h * 0.1823); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8177); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.6661, h * 0.9089); + c.close(); + c.moveTo(w * 0.1675, h * 0.1797); + c.lineTo(0, h * 0.7281); + c.lineTo(w * 0.3284, h * 0.9089); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w, h * 0.7266); + c.lineTo(w * 0.8309, h * 0.1823); + c.moveTo(w * 0.5003, h * 0.362); + c.lineTo(w * 0.3311, h * 0.9089); + c.lineTo(w * 0.3311, h); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.8177); + c.lineTo(0, h * 0.5448); + c.lineTo(w * 0.168, h * 0.1792); + c.lineTo(w * 0.5008, 0); + c.lineTo(w * 0.8309, h * 0.1812); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8188); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dGlacier.prototype.cst.GLACIER, mxShapeAws3dGlacier); + +function mxShapeAws3dCustomerGateway(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dCustomerGateway, mxShape); +mxShapeAws3dCustomerGateway.prototype.cst = { + CUSTOMER_GATEWAY: 'mxgraph.aws3d.customerGateway', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dCustomerGateway.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dCustomerGateway.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.fillAndStroke(); + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.stroke(); + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dCustomerGateway.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7575, h * 0.3969); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.7686, h * 0.3259); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8055, h * 0.2481); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8406, h * 0.2091); + c.lineTo(w * 0.8269, h * 0.2665); + c.lineTo(w * 0.8372, h * 0.2607); + c.lineTo(w * 0.8372, h * 0.3444); + c.lineTo(w * 0.7832, h * 0.3804); + c.lineTo(w * 0.7832, h * 0.3658); + c.close(); + c.moveTo(w * 0.8466, h * 0.2082); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.8766, h * 0.1955); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.9186, h * 0.2286); + c.arcTo(w * 0.12, h * 0.1362, 0, 0, 1, w * 0.9297, h * 0.2821); + c.lineTo(w * 0.9006, h * 0.2831); + c.lineTo(w * 0.9006, h * 0.3016); + c.lineTo(w * 0.85, h * 0.3366); + c.lineTo(w * 0.85, h * 0.251); + c.lineTo(w * 0.8586, h * 0.2471); + c.close(); + c.moveTo(w * 0.9297, h * 0.2967); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.9195, h * 0.3667); + c.arcTo(w * 0.2571, h * 0.2918, 0, 0, 1, w * 0.8869, h * 0.4436); + c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.8466, h * 0.4903); + c.lineTo(w * 0.8595, h * 0.4358); + c.lineTo(w * 0.8492, h * 0.4416); + c.lineTo(w * 0.8492, h * 0.357); + c.lineTo(w * 0.9006, h * 0.32004); + c.lineTo(w * 0.9006, h * 0.3346); + c.close(); + c.moveTo(w * 0.838, h * 0.4942); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8072, h * 0.5049); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.7712, h * 0.4815); + c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.7566, h * 0.4163); + c.lineTo(w * 0.7832, h * 0.4173); + c.lineTo(w * 0.7832, h * 0.4008); + c.lineTo(w * 0.8372, h * 0.3638); + c.lineTo(w * 0.8372, h * 0.4494); + c.lineTo(w * 0.8278, h * 0.4562); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dCustomerGateway.prototype.cst.CUSTOMER_GATEWAY, mxShapeAws3dCustomerGateway); + +function mxShapeAws3dRedshift(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dRedshift, mxShape); +mxShapeAws3dRedshift.prototype.cst = { + REDSHIFT: 'mxgraph.aws3d.redshift', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dRedshift.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 149.5; + var strokeWidth2 = strokeWidth * h / 187.5; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRedshift.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6517); + c.lineTo(0, h * 0.0912); + c.lineTo(w * 0.0368, h * 0.0155); + c.lineTo(w * 0.2047, 0); + c.lineTo(w * 0.3378, h * 0.0619); + c.lineTo(w * 0.3378, h * 0.0912); + c.lineTo(w * 0.3819, h * 0.0693); + c.lineTo(w * 0.6154, h * 0.0693); + c.lineTo(w * 0.8502, h * 0.1776); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.8682, h * 0.3061); + c.lineTo(w, h * 0.3664); + c.lineTo(w, h * 0.9099); + c.lineTo(w * 0.9672, h * 0.9861); + c.lineTo(w * 0.7926, h); + c.lineTo(w * 0.6629, h * 0.9392); + c.lineTo(w * 0.6629, h * 0.9099); + c.lineTo(w * 0.6167, h * 0.9317); + c.lineTo(w * 0.3813, h * 0.9317); + c.lineTo(w * 0.1478, h * 0.8219); + c.lineTo(w * 0.1478, h * 0.7093); + c.lineTo(w * 0.1365, h * 0.7163); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRedshift.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRedshift.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.6541); + c.lineTo(0, h * 0.0933); + c.lineTo(w * 0.1371, h * 0.1573); + c.lineTo(w * 0.1371, h * 0.7157); + c.close(); + c.moveTo(w * 0.1485, h * 0.8219); + c.lineTo(w * 0.1485, h * 0.2864); + c.lineTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.3846, h * 0.9317); + c.close(); + c.moveTo(w * 0.6642, h * 0.9392); + c.lineTo(w * 0.6642, h * 0.4011); + c.lineTo(w * 0.796, h * 0.4597); + c.lineTo(w * 0.796, h); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1371, h * 0.7157); + c.lineTo(w * 0.1371, h * 0.1568); + c.lineTo(w * 0.2027, h * 0.1525); + c.lineTo(w * 0.1498, h * 0.1771); + c.lineTo(w * 0.1498, h * 0.7061); + c.close(); + c.moveTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.614, h * 0.3941); + c.lineTo(w * 0.6809, h * 0.3632); + c.lineTo(w * 0.6642, h * 0.4); + c.lineTo(w * 0.6642, h * 0.9067); + c.lineTo(w * 0.6191, h * 0.9317); + c.lineTo(w * 0.3833, h * 0.9317); + c.close(); + c.moveTo(w * 0.796, h * 0.4608); + c.lineTo(w * 0.9639, h * 0.4469); + c.lineTo(w, h * 0.3691); + c.lineTo(w, h * 0.9077); + c.lineTo(w * 0.9686, h * 0.9856); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.3378, h * 0.0608); + c.lineTo(w * 0.3378, h * 0.0907); + c.lineTo(w * 0.3197, h * 0.1008); + c.close(); + c.moveTo(w * 0.8502, h * 0.2843); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.794, h * 0.3136); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6541); + c.lineTo(0, h * 0.0933); + c.lineTo(w * 0.1371, h * 0.1573); + c.lineTo(w * 0.1371, h * 0.7157); + c.close(); + c.moveTo(w * 0.1485, h * 0.8219); + c.lineTo(w * 0.1485, h * 0.2864); + c.lineTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.3846, h * 0.9317); + c.close(); + c.moveTo(w * 0.6642, h * 0.9392); + c.lineTo(w * 0.6642, h * 0.4011); + c.lineTo(w * 0.796, h * 0.4597); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.1371, h * 0.7157); + c.lineTo(w * 0.1371, h * 0.1568); + c.lineTo(w * 0.2027, h * 0.1525); + c.lineTo(w * 0.1498, h * 0.1771); + c.lineTo(w * 0.1498, h * 0.7061); + c.close(); + c.moveTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.614, h * 0.3941); + c.lineTo(w * 0.6809, h * 0.3632); + c.lineTo(w * 0.6642, h * 0.4); + c.lineTo(w * 0.6642, h * 0.9067); + c.lineTo(w * 0.6191, h * 0.9317); + c.lineTo(w * 0.3833, h * 0.9317); + c.close(); + c.moveTo(w * 0.796, h * 0.4608); + c.lineTo(w * 0.9639, h * 0.4469); + c.lineTo(w, h * 0.3691); + c.lineTo(w, h * 0.9077); + c.lineTo(w * 0.9686, h * 0.9856); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.3378, h * 0.0608); + c.lineTo(w * 0.3378, h * 0.0907); + c.lineTo(w * 0.3197, h * 0.1008); + c.close(); + c.moveTo(w * 0.8502, h * 0.2843); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.794, h * 0.3136); + c.close(); + c.moveTo(w * 0.6167, h * 0.3941); + c.lineTo(w * 0.6167, h * 0.9317); + c.moveTo(w * 0.9652, h * 0.4448); + c.lineTo(w * 0.9652, h * 0.9851); + c.stroke(); + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4903, h * 0.1259); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.5023, h * 0.1189); + c.arcTo(w * 0.2007, h * 0.16, 0, 0, 1, w * 0.5639, h * 0.1333); + c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.7157, h * 0.2005); + c.arcTo(w * 0.2006, h * 0.16, 0, 0, 1, w * 0.7565, h * 0.2315); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.7445, h * 0.2421); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.6742, h * 0.2251); + c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.5204, h * 0.1541); + c.arcTo(w * 0.1338, h * 0.1067, 0, 0, 1, w * 0.4903, h * 0.1259); + c.close(); + c.moveTo(w * 0.4789, h * 0.1275); + c.arcTo(w * 0.0334, h * 0.0267, 0, 0, 0, w * 0.487, h * 0.1461); + c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 0, w * 0.5237, h * 0.1728); + c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 0, w * 0.6609, h * 0.2352); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 0, w * 0.7244, h * 0.2501); + c.arcTo(w * 0.0201, h * 0.016, 0, 0, 0, w * 0.7411, h * 0.2475); + c.lineTo(w * 0.5385, h * 0.3408); + c.arcTo(w * 0.0669, h * 0.05333, 0, 0, 1, w * 0.512, h * 0.3397); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.4548, h * 0.3248); + c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 1, w * 0.3084, h * 0.2565); + c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 1, w * 0.2776, h * 0.2304); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.2776, h * 0.2197); + c.close(); + c.fill(); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setFillColor(fillColor); + c.setLineJoin('round'); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.3398, h * 0.2421); + c.lineTo(w * 0.4769, h * 0.1797); + c.lineTo(w * 0.6341, h * 0.2512); + c.lineTo(w * 0.4936, h * 0.3147); + c.fill(); + c.begin(); + c.moveTo(w * 0.4334, h * 0.1941); + c.lineTo(w * 0.6207, h * 0.2811); + c.moveTo(w * 0.5338, h * 0.1995); + c.lineTo(w * 0.3866, h * 0.2688); + c.moveTo(w * 0.5873, h * 0.2235); + c.lineTo(w * 0.4334, h * 0.2955); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.6517); + c.lineTo(0, h * 0.0912); + c.lineTo(w * 0.0368, h * 0.0155); + c.lineTo(w * 0.2047, 0); + c.lineTo(w * 0.3378, h * 0.0619); + c.lineTo(w * 0.3378, h * 0.0912); + c.lineTo(w * 0.3819, h * 0.0693); + c.lineTo(w * 0.6154, h * 0.0693); + c.lineTo(w * 0.8502, h * 0.1776); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.8682, h * 0.3061); + c.lineTo(w, h * 0.3664); + c.lineTo(w, h * 0.9099); + c.lineTo(w * 0.9672, h * 0.9861); + c.lineTo(w * 0.7926, h); + c.lineTo(w * 0.6629, h * 0.9392); + c.lineTo(w * 0.6629, h * 0.9099); + c.lineTo(w * 0.6167, h * 0.9317); + c.lineTo(w * 0.3813, h * 0.9317); + c.lineTo(w * 0.1478, h * 0.8219); + c.lineTo(w * 0.1478, h * 0.7093); + c.lineTo(w * 0.1365, h * 0.7163); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRedshift.prototype.cst.REDSHIFT, mxShapeAws3dRedshift); + +function mxShapeAws3dLambda(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dLambda, mxShape); +mxShapeAws3dLambda.prototype.cst = { + LAMBDA: 'mxgraph.aws3d.lambda', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dLambda.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 109.5; + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dLambda.prototype.background = function (c, x, y, w, h, strokeWidth) { + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.1671); + c.lineTo(w * 0.3424, 0); + c.lineTo(w * 0.663, 0); + c.lineTo(w, h * 0.1671); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dLambda.prototype.foreground = function (c, x, y, w, h, strokeWidth) { + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dLambda.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(0, h * 0.3242); + c.lineTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.663, h * 0.4895); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.close(); + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.663, h * 0.4895); + c.lineTo(w, h * 0.3242); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.close(); + c.fill(); + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.3242); + c.lineTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.663, h * 0.4895); + c.lineTo(w, h * 0.3242); + c.moveTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.3424, h); + c.moveTo(w * 0.663, h * 0.4895); + c.lineTo(w * 0.663, h); + c.stroke(); + c.setFillColor("#5E5E5E"); + c.begin(); + c.moveTo(w * 0.3804, h * 0.1169); + c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.6087, h * 0.1123); + c.arcTo(w * 0.33804, h * 0.3196, 0, 0, 1, w * 0.725, h * 0.1553); + c.arcTo(w * 0.1304, h * 0.1096, 0, 0, 1, w * 0.7924, h * 0.2402); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.725, h * 0.3333); + c.arcTo(w * 0.4416, h * 0.274, 0, 0, 1, w * 0.6087, h * 0.3772); + c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.3804, h * 0.3708); + c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.2772, h * 0.3324); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2163, h * 0.2539); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2663, h * 0.1644); + c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.3804, h * 0.1169); + c.fill(); + c.setFillColor("#ffffff"); + c.begin(); + c.moveTo(w * 0.5565, h * 0.2174); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.5837, h * 0.1945); + c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 0, w * 0.5793, h * 0.1671); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.525, h * 0.1598); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 1, w * 0.5543, h * 0.1443); + c.arcTo(w * 0.0761, h * 0.0639, 0, 0, 1, w * 0.6163, h * 0.1662); + c.arcTo(w * 0.0598, h * 0.0502, 0, 0, 1, w * 0.6087, h * 0.2091); + c.lineTo(w * 0.5, h * 0.3032); + c.arcTo(w * 0.0978, h * 0.0822, 0, 0, 0, w * 0.4728, h * 0.3379); + c.arcTo(w * 0.0272, h * 0.0228, 0, 0, 0, w * 0.4924, h * 0.3571); + c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 1, w * 0.4489, h * 0.3571); + c.arcTo(w * 0.038, h * 0.032, 0, 0, 1, w * 0.437, h * 0.3242); + c.arcTo(w * 0.1087, h * 0.0913, 0, 0, 1, w * 0.4674, h * 0.2886); + c.lineTo(w * 0.5141, h * 0.2557); + c.lineTo(w * 0.3185, h * 0.2895); + c.lineTo(w * 0.2641, h * 0.2648); + c.close(); + c.fill(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.begin(); + c.moveTo(0, h * 0.1671); + c.lineTo(w * 0.3424, 0); + c.lineTo(w * 0.663, 0); + c.lineTo(w, h * 0.1671); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dLambda.prototype.cst.LAMBDA, mxShapeAws3dLambda); + +function mxShapeAws3dEbs2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws3dEbs2, mxShape); +mxShapeAws3dEbs2.prototype.cst = { + EBS2: 'mxgraph.aws3d.ebs2', + SHADING_COLORS: 'shadingCols' +}; + +mxShapeAws3dEbs2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.fillAndStroke(); + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + flipH == '0' ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.fill(); + flipH == '0' ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.0033, h * 0.5276); + c.lineTo(w * 0.071, h * 0.2898); + c.moveTo(w * 0.5325, h * 0.9976); + c.lineTo(w * 0.603, h * 0.7593); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.3388, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.2345); + c.lineTo(w * 0.6667, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.526); + c.close(); + c.moveTo(w * 0.4426, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.3266); + c.lineTo(w * 0.5628, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.4338); + c.close(); + c.moveTo(w * 0.3867, h * 0.3284); + c.lineTo(w * 0.3541, h * 0.2998); + c.moveTo(w * 0.4436, h * 0.2748); + c.lineTo(w * 0.4077, h * 0.2412); + c.moveTo(w * 0.5704, h * 0.2803); + c.lineTo(w * 0.5992, h * 0.2513); + c.moveTo(w * 0.6231, h * 0.3284); + c.lineTo(w * 0.6503, h * 0.3032); + c.moveTo(w * 0.622, h * 0.4338); + c.lineTo(w * 0.6557, h * 0.4606); + c.moveTo(w * 0.5667, h * 0.4845); + c.lineTo(w * 0.5992, h * 0.5156); + c.moveTo(w * 0.4414, h * 0.4874); + c.lineTo(w * 0.412, h * 0.5159); + c.moveTo(w * 0.3889, h * 0.4405); + c.lineTo(w * 0.3607, h * 0.4657); + c.stroke(); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEbs2.prototype.cst.EBS2, mxShapeAws3dEbs2); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS4.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS4.js new file mode 100644 index 0000000000000..d21a084a410f6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAWS4.js @@ -0,0 +1,243 @@ +"use strict"; + +function mxShapeAws4ProductIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws4ProductIcon, mxShape); +mxShapeAws4ProductIcon.prototype.cst = { + PRODUCT_ICON: 'mxgraph.aws4.productIcon' +}; + +mxShapeAws4ProductIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var opacity = parseFloat(mxUtils.getValue(this.style, 'opacity', '100')); + var op1 = opacity; + var op2 = opacity; + + if (fillColor == 'none') { + op1 = 0; + } + + if (gradientColor == 'none') { + op2 = 0; + } + + var ind = 1; + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + c.setShadow(false); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + var gradientColor = mxUtils.getValue(this.state.style, 'gradientColor', fillColor); + var gradientDir = mxUtils.getValue(this.state.style, 'gradientDirection', 'south'); + c.setFillColor(fillColor); + c.setGradient(fillColor, gradientColor, 0, 0, w, h, gradientDir, op1, op2); + c.begin(); + c.moveTo(ind, ind); + c.lineTo(w - ind, ind); + c.lineTo(w - ind, w - ind); + c.lineTo(ind, w - ind); + c.close(); + c.fill(); + var prIcon = mxUtils.getValue(this.state.style, 'prIcon', ''); + var stencil = mxStencilRegistry.getStencil(prIcon); + + if (stencil != null) { + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, ind + w * 0.15, ind + w * 0.15, w * 0.7 - 2 * ind, w * 0.7 - 2 * ind); + } +}; + +mxCellRenderer.registerShape(mxShapeAws4ProductIcon.prototype.cst.PRODUCT_ICON, mxShapeAws4ProductIcon); + +function mxShapeAws4ResourceIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws4ResourceIcon, mxShape); +mxShapeAws4ResourceIcon.prototype.cst = { + RESOURCE_ICON: 'mxgraph.aws4.resourceIcon' +}; + +mxShapeAws4ResourceIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + c.setShadow(false); + var prIcon = mxUtils.getValue(this.state.style, 'resIcon', ''); + var stencil = mxStencilRegistry.getStencil(prIcon); + + if (stencil != null) { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, w * 0.1, h * 0.1, w * 0.8, h * 0.8); + } +}; + +mxCellRenderer.registerShape(mxShapeAws4ResourceIcon.prototype.cst.RESOURCE_ICON, mxShapeAws4ResourceIcon); + +function mxShapeAws4Group(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws4Group, mxShape); +mxShapeAws4Group.prototype.cst = { + GROUP: 'mxgraph.aws4.group' +}; + +mxShapeAws4Group.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var grStroke = mxUtils.getValue(this.state.style, 'grStroke', '1'); + var size = 25; + + if (this.style != null && mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '0') { + c.pointerEvents = false; + } + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + + if (grStroke == '1') { + c.fillAndStroke(); + } else { + c.fill(); + } + + c.pointerEvents = true; + c.setShadow(false); + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, 0, 0, size, size); + } +}; + +mxCellRenderer.registerShape(mxShapeAws4Group.prototype.cst.GROUP, mxShapeAws4Group); + +function mxShapeAws4GroupCenter(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws4GroupCenter, mxShape); +mxShapeAws4GroupCenter.prototype.cst = { + GROUP_CENTER: 'mxgraph.aws4.groupCenter' +}; + +mxShapeAws4GroupCenter.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var grStroke = mxUtils.getValue(this.state.style, 'grStroke', '1'); + var size = 25; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + + if (grStroke == '1') { + c.fillAndStroke(); + } else { + c.fill(); + } + + c.setShadow(false); + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, (w - size) * 0.5, 0, size, size); + } +}; + +mxCellRenderer.registerShape(mxShapeAws4GroupCenter.prototype.cst.GROUP_CENTER, mxShapeAws4GroupCenter); + +function mxShapeAws4Group2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAws4Group2, mxShape); +mxShapeAws4Group2.prototype.cst = { + GROUP2: 'mxgraph.aws4.group2' +}; + +mxShapeAws4Group2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var size = 25; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(size, 0); + c.lineTo(size, size); + c.lineTo(0, size); + c.close(); + c.fill(); + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) { + c.setFillColor('#ffffff'); + c.setStrokeColor('none'); + stencil.drawShape(c, this, size * 0.1, size * 0.1, size * 0.8, size * 0.8); + } +}; + +mxCellRenderer.registerShape(mxShapeAws4Group2.prototype.cst.GROUP2, mxShapeAws4Group2); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAndroid.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAndroid.js new file mode 100644 index 0000000000000..ff6da293bb08a --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAndroid.js @@ -0,0 +1,1059 @@ +"use strict"; + +function mxShapeAndroidTabBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidTabBar, mxShape); +mxShapeAndroidTabBar.prototype.cst = { + MAIN_TEXT: 'mainText', + SHAPE_TAB_BAR: 'mxgraph.android.tabBar', + TEXT_COLOR: 'textColor', + TEXT_COLOR2: 'textColor2', + STROKE_COLOR2: 'strokeColor2', + FILL_COLOR2: 'fillColor2', + SELECTED: '+', + TEXT_SIZE: 'textSize' +}; + +mxShapeAndroidTabBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.MAIN_TEXT, '+Tab 1, Tab 2, Tab 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_COLOR, 'none'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_COLOR2, 'none'); + var fontSize = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var separatorColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.STROKE_COLOR2, 'none'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.FILL_COLOR2, 'none'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + + if (buttonText.charAt(0) === mxShapeAndroidTabBar.prototype.cst.SELECTED) { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 7); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + this.background(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + c.setFontStyle(mxConstants.FONT_BOLD); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) { + if (i === selectedButton) { + c.setFontColor(selectedFontColor); + } else { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeAndroidTabBar.prototype.background = function (c, w, h, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) { + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + if (i !== selectedButton && i !== selectedButton + 1) { + var currWidth = 0; + + for (var j = 0; j < i; j++) { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, h * 0.2); + c.lineTo(currWidth, h * 0.8); + } + } + + c.stroke(); + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + c.setAlpha(1); + c.setFillColor('#33b5e5'); + c.rect(buttonLeft, h * 0.9, buttonRight - buttonLeft, h * 0.1); + c.fill(); +}; + +mxShapeAndroidTabBar.prototype.buttonText = function (c, w, h, textString, buttonWidth, fontSize, minW, trueW) { + if (textString.charAt(0) === mxShapeAndroidTabBar.prototype.cst.SELECTED) { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeAndroidTabBar.prototype.cst.SHAPE_TAB_BAR, mxShapeAndroidTabBar); + +function mxShapeAndroidPhone(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidPhone, mxShape); + +mxShapeAndroidPhone.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 25; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeAndroidPhone.prototype.foreground = function (c, x, y, w, h, rSize) { + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.stroke(); + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.stroke(); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.stroke(); + c.roundrect(w * 0.4575, h * 0.905, w * 0.085, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.android.phone', mxShapeAndroidPhone); + +function mxShapeAndroidStatusBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidStatusBar, mxShape); + +mxShapeAndroidStatusBar.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeAndroidStatusBar.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeAndroidStatusBar.prototype.foreground = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fill(); + c.setFontColor(mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#222222')); + c.setFontSize(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '5')); + c.text(w - 30, h * 0.5 + 1, 0, 0, '12:00', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFillColor('#444444'); + c.begin(); + c.moveTo(w - 37, h * 0.5 + 6); + c.lineTo(w - 37, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 6); + c.lineTo(w - 32, h * 0.5 - 6); + c.lineTo(w - 32, h * 0.5 - 5); + c.lineTo(w - 31, h * 0.5 - 5); + c.lineTo(w - 31, h * 0.5 + 6); + c.close(); + c.fill(); + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none')); + c.ellipse(w - 56, h * 0.5 + 2, 2, 2); + c.fillAndStroke(); + c.setStrokeWidth(2); + c.begin(); + c.moveTo(w - 52, h * 0.5 + 1); + c.arcTo(3.5, 3.5, 0, 0, 0, w - 58, h * 0.5 + 1); + c.stroke(); + c.begin(); + c.moveTo(w - 50, h * 0.5 - 1); + c.arcTo(6, 6, 0, 0, 0, w - 60, h * 0.5 - 1); + c.stroke(); + c.setStrokeWidth(1); + c.rect(w - 51, h * 0.5 + 5, 2, 1); + c.fill(); + c.rect(w - 48, h * 0.5 + 2, 2, 4); + c.fill(); + c.rect(w - 45, h * 0.5 - 1, 2, 7); + c.fill(); + c.rect(w - 42, h * 0.5 - 4, 2, 10); + c.fill(); + c.rect(w - 37, h * 0.5 - 2, 6, 8); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.android.statusBar', mxShapeAndroidStatusBar); + +function mxShapeAndroidCheckboxGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidCheckboxGroup, mxShape); +mxShapeAndroidCheckboxGroup.prototype.cst = { + STYLE_TEXTCOLOR2: 'textColor2', + STYLE_STROKECOLOR2: 'strokeColor2', + BUTTON_TEXT: 'buttonText', + SELECTED: '+' +}; + +mxShapeAndroidCheckboxGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeAndroidCheckboxGroup.prototype.cst.BUTTON_TEXT, 'Option 1').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeAndroidCheckboxGroup.prototype.cst.STYLE_STROKECOLOR2, 'none'); + c.setStrokeColor(strokeColor2); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeAndroidCheckboxGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setStrokeColor(strokeColor); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeAndroidCheckboxGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + + if (selected === i) { + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } else { + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape('mxgraph.android.checkboxGroup', mxShapeAndroidCheckboxGroup); + +function mxShapeAndroidRadioGroup(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidRadioGroup, mxShape); +mxShapeAndroidRadioGroup.prototype.cst = { + STYLE_TEXTCOLOR2: 'textColor2', + STYLE_STROKECOLOR2: 'strokeColor2', + BUTTON_TEXT: 'buttonText', + SELECTED: '+' +}; + +mxShapeAndroidRadioGroup.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeAndroidRadioGroup.prototype.cst.BUTTON_TEXT, 'Option 1').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeAndroidRadioGroup.prototype.cst.STYLE_STROKECOLOR2, 'none'); + c.setStrokeColor(strokeColor2); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + for (var i = 0; i < optionNum; i++) { + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeAndroidRadioGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setStrokeColor(strokeColor); + c.setFillColor(strokeColor); + + for (var i = 0; i < optionNum; i++) { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + var currText = optionText[i]; + + if (currText.charAt(0) === mxShapeAndroidRadioGroup.prototype.cst.SELECTED) { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + + if (selected === i) { + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.stroke(); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } else { + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape('mxgraph.android.radioGroup', mxShapeAndroidRadioGroup); + +function mxShapeAndroidMenuBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidMenuBar, mxShape); +mxShapeAndroidMenuBar.prototype.cst = { + MENU_TEXT: 'menuText' +}; + +mxShapeAndroidMenuBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var textStrings = mxUtils.getValue(this.style, mxShapeAndroidMenuBar.prototype.cst.MENU_TEXT, 'Item 1, Item 2, Item 3').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) { + var buttonText = textStrings[i]; + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + c.rect(0, 0, w, trueH); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + + for (var i = 1; i < buttonNum; i++) { + var currHeight = i * minButtonHeight * trueH / minH; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + + c.stroke(); + + for (var i = 0; i < buttonNum; i++) { + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + c.text(10, currHeight, 0, 0, textStrings[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.android.menuBar', mxShapeAndroidMenuBar); + +function mxShapeAndroidTextSelHandles(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidTextSelHandles, mxShape); + +mxShapeAndroidTextSelHandles.prototype.paintVertexShape = function (c, x, y, w, h) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + c.translate(x, y); + var handleSizeX = 15; + var barH = Math.max(0, h - handleSizeX * 1.5); + c.setAlpha(0.5); + c.rect(handleSizeX, 0, w - 2 * handleSizeX, barH); + c.fill(); + c.begin(); + c.moveTo(0, h - handleSizeX); + c.lineTo(handleSizeX * 0.5, h - handleSizeX * 1.5); + c.lineTo(handleSizeX, h - handleSizeX); + c.close(); + c.moveTo(w - handleSizeX, h - handleSizeX); + c.lineTo(w - handleSizeX * 0.5, h - handleSizeX * 1.5); + c.lineTo(w, h - handleSizeX); + c.close(); + c.fill(); + c.setFillColor(strokeColor); + c.rect(0, h - handleSizeX, handleSizeX, handleSizeX); + c.fill(); + c.rect(w - handleSizeX, h - handleSizeX, handleSizeX, handleSizeX); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.android.textSelHandles', mxShapeAndroidTextSelHandles); + +function mxShapeAndroidIndeterminateSpinner(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidIndeterminateSpinner, mxShape); + +mxShapeAndroidIndeterminateSpinner.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeAndroidIndeterminateSpinner.prototype.background = function (c, x, y, w, h) { + c.setGradient('#aaaaaa', '#dddddd', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 0, w * 0.5, h * 0.9); + c.lineTo(w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.close(); + c.fill(); + c.setGradient('#ffffff', '#dddddd', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.5, h * 0.9); + c.lineTo(w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 0, w * 0.5, 0); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.android.indeterminateSpinner', mxShapeAndroidIndeterminateSpinner); + +function mxShapeAndroidAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeAndroidAnchor, mxShape); +mxShapeAndroidAnchor.prototype.cst = { + ANCHOR: 'mxgraph.android.anchor' +}; + +mxShapeAndroidAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeAndroidAnchor.prototype.cst.ANCHOR, mxShapeAndroidAnchor); + +function mxShapeAndroidRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidRRect, mxShape); +mxShapeAndroidRRect.prototype.cst = { + RRECT: 'mxgraph.android.rrect', + R_SIZE: 'rSize' +}; + +mxShapeAndroidRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeAndroidRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidRRect.prototype.cst.RRECT, mxShapeAndroidRRect); + +function mxShapeAndroidCheckbox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidCheckbox, mxShape); +mxShapeAndroidCheckbox.prototype.cst = { + CHECKBOX: 'mxgraph.android.checkbox' +}; + +mxShapeAndroidCheckbox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidCheckbox.prototype.cst.CHECKBOX, mxShapeAndroidCheckbox); + +function mxShapeAndroidProgressBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx1 = 0.8; + this.dx2 = 0.6; +} + +; +mxUtils.extend(mxShapeAndroidProgressBar, mxShape); +mxShapeAndroidProgressBar.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Middle Bar Length', + type: 'float', + min: 0, + max: 1, + defVal: 0.8 +}, { + name: 'dx2', + dispName: 'Left Bar Length', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}]; +mxShapeAndroidProgressBar.prototype.cst = { + PROGRESS_BAR: 'mxgraph.android.progressBar' +}; + +mxShapeAndroidProgressBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + c.translate(x, y); + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); + c.setStrokeColor('#000000'); + c.setAlpha('0.2'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx2, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressBar.prototype.cst.PROGRESS_BAR, mxShapeAndroidProgressBar); +mxShapeAndroidProgressBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressBar.prototype.cst.PROGRESS_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['dx1'], function (bounds) { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx1)))); + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + handles.push(handle2); + return handles; +}; + +function mxShapeAndroidProgressScrubberDisabled(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.3; +} + +; +mxUtils.extend(mxShapeAndroidProgressScrubberDisabled, mxShape); +mxShapeAndroidProgressScrubberDisabled.prototype.customProperties = [{ + name: 'dx', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 0.3 +}]; +mxShapeAndroidProgressScrubberDisabled.prototype.cst = { + PROGRESS_SCRUBBER_DISABLED: 'mxgraph.android.progressScrubberDisabled' +}; + +mxShapeAndroidProgressScrubberDisabled.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.translate(x, y); + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.setAlpha('0.5'); + c.setFillColor('#666666'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + c.restore(); + c.setShadow(false); + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberDisabled.prototype.cst.PROGRESS_SCRUBBER_DISABLED, mxShapeAndroidProgressScrubberDisabled); +mxShapeAndroidProgressScrubberDisabled.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberDisabled.prototype.cst.PROGRESS_SCRUBBER_DISABLED] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeAndroidProgressScrubberFocused(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.3; +} + +; +mxUtils.extend(mxShapeAndroidProgressScrubberFocused, mxShape); +mxShapeAndroidProgressScrubberFocused.prototype.customProperties = [{ + name: 'dx', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 0.3 +}]; +mxShapeAndroidProgressScrubberFocused.prototype.cst = { + PROGRESS_SCRUBBER_FOCUSED: 'mxgraph.android.progressScrubberFocused' +}; + +mxShapeAndroidProgressScrubberFocused.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + c.translate(x, y); + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.setAlpha('0.75'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx, h * 0.5); + c.stroke(); + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberFocused.prototype.cst.PROGRESS_SCRUBBER_FOCUSED, mxShapeAndroidProgressScrubberFocused); +mxShapeAndroidProgressScrubberFocused.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberFocused.prototype.cst.PROGRESS_SCRUBBER_FOCUSED] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeAndroidProgressScrubberPressed(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.3; +} + +; +mxUtils.extend(mxShapeAndroidProgressScrubberPressed, mxShape); +mxShapeAndroidProgressScrubberPressed.prototype.customProperties = [{ + name: 'dx', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 0.3 +}]; +mxShapeAndroidProgressScrubberPressed.prototype.cst = { + PROGRESS_SCRUBBER_PRESSED: 'mxgraph.android.progressScrubberPressed' +}; + +mxShapeAndroidProgressScrubberPressed.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + c.translate(x, y); + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + c.setAlpha('0.5'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fillAndStroke(); + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx, h * 0.5); + c.stroke(); + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberPressed.prototype.cst.PROGRESS_SCRUBBER_PRESSED, mxShapeAndroidProgressScrubberPressed); +mxShapeAndroidProgressScrubberPressed.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberPressed.prototype.cst.PROGRESS_SCRUBBER_PRESSED] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeAndroidQuickscroll2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeAndroidQuickscroll2, mxShape); +mxShapeAndroidQuickscroll2.prototype.customProperties = [{ + name: 'dy', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 0.5 +}]; +mxShapeAndroidQuickscroll2.prototype.cst = { + QUICKSCROLL: 'mxgraph.android.quickscroll2' +}; + +mxShapeAndroidQuickscroll2.prototype.paintVertexShape = function (c, x, y, w, h) { + var dy = Math.min(h - 20, Math.max(20, h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + c.translate(x, y); + c.save(); + c.save(); + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w - 3, 0); + c.lineTo(w - 3, h); + c.stroke(); + c.restore(); + c.begin(); + c.roundrect(w - 6, dy - 10, 6, 20, 1, 1); + c.fillAndStroke(); + c.setFillColor('#cccccc'); + c.begin(); + c.rect(0, dy - 20, w - 18, 40); + c.fill(); + c.setFillColor('#666666'); + c.begin(); + c.moveTo(w - 18, dy - 20); + c.lineTo(w - 6, dy); + c.lineTo(w - 18, dy + 20); + c.close(); + c.fill(); + c.setFontSize('12'); + c.text((w - 18) * 0.5, dy, 0, 0, 'Aa', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeAndroidQuickscroll2.prototype.cst.QUICKSCROLL, mxShapeAndroidQuickscroll2); +mxShapeAndroidQuickscroll2.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidQuickscroll2.prototype.cst.QUICKSCROLL] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - 3, bounds.y + Math.min(bounds.height - 20, Math.max(20, dy * bounds.height))); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + return handles; +}; + +function mxShapeAndroidQuickscroll3(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeAndroidQuickscroll3, mxShape); +mxShapeAndroidQuickscroll3.prototype.customProperties = [{ + name: 'dy', + dispName: 'Handle Position', + type: 'float', + min: 0, + max: 1, + defVal: 0.5 +}]; +mxShapeAndroidQuickscroll3.prototype.cst = { + QUICKSCROLL: 'mxgraph.android.quickscroll3' +}; + +mxShapeAndroidQuickscroll3.prototype.paintVertexShape = function (c, x, y, w, h) { + var dy = Math.min(h - 10, Math.max(10, h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + c.translate(x, y); + c.save(); + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); + c.restore(); + c.begin(); + c.roundrect(w * 0.5 - 3, dy - 10, 6, 20, 1, 1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidQuickscroll3.prototype.cst.QUICKSCROLL, mxShapeAndroidQuickscroll3); +mxShapeAndroidQuickscroll3.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidQuickscroll3.prototype.cst.QUICKSCROLL] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + Math.min(bounds.height - 10, Math.max(10, dy * bounds.height))); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + return handles; +}; + +function mxShapeAndroidScrollbars2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidScrollbars2, mxShape); +mxShapeAndroidScrollbars2.prototype.cst = { + SCROLLBARS: 'mxgraph.android.scrollbars2' +}; + +mxShapeAndroidScrollbars2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.rect(w - 5, 0, 5, h - 7); + c.fillAndStroke(); + c.begin(); + c.rect(0, h - 5, w - 7, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidScrollbars2.prototype.cst.SCROLLBARS, mxShapeAndroidScrollbars2); +mxShapeAndroidScrollbars2.prototype.constraints = null; + +function mxShapeAndroidSpinner2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeAndroidSpinner2, mxShape); +mxShapeAndroidSpinner2.prototype.cst = { + SPINNER: 'mxgraph.android.spinner2' +}; + +mxShapeAndroidSpinner2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); + var s = Math.min(w / 10, h); + c.begin(); + c.moveTo(w - s, h); + c.lineTo(w, h - s); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidSpinner2.prototype.cst.SPINNER, mxShapeAndroidSpinner2); +mxShapeAndroidSpinner2.prototype.constraints = null; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate.js new file mode 100644 index 0000000000000..9e26eaa5de0d9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate.js @@ -0,0 +1,995 @@ +"use strict"; + +function mxArchiMateLocation(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateLocation, mxShape); +mxArchiMateLocation.prototype.cst = { + LOCATION: 'mxgraph.archimate.location' +}; + +mxArchiMateLocation.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateLocation.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateLocation.prototype.foreground = function (c, x, y, w, h) { + c.setDashed(false); + c.translate(3, 0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateLocation.prototype.cst.LOCATION, mxArchiMateLocation); + +mxArchiMateLocation.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateBusiness(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateBusiness, mxShape); +mxArchiMateBusiness.prototype.cst = { + BUSINESS: 'mxgraph.archimate.business', + TYPE: 'busType', + PROCESS: 'process', + FUNCTION: 'function', + INTERACTION: 'interaction', + EVENT: 'event', + SERVICE: 'service' +}; +mxArchiMateBusiness.prototype.customProperties = [{ + name: 'busType', + dispName: 'Business Type', + type: 'enum', + enumList: [{ + val: 'process', + dispName: 'Process' + }, { + val: 'function', + dispName: 'Function' + }, { + val: 'interaction', + dispName: 'Interaction' + }, { + val: 'event', + dispName: 'Event' + }, { + val: 'service', + dispName: 'Service' + }] +}]; + +mxArchiMateBusiness.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateBusiness.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxArchiMateBusiness.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMateBusiness.prototype.cst.TYPE, mxArchiMateBusiness.prototype.cst.PROCESS); + c.setDashed(false); + + if (type === mxArchiMateBusiness.prototype.cst.PROCESS) { + c.translate(0, 2); + h = h - 4; + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w * 0.65, h * 0.15); + c.lineTo(w * 0.65, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.65, h); + c.lineTo(w * 0.65, h * 0.85); + c.lineTo(0, h * 0.85); + c.close(); + c.stroke(); + } else if (type === mxArchiMateBusiness.prototype.cst.FUNCTION) { + c.translate(2, 0); + w = w - 4; + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.15); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.85); + c.lineTo(0, h); + c.close(); + c.stroke(); + } else if (type === mxArchiMateBusiness.prototype.cst.INTERACTION) { + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.stroke(); + } else if (type === mxArchiMateBusiness.prototype.cst.EVENT) { + c.translate(0, 3); + h = h - 6; + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 0, 0, 0); + c.close(); + c.stroke(); + } else if (type === mxArchiMateBusiness.prototype.cst.SERVICE) { + c.translate(0, 3); + h = h - 6; + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, 0, 0); + c.close(); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateBusiness.prototype.cst.BUSINESS, mxArchiMateBusiness); + +mxArchiMateBusiness.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateBusinessObject(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateBusinessObject, mxShape); +mxArchiMateBusinessObject.prototype.cst = { + BUSINESS_OBJECT: 'mxgraph.archimate.businessObject' +}; + +mxArchiMateBusinessObject.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMateBusinessObject.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateBusinessObject.prototype.foreground = function (c, x, y, w, h) { + if (h >= 15) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateBusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMateBusinessObject); + +mxArchiMateBusinessObject.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateRepresentation(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateRepresentation, mxShape); +mxArchiMateRepresentation.prototype.cst = { + REPRESENTATION: 'mxgraph.archimate.representation' +}; + +mxArchiMateRepresentation.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMateRepresentation.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateRepresentation.prototype.cst.REPRESENTATION, mxArchiMateRepresentation); + +mxArchiMateRepresentation.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateProduct(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateProduct, mxShape); +mxArchiMateProduct.prototype.cst = { + PRODUCT: 'mxgraph.archimate.product' +}; + +mxArchiMateProduct.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMateProduct.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateProduct.prototype.foreground = function (c, x, y, w, h) { + if (h >= 15) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w * 0.6, 15); + c.lineTo(w * 0.6, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateProduct.prototype.cst.PRODUCT, mxArchiMateProduct); + +function mxArchiMateApplication(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateApplication, mxShape); +mxArchiMateApplication.prototype.cst = { + APPLICATION: 'mxgraph.archimate.application', + TYPE: 'appType', + COMPONENT: 'comp', + INTERFACE: 'interface', + INTERFACE2: 'interface2', + FUNCTION: 'function', + INTERACTION: 'interaction', + SERVICE: 'service', + NODE: 'node', + NETWORK: 'network', + COMM_PATH: 'commPath', + SYS_SW: 'sysSw', + ARTIFACT: 'artifact', + ACTOR: 'actor', + ROLE: 'role', + COLLABORATION: 'collab' +}; +mxArchiMateApplication.prototype.customProperties = [{ + name: 'appType', + dispName: 'App Type', + type: 'enum', + enumList: [{ + val: 'comp', + dispName: 'Component' + }, { + val: 'interface', + dispName: 'Interface' + }, { + val: 'interface2', + dispName: 'Interface2' + }, { + val: 'function', + dispName: 'Function' + }, { + val: 'interaction', + dispName: 'Interaction' + }, { + val: 'service', + dispName: 'Service' + }, { + val: 'node', + dispName: 'Node' + }, { + val: 'network', + dispName: 'Network' + }, { + val: 'commPath', + dispName: 'Comm Path' + }, { + val: 'artifact', + dispName: 'Artifact' + }, { + val: 'sysSw', + dispName: 'System Sw' + }, { + val: 'path', + dispName: 'Path' + }, { + val: 'actor', + dispName: 'Actor' + }, { + val: 'role', + dispName: 'Role' + }, { + val: 'collab', + dispName: 'Collaboration' + }] +}]; + +mxArchiMateApplication.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateApplication.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateApplication.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMateApplication.prototype.cst.TYPE, mxArchiMateApplication.prototype.cst.COMPONENT); + c.setDashed(false); + + if (type === mxArchiMateApplication.prototype.cst.COMPONENT) { + c.translate(1, 0); + w = w - 2; + c.rect(w * 0.25, 0, w * 0.75, h); + c.stroke(); + c.rect(0, h * 0.25, w * 0.5, h * 0.15); + c.fillAndStroke(); + c.rect(0, h * 0.6, w * 0.5, h * 0.15); + c.fillAndStroke(); + } else if (type === mxArchiMateApplication.prototype.cst.COLLABORATION) { + c.translate(0, 3); + h = h - 6; + c.ellipse(0, 0, w * 0.6, h); + c.stroke(); + c.ellipse(w * 0.4, 0, w * 0.6, h); + c.fillAndStroke(); + } else if (type === mxArchiMateApplication.prototype.cst.INTERFACE) { + c.translate(0, 4); + h = h - 8; + c.ellipse(w * 0.5, 0, w * 0.5, h); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.INTERFACE2) { + c.translate(0, 1); + h = h - 2; + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.6, h * 0.5); + c.moveTo(w, 0); + c.arcTo(w * 0.4, h * 0.5, 0, 0, 0, w, h); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.FUNCTION) { + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, h * 0.2); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.8); + c.lineTo(0, h); + c.lineTo(0, h * 0.2); + c.close(); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.INTERACTION) { + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.SERVICE) { + c.translate(0, 3); + h = h - 6; + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, 0, 0); + c.close(); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.NODE) { + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w * 0.75, h); + c.moveTo(w, 0); + c.lineTo(w * 0.75, h * 0.25); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.NETWORK) { + c.translate(0, 2); + h = h - 4; + c.begin(); + c.moveTo(w * 0.4, h * 0.2); + c.lineTo(w * 0.85, h * 0.2); + c.lineTo(w * 0.6, h * 0.8); + c.lineTo(w * 0.15, h * 0.8); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.25, 0, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(w * 0.7, 0, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(0, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(w * 0.45, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + } else if (type === mxArchiMateApplication.prototype.cst.COMM_PATH) { + c.translate(0, 5); + h = h - 10; + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.1, h); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.SYS_SW) { + c.ellipse(w * 0.3, 0, w * 0.7, h * 0.7); + c.stroke(); + c.ellipse(0, h * 0.02, w * 0.98, h * 0.98); + c.fillAndStroke(); + } else if (type === mxArchiMateApplication.prototype.cst.ARTIFACT) { + c.translate(2, 0); + w = w - 4; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); + } else if (type === mxArchiMateApplication.prototype.cst.ACTOR) { + c.translate(3, 0); + w = w - 6; + c.ellipse(w * 0.2, 0, w * 0.6, h * 0.3); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(0, h * 0.45); + c.lineTo(w, h * 0.45); + c.moveTo(0, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w, h); + c.stroke(); + } + + if (type === mxArchiMateApplication.prototype.cst.ROLE) { + c.translate(0, 4); + h = h - 8; + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.stroke(); + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateApplication.prototype.cst.APPLICATION, mxArchiMateApplication); + +mxArchiMateApplication.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateTech(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateTech, mxShape); +mxArchiMateTech.prototype.cst = { + TECH: 'mxgraph.archimate.tech', + TYPE: 'techType', + DEVICE: 'device', + PLATEAU: 'plateau' +}; +mxArchiMateTech.prototype.customProperties = [{ + name: 'techType', + dispName: 'Tech Type', + type: 'enum', + enumList: [{ + val: 'device', + dispName: 'Device' + }, { + val: 'plateau', + dispName: 'Plateau' + }] +}]; + +mxArchiMateTech.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 30, 15); + this.foreground(c, w - 30, 15, 15, 15); +}; + +mxArchiMateTech.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w, 0); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, 10); + c.lineTo(w - 10, 10); + c.lineTo(w - 10, h); + c.moveTo(w, 0); + c.lineTo(w - 10, 10); + c.fillAndStroke(); +}; + +mxArchiMateTech.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMateTech.prototype.cst.TYPE, mxArchiMateTech.prototype.cst.DEVICE); + c.setDashed(false); + + if (type === mxArchiMateTech.prototype.cst.DEVICE) { + c.roundrect(0, 0, w, h * 0.88, w * 0.05, h * 0.05); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1, h * 0.88); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w * 0.9, h * 0.88); + c.stroke(); + } else if (type === mxArchiMateTech.prototype.cst.PLATEAU) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.rect(w * 0.4, 0, w * 0.6, h * 0.2); + c.fill(); + c.rect(w * 0.2, h * 0.4, w * 0.6, h * 0.2); + c.fill(); + c.rect(0, h * 0.8, w * 0.6, h * 0.2); + c.fill(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateTech.prototype.cst.TECH, mxArchiMateTech); + +mxArchiMateTech.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateMotivational(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateMotivational, mxShape); +mxArchiMateMotivational.prototype.cst = { + MOTIV: 'mxgraph.archimate.motiv', + TYPE: 'motivType', + STAKE: 'stake', + DRIVER: 'driver', + ASSESSMENT: 'assess', + GOAL: 'goal', + REQUIREMENT: 'req', + CONSTRAINT: 'const', + PRINCIPLE: 'princ' +}; +mxArchiMateMotivational.prototype.customProperties = [{ + name: 'motivType', + dispName: 'Motivational Type', + type: 'enum', + enumList: [{ + val: 'stake', + dispName: 'Stake' + }, { + val: 'driver', + dispName: 'Driver' + }, { + val: 'assess', + dispName: 'Assessment' + }, { + val: 'goal', + dispName: 'Goal' + }, { + val: 'req', + dispName: 'Requirement' + }, { + val: 'const', + dispName: 'Constraint' + }, { + val: 'princ', + dispName: 'Principle' + }] +}]; + +mxArchiMateMotivational.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateMotivational.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(10, 0); + c.lineTo(w - 10, 0); + c.lineTo(w, 10); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(10, h); + c.lineTo(0, h - 10); + c.lineTo(0, 10); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMateMotivational.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMateMotivational.prototype.cst.TYPE, mxArchiMateMotivational.prototype.cst.STAKE); + c.setDashed(false); + + if (type === mxArchiMateMotivational.prototype.cst.STAKE) { + c.translate(0, 4); + h = h - 8; + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.stroke(); + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.stroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.DRIVER) { + c.ellipse(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.145, h * 0.855); + c.lineTo(w * 0.855, h * 0.145); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.35, h * 0.35, w * 0.3, h * 0.3); + c.fillAndStroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.ASSESSMENT) { + c.ellipse(w * 0.2, 0, w * 0.8, h * 0.8); + c.stroke(); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.32, h * 0.68); + c.stroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.GOAL) { + c.ellipse(0, 0, w, h); + c.stroke(); + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.3, h * 0.3, w * 0.4, h * 0.4); + c.fillAndStroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.REQUIREMENT) { + c.translate(0, 4); + h = h - 8; + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.stroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.CONSTRAINT) { + c.translate(0, 4); + h = h - 8; + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.lineTo(w * 0.2, h); + c.stroke(); + } else if (type === mxArchiMateMotivational.prototype.cst.PRINCIPLE) { + c.begin(); + c.moveTo(w * 0.05, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.05); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.42, h * 0.15); + c.lineTo(w * 0.58, h * 0.15); + c.lineTo(w * 0.55, h * 0.7); + c.close(); + c.fill(); + c.rect(w * 0.45, h * 0.75, w * 0.1, h * 0.1); + c.fill(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateMotivational.prototype.cst.MOTIV, mxArchiMateMotivational); + +mxArchiMateMotivational.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMateGap(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMateGap, mxShape); +mxArchiMateGap.prototype.cst = { + GAP: 'mxgraph.archimate.gap' +}; + +mxArchiMateGap.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateGap.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMateGap.prototype.foreground = function (c, x, y, w, h) { + c.setDashed(false); + c.translate(0, 2); + h = h - 4; + c.ellipse(w * 0.15, 0, w * 0.7, h); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.35); + c.lineTo(w, h * 0.35); + c.moveTo(0, h * 0.65); + c.lineTo(w, h * 0.65); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateGap.prototype.cst.GAP, mxArchiMateGap); + +mxArchiMateGap.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate3.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate3.js new file mode 100644 index 0000000000000..b9e0ad301b87b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArchiMate3.js @@ -0,0 +1,2147 @@ +"use strict"; + +function mxArchiMate3Application(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Application, mxShape); +mxArchiMate3Application.prototype.cst = { + APPLICATION: 'mxgraph.archimate3.application', + TYPE: 'appType', + COMPONENT: 'comp', + COLLABORATION: 'collab', + INTERFACE: 'interface', + INTERFACE2: 'interface2', + LOCATION: 'location', + FUNCTION: 'func', + INTERACTION: 'interaction', + SERVICE: 'serv', + EVENT: 'event', + EVENT2: 'event2', + NODE: 'node', + NETWORK: 'netw', + COMM_PATH: 'commPath', + ACTOR: 'actor', + ASSESSMENT: 'assess', + GOAL: 'goal', + OUTCOME: 'outcome', + ROLE: 'role', + PROCESS: 'proc', + DRIVER: 'driver', + PRINCIPLE: 'principle', + REQUIREMENT: 'requirement', + CONSTRAINT: 'constraint', + RESOURCE: 'resource', + CAPABILITY: 'capability', + COURSE: 'course', + MATERIAL: 'material', + DISTRIBUTION: 'distribution', + SYS_SW: 'sysSw', + ARTIFACT: 'artifact', + PATH: 'path', + ARCHI_TYPE: 'archiType', + TYPE_SQUARE: 'square', + TYPE_ROUNDED: 'rounded', + TYPE_OCT: 'oct' +}; +mxArchiMate3Application.prototype.customProperties = [{ + name: 'archiType', + dispName: 'Type', + type: 'enum', + enumList: [{ + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Rounded' + }, { + val: 'oct', + dispName: 'Octagonal' + }] +}, { + name: 'appType', + dispName: 'App Type', + type: 'enum', + enumList: [{ + val: 'comp', + dispName: 'Component' + }, { + val: 'collab', + dispName: 'Collaboration' + }, { + val: 'interface', + dispName: 'Interface' + }, { + val: 'interface2', + dispName: 'Interface2' + }, { + val: 'func', + dispName: 'Function' + }, { + val: 'interaction', + dispName: 'Interaction' + }, { + val: 'location', + dispName: 'Location' + }, { + val: 'serv', + dispName: 'Service' + }, { + val: 'event', + dispName: 'Event' + }, { + val: 'event2', + dispName: 'Event2' + }, { + val: 'node', + dispName: 'Node' + }, { + val: 'netw', + dispName: 'Network' + }, { + val: 'commPath', + dispName: 'Comm Path' + }, { + val: 'actor', + dispName: 'Actor' + }, { + val: 'assess', + dispName: 'Assessment' + }, { + val: 'goal', + dispName: 'Goal' + }, { + val: 'outcome', + dispName: 'Outcome' + }, { + val: 'role', + dispName: 'Role' + }, { + val: 'proc', + dispName: 'Process' + }, { + val: 'driver', + dispName: 'Driver' + }, { + val: 'principle', + dispName: 'Principle' + }, { + val: 'requirement', + dispName: 'Requirement' + }, { + val: 'constraint', + dispName: 'Constraint' + }, { + val: 'resource', + dispName: 'Resource' + }, { + val: 'capability', + dispName: 'Capability' + }, { + val: 'course', + dispName: 'Course' + }, { + val: 'material', + dispName: 'Material' + }, { + val: 'distribution', + dispName: 'Distribution' + }, { + val: 'sysSw', + dispName: 'System Sw' + }, { + val: 'artifact', + dispName: 'Artifact' + }, { + val: 'path', + dispName: 'Path' + }] +}]; + +mxArchiMate3Application.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Application.prototype.background = function (c, x, y, w, h) { + var archiType = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.ARCHI_TYPE, 'square'); + + if (archiType === 'rounded') { + c.roundrect(0, 0, w, h, 10, 10); + } else if (archiType === 'oct' && w >= 20 && h >= 20) { + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w - 10, 0); + c.lineTo(w, 10); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(10, h); + c.lineTo(0, h - 10); + c.close(); + c.fillAndStroke(); + } else { + c.rect(0, 0, w, h); + } + + c.fillAndStroke(); +}; + +mxArchiMate3Application.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.TYPE, ''); + c.setDashed(false); + + if (type === mxArchiMate3Application.prototype.cst.COMPONENT) { + c.translate(1, 0); + w = w - 2; + mxArchiMate3Component.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.COLLABORATION) { + c.translate(0, 3); + h = h - 6; + mxArchiMate3Collaboration.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.INTERFACE) { + c.translate(0, 4); + h = h - 8; + mxArchiMate3Interface.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.INTERFACE2) { + c.translate(0, 1); + h = h - 2; + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.6, h * 0.5); + c.moveTo(w, 0); + c.arcTo(w * 0.4, h * 0.5, 0, 0, 0, w, h); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.FUNCTION) { + mxArchiMate3Function.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.INTERACTION) { + mxArchiMate3Interaction.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.LOCATION) { + c.translate(3, 0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.SERVICE) { + c.translate(0, 3); + h = h - 6; + mxArchiMate3Service.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.EVENT) { + c.translate(0, 3); + h = h - 6; + mxArchiMate3Event.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.EVENT2) { + c.translate(0, 3); + h = h - 6; + mxArchiMate3Event2.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.NODE) { + mxArchiMate3Node.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.NETWORK) { + c.translate(0, 2); + h = h - 4; + c.begin(); + c.moveTo(w * 0.4, h * 0.2); + c.lineTo(w * 0.85, h * 0.2); + c.lineTo(w * 0.6, h * 0.8); + c.lineTo(w * 0.15, h * 0.8); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.25, 0, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(w * 0.7, 0, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(0, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + c.ellipse(w * 0.45, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + } else if (type === mxArchiMate3Application.prototype.cst.COMM_PATH) { + c.translate(0, 5); + h = h - 10; + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.1, h); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.ARTIFACT) { + c.translate(2, 0); + w = w - 4; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.ACTOR) { + c.translate(3, 0); + w = w - 6; + mxArchiMate3Actor.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.ROLE) { + c.translate(0, 4); + h = h - 8; + mxArchiMate3Role.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.PROCESS) { + c.translate(0, 3); + h = h - 6; + mxArchiMate3Process.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.DRIVER) { + c.ellipse(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.145, h * 0.855); + c.lineTo(w * 0.855, h * 0.145); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.35, h * 0.35, w * 0.3, h * 0.3); + c.fillAndStroke(); + } else if (type === mxArchiMate3Application.prototype.cst.ASSESSMENT) { + c.ellipse(w * 0.2, 0, w * 0.8, h * 0.8); + c.stroke(); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.32, h * 0.68); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.GOAL) { + c.ellipse(0, 0, w, h); + c.stroke(); + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.3, h * 0.3, w * 0.4, h * 0.4); + c.fillAndStroke(); + } else if (type === mxArchiMate3Application.prototype.cst.OUTCOME) { + c.ellipse(0, w * 0.2, w * 0.8, h * 0.8); + c.stroke(); + c.ellipse(w * 0.15, w * 0.35, w * 0.5, h * 0.5); + c.stroke(); + c.ellipse(w * 0.3, w * 0.5, w * 0.2, h * 0.2); + c.stroke(); + c.begin(); + c.moveTo(w * 0.4, h * 0.6); + c.lineTo(w * 0.9, h * 0.1); + c.moveTo(w * 0.42, h * 0.4); + c.lineTo(w * 0.4, h * 0.6); + c.lineTo(w * 0.6, h * 0.58); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w, h * 0.2); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.PRINCIPLE) { + c.begin(); + c.moveTo(w * 0.05, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.05); + c.close(); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.42, h * 0.15); + c.lineTo(w * 0.58, h * 0.15); + c.lineTo(w * 0.55, h * 0.7); + c.close(); + c.fill(); + c.rect(w * 0.45, h * 0.75, w * 0.1, h * 0.1); + c.fill(); + } else if (type === mxArchiMate3Application.prototype.cst.REQUIREMENT) { + c.translate(0, 4); + h = h - 8; + mxArchiMate3Requirement.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.CONSTRAINT) { + c.translate(0, 4); + h = h - 8; + mxArchiMate3Constraint.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.MATERIAL) { + c.translate(0, 1); + h = h - 2; + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.25, h); + c.close(); + c.moveTo(w * 0.15, h * 0.5); + c.lineTo(w * 0.31, h * 0.2); + c.moveTo(w * 0.69, h * 0.2); + c.lineTo(w * 0.85, h * 0.5); + c.moveTo(w * 0.68, h * 0.80); + c.lineTo(w * 0.32, h * 0.80); + c.stroke(); + } else if (type === mxArchiMate3Application.prototype.cst.DISTRIBUTION) { + c.translate(0, 4); + h = h - 8; + mxArchiMate3Distribution.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.RESOURCE) { + c.translate(0, 1); + h = h - 2; + mxArchiMate3Resource.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.CAPABILITY) { + mxArchiMate3Capability.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.COURSE) { + mxArchiMate3Course.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.SYS_SW) { + mxArchiMate3SysSw.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.ARTIFACT) { + c.translate(2, 0); + w = w - 4; + mxArchiMate3Artifact.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Application.prototype.cst.PATH) { + c.translate(0, 5); + h = h - 10; + mxArchiMate3Path.prototype.background(c, x, y, w, h); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Application.prototype.cst.APPLICATION, mxArchiMate3Application); + +mxArchiMate3Application.prototype.getConstraints = function (style, w, h) { + var constr = []; + var archiType = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.ARCHI_TYPE, 'square'); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + if (archiType === 'rounded') { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + } else if (archiType === 'oct' && w >= 20 && h >= 20) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + } else { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + } + + return constr; +}; + +function mxArchiMate3Component(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Component, mxShape); +mxArchiMate3Component.prototype.cst = { + COMPONENT: 'mxgraph.archimate3.component' +}; + +mxArchiMate3Component.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Component.prototype.background = function (c, x, y, w, h) { + c.rect(w * 0.25, 0, w * 0.75, h); + c.fillAndStroke(); + c.rect(0, h * 0.25, w * 0.5, h * 0.15); + c.fillAndStroke(); + c.rect(0, h * 0.6, w * 0.5, h * 0.15); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Component.prototype.cst.COMPONENT, mxArchiMate3Component); + +mxArchiMate3Component.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.325), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.675), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + return constr; +}; + +function mxArchiMate3Collaboration(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Collaboration, mxShape); +mxArchiMate3Collaboration.prototype.cst = { + COLLABORATION: 'mxgraph.archimate3.collaboration' +}; + +mxArchiMate3Collaboration.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Collaboration.prototype.background = function (c, x, y, w, h) { + c.ellipse(0, 0, w * 0.6, h); + c.fillAndStroke(); + c.ellipse(w * 0.4, 0, w * 0.6, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Collaboration.prototype.cst.COLLABORATION, mxArchiMate3Collaboration); + +mxArchiMate3Collaboration.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.125), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.875), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxArchiMate3Interface(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Interface, mxShape); +mxArchiMate3Interface.prototype.cst = { + INTERFACE: 'mxgraph.archimate3.interface' +}; + +mxArchiMate3Interface.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Interface.prototype.background = function (c, x, y, w, h) { + c.ellipse(w * 0.5, 0, w * 0.5, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Interface.prototype.cst.INTERFACE, mxArchiMate3Interface); + +mxArchiMate3Interface.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + return constr; +}; + +function mxArchiMate3Process(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Process, mxShape); +mxArchiMate3Process.prototype.cst = { + PROCESS: 'mxgraph.archimate3.process' +}; + +mxArchiMate3Process.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Process.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.3); + c.lineTo(w * 0.6, h * 0.3); + c.lineTo(w * 0.6, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.6, h); + c.lineTo(w * 0.6, h * 0.7); + c.lineTo(0, h * 0.7); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Process.prototype.cst.PROCESS, mxArchiMate3Process); + +mxArchiMate3Process.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxArchiMate3Function(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Function, mxShape); +mxArchiMate3Function.prototype.cst = { + FUNCTION: 'mxgraph.archimate3.function' +}; + +mxArchiMate3Function.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Function.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, h * 0.2); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.8); + c.lineTo(0, h); + c.lineTo(0, h * 0.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Function.prototype.cst.FUNCTION, mxArchiMate3Function); + +mxArchiMate3Function.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.2), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.8), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.2), false)); + return constr; +}; + +function mxArchiMate3Interaction(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Interaction, mxShape); +mxArchiMate3Interaction.prototype.cst = { + INTERACTION: 'mxgraph.archimate3.interaction' +}; + +mxArchiMate3Interaction.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Interaction.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Interaction.prototype.cst.INTERACTION, mxArchiMate3Interaction); + +mxArchiMate3Interaction.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.14), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.14), false)); + return constr; +}; + +function mxArchiMate3Service(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Service, mxShape); +mxArchiMate3Service.prototype.cst = { + SERVICE: 'mxgraph.archimate3.service' +}; + +mxArchiMate3Service.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Service.prototype.background = function (c, x, y, w, h) { + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + c.begin(); + c.moveTo(w1, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w1, h); + c.lineTo(w2, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w2, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Service.prototype.cst.SERVICE, mxArchiMate3Service); + +mxArchiMate3Service.prototype.getConstraints = function (style, w, h) { + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.855)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.855)); + return constr; +}; + +function mxArchiMate3Requirement(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Requirement, mxShape); +mxArchiMate3Requirement.prototype.cst = { + REQUIREMENT: 'mxgraph.archimate3.requirement' +}; + +mxArchiMate3Requirement.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Requirement.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Requirement.prototype.cst.REQUIREMENT, mxArchiMate3Requirement); + +mxArchiMate3Requirement.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + return constr; +}; + +function mxArchiMate3Constraint(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Constraint, mxShape); +mxArchiMate3Constraint.prototype.cst = { + CONSTRAINT: 'mxgraph.archimate3.constraint' +}; + +mxArchiMate3Constraint.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Constraint.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.lineTo(w * 0.2, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Constraint.prototype.cst.CONSTRAINT, mxArchiMate3Constraint); + +mxArchiMate3Constraint.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + return constr; +}; + +function mxArchiMate3Event(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Event, mxShape); +mxArchiMate3Event.prototype.cst = { + EVENT: 'mxgraph.archimate3.event' +}; + +mxArchiMate3Event.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Event.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.lineTo(h * 0.5, h * 0.5); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Event.prototype.cst.EVENT, mxArchiMate3Event); + +mxArchiMate3Event.prototype.getConstraints = function (style, w, h) { + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, h)); + return constr; +}; + +function mxArchiMate3Event2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Event2, mxShape); +mxArchiMate3Event2.prototype.cst = { + EVENT2: 'mxgraph.archimate3.event2' +}; + +mxArchiMate3Event2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Event2.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 0, 0, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Event2.prototype.cst.EVENT2, mxArchiMate3Event2); + +function mxArchiMate3Actor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Actor, mxShape); +mxArchiMate3Actor.prototype.cst = { + ACTOR: 'mxgraph.archimate3.actor' +}; + +mxArchiMate3Actor.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Actor.prototype.background = function (c, x, y, w, h) { + c.ellipse(w * 0.2, 0, w * 0.6, h * 0.3); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(0, h * 0.45); + c.lineTo(w, h * 0.45); + c.moveTo(0, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Actor.prototype.cst.ACTOR, mxArchiMate3Actor); + +mxArchiMate3Actor.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + return constr; +}; + +function mxArchiMate3Role(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Role, mxShape); +mxArchiMate3Role.prototype.cst = { + ROLE: 'mxgraph.archimate3.role' +}; + +mxArchiMate3Role.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Role.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.fillAndStroke(); + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Role.prototype.cst.ROLE, mxArchiMate3Role); + +mxArchiMate3Role.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxArchiMate3BusinessObject(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3BusinessObject, mxShape); +mxArchiMate3BusinessObject.prototype.cst = { + BUSINESS_OBJECT: 'mxgraph.archimate3.businessObject' +}; + +mxArchiMate3BusinessObject.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3BusinessObject.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3BusinessObject.prototype.foreground = function (c, x, y, w, h) { + if (h >= 15) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3BusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMate3BusinessObject); + +mxArchiMate3BusinessObject.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Contract(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Contract, mxShape); +mxArchiMate3Contract.prototype.cst = { + CONTRACT: 'mxgraph.archimate3.contract' +}; + +mxArchiMate3Contract.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3Contract.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Contract.prototype.foreground = function (c, x, y, w, h) { + if (h >= 15) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } + + if (h >= 30) { + c.begin(); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Contract.prototype.cst.CONTRACT, mxArchiMate3Contract); + +mxArchiMate3Contract.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Product(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Product, mxShape); +mxArchiMate3Product.prototype.cst = { + PRODUCT: 'mxgraph.archimate3.product' +}; + +mxArchiMate3Product.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3Product.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Product.prototype.foreground = function (c, x, y, w, h) { + if (h >= 15) { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w * 0.6, 15); + c.lineTo(w * 0.6, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Product.prototype.cst.PRODUCT, mxArchiMate3Product); + +mxArchiMate3Product.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Representation(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Representation, mxShape); +mxArchiMate3Representation.prototype.cst = { + REPRESENTATION: 'mxgraph.archimate3.representation' +}; + +mxArchiMate3Representation.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMate3Representation.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); + if (h >= 20) c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Representation.prototype.cst.REPRESENTATION, mxArchiMate3Representation); + +mxArchiMate3Representation.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Deliverable(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Deliverable, mxShape); +mxArchiMate3Deliverable.prototype.cst = { + DELIVERABLE: 'mxgraph.archimate3.deliverable' +}; + +mxArchiMate3Deliverable.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMate3Deliverable.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Deliverable.prototype.cst.DELIVERABLE, mxArchiMate3Deliverable); + +mxArchiMate3Deliverable.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Location(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Location, mxShape); +mxArchiMate3Location.prototype.cst = { + LOCATION: 'mxgraph.archimate3.location' +}; + +mxArchiMate3Location.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Location.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Location.prototype.foreground = function (c, x, y, w, h) { + c.setDashed(false); + c.translate(3, 0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Location.prototype.cst.LOCATION, mxArchiMate3Location); + +function mxArchiMate3Gap(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Gap, mxShape); +mxArchiMate3Gap.prototype.cst = { + GAP: 'mxgraph.archimate3.gap' +}; + +mxArchiMate3Gap.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Gap.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMate3Gap.prototype.foreground = function (c, x, y, w, h) { + c.setDashed(false); + c.translate(0, 2); + h = h - 4; + c.ellipse(w * 0.15, 0, w * 0.7, h); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.35); + c.lineTo(w, h * 0.35); + c.moveTo(0, h * 0.65); + c.lineTo(w, h * 0.65); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Gap.prototype.cst.GAP, mxArchiMate3Gap); + +mxArchiMate3Gap.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Tech(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Tech, mxShape); +mxArchiMate3Tech.prototype.cst = { + TECH: 'mxgraph.archimate3.tech', + TYPE: 'techType', + DEVICE: 'device', + PLATEAU: 'plateau', + FACILITY: 'facility', + EQUIPMENT: 'equipment', + SYS_SW: 'sysSw' +}; + +mxArchiMate3Tech.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 30, 15); + this.foreground(c, w - 30, 15, 15, 15); +}; + +mxArchiMate3Tech.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w, 0); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, 10); + c.lineTo(w - 10, 10); + c.lineTo(w - 10, h); + c.moveTo(w, 0); + c.lineTo(w - 10, 10); + c.fillAndStroke(); +}; + +mxArchiMate3Tech.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxArchiMate3Tech.prototype.cst.TYPE, mxArchiMate3Tech.prototype.cst.DEVICE); + c.setDashed(false); + + if (type === mxArchiMate3Tech.prototype.cst.PLATEAU) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.rect(w * 0.4, 0, w * 0.6, h * 0.2); + c.fill(); + c.rect(w * 0.2, h * 0.4, w * 0.6, h * 0.2); + c.fill(); + c.rect(0, h * 0.8, w * 0.6, h * 0.2); + c.fill(); + } else if (type === mxArchiMate3Tech.prototype.cst.FACILITY) { + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w * 0.13, 0); + c.lineTo(w * 0.13, h * 0.7); + c.lineTo(w * 0.42, h * 0.55); + c.lineTo(w * 0.42, h * 0.7); + c.lineTo(w * 0.71, h * 0.55); + c.lineTo(w * 0.71, h * 0.7); + c.lineTo(w, h * 0.55); + c.lineTo(w, h); + c.close(); + c.stroke(); + } else if (type === mxArchiMate3Tech.prototype.cst.EQUIPMENT) { + c.begin(); + c.moveTo(w * 0.72, h * 0.38); + c.curveTo(w * 0.78, w * 0.38, w * 0.85, h * 0.34, w * 0.85, h * 0.26); + c.curveTo(w * 0.85, w * 0.18, w * 0.78, h * 0.14, w * 0.73, h * 0.14); + c.curveTo(w * 0.64, w * 0.14, w * 0.59, h * 0.2, w * 0.59, h * 0.26); + c.curveTo(w * 0.59, h * 0.33, w * 0.65, w * 0.38, w * 0.72, h * 0.38); + c.close(); + c.moveTo(w * 0.68, h * 0.52); + c.lineTo(w * 0.67, h * 0.45); + c.lineTo(w * 0.61, h * 0.43); + c.lineTo(w * 0.56, h * 0.48); + c.lineTo(w * 0.5, h * 0.42); + c.lineTo(w * 0.54, h * 0.36); + c.lineTo(w * 0.52, h * 0.31); + c.lineTo(w * 0.45, h * 0.31); + c.lineTo(w * 0.45, h * 0.22); + c.lineTo(w * 0.52, h * 0.21); + c.lineTo(w * 0.54, h * 0.16); + c.lineTo(w * 0.5, h * 0.11); + c.lineTo(w * 0.56, h * 0.05); + c.lineTo(w * 0.62, h * 0.09); + c.lineTo(w * 0.67, h * 0.07); + c.lineTo(w * 0.68, 0); + c.lineTo(w * 0.77, 0); + c.lineTo(w * 0.78, h * 0.07); + c.lineTo(w * 0.83, h * 0.09); + c.lineTo(w * 0.89, h * 0.05); + c.lineTo(w * 0.95, h * 0.11); + c.lineTo(w * 0.91, h * 0.16); + c.lineTo(w * 0.93, h * 0.21); + c.lineTo(w, h * 0.22); + c.lineTo(w, h * 0.31); + c.lineTo(w * 0.93, h * 0.31); + c.lineTo(w * 0.91, h * 0.36); + c.lineTo(w * 0.95, h * 0.41); + c.lineTo(w * 0.89, h * 0.47); + c.lineTo(w * 0.83, h * 0.43); + c.lineTo(w * 0.78, h * 0.45); + c.lineTo(w * 0.77, h * 0.52); + c.lineTo(w * 0.68, h * 0.52); + c.close(); + c.moveTo(w * 0.36, h * 0.81); + c.curveTo(w * 0.44, h * 0.81, w * 0.52, h * 0.75, w * 0.52, h * 0.67); + c.curveTo(w * 0.52, h * 0.59, w * 0.45, h * 0.51, w * 0.35, h * 0.51); + c.curveTo(w * 0.27, h * 0.51, w * 0.19, h * 0.58, w * 0.19, h * 0.67); + c.curveTo(w * 0.19, h * 0.74, w * 0.27, h * 0.82, w * 0.36, h * 0.81); + c.close(); + c.moveTo(w * 0.21, h * 0.98); + c.lineTo(w * 0.22, h * 0.89); + c.lineTo(w * 0.16, h * 0.85); + c.lineTo(w * 0.08, h * 0.88); + c.lineTo(w * 0.02, h * 0.79); + c.lineTo(w * 0.09, h * 0.74); + c.lineTo(w * 0.08, h * 0.67); + c.lineTo(0, h * 0.63); + c.lineTo(w * 0.03, h * 0.53); + c.lineTo(w * 0.12, h * 0.54); + c.lineTo(w * 0.16, h * 0.48); + c.lineTo(w * 0.13, h * 0.4); + c.lineTo(w * 0.22, h * 0.35); + c.lineTo(w * 0.28, h * 0.42); + c.lineTo(w * 0.36, h * 0.41); + c.lineTo(w * 0.39, h * 0.33); + c.lineTo(w * 0.5, h * 0.36); + c.lineTo(w * 0.49, h * 0.45); + c.lineTo(w * 0.55, h * 0.49); + c.lineTo(w * 0.63, h * 0.45); + c.lineTo(w * 0.69, h * 0.54); + c.lineTo(w * 0.62, h * 0.6); + c.lineTo(w * 0.63, h * 0.67); + c.lineTo(w * 0.71, h * 0.7); + c.lineTo(w * 0.68, h * 0.8); + c.lineTo(w * 0.59, h * 0.79); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.59, h * 0.79); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.59, h * 0.93); + c.lineTo(w * 0.49, h * 0.98); + c.lineTo(w * 0.43, h * 0.91); + c.lineTo(w * 0.36, h * 0.92); + c.lineTo(w * 0.32, h); + c.lineTo(w * 0.21, h * 0.98); + c.close(); + c.stroke(); + } else if (type === mxArchiMate3Tech.prototype.cst.SYS_SW) { + mxArchiMate3SysSw.prototype.background(c, x, y, w, h); + } else if (type === mxArchiMate3Tech.prototype.cst.DEVICE) { + mxArchiMate3Device.prototype.background(c, x, y, w, h); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Tech.prototype.cst.TECH, mxArchiMate3Tech); + +mxArchiMate3Tech.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + return constr; +}; + +function mxArchiMate3Distribution(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Distribution, mxShape); +mxArchiMate3Distribution.prototype.cst = { + DISTRIBUTION: 'mxgraph.archimate3.distribution' +}; + +mxArchiMate3Distribution.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Distribution.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.1, h * 0.25); + c.lineTo(w * 0.9, h * 0.25); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h * 0.75); + c.lineTo(w * 0.1, h * 0.75); + c.lineTo(0, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, h); + c.moveTo(w * 0.8, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Distribution.prototype.cst.DISTRIBUTION, mxArchiMate3Distribution); + +mxArchiMate3Distribution.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxArchiMate3Resource(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Resource, mxShape); +mxArchiMate3Resource.prototype.cst = { + RESOURCE: 'mxgraph.archimate3.resource' +}; + +mxArchiMate3Resource.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Resource.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.51, h * 0.34); + c.lineTo(w * 0.51, h * 0.65); + c.moveTo(w * 0.35, h * 0.34); + c.lineTo(w * 0.35, h * 0.65); + c.moveTo(w * 0.19, h * 0.34); + c.lineTo(w * 0.19, h * 0.65); + c.moveTo(w * 0.91, h * 0.4); + c.curveTo(w * 0.93, h * 0.39, w * 0.95, h * 0.39, w * 0.97, h * 0.40); + c.curveTo(w * 0.99, h * 0.4, w, h * 0.41, w, h * 0.43); + c.curveTo(w, h * 0.48, w, h * 0.52, w, h * 0.57); + c.curveTo(w, h * 0.58, w * 0.99, h * 0.59, w * 0.98, h * 0.6); + c.curveTo(w * 0.96, h * 0.6, w * 0.93, h * 0.6, w * 0.91, h * 0.6); + c.moveTo(0, h * 0.73); + c.curveTo(0, h * 0.6, 0, h * 0.43, 0, h * 0.27); + c.curveTo(0, h * 0.24, w * 0.03, h * 0.21, w * 0.08, h * 0.21); + c.curveTo(w * 0.33, h * 0.2, w * 0.61, h * 0.2, w * 0.84, h * 0.21); + c.curveTo(w * 0.88, h * 0.22, w * 0.89, h * 0.24, w * 0.9, h * 0.26); + c.curveTo(w * 0.91, h * 0.41, w * 0.91, h * 0.57, w * 0.9, h * 0.72); + c.curveTo(w * 0.9, h * 0.74, w * 0.88, h * 0.78, w * 0.83, h * 0.79); + c.curveTo(w * 0.57, h * 0.79, w * 0.32, h * 0.79, w * 0.06, h * 0.79); + c.curveTo(w * 0.02, h * 0.78, 0, h * 0.76, 0, h * 0.73); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Resource.prototype.cst.RESOURCE, mxArchiMate3Resource); + +function mxArchiMate3Capability(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Capability, mxShape); +mxArchiMate3Capability.prototype.cst = { + CAPABILITY: 'mxgraph.archimate3.capability' +}; + +mxArchiMate3Capability.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Capability.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, h * 0.67); + c.lineTo(w * 0.33, h * 0.67); + c.lineTo(w * 0.33, h * 0.33); + c.lineTo(w * 0.67, h * 0.33); + c.lineTo(w * 0.67, 0); + c.close(); + c.moveTo(w * 0.67, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(w * 0.33, h * 0.67); + c.lineTo(w, h * 0.67); + c.moveTo(w * 0.33, h * 0.67); + c.lineTo(w * 0.33, h); + c.moveTo(w * 0.67, h * 0.33); + c.lineTo(w * 0.67, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Capability.prototype.cst.CAPABILITY, mxArchiMate3Capability); + +function mxArchiMate3Course(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Course, mxShape); +mxArchiMate3Course.prototype.cst = { + COURSE: 'mxgraph.archimate3.course' +}; + +mxArchiMate3Course.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Course.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h); + c.arcTo(w * 0.7, h * 0.7, 0, 0, 1, w * 0.41, h * 0.56); + c.moveTo(w * 0.14, h * 0.54); + c.lineTo(w * 0.41, h * 0.56); + c.lineTo(w * 0.3, h * 0.78); + c.stroke(); + c.ellipse(w * 0.4, 0, w * 0.6, h * 0.6); + c.stroke(); + c.ellipse(w * 0.5, h * 0.1, w * 0.4, h * 0.4); + c.stroke(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + c.setFillColor(fillColor); + c.ellipse(w * 0.6, h * 0.2, w * 0.2, h * 0.2); + c.fill(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Course.prototype.cst.COURSE, mxArchiMate3Course); + +function mxArchiMate3Node(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Node, mxShape); +mxArchiMate3Node.prototype.cst = { + NODE: 'mxgraph.archimate3.node' +}; + +mxArchiMate3Node.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Node.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w * 0.75, h); + c.moveTo(w, 0); + c.lineTo(w * 0.75, h * 0.25); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Node.prototype.cst.NODE, mxArchiMate3Node); + +mxArchiMate3Node.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3Device(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Device, mxShape); +mxArchiMate3Device.prototype.cst = { + DEVICE: 'mxgraph.archimate3.device' +}; + +mxArchiMate3Device.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Device.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w, h * 0.88, w * 0.1, h * 0.1); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1, h * 0.88); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w * 0.9, h * 0.88); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Device.prototype.cst.DEVICE, mxArchiMate3Device); + +mxArchiMate3Device.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.03, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.97, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3SysSw(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3SysSw, mxShape); +mxArchiMate3SysSw.prototype.cst = { + SYS_SW: 'mxgraph.archimate3.sysSw' +}; + +mxArchiMate3SysSw.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3SysSw.prototype.background = function (c, x, y, w, h) { + c.ellipse(w * 0.3, 0, w * 0.7, h * 0.7); + c.stroke(); + c.ellipse(0, h * 0.02, w * 0.98, h * 0.98); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3SysSw.prototype.cst.SYS_SW, mxArchiMate3SysSw); + +function mxArchiMate3Artifact(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Artifact, mxShape); +mxArchiMate3Artifact.prototype.cst = { + ARTIFACT: 'mxgraph.archimate3.artifact' +}; + +mxArchiMate3Artifact.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Artifact.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Artifact.prototype.cst.ARTIFACT, mxArchiMate3Artifact); + +mxArchiMate3Artifact.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.85, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.22), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxArchiMate3CommNetw(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3CommNetw, mxShape); +mxArchiMate3CommNetw.prototype.cst = { + COMM_NETW: 'mxgraph.archimate3.commNetw' +}; + +mxArchiMate3CommNetw.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3CommNetw.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, 0); + c.moveTo(w * 0.8, h); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, 0); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3CommNetw.prototype.cst.COMM_NETW, mxArchiMate3CommNetw); + +mxArchiMate3CommNetw.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxArchiMate3Path(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxArchiMate3Path, mxShape); +mxArchiMate3Path.prototype.cst = { + PATH: 'mxgraph.archimate3.path' +}; + +mxArchiMate3Path.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Path.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, 0); + c.moveTo(w * 0.8, h); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, 0); + c.stroke(); + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH, mxArchiMate3Path); + +mxArchiMate3Path.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArrows.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArrows.js new file mode 100644 index 0000000000000..d03ec84d6b0d2 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxArrows.js @@ -0,0 +1,2309 @@ +"use strict"; + +function mxShapeArrows2Arrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeArrows2Arrow, mxActor); +mxShapeArrows2Arrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}]; +mxShapeArrows2Arrow.prototype.cst = { + ARROW: 'mxgraph.arrows2.arrow' +}; + +mxShapeArrows2Arrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.begin(); + c.moveTo(0, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxShapeArrows2Arrow.prototype.getLabelBounds = function (rect) { + if (mxUtils.getValue(this.style, "boundedLbl", false)) { + var w = rect.width; + var h = rect.height; + var dy, dx; + var direction = this.direction || mxConstants.DIRECTION_EAST; + + if (mxUtils.getValue(this.style, "flipH", false)) { + if (direction == mxConstants.DIRECTION_WEST) direction = mxConstants.DIRECTION_EAST;else if (direction == mxConstants.DIRECTION_EAST) direction = mxConstants.DIRECTION_WEST; + } + + if (mxUtils.getValue(this.style, "flipV", false)) { + if (direction == mxConstants.DIRECTION_NORTH) direction = mxConstants.DIRECTION_SOUTH;else if (direction == mxConstants.DIRECTION_SOUTH) direction = mxConstants.DIRECTION_NORTH; + } + + if (direction == mxConstants.DIRECTION_NORTH || direction == mxConstants.DIRECTION_SOUTH) { + dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } else { + dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + + if (direction == mxConstants.DIRECTION_EAST) { + return new mxRectangle(rect.x, rect.y + dy, w - dx, h - 2 * dy); + } else if (direction == mxConstants.DIRECTION_WEST) { + return new mxRectangle(rect.x + dx, rect.y + dy, w - dx, h - 2 * dy); + } else if (direction == mxConstants.DIRECTION_NORTH) { + return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - dx); + } else { + return new mxRectangle(rect.x + dy, rect.y, w - 2 * dy, h - dx); + } + } + + return rect; +}; + +mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW, mxShapeArrows2Arrow); + +Graph.handleFactory[mxShapeArrows2Arrow.prototype.cst.ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2Arrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); + return constr; +}; + +function mxShapeArrows2TwoWayArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeArrows2TwoWayArrow, mxActor); +mxShapeArrows2TwoWayArrow.prototype.cst = { + TWO_WAY_ARROW: 'mxgraph.arrows2.twoWayArrow' +}; +mxShapeArrows2TwoWayArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 35 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}]; + +mxShapeArrows2TwoWayArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(dx, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx, h); + c.lineTo(0, h * 0.5); + c.lineTo(dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxShapeArrows2TwoWayArrow.prototype.getLabelBounds = function (rect) { + if (mxUtils.getValue(this.style, "boundedLbl", false)) { + var w = rect.width; + var h = rect.height; + var vertical = this.direction == mxConstants.DIRECTION_NORTH || this.direction == mxConstants.DIRECTION_SOUTH; + var dy, dx; + + if (vertical) { + dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } else { + dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + + if (vertical) { + return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - 2 * dx); + } else { + return new mxRectangle(rect.x + dx, rect.y + dy, w - 2 * dx, h - 2 * dy); + } + } + + return rect; +}; + +mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW, mxShapeArrows2TwoWayArrow); +mxShapeArrows2TwoWayArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + return handles; +}; + +mxShapeArrows2TwoWayArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); + return constr; +}; + +function mxShapeArrows2StylisedArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.feather = 0.5; +} + +; +mxUtils.extend(mxShapeArrows2StylisedArrow, mxActor); +mxShapeArrows2StylisedArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'feather', + dispName: 'Feather', + type: 'float', + min: 0, + max: 1, + defVal: 0.4 +}]; +mxShapeArrows2StylisedArrow.prototype.cst = { + STYLISED_ARROW: 'mxgraph.arrows2.stylisedArrow' +}; + +mxShapeArrows2StylisedArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var feather = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'feather', this.feather)))); + c.begin(); + c.moveTo(0, feather); + c.lineTo(w - dx, dy); + c.lineTo(w - dx - 10, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx - 10, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - feather); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW, mxShapeArrows2StylisedArrow); +mxShapeArrows2StylisedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width - 10, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - 10, bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['feather'], function (bounds) { + var feather = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'feather', this.dy)))); + return new mxPoint(bounds.x, bounds.y + feather * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['feather'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2StylisedArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var feather = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'feather', this.feather)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, feather)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - feather)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 10, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, (dy + feather) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - (dy + feather) * 0.5)); + return constr; +}; + +function mxShapeArrows2SharpArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0.5; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeArrows2SharpArrow, mxActor); +mxShapeArrows2SharpArrow.prototype.cst = { + SHARP_ARROW: 'mxgraph.arrows2.sharpArrow' +}; +mxShapeArrows2SharpArrow.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Arrowhead Arrow Width', + type: 'float', + min: 0, + defVal: 18 +}, { + name: 'dy1', + dispName: 'Arrow Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.67 +}, { + name: 'dx2', + dispName: 'Arrowhead Angle', + type: 'float', + min: 0, + defVal: 18 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}]; + +mxShapeArrows2SharpArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var x2 = 0; + + if (h != 0) { + x2 = dx1a + dx2 * dy1a * 2 / h; + } + + c.begin(); + c.moveTo(0, dy1); + c.lineTo(w - dx1, dy1); + c.lineTo(w - x2, 0); + c.lineTo(w - dx2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx2, h); + c.lineTo(w - x2, h); + c.lineTo(w - dx1, h - dy1); + c.lineTo(0, h - dy1); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW, mxShapeArrows2SharpArrow); +mxShapeArrows2SharpArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function (bounds) { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + dy1 * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + bounds.width - dx2, bounds.y); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2SharpArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var x2 = 0; + + if (h != 0) { + x2 = dx1a + dx2 * dy1a * 2 / h; + } + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - x2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - x2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); + return constr; +}; + +function mxShapeArrows2SharpArrow2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0.5; + this.dy3 = 0.5; + this.dx3 = 0.5; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeArrows2SharpArrow2, mxActor); +mxShapeArrows2SharpArrow2.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Arrowhead Arrow Width', + type: 'float', + min: 0, + defVal: 18 +}, { + name: 'dy1', + dispName: 'Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.67 +}, { + name: 'dx2', + dispName: 'Arrowhead Angle', + type: 'float', + min: 0, + defVal: 18 +}, { + name: 'dx3', + dispName: 'Arrowhead Edge X', + type: 'float', + min: 0, + defVal: 27 +}, { + name: 'dy3', + dispName: 'Arrowhead Edge Y', + type: 'float', + min: 0, + max: 1, + defVal: 0.15 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}]; +mxShapeArrows2SharpArrow2.prototype.cst = { + SHARP_ARROW2: 'mxgraph.arrows2.sharpArrow2' +}; + +mxShapeArrows2SharpArrow2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy3 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy3', this.dy3)))); + var dx3 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx3', this.dx3)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + c.begin(); + c.moveTo(0, dy1); + c.lineTo(w - dx1, dy1); + c.lineTo(w - dx3, dy3); + c.lineTo(w - dx2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx2, h); + c.lineTo(w - dx3, h - dy3); + c.lineTo(w - dx1, h - dy1); + c.lineTo(0, h - dy1); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2, mxShapeArrows2SharpArrow2); +mxShapeArrows2SharpArrow2.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2] = function (state) { + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function (bounds) { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + dy1 * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + bounds.width - dx2, bounds.y); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dx3', 'dy3'], function (bounds) { + var dx3 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx3', this.dx3)))); + var dy3 = Math.max(0, Math.min(1 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy3', this.dy3)))); + return new mxPoint(bounds.x + bounds.width - dx3, bounds.y + dy3 * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx3'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy3'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), (pt.y - bounds.y) / bounds.height * 2))) / 100; + }); + handles.push(handle4); + return handles; +}; + +mxShapeArrows2SharpArrow2.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy3 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy3', this.dy3)))); + var dx3 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx3', this.dx3)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx3, dy3)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx3, h - dy3)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); + return constr; +}; + +function mxShapeArrows2CalloutArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2CalloutArrow, mxActor); +mxShapeArrows2CalloutArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'notch', + dispName: 'Rectangle Width', + type: 'float', + min: 0, + defVal: 60 +}]; +mxShapeArrows2CalloutArrow.prototype.cst = { + CALLOUT_ARROW: 'mxgraph.arrows2.calloutArrow' +}; + +mxShapeArrows2CalloutArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(0, 0); + c.lineTo(notch, 0); + c.lineTo(notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(notch, h * 0.5 + dy); + c.lineTo(notch, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW, mxShapeArrows2CalloutArrow); +mxShapeArrows2CalloutArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - pt.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2CalloutArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, (notch + w - dx) * 0.5, -dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, (notch + w - dx) * 0.5, dy)); + return constr; +}; + +function mxShapeArrows2BendArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 40; +} + +; +mxUtils.extend(mxShapeArrows2BendArrow, mxActor); +mxShapeArrows2BendArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 38 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 15 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 55 +}, { + name: 'rounded', + dispName: 'Rounded', + type: 'boolean', + defVal: false +}]; +mxShapeArrows2BendArrow.prototype.cst = { + BEND_ARROW: 'mxgraph.arrows2.bendArrow' +}; + +mxShapeArrows2BendArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + + if (rounded == '1') { + c.lineTo(dy * 2.2, arrowHead / 2 + dy); + c.arcTo(dy * 0.2, dy * 0.2, 0, 0, 0, dy * 2, arrowHead / 2 + dy * 1.2); + } else { + c.lineTo(dy * 2, arrowHead / 2 + dy); + } + + c.lineTo(dy * 2, h); + c.lineTo(dy, h - notch); + c.lineTo(0, h); + + if (rounded == '1') { + c.lineTo(0, arrowHead / 2 + dy); + c.arcTo(dy * 2, dy * 2, 0, 0, 1, dy * 2, arrowHead / 2 - dy); + } else { + c.lineTo(0, arrowHead / 2 - dy); + } + + c.lineTo(w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW, mxShapeArrows2BendArrow); +mxShapeArrows2BendArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 2.2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(bounds.height - arrowHead / 2 - dy, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + dy, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height - pt.y))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height, pt.y - bounds.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2BendArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx + dy * 2) * 0.5, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx + dy * 2) * 0.5, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, (h - arrowHead / 2 - dy) * 0.5 + arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy, h - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - arrowHead / 2 - dy) * 0.5 + arrowHead / 2 + dy)); + + if (rounded == '1') { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 0.586, arrowHead / 2 - dy * 0.414)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dy + dy * 0.0586, arrowHead / 2 + dy + dy * 0.0586)); + } else { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, arrowHead / 2 + dy)); + } + + return constr; +}; + +function mxShapeArrows2BendDoubleArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 40; +} + +; +mxUtils.extend(mxShapeArrows2BendDoubleArrow, mxActor); +mxShapeArrows2BendDoubleArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 38 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 15 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 55 +}, { + name: 'rounded', + dispName: 'Rounded', + type: 'boolean', + defVal: false +}]; +mxShapeArrows2BendDoubleArrow.prototype.cst = { + BEND_DOUBLE_ARROW: 'mxgraph.arrows2.bendDoubleArrow' +}; + +mxShapeArrows2BendDoubleArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + + if (rounded == '1') { + c.lineTo(arrowHead / 2 + dy * 1.2, arrowHead / 2 + dy); + c.arcTo(dy * 0.2, dy * 0.2, 0, 0, 0, arrowHead / 2 + dy, arrowHead / 2 + dy * 1.2); + } else { + c.lineTo(arrowHead / 2 + dy, arrowHead / 2 + dy); + } + + c.lineTo(arrowHead / 2 + dy, h - dx); + c.lineTo(arrowHead, h - dx); + c.lineTo(arrowHead / 2, h); + c.lineTo(0, h - dx); + c.lineTo(arrowHead / 2 - dy, h - dx); + + if (rounded == '1') { + c.lineTo(arrowHead / 2 - dy, arrowHead / 2 + dy); + c.arcTo(dy * 2, dy * 2, 0, 0, 1, arrowHead / 2 + dy, arrowHead / 2 - dy); + } else { + c.lineTo(arrowHead / 2 - dy, arrowHead / 2 - dy); + } + + c.lineTo(w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW, mxShapeArrows2BendDoubleArrow); +mxShapeArrows2BendDoubleArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(Math.min(bounds.height, bounds.width) - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(Math.min(bounds.width, bounds.height) - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(Math.min(bounds.height, bounds.width) - dx, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.height, bounds.width) - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.y - bounds.y))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2BendDoubleArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (arrowHead / 2 + dy + w - dx) * 0.5, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (arrowHead / 2 + dy + w - dx) * 0.5, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, (arrowHead / 2 + dy + h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, (arrowHead / 2 + dy + h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, h - dx)); + + if (rounded == '1') { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy * 0.414, arrowHead / 2 - dy * 0.414)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy + dy * 0.0586, arrowHead / 2 + dy + dy * 0.0586)); + } else { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, arrowHead / 2 + dy)); + } + + return constr; +}; + +function mxShapeArrows2CalloutDoubleArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2CalloutDoubleArrow, mxActor); +mxShapeArrows2CalloutDoubleArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'notch', + dispName: 'Rect Size', + type: 'float', + min: 0, + defVal: 24 +}]; +mxShapeArrows2CalloutDoubleArrow.prototype.cst = { + CALLOUT_DOUBLE_ARROW: 'mxgraph.arrows2.calloutDoubleArrow' +}; + +mxShapeArrows2CalloutDoubleArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(w / 2 - notch, 0); + c.lineTo(w / 2 + notch, 0); + c.lineTo(w / 2 + notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w / 2 + notch, h * 0.5 + dy); + c.lineTo(w / 2 + notch, h); + c.lineTo(w / 2 - notch, h); + c.lineTo(w / 2 - notch, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w / 2 - notch, h * 0.5 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW, mxShapeArrows2CalloutDoubleArrow); +mxShapeArrows2CalloutDoubleArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width / 2 + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x - bounds.width / 2))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - pt.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2CalloutDoubleArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 2 - notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 2 + notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, w / 2 - notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, w / 2 + notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + notch) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + notch) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - notch) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - notch) * 0.5, h * 0.5 + dy)); + return constr; +}; + +function mxShapeArrows2CalloutQuadArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2CalloutQuadArrow, mxActor); +mxShapeArrows2CalloutQuadArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'notch', + dispName: 'Rect Size', + type: 'float', + min: 0, + defVal: 24 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeArrows2CalloutQuadArrow.prototype.cst = { + CALLOUT_QUAD_ARROW: 'mxgraph.arrows2.calloutQuadArrow' +}; + +mxShapeArrows2CalloutQuadArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(w * 0.5 + dy, h * 0.5 - notch); + c.lineTo(w * 0.5 + notch, h * 0.5 - notch); + c.lineTo(w * 0.5 + notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w * 0.5 + notch, h * 0.5 + dy); + c.lineTo(w * 0.5 + notch, h * 0.5 + notch); + c.lineTo(w * 0.5 + dy, h * 0.5 + notch); + c.lineTo(w * 0.5 + dy, h - dx); + c.lineTo(w * 0.5 + dy + arrowHead, h - dx); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - dy - arrowHead, h - dx); + c.lineTo(w * 0.5 - dy, h - dx); + c.lineTo(w * 0.5 - dy, h * 0.5 + notch); + c.lineTo(w * 0.5 - notch, h * 0.5 + notch); + c.lineTo(w * 0.5 - notch, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w * 0.5 - notch, h * 0.5 - dy); + c.lineTo(w * 0.5 - notch, h * 0.5 - notch); + c.lineTo(w * 0.5 - dy, h * 0.5 - notch); + c.lineTo(w * 0.5 - dy, dx); + c.lineTo(w * 0.5 - dy - arrowHead, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + dy + arrowHead, dx); + c.lineTo(w * 0.5 + dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW, mxShapeArrows2CalloutQuadArrow); +mxShapeArrows2CalloutQuadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) / 2 - Math.max(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead))), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.width, bounds.height), parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width / 2 + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.width, bounds.height) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x - bounds.width / 2))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2CalloutQuadArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75 + (notch - dx) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75 + (notch - dx) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.75 + (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.75 + (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25 - (notch - dx) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25 - (notch - dx) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.25 - (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.25 - (notch - dx) * 0.5)); + return constr; +}; + +function mxShapeArrows2CalloutDouble90Arrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0; + this.dy2 = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2CalloutDouble90Arrow, mxActor); +mxShapeArrows2CalloutDouble90Arrow.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy1', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'dx2', + dispName: 'Callout Width', + type: 'float', + min: 0, + defVal: 70 +}, { + name: 'dy2', + dispName: 'Callout Height', + type: 'float', + min: 0, + defVal: 70 +}, { + name: 'arrowHead', + dispName: 'ArrowHead Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeArrows2CalloutDouble90Arrow.prototype.cst = { + CALLOUT_DOUBLE_90_ARROW: 'mxgraph.arrows2.calloutDouble90Arrow' +}; + +mxShapeArrows2CalloutDouble90Arrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(0, 0); + c.lineTo(dx2, 0); + c.lineTo(dx2, dy2 * 0.5 - dy1); + c.lineTo(w - dx1, dy2 * 0.5 - dy1); + c.lineTo(w - dx1, dy2 * 0.5 - dy1 - arrowHead); + c.lineTo(w, dy2 * 0.5); + c.lineTo(w - dx1, dy2 * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, dy2 * 0.5 + dy1); + c.lineTo(dx2, dy2 * 0.5 + dy1); + c.lineTo(dx2, dy2); + c.lineTo(dx2 / 2 + dy1, dy2); + c.lineTo(dx2 / 2 + dy1, h - dx1); + c.lineTo(dx2 / 2 + dy1 + arrowHead, h - dx1); + c.lineTo(dx2 / 2, h); + c.lineTo(dx2 / 2 - dy1 - arrowHead, h - dx1); + c.lineTo(dx2 / 2 - dy1, h - dx1); + c.lineTo(dx2 / 2 - dy1, dy2); + c.lineTo(0, dy2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutDouble90Arrow.prototype.cst.CALLOUT_DOUBLE_90_ARROW, mxShapeArrows2CalloutDouble90Arrow); +mxShapeArrows2CalloutDouble90Arrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutDouble90Arrow.prototype.cst.CALLOUT_DOUBLE_90_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function (bounds) { + var arrowHead = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - dy1); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dx2', 'dy2'], function (bounds) { + var dx2 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + return new mxPoint(bounds.x + dx2, bounds.y + dy2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.y - bounds.y))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - dy1 - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) - pt.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2CalloutDouble90Arrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + dx2) * 0.5, dy2 * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy2 * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy2 * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + dx2) * 0.5, dy2 * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5 + dy1, (h - dx1 + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5 - dy1, (h - dx1 + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2 + dy1 + arrowHead, h - dx1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2 - dy1 - arrowHead, h - dx1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy2)); + return constr; +}; + +function mxShapeArrows2QuadArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2QuadArrow, mxActor); +mxShapeArrows2QuadArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeArrows2QuadArrow.prototype.cst = { + QUAD_ARROW: 'mxgraph.arrows2.quadArrow' +}; + +mxShapeArrows2QuadArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(w * 0.5 + dy, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w * 0.5 + dy, h * 0.5 + dy); + c.lineTo(w * 0.5 + dy, h - dx); + c.lineTo(w * 0.5 + dy + arrowHead, h - dx); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - dy - arrowHead, h - dx); + c.lineTo(w * 0.5 - dy, h - dx); + c.lineTo(w * 0.5 - dy, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w * 0.5 - dy, h * 0.5 - dy); + c.lineTo(w * 0.5 - dy, dx); + c.lineTo(w * 0.5 - dy - arrowHead, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + dy + arrowHead, dx); + c.lineTo(w * 0.5 + dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2QuadArrow.prototype.cst.QUAD_ARROW, mxShapeArrows2QuadArrow); +mxShapeArrows2QuadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2QuadArrow.prototype.cst.QUAD_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2QuadArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, (dx - dy) * 0.5 + h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, (dx - dy) * 0.5 + h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, (dy - dx) * 0.5 + h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, (dy - dx) * 0.5 + h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx - dy) * 0.5 + w * 0.25, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx - dy) * 0.5 + w * 0.25, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dy - dx) * 0.5 + w * 0.75, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dy - dx) * 0.5 + w * 0.75, h * 0.5 + dy)); + return constr; +}; + +function mxShapeArrows2TriadArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2TriadArrow, mxActor); +mxShapeArrows2TriadArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 40 +}]; +mxShapeArrows2TriadArrow.prototype.cst = { + TRIAD_ARROW: 'mxgraph.arrows2.triadArrow' +}; + +mxShapeArrows2TriadArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(w * 0.5 + arrowHead * 0.5 - dy, h - arrowHead + dy); + c.lineTo(w - dx, h - arrowHead + dy); + c.lineTo(w - dx, h - arrowHead); + c.lineTo(w, h - arrowHead * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx, h); + c.lineTo(0, h - arrowHead * 0.5); + c.lineTo(dx, h - arrowHead); + c.lineTo(dx, h - arrowHead + dy); + c.lineTo(w * 0.5 - arrowHead * 0.5 + dy, h - arrowHead + dy); + c.lineTo(w * 0.5 - arrowHead * 0.5 + dy, dx); + c.lineTo(w * 0.5 - arrowHead * 0.5, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + arrowHead * 0.5, dx); + c.lineTo(w * 0.5 + arrowHead * 0.5 - dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TriadArrow.prototype.cst.TRIAD_ARROW, mxShapeArrows2TriadArrow); +mxShapeArrows2TriadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TriadArrow.prototype.cst.TRIAD_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + bounds.height - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)) * 2, bounds.y + bounds.height - pt.y))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2TriadArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -arrowHead * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, arrowHead * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + arrowHead * 0.5 - dy) * 0.5, h - arrowHead + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + arrowHead * 0.5 - dy) * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - arrowHead * 0.5 + dy) * 0.5, h - arrowHead + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - arrowHead * 0.5 + dy) * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - arrowHead * 0.5 + dy, (dx + h - arrowHead + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + arrowHead * 0.5 - dy, (dx + h - arrowHead + dy) * 0.5)); + return constr; +}; + +function mxShapeArrows2TailedArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2TailedArrow, mxActor); +mxShapeArrows2TailedArrow.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'dy1', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'dx2', + dispName: 'Tail Length', + type: 'float', + min: 0, + defVal: 25 +}, { + name: 'dy2', + dispName: 'Tail Width', + type: 'float', + min: 0, + defVal: 30 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 20 +}]; +mxShapeArrows2TailedArrow.prototype.cst = { + TAILED_ARROW: 'mxgraph.arrows2.tailedArrow' +}; + +mxShapeArrows2TailedArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) { + x2 = dx2 + dy2 * (dy2 - dy1) / dy2; + } + + c.begin(); + c.moveTo(0, h * 0.5 - dy2); + c.lineTo(dx2, h * 0.5 - dy2); + c.lineTo(x2, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1 - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx1, h * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, h * 0.5 + dy1); + c.lineTo(x2, h * 0.5 + dy1); + c.lineTo(dx2, h * 0.5 + dy2); + c.lineTo(0, h * 0.5 + dy2); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TailedArrow.prototype.cst.TAILED_ARROW, mxShapeArrows2TailedArrow); +mxShapeArrows2TailedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TailedArrow.prototype.cst.TAILED_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1 - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dx2', 'dy2'], function (bounds) { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2 - dy2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)) - parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) + parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) - 1, pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), Math.min(bounds.height / 2, bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle4); + return handles; +}; + +mxShapeArrows2TailedArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) { + x2 = dx2 + dy2 * (dy2 - dy1) / dy2; + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxShapeArrows2TailedNotchedArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +} + +; +mxUtils.extend(mxShapeArrows2TailedNotchedArrow, mxActor); +mxShapeArrows2TailedNotchedArrow.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Arrowhead Length', + type: 'float', + mix: 0, + defVal: 20 +}, { + name: 'dy1', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 10 +}, { + name: 'dx2', + dispName: 'Tail Length', + type: 'float', + min: 0, + defVal: 25 +}, { + name: 'dy2', + dispName: 'Tail Width', + type: 'float', + min: 0, + defVal: 30 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + min: 0, + defVal: 20 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 20 +}]; +mxShapeArrows2TailedNotchedArrow.prototype.cst = { + TAILED_NOTCHED_ARROW: 'mxgraph.arrows2.tailedNotchedArrow' +}; + +mxShapeArrows2TailedNotchedArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) { + x2 = dx2 + notch * (dy2 - dy1) / dy2; + } + + c.begin(); + c.moveTo(0, h * 0.5 - dy2); + c.lineTo(dx2, h * 0.5 - dy2); + c.lineTo(x2, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1 - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx1, h * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, h * 0.5 + dy1); + c.lineTo(x2, h * 0.5 + dy1); + c.lineTo(dx2, h * 0.5 + dy2); + c.lineTo(0, h * 0.5 + dy2); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TailedNotchedArrow.prototype.cst.TAILED_NOTCHED_ARROW, mxShapeArrows2TailedNotchedArrow); +mxShapeArrows2TailedNotchedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TailedNotchedArrow.prototype.cst.TAILED_NOTCHED_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)) - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.y + bounds.height / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1 - arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dx2', 'dy2'], function (bounds) { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2 - dy2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)) - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), Math.min(bounds.height / 2, bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + handles.push(handle4); + return handles; +}; + +mxShapeArrows2TailedNotchedArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) { + x2 = dx2 + notch * (dy2 - dy1) / dy2; + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxShapeArrows2StripedArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeArrows2StripedArrow, mxActor); +mxShapeArrows2StripedArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}, { + name: 'notch', + dispName: 'Stripes Length', + type: 'float', + min: 0, + defVal: 25 +}]; +mxShapeArrows2StripedArrow.prototype.cst = { + STRIPED_ARROW: 'mxgraph.arrows2.stripedArrow' +}; + +mxShapeArrows2StripedArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.begin(); + c.moveTo(notch, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(notch, h - dy); + c.close(); + c.moveTo(0, h - dy); + c.lineTo(notch * 0.16, h - dy); + c.lineTo(notch * 0.16, dy); + c.lineTo(0, dy); + c.close(); + c.moveTo(notch * 0.32, h - dy); + c.lineTo(notch * 0.8, h - dy); + c.lineTo(notch * 0.8, dy); + c.lineTo(notch * 0.32, dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2StripedArrow.prototype.cst.STRIPED_ARROW, mxShapeArrows2StripedArrow); +mxShapeArrows2StripedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2StripedArrow.prototype.cst.STRIPED_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height * 2))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2StripedArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); + return constr; +}; + +function mxShapeArrows2JumpInArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 40; +} + +; +mxUtils.extend(mxShapeArrows2JumpInArrow, mxActor); +mxShapeArrows2JumpInArrow.prototype.customProperties = [{ + name: 'dx', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 38 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 15 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 55 +}]; +mxShapeArrows2JumpInArrow.prototype.cst = { + JUMP_IN_ARROW: 'mxgraph.arrows2.jumpInArrow' +}; + +mxShapeArrows2JumpInArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + c.arcTo(w - dx, h - arrowHead / 2 - dy, 0, 0, 0, 0, h); + c.arcTo(w - dx, h - arrowHead / 2 + dy, 0, 0, 1, w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2JumpInArrow.prototype.cst.JUMP_IN_ARROW, mxShapeArrows2JumpInArrow); +mxShapeArrows2JumpInArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2JumpInArrow.prototype.cst.JUMP_IN_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height, pt.y - bounds.y))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeArrows2JumpInArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + return constr; +}; + +function mxShapeArrows2UTurnArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 40; +} + +; +mxUtils.extend(mxShapeArrows2UTurnArrow, mxActor); +mxShapeArrows2UTurnArrow.prototype.customProperties = [{ + name: 'dx2', + dispName: 'Arrowhead Length', + type: 'float', + min: 0, + defVal: 25 +}, { + name: 'dy', + dispName: 'Arrow Width', + type: 'float', + min: 0, + defVal: 11 +}, { + name: 'arrowHead', + dispName: 'Arrowhead Width', + type: 'float', + min: 0, + defVal: 43 +}]; +mxShapeArrows2UTurnArrow.prototype.cst = { + U_TURN_ARROW: 'mxgraph.arrows2.uTurnArrow' +}; + +mxShapeArrows2UTurnArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var dx = (h - arrowHead / 2 + dy) / 2; + var dx2 = Math.max(0, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2))); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(dx + dx2, arrowHead * 0.5); + c.lineTo(dx, arrowHead); + c.lineTo(dx, arrowHead / 2 + dy); + c.arcTo(dx - 2 * dy, dx - 2 * dy, 0, 0, 0, dx, h - 2 * dy); + c.lineTo(Math.max(w, dx), h - 2 * dy); + c.lineTo(Math.max(w, dx), h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 1, dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2UTurnArrow.prototype.cst.U_TURN_ARROW, mxShapeArrows2UTurnArrow); +mxShapeArrows2UTurnArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2UTurnArrow.prototype.cst.U_TURN_ARROW] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + return new mxPoint(bounds.x + dx, bounds.y + arrowHead / 2 - dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dx2'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + dx + dx2, bounds.y + arrowHead / 2); + }, function (bounds, pt) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(Math.max(bounds.width, dx), pt.x - bounds.x - dx))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arrowHead'], function (bounds) { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + return new mxPoint(bounds.x + dx, bounds.y + arrowHead); + }, function (bounds, pt) { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeArrows2UTurnArrow.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var dx = (h - arrowHead / 2 + dy) / 2; + var dx2 = Math.max(0, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + dx2, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx + w) * 0.5, h - 2 * dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h - 2 * dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx + w) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + arrowHead * 0.5 - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead - 2 * dy, (h + arrowHead * 0.5 - dy) * 0.5)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAtlassian.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAtlassian.js new file mode 100644 index 0000000000000..27b404fd318dc --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxAtlassian.js @@ -0,0 +1,327 @@ +"use strict"; + +function mxAtlassianJiraIssue(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxAtlassianJiraIssue, mxRectangleShape); +mxAtlassianJiraIssue.prototype.customProperties = [{ + name: 'issueType', + dispName: 'Issue Type', + type: 'enum', + enumList: [{ + val: 'story', + dispName: 'Story' + }, { + val: 'task', + dispName: 'Task' + }, { + val: 'subTask', + dispName: 'Sub-Task' + }, { + val: 'feature', + dispName: 'Feature' + }, { + val: 'bug', + dispName: 'Bug' + }, { + val: 'techTask', + dispName: 'Tech Task' + }, { + val: 'epic', + dispName: 'Epic' + }, { + val: 'improvement', + dispName: 'Improvement' + }, { + val: 'fault', + dispName: 'Fault' + }, { + val: 'change', + dispName: 'Change' + }, { + val: 'access', + dispName: 'Access' + }, { + val: 'purchase', + dispName: 'Purchase' + }, { + val: 'itHelp', + dispName: 'IT Help' + }] +}, { + name: 'issuePriority', + dispName: 'Issue Priority', + type: 'enum', + enumList: [{ + val: 'blocker', + dispName: 'Blocker' + }, { + val: 'critical', + dispName: 'Critical' + }, { + val: 'major', + dispName: 'Major' + }, { + val: 'minor', + dispName: 'Minor' + }, { + val: 'trivial', + dispName: 'Trivial' + }] +}, { + name: 'issueStatus', + dispName: 'Issue Status', + type: 'enum', + enumList: [{ + val: 'todo', + dispName: 'TODO' + }, { + val: 'inProgress', + dispName: 'In Progress' + }, { + val: 'inReview', + dispName: 'In Review' + }, { + val: 'done', + dispName: 'Done' + }] +}]; +mxAtlassianJiraIssue.prototype.cst = { + ISSUE: 'mxgraph.atlassian.issue' +}; + +mxAtlassianJiraIssue.prototype.paintForeground = function (c, x, y, w, h) { + c.translate(x, y); + var issueType = mxUtils.getValue(this.style, 'issueType', 'task'); + var issuePriority = mxUtils.getValue(this.style, 'issuePriority', 'minor'); + var issueStatus = mxUtils.getValue(this.style, 'issueStatus', 'todo'); + c.setStrokeColor('none'); + + switch (issueType) { + case 'story': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.story'); + + if (stencil != null) { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'task': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.task'); + + if (stencil != null) { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'subTask': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.subtask'); + + if (stencil != null) { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'feature': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.new_feature'); + + if (stencil != null) { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'bug': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.bug'); + + if (stencil != null) { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'techTask': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.tech_task'); + + if (stencil != null) { + c.setFillColor('#999C95'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'epic': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.epic'); + + if (stencil != null) { + c.setFillColor('#9E4ADD'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'improvement': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.improvement'); + + if (stencil != null) { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'fault': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.fault'); + + if (stencil != null) { + c.setFillColor('#F8902F'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'change': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.change'); + + if (stencil != null) { + c.setFillColor('#9E4ADD'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'access': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.access'); + + if (stencil != null) { + c.setFillColor('#F8902F'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'purchase': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.purchase'); + + if (stencil != null) { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + + case 'itHelp': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.it_help'); + + if (stencil != null) { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + } + + switch (issuePriority) { + case 'blocker': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.no'); + + if (stencil != null) { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + + break; + + case 'critical': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.critical'); + + if (stencil != null) { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 86, 3, 8, 14); + } + + break; + + case 'major': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.double_up'); + + if (stencil != null) { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + + break; + + case 'minor': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.double'); + + if (stencil != null) { + c.setFillColor('#2A8735'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + + break; + + case 'trivial': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.single'); + + if (stencil != null) { + c.setFillColor('#9AA1B2'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + + break; + } + + c.setFillColor('#FFFFFD'); + c.setFontColor('#4E6B89'); + + switch (issueStatus) { + case 'todo': + c.rect(w - 45, 5, 40, 20); + c.fill(); + c.text(w - 25, 15, 0, 0, 'TO DO', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + + case 'inProgress': + c.rect(w - 85, 5, 80, 20); + c.fill(); + c.text(w - 45, 15, 0, 0, 'IN PROGRESS', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + + case 'inReview': + c.rect(w - 75, 5, 70, 20); + c.fill(); + c.text(w - 40, 15, 0, 0, 'IN REVIEW', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + + case 'done': + c.rect(w - 45, 5, 40, 20); + c.fill(); + c.text(w - 25, 15, 0, 0, 'DONE', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + + default: + var tw = mxUtils.getValue(this.style, 'issueStatusWidth', issueStatus.length * 6.5); + c.rect(w - tw - 5, 5, tw, 20); + c.fill(); + c.text(w - 7, 15, 0, 0, issueStatus, mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxAtlassianJiraIssue.prototype.cst.ISSUE, mxAtlassianJiraIssue); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBasic.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBasic.js new file mode 100644 index 0000000000000..895b1b7980d8c --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBasic.js @@ -0,0 +1,3579 @@ +"use strict"; + +function mxShapeBasicCross(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicCross, mxActor); +mxShapeBasicCross.prototype.cst = { + CROSS: 'mxgraph.basic.cross2' +}; + +mxShapeBasicCross.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(w * 0.5 + dx, 0); + c.lineTo(w * 0.5 + dx, h * 0.5 - dx); + c.lineTo(w, h * 0.5 - dx); + c.lineTo(w, h * 0.5 + dx); + c.lineTo(w * 0.5 + dx, h * 0.5 + dx); + c.lineTo(w * 0.5 + dx, h); + c.lineTo(w * 0.5 - dx, h); + c.lineTo(w * 0.5 - dx, h * 0.5 + dx); + c.lineTo(0, h * 0.5 + dx); + c.lineTo(0, h * 0.5 - dx); + c.lineTo(w * 0.5 - dx, h * 0.5 - dx); + c.lineTo(w * 0.5 - dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCross.prototype.cst.CROSS, mxShapeBasicCross); +mxShapeBasicCross.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCross.prototype.cst.CROSS] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + bounds.width / 2 + dx, bounds.y + bounds.height / 2 - dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x - bounds.width / 2))) / 100; + })]; + return handles; +}; + +function mxShapeBasicRectCallout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicRectCallout, mxActor); +mxShapeBasicRectCallout.prototype.customProperties = [{ + name: 'dx', + dispName: 'Callout Position', + type: 'float', + min: 0, + defVal: 30 +}, { + name: 'dy', + dispName: 'Callout Size', + type: 'float', + min: 0, + defVal: 15 +}]; +mxShapeBasicRectCallout.prototype.cst = { + RECT_CALLOUT: 'mxgraph.basic.rectCallout' +}; + +mxShapeBasicRectCallout.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + c.begin(); + c.moveTo(dx - dy * 0.5, h - dy); + c.lineTo(0, h - dy); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(dx + dy * 0.5, h - dy); + c.lineTo(dx - dy, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeBasicRectCallout.prototype.getLabelMargins = function () { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)) * this.scale); + } + + return null; +}; + +mxCellRenderer.registerShape(mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT, mxShapeBasicRectCallout); +mxShapeBasicRectCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function (bounds, pt) { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + })]; + return handles; +}; + +mxShapeBasicRectCallout.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + return constr; +}; + +function mxShapeBasicRoundRectCallout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.size = 10; +} + +; +mxUtils.extend(mxShapeBasicRoundRectCallout, mxActor); +mxShapeBasicRoundRectCallout.prototype.cst = { + ROUND_RECT_CALLOUT: 'mxgraph.basic.roundRectCallout' +}; +mxShapeBasicRoundRectCallout.prototype.getLabelMargins = mxShapeBasicRectCallout.prototype.getLabelMargins; +mxShapeBasicRoundRectCallout.prototype.customProperties = [{ + name: 'size', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}, { + name: 'dx', + dispName: 'Callout Position', + type: 'float', + min: 0, + defVal: 30 +}, { + name: 'dy', + dispName: 'Callout Size', + type: 'float', + min: 0, + defVal: 15 +}]; + +mxShapeBasicRoundRectCallout.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + r = Math.min((h - dy) / 2, w / 2, r); + dx = Math.max(r + dy * 0.5, dx); + dx = Math.min(w - r - dy * 0.5, dx); + c.begin(); + c.moveTo(dx - dy * 0.5, h - dy); + c.lineTo(r, h - dy); + c.arcTo(r, r, 0, 0, 1, 0, h - dy - r); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - dy - r); + c.arcTo(r, r, 0, 0, 1, w - r, h - dy); + c.lineTo(dx + dy * 0.5, h - dy); + c.arcTo(1.9 * dy, 1.4 * dy, 0, 0, 1, dx - dy, h); + c.arcTo(0.9 * dy, 1.4 * dy, 0, 0, 0, dx - dy * 0.5, h - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT, mxShapeBasicRoundRectCallout); +mxShapeBasicRoundRectCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT] = function (state) { + return [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function (bounds, pt) { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + }), Graph.createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + return new mxPoint(bounds.x + bounds.width - size, bounds.y + 10); + }, function (bounds, pt) { + var dy = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)); + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, (bounds.height - dy) / 2, bounds.x + bounds.width - pt.x))) / 100; + })]; +}; + +mxShapeBasicRoundRectCallout.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + r = Math.min((h - dy) / 2, w / 2, r); + dx = Math.max(r + dy * 0.5, dx); + dx = Math.min(w - r - dy * 0.5, dx); + + if (r < w * 0.25) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + } + + if (r < (h - dy) * 0.25) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.75)); + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + return constr; +}; + +function mxShapeBasicWave(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeBasicWave, mxActor); +mxShapeBasicWave.prototype.customProperties = [{ + name: 'dy', + dispName: 'Wave Size', + type: 'float', + min: 0, + max: 1, + defVal: 0.3 +}]; +mxShapeBasicWave.prototype.cst = { + WAVE: 'mxgraph.basic.wave2' +}; + +mxShapeBasicWave.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var fy = 1.4; + c.begin(); + c.moveTo(0, dy / 2); + c.quadTo(w / 6, dy * (1 - fy), w / 3, dy / 2); + c.quadTo(w / 2, dy * fy, w * 2 / 3, dy / 2); + c.quadTo(w * 5 / 6, dy * (1 - fy), w, dy / 2); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 5 / 6, h - dy * fy, w * 2 / 3, h - dy / 2); + c.quadTo(w / 2, h - dy * (1 - fy), w / 3, h - dy / 2); + c.quadTo(w / 6, h - dy * fy, 0, h - dy / 2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicWave.prototype.cst.WAVE, mxShapeBasicWave); +mxShapeBasicWave.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicWave.prototype.cst.WAVE] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy * bounds.height); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + })]; + return handles; +}; + +mxShapeBasicWave.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var fy = 1.4; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy * 0.04)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5)); + return constr; +}; + +function mxShapeBasicOctagon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicOctagon, mxActor); +mxShapeBasicOctagon.prototype.customProperties = [{ + name: 'dx', + dispName: 'Cutoff Size', + type: 'float', + min: 0, + defVal: 15 +}]; +mxShapeBasicOctagon.prototype.cst = { + OCTAGON: 'mxgraph.basic.octagon2' +}; + +mxShapeBasicOctagon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h - dx); + c.lineTo(w - dx, h); + c.lineTo(dx, h); + c.lineTo(0, h - dx); + c.lineTo(0, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicOctagon.prototype.cst.OCTAGON, mxShapeBasicOctagon); +mxShapeBasicOctagon.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicOctagon.prototype.cst.OCTAGON] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicOctagon.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dx)); + return constr; +}; + +function mxShapeBasicIsoCube(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.isoAngle = 15; +} + +; +mxUtils.extend(mxShapeBasicIsoCube, mxActor); +mxShapeBasicIsoCube.prototype.customProperties = [{ + name: 'isoAngle', + dispName: 'Perspective Angle', + type: 'float', + min: 0, + defVal: 15 +}]; +mxShapeBasicIsoCube.prototype.cst = { + ISO_CUBE: 'mxgraph.basic.isocube' +}; + +mxShapeBasicIsoCube.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - isoH); + c.lineTo(0, isoH); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(0, isoH); + c.lineTo(w * 0.5, 2 * isoH); + c.lineTo(w, isoH); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicIsoCube.prototype.cst.ISO_CUBE, mxShapeBasicIsoCube); +mxShapeBasicIsoCube.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicIsoCube.prototype.cst.ISO_CUBE] = function (state) { + var handles = [Graph.createHandle(state, ['isoAngle'], function (bounds) { + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(bounds.width * Math.tan(isoAngle), bounds.height * 0.5); + return new mxPoint(bounds.x, bounds.y + isoH); + }, function (bounds, pt) { + this.state.style['isoAngle'] = Math.round(100 * Math.max(0, Math.min(100, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeBasicIsoCube.prototype.getConstraints = function (style, w, h) { + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + return constr; +}; + +function mxShapeBasicTriangleAcute(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicTriangleAcute, mxActor); +mxShapeBasicTriangleAcute.prototype.customProperties = [{ + name: 'dx', + dispName: 'Top', + type: 'float', + min: 0, + max: 1, + defVal: 0.5 +}]; +mxShapeBasicTriangleAcute.prototype.cst = { + ACUTE_TRIANGLE: 'mxgraph.basic.acute_triangle' +}; + +mxShapeBasicTriangleAcute.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE, mxShapeBasicTriangleAcute); +mxShapeBasicTriangleAcute.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +mxShapeBasicTriangleAcute.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (w - dx) * 0.5, h * 0.5)); + return constr; +}; + +function mxShapeBasicTriangleObtuse(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicTriangleObtuse, mxActor); +mxShapeBasicTriangleObtuse.prototype.customProperties = [{ + name: 'dx', + dispName: 'Bottom', + type: 'float', + min: 0, + max: 1, + defVal: 0.25 +}]; +mxShapeBasicTriangleObtuse.prototype.cst = { + OBTUSE_TRIANGLE: 'mxgraph.basic.obtuse_triangle' +}; + +mxShapeBasicTriangleObtuse.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(dx, h); + c.lineTo(0, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE, mxShapeBasicTriangleObtuse); +mxShapeBasicTriangleObtuse.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height - 10); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +mxShapeBasicTriangleObtuse.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + return constr; +}; + +function mxShapeBasicDrop(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBasicDrop, mxActor); +mxShapeBasicDrop.prototype.cst = { + DROP: 'mxgraph.basic.drop' +}; + +mxShapeBasicDrop.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var r = Math.min(h, w) * 0.5; + var d = h - r; + var a = Math.sqrt(d * d - r * r); + var angle = Math.atan(a / r); + var x1 = r * Math.sin(angle); + var y1 = r * Math.cos(angle); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5 + x1, h - r - y1); + c.arcTo(r, r, 0, 0, 1, w * 0.5 + r, h - r); + c.arcTo(r, r, 0, 0, 1, w * 0.5, h); + c.arcTo(r, r, 0, 0, 1, w * 0.5 - r, h - r); + c.arcTo(r, r, 0, 0, 1, w * 0.5 - x1, h - r - y1); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDrop.prototype.cst.DROP, mxShapeBasicDrop); +mxShapeBasicDrop.prototype.constraints = null; + +function mxShapeBasicCone2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.9; +} + +; +mxUtils.extend(mxShapeBasicCone2, mxActor); +mxShapeBasicCone2.prototype.customProperties = [{ + name: 'dx', + dispName: 'Top', + type: 'float', + min: 0, + max: 1, + defVal: 0.5 +}, { + name: 'dy', + dispName: 'Bottom', + type: 'float', + min: 0, + max: 1, + defVal: 0.9 +}]; +mxShapeBasicCone2.prototype.cst = { + CONE2: 'mxgraph.basic.cone2' +}; + +mxShapeBasicCone2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var ry = h - dy; + c.begin(); + c.moveTo(dx, 0); + + if (ry > 0) { + c.lineTo(w, h - ry); + c.arcTo(w * 0.5, ry, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, ry, 0, 0, 1, 0, h - ry); + } else { + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCone2.prototype.cst.CONE2, mxShapeBasicCone2); +mxShapeBasicCone2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCone2.prototype.cst.CONE2] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + 10, bounds.y + dy * bounds.height); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeBasicCone2.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var ry = h - dy; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - ry)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - ry)); + return constr; +}; + +function mxShapeBasicPyramid(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx1 = 0.5; + this.dx2 = 0.6; + this.dy1 = 0.9; + this.dy2 = 0.8; +} + +; +mxUtils.extend(mxShapeBasicPyramid, mxActor); +mxShapeBasicPyramid.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Top', + type: 'float', + min: 0, + max: 1, + defVal: 0.4 +}, { + name: 'dx2', + dispName: 'Bottom', + type: 'float', + min: 0, + max: 1, + defVal: 0.6 +}, { + name: 'dy1', + dispName: 'Perspective Left', + type: 'float', + min: 0, + max: 1, + defVal: 0.9 +}, { + name: 'dy2', + dispName: 'Perspective Right', + type: 'float', + min: 0, + max: 1, + defVal: 0.8 +}]; +mxShapeBasicPyramid.prototype.cst = { + PYRAMID: 'mxgraph.basic.pyramid' +}; + +mxShapeBasicPyramid.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy1 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dy2 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + c.begin(); + c.moveTo(dx1, 0); + c.lineTo(w, dy2); + c.lineTo(dx2, h); + c.lineTo(0, dy1); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(dx1, 0); + c.lineTo(dx2, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPyramid.prototype.cst.PYRAMID, mxShapeBasicPyramid); +mxShapeBasicPyramid.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPyramid.prototype.cst.PYRAMID] = function (state) { + var handles = [Graph.createHandle(state, ['dx1'], function (bounds) { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height - 10); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dy1'], function (bounds) { + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + return new mxPoint(bounds.x + 10, bounds.y + dy1 * bounds.height); + }, function (bounds, pt) { + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dy2'], function (bounds) { + var dy2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + return new mxPoint(bounds.x + bounds.width - 10, bounds.y + dy2 * bounds.height); + }, function (bounds, pt) { + this.state.style['dy2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + handles.push(handle4); + return handles; +}; + +mxShapeBasicPyramid.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy1 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dy2 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx1) * 0.5, dy2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx2) * 0.5, (h + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5, (h + dy1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1 * 0.5, dy1 * 0.5)); + return constr; +}; + +function mxShapeBasic4PointStar2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.8; +} + +; +mxUtils.extend(mxShapeBasic4PointStar2, mxActor); +mxShapeBasic4PointStar2.prototype.customProperties = [{ + name: 'dx', + dispName: 'Thickness', + type: 'float', + min: 0, + max: 1, + defVal: 0.8 +}]; +mxShapeBasic4PointStar2.prototype.cst = { + FOUR_POINT_STAR_2: 'mxgraph.basic.4_point_star_2' +}; + +mxShapeBasic4PointStar2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = 0.5 * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx * w, dx * h); + c.lineTo(w * 0.5, 0); + c.lineTo(w - dx * w, dx * h); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx * w, h - dx * h); + c.lineTo(w * 0.5, h); + c.lineTo(dx * w, h - dx * h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2, mxShapeBasic4PointStar2); +mxShapeBasic4PointStar2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * bounds.width / 2, bounds.y + dx * bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, 2 * (pt.x - bounds.x) / bounds.width))) / 100; + })]; + return handles; +}; + +mxShapeBasic4PointStar2.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = 0.5 * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, 1 - dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, 1 - dx), false)); + return constr; +}; + +function mxShapeBasicDiagSnipRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicDiagSnipRect, mxActor); +mxShapeBasicDiagSnipRect.prototype.customProperties = [{ + name: 'dx', + dispName: 'Snip', + type: 'float', + min: 0, + deVal: 6 +}]; +mxShapeBasicDiagSnipRect.prototype.cst = { + DIAG_SNIP_RECT: 'mxgraph.basic.diag_snip_rect' +}; + +mxShapeBasicDiagSnipRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dx); + c.lineTo(w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT, mxShapeBasicDiagSnipRect); +mxShapeBasicDiagSnipRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicDiagSnipRect.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicDiagRoundRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicDiagRoundRect, mxActor); +mxShapeBasicDiagRoundRect.prototype.customProperties = [{ + name: 'dx', + dispName: 'Rounding Size', + type: 'float', + min: 0, + defVal: 6 +}]; +mxShapeBasicDiagRoundRect.prototype.cst = { + DIAG_ROUND_RECT: 'mxgraph.basic.diag_round_rect' +}; + +mxShapeBasicDiagRoundRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 1, w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT, mxShapeBasicDiagRoundRect); +mxShapeBasicDiagRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicDiagRoundRect.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicCornerRoundRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicCornerRoundRect, mxActor); +mxShapeBasicCornerRoundRect.prototype.customProperties = [{ + name: 'dx', + dispName: 'Rounding Size', + type: 'float', + min: 0, + defVal: 6 +}]; +mxShapeBasicCornerRoundRect.prototype.cst = { + CORNER_ROUND_RECT: 'mxgraph.basic.corner_round_rect' +}; + +mxShapeBasicCornerRoundRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT, mxShapeBasicCornerRoundRect); +mxShapeBasicCornerRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicCornerRoundRect.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicPlaque(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicPlaque, mxActor); +mxShapeBasicPlaque.prototype.customProperties = [{ + name: 'dx', + dispName: 'Cutoff Size', + type: 'float', + min: 0, + defVal: 6 +}]; +mxShapeBasicPlaque.prototype.cst = { + PLAQUE: 'mxgraph.basic.plaque' +}; + +mxShapeBasicPlaque.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 0, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 0, 0, h - dx); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPlaque.prototype.cst.PLAQUE, mxShapeBasicPlaque); +mxShapeBasicPlaque.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPlaque.prototype.cst.PLAQUE] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx * 1.41, bounds.y + dx * 1.41); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicPlaque.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicFrame(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicFrame, mxActor); +mxShapeBasicFrame.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeBasicFrame.prototype.cst = { + FRAME: 'mxgraph.basic.frame' +}; + +mxShapeBasicFrame.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, 0); + c.close(); + c.moveTo(dx, dx); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicFrame.prototype.cst.FRAME, mxShapeBasicFrame); +mxShapeBasicFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicFrame.prototype.cst.FRAME] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicFrame.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.25 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx) * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx) * 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.75 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.25 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.25 + dx)); + return constr; +}; + +function mxShapeBasicPlaqueFrame(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicPlaqueFrame, mxActor); +mxShapeBasicPlaqueFrame.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + mix: 0, + defVal: 10 +}]; +mxShapeBasicPlaqueFrame.prototype.cst = { + PLAQUE_FRAME: 'mxgraph.basic.plaque_frame' +}; + +mxShapeBasicPlaqueFrame.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.25, h * 0.25, dx); + c.begin(); + c.moveTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 0, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 0, 0, h - dx); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, 0); + c.close(); + c.moveTo(dx * 2, dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx, dx * 2); + c.lineTo(dx, h - 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx * 2, h - dx); + c.lineTo(w - 2 * dx, h - dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - dx, h - 2 * dx); + c.lineTo(w - dx, dx * 2); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME, mxShapeBasicPlaqueFrame); +mxShapeBasicPlaqueFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicPlaqueFrame.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + return constr; +}; + +function mxShapeBasicRoundedFrame(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicRoundedFrame, mxActor); +mxShapeBasicRoundedFrame.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeBasicRoundedFrame.prototype.cst = { + ROUNDED_FRAME: 'mxgraph.basic.rounded_frame' +}; + +mxShapeBasicRoundedFrame.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.25, h * 0.25, dx); + c.begin(); + c.moveTo(w - 2 * dx, 0); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w, 2 * dx); + c.lineTo(w, h - 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, h); + c.lineTo(dx * 2, h); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, 0, h - 2 * dx); + c.lineTo(0, 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, 2 * dx, 0); + c.close(); + c.moveTo(dx * 2, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, dx * 2); + c.lineTo(dx, h - 2 * dx); + c.arcTo(dx, dx, 0, 0, 0, dx * 2, h - dx); + c.lineTo(w - 2 * dx, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h - 2 * dx); + c.lineTo(w - dx, dx * 2); + c.arcTo(dx, dx, 0, 0, 0, w - 2 * dx, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME, mxShapeBasicRoundedFrame); +mxShapeBasicRoundedFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicRoundedFrame.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + return constr; +}; + +function mxShapeBasicFrameCorner(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicFrameCorner, mxActor); +mxShapeBasicFrameCorner.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeBasicFrameCorner.prototype.cst = { + FRAME_CORNER: 'mxgraph.basic.frame_corner' +}; + +mxShapeBasicFrameCorner.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER, mxShapeBasicFrameCorner); +mxShapeBasicFrameCorner.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicFrameCorner.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.5 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicDiagStripe(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicDiagStripe, mxActor); +mxShapeBasicDiagStripe.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + mix: 0, + defVal: 10 +}]; +mxShapeBasicDiagStripe.prototype.cst = { + DIAG_STRIPE: 'mxgraph.basic.diag_stripe' +}; + +mxShapeBasicDiagStripe.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w, h, dx); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, 0); + c.lineTo(w, Math.min(dx * 100 / w, h)); + c.lineTo(Math.min(dx * 100 / h, w), h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE, mxShapeBasicDiagStripe); +mxShapeBasicDiagStripe.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicDiagStripe.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w, h, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + Math.min(dx * 100 / h, w)) * 0.5, (Math.min(dx * 100 / w, h) + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w), h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w) * 0.5, h)); + return constr; +}; + +function mxShapeBasicDonut(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicDonut, mxActor); +mxShapeBasicDonut.prototype.customProperties = [{ + name: 'dx', + dispName: 'Width', + type: 'float', + min: 0, + defVal: 25 +}]; +mxShapeBasicDonut.prototype.cst = { + DONUT: 'mxgraph.basic.donut' +}; + +mxShapeBasicDonut.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(0, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.close(); + c.moveTo(w * 0.5, dx); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, dx, h * 0.5); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, h - dx); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w - dx, h * 0.5); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDonut.prototype.cst.DONUT, mxShapeBasicDonut); +mxShapeBasicDonut.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDonut.prototype.cst.DONUT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +function mxShapeBasicLayeredRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicLayeredRect, mxActor); +mxShapeBasicLayeredRect.prototype.customProperties = [{ + name: 'dx', + dispName: 'Layer Distance', + type: 'float', + mix: 0, + defVal: 10 +}]; +mxShapeBasicLayeredRect.prototype.cst = { + LAYERED_RECT: 'mxgraph.basic.layered_rect' +}; + +mxShapeBasicLayeredRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, dx); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(dx, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(dx * 0.5, dx * 0.5); + c.lineTo(w - dx * 0.5, dx * 0.5); + c.lineTo(w - dx * 0.5, h - dx * 0.5); + c.lineTo(dx * 0.5, h - dx * 0.5); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, h - dx); + c.lineTo(0, h - dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT, mxShapeBasicLayeredRect); +mxShapeBasicLayeredRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, -pt.x + bounds.width + bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicLayeredRect.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h - dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.25)); + return constr; +}; + +function mxShapeBasicButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicButton, mxActor); +mxShapeBasicButton.prototype.customProperties = [{ + name: 'dx', + dispName: 'Button Height', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeBasicButton.prototype.cst = { + BUTTON: 'mxgraph.basic.button' +}; + +mxShapeBasicButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicButton.prototype.cst.BUTTON, mxShapeBasicButton); +mxShapeBasicButton.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicButton.prototype.cst.BUTTON] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +function mxShapeBasicShadedButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicShadedButton, mxActor); +mxShapeBasicShadedButton.prototype.customProperties = [{ + name: 'dx', + dispName: 'Button Height', + type: 'float', + min: 0, + defVal: 10 +}]; +mxShapeBasicShadedButton.prototype.cst = { + SHADED_BUTTON: 'mxgraph.basic.shaded_button' +}; + +mxShapeBasicShadedButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setShadow(false); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + c.setFillColor('#ffffff'); + c.setAlpha(0.25); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fill(); + c.setAlpha(0.5); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.close(); + c.fill(); + c.setFillColor('#000000'); + c.setAlpha(0.25); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fill(); + c.setAlpha(0.5); + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON, mxShapeBasicShadedButton); +mxShapeBasicShadedButton.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +function mxShapeBasicPie(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; +} + +; +mxUtils.extend(mxShapeBasicPie, mxActor); +mxShapeBasicPie.prototype.customProperties = [{ + name: 'startAngle', + dispName: 'Start Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.2 +}, { + name: 'endAngle', + dispName: 'End Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.9 +}]; +mxShapeBasicPie.prototype.cst = { + PIE: 'mxgraph.basic.pie' +}; + +mxShapeBasicPie.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var rx = w * 0.5; + var ry = h * 0.5; + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) { + bigArc = 1; + } + + c.begin(); + c.moveTo(rx, ry); + c.lineTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPie.prototype.cst.PIE, mxShapeBasicPie); +mxShapeBasicPie.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPie.prototype.cst.PIE] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + return handles; +}; + +function mxShapeBasicArc(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; +} + +; +mxUtils.extend(mxShapeBasicArc, mxActor); +mxShapeBasicArc.prototype.customProperties = [{ + name: 'startAngle', + dispName: 'Start Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.3 +}, { + name: 'endAngle', + dispName: 'End Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.1 +}]; +mxShapeBasicArc.prototype.cst = { + ARC: 'mxgraph.basic.arc' +}; + +mxShapeBasicArc.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var rx = w * 0.5; + var ry = h * 0.5; + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) { + bigArc = 1; + } + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicArc.prototype.cst.ARC, mxShapeBasicArc); +mxShapeBasicArc.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicArc.prototype.cst.ARC] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + return handles; +}; + +function mxShapeBasicPartConcEllipse(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +} + +; +mxUtils.extend(mxShapeBasicPartConcEllipse, mxActor); +mxShapeBasicPartConcEllipse.prototype.customProperties = [{ + name: 'startAngle', + dispName: 'Start Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.25 +}, { + name: 'endAngle', + dispName: 'End Angle', + type: 'float', + min: 0, + max: 1, + defVal: 0.1 +}, { + name: 'arcWidth', + dispName: 'Arc Width', + type: 'float', + min: 0, + max: 1, + defVal: 0.5 +}]; +mxShapeBasicPartConcEllipse.prototype.cst = { + PART_CONC_ELLIPSE: 'mxgraph.basic.partConcEllipse' +}; + +mxShapeBasicPartConcEllipse.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } else if (angDiff == Math.PI) { + endAngle = endAngle + 0.00001; + } + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + var bigArc = 0; + + if (angDiff >= Math.PI) { + bigArc = 1; + } + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE, mxShapeBasicPartConcEllipse); +mxShapeBasicPartConcEllipse.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arcWidth'], function (bounds) { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + handles.push(handle3); + return handles; +}; + +function mxShapeBasicNumEntryVert(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeBasicNumEntryVert, mxActor); +mxShapeBasicNumEntryVert.prototype.cst = { + NUM_ENTRY_VERT: 'mxgraph.basic.numberedEntryVert' +}; + +mxShapeBasicNumEntryVert.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var inset = 5; + var d = Math.min(dy, w - 2 * inset, h - inset); + c.ellipse(w * 0.5 - d * 0.5, 0, d, d); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, d * 0.5); + c.lineTo(w * 0.5 - d * 0.5 - inset, d * 0.5); + c.arcTo(d * 0.5 + inset, d * 0.5 + inset, 0, 0, 0, w * 0.5 + d * 0.5 + inset, d * 0.5); + c.lineTo(w, d * 0.5); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicNumEntryVert.prototype.cst.NUM_ENTRY_VERT, mxShapeBasicNumEntryVert); +mxShapeBasicNumEntryVert.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.width, bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.width, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +function mxShapeBasicBendingArch(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +} + +; +mxUtils.extend(mxShapeBasicBendingArch, mxActor); +mxShapeBasicBendingArch.prototype.cst = { + BENDING_ARCH: 'mxgraph.basic.bendingArch' +}; + +mxShapeBasicBendingArch.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) { + bigArc = 1; + } + + var rx3 = rx2 - 5; + var ry3 = ry2 - 5; + c.ellipse(w * 0.5 - rx3, h * 0.5 - ry3, 2 * rx3, 2 * ry3); + c.fillAndStroke(); + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicBendingArch.prototype.cst.BENDING_ARCH, mxShapeBasicBendingArch); +mxShapeBasicBendingArch.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicBendingArch.prototype.cst.BENDING_ARCH] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arcWidth'], function (bounds) { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + handles.push(handle3); + return handles; +}; + +function mxShapeBasicThreeCornerRoundRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; +} + +; +mxUtils.extend(mxShapeBasicThreeCornerRoundRect, mxActor); +mxShapeBasicThreeCornerRoundRect.prototype.customProperties = [{ + name: 'dx', + dispName: 'Rounding Size', + type: 'float', + min: 0, + defVal: 6 +}]; +mxShapeBasicThreeCornerRoundRect.prototype.cst = { + THREE_CORNER_ROUND_RECT: 'mxgraph.basic.three_corner_round_rect' +}; + +mxShapeBasicThreeCornerRoundRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + dx = Math.min(w * 0.5, h * 0.5, dx); + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 1, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 1, w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT, mxShapeBasicThreeCornerRoundRect); +mxShapeBasicThreeCornerRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeBasicThreeCornerRoundRect.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeBasicRect2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.rectStyle = 'square'; + this.size = 10; + this.absoluteCornerSize = true; + this.indent = 2; + this.rectOutline = 'single'; +} + +; +mxUtils.extend(mxShapeBasicRect2, mxActor); +mxShapeBasicRect2.prototype.cst = { + RECT2: 'mxgraph.basic.rect' +}; +mxShapeBasicRect2.prototype.customProperties = [{ + name: 'rectStyle', + dispName: 'Style', + type: 'enum', + defVal: 'square', + enumList: [{ + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Round' + }, { + val: 'snip', + dispName: 'Snip' + }, { + val: 'invRound', + dispName: 'Inv. Round' + }, { + val: 'fold', + dispName: 'Fold' + }] +}, { + name: 'size', + dispName: 'Corner Size', + type: 'float', + defVal: 10 +}, { + name: 'absoluteCornerSize', + dispName: 'Abs. Corner Size', + type: 'bool', + defVal: true +}, { + name: 'indent', + dispName: 'Indent', + type: 'float', + defVal: 2 +}, { + name: 'rectOutline', + dispName: 'Outline', + type: 'enum', + defVal: 'single', + enumList: [{ + val: 'single', + dispName: 'Single' + }, { + val: 'double', + dispName: 'Double' + }, { + val: 'frame', + dispName: 'Frame' + }] +}, { + name: 'fillColor2', + dispName: 'Inside Fill Color', + type: 'color', + defVal: 'none' +}, { + name: 'gradientColor2', + dispName: 'Inside Gradient Color', + type: 'color', + defVal: 'none' +}, { + name: 'gradientDirection2', + dispName: 'Inside Gradient Direction', + type: 'enum', + defVal: 'south', + enumList: [{ + val: 'south', + dispName: 'South' + }, { + val: 'west', + dispName: 'West' + }, { + val: 'north', + dispName: 'North' + }, { + val: 'east', + dispName: 'East' + }] +}, { + name: 'top', + dispName: 'Top Line', + type: 'bool', + defVal: true +}, { + name: 'right', + dispName: 'Right', + type: 'bool', + defVal: true +}, { + name: 'bottom', + dispName: 'Bottom Line', + type: 'bool', + defVal: true +}, { + name: 'left', + dispName: 'Left ', + type: 'bool', + defVal: true +}, { + name: 'topLeftStyle', + dispName: 'Top Left Style', + type: 'enum', + defVal: 'default', + enumList: [{ + val: 'default', + dispName: 'Default' + }, { + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Round' + }, { + val: 'snip', + dispName: 'Snip' + }, { + val: 'invRound', + dispName: 'Inv. Round' + }, { + val: 'fold', + dispName: 'Fold' + }] +}, { + name: 'topRightStyle', + dispName: 'Top Right Style', + type: 'enum', + defVal: 'default', + enumList: [{ + val: 'default', + dispName: 'Default' + }, { + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Round' + }, { + val: 'snip', + dispName: 'Snip' + }, { + val: 'invRound', + dispName: 'Inv. Round' + }, { + val: 'fold', + dispName: 'Fold' + }] +}, { + name: 'bottomRightStyle', + dispName: 'Bottom Right Style', + type: 'enum', + defVal: 'default', + enumList: [{ + val: 'default', + dispName: 'Default' + }, { + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Round' + }, { + val: 'snip', + dispName: 'Snip' + }, { + val: 'invRound', + dispName: 'Inv. Round' + }, { + val: 'fold', + dispName: 'Fold' + }] +}, { + name: 'bottomLeftStyle', + dispName: 'Bottom Left Style', + type: 'enum', + defVal: 'default', + enumList: [{ + val: 'default', + dispName: 'Default' + }, { + val: 'square', + dispName: 'Square' + }, { + val: 'rounded', + dispName: 'Round' + }, { + val: 'snip', + dispName: 'Snip' + }, { + val: 'invRound', + dispName: 'Inv. Round' + }, { + val: 'fold', + dispName: 'Fold' + }] +}]; + +mxShapeBasicRect2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rectStyle = mxUtils.getValue(this.style, 'rectStyle', this.rectStyle); + var absoluteCornerSize = mxUtils.getValue(this.style, 'absoluteCornerSize', this.absoluteCornerSize); + var size = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var relSize = Math.max(0, Math.min(50, size)); + size = Math.min(h * 0.5, w * 0.5, size); + + if (!absoluteCornerSize) { + size = relSize * Math.min(w, h) / 100; + } + + var rectOutline = mxUtils.getValue(this.style, 'rectOutline', this.rectOutline); + var indent = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'indent', this.indent)))); + var relIndent = Math.max(0, Math.min(50, indent)); + size = Math.min(size, Math.min(w, h) * 0.5); + + if (!absoluteCornerSize) { + indent = Math.min(relIndent * Math.min(w, h) / 100); + } + + indent = Math.min(indent, Math.min(w, h) * 0.5 - size); + var top = mxUtils.getValue(this.style, 'top', true); + var right = mxUtils.getValue(this.style, 'right', true); + var bottom = mxUtils.getValue(this.style, 'bottom', true); + var left = mxUtils.getValue(this.style, 'left', true); + var topLeftStyle = mxUtils.getValue(this.style, 'topLeftStyle', 'default'); + var topRightStyle = mxUtils.getValue(this.style, 'topRightStyle', 'default'); + var bottomRightStyle = mxUtils.getValue(this.style, 'bottomRightStyle', 'default'); + var bottomLeftStyle = mxUtils.getValue(this.style, 'bottomLeftStyle', 'default'); + var fillColor = mxUtils.getValue(this.style, 'fillColor', 'none'); + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', 'none'); + var gradientColor2 = mxUtils.getValue(this.style, 'gradientColor2', 'none'); + var gdir2 = mxUtils.getValue(this.style, 'gradientDirection2', 'south'); + var opacity = mxUtils.getValue(this.style, 'opacity', '100'); + + if ((top || right || bottom || left) && rectOutline != 'frame') { + c.begin(); + + if (!top) { + c.moveTo(0, 0); + } else { + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + } + + if (top) { + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + } + + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (right) { + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + } + + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (bottom) { + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + } + + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (left) { + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + } + + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + c.fill(); + c.setShadow(false); + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', 'none'); + c.setFillColor(fillColor2); + var op1 = opacity; + var op2 = opacity; + + if (fillColor2 == 'none') { + op1 = 0; + } + + if (gradientColor2 == 'none') { + op2 = 0; + } + + c.setGradient(fillColor2, gradientColor2, 0, 0, w, h, gdir2, op1, op2); + c.begin(); + + if (!top) { + c.moveTo(indent, 0); + } else { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + } + + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + + if (left && bottom) { + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + } + + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + + if (bottom && right) { + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + } + + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + + if (right && top) { + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + } + + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + + if (top && left) { + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + } + + c.fill(); + + if (fillColor == 'none') { + c.begin(); + mxShapeBasicRect2.prototype.paintFolds(c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left); + c.stroke(); + } + } + + if (!top && !right && !bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } else if (!top && !right && bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } else if (!top && !right && bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } else if (!top && right && !bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } else if (!top && right && !bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } else if (!top && right && bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } else if (!top && right && bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } else if (top && !right && !bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } else if (top && !right && !bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } else if (top && !right && bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } else if (top && !right && bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } else if (top && right && !bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } else if (top && right && !bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } else if (top && right && bottom && !left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } else if (top && right && bottom && left) { + if (rectOutline != 'frame') { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + + if (rectOutline == 'double') { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + } + + c.stroke(); + } else { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } + + c.begin(); + mxShapeBasicRect2.prototype.paintFolds(c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left); + c.stroke(); +}; + +mxShapeBasicRect2.prototype.moveNW = function (c, x, y, w, h, rectStyle, topLeftStyle, size, left) { + if (topLeftStyle == 'square' || topLeftStyle == 'default' && rectStyle == 'square' || !left) { + c.moveTo(0, 0); + } else { + c.moveTo(0, size); + } +}; + +mxShapeBasicRect2.prototype.moveNE = function (c, x, y, w, h, rectStyle, topRightStyle, size, top) { + if (topRightStyle == 'square' || topRightStyle == 'default' && rectStyle == 'square' || !top) { + c.moveTo(w, 0); + } else { + c.moveTo(w - size, 0); + } +}; + +mxShapeBasicRect2.prototype.moveSE = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, right) { + if (bottomRightStyle == 'square' || bottomRightStyle == 'default' && rectStyle == 'square' || !right) { + c.moveTo(w, h); + } else { + c.moveTo(w, h - size); + } +}; + +mxShapeBasicRect2.prototype.moveSW = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom) { + if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square' || !bottom) { + c.moveTo(0, h); + } else { + c.moveTo(size, h); + } +}; + +mxShapeBasicRect2.prototype.paintNW = function (c, x, y, w, h, rectStyle, topLeftStyle, size, left) { + if (!left) { + c.lineTo(0, 0); + } else if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded' || topLeftStyle == 'invRound' || topLeftStyle == 'default' && rectStyle == 'invRound') { + var inv = 0; + + if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded') { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, size, 0); + } else if (topLeftStyle == 'snip' || topLeftStyle == 'default' && rectStyle == 'snip' || topLeftStyle == 'fold' || topLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(size, 0); + } +}; + +mxShapeBasicRect2.prototype.paintTop = function (c, x, y, w, h, rectStyle, topRightStyle, size, right) { + if (topRightStyle == 'square' || topRightStyle == 'default' && rectStyle == 'square' || !right) { + c.lineTo(w, 0); + } else { + c.lineTo(w - size, 0); + } +}; + +mxShapeBasicRect2.prototype.paintNE = function (c, x, y, w, h, rectStyle, topRightStyle, size, top) { + if (!top) { + c.lineTo(w, 0); + } else if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded' || topRightStyle == 'invRound' || topRightStyle == 'default' && rectStyle == 'invRound') { + var inv = 0; + + if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded') { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, w, size); + } else if (topRightStyle == 'snip' || topRightStyle == 'default' && rectStyle == 'snip' || topRightStyle == 'fold' || topRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w, size); + } +}; + +mxShapeBasicRect2.prototype.paintRight = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom) { + if (bottomRightStyle == 'square' || bottomRightStyle == 'default' && rectStyle == 'square' || !bottom) { + c.lineTo(w, h); + } else { + c.lineTo(w, h - size); + } +}; + +mxShapeBasicRect2.prototype.paintLeft = function (c, x, y, w, h, rectStyle, topLeftStyle, size, top) { + if (topLeftStyle == 'square' || topLeftStyle == 'default' && rectStyle == 'square' || !top) { + c.lineTo(0, 0); + } else { + c.lineTo(0, size); + } +}; + +mxShapeBasicRect2.prototype.paintSE = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, right) { + if (!right) { + c.lineTo(w, h); + } else if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded' || bottomRightStyle == 'invRound' || bottomRightStyle == 'default' && rectStyle == 'invRound') { + var inv = 0; + + if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded') { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, w - size, h); + } else if (bottomRightStyle == 'snip' || bottomRightStyle == 'default' && rectStyle == 'snip' || bottomRightStyle == 'fold' || bottomRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w - size, h); + } +}; + +mxShapeBasicRect2.prototype.paintBottom = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, left) { + if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square' || !left) { + c.lineTo(0, h); + } else { + c.lineTo(size, h); + } +}; + +mxShapeBasicRect2.prototype.paintSW = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom) { + if (!bottom) { + c.lineTo(0, h); + } else if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded' || bottomLeftStyle == 'invRound' || bottomLeftStyle == 'default' && rectStyle == 'invRound') { + var inv = 0; + + if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded') { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, 0, h - size); + } else if (bottomLeftStyle == 'snip' || bottomLeftStyle == 'default' && rectStyle == 'snip' || bottomLeftStyle == 'fold' || bottomLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(0, h - size); + } +}; + +mxShapeBasicRect2.prototype.paintNWInner = function (c, x, y, w, h, rectStyle, topLeftStyle, size, indent) { + if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded') { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, indent, indent * 0.5 + size); + } else if (topLeftStyle == 'invRound' || topLeftStyle == 'default' && rectStyle == 'invRound') { + c.arcTo(size + indent, size + indent, 0, 0, 1, indent, indent + size); + } else if (topLeftStyle == 'snip' || topLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(indent, indent * 0.5 + size); + } else if (topLeftStyle == 'fold' || topLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(indent + size, indent + size); + c.lineTo(indent, indent + size); + } +}; + +mxShapeBasicRect2.prototype.paintTopInner = function (c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top) { + if (!left && !top) { + c.lineTo(0, 0); + } else if (!left && top) { + c.lineTo(0, indent); + } else if (left && !top) { + c.lineTo(indent, 0); + } else if (!left) { + c.lineTo(0, indent); + } else if (topLeftStyle == 'square' || topLeftStyle == 'default' && rectStyle == 'square') { + c.lineTo(indent, indent); + } else if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded' || topLeftStyle == 'snip' || topLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(size + indent * 0.5, indent); + } else { + c.lineTo(size + indent, indent); + } +}; + +mxShapeBasicRect2.prototype.paintNEInner = function (c, x, y, w, h, rectStyle, topRightStyle, size, indent) { + if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded') { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, w - size - indent * 0.5, indent); + } else if (topRightStyle == 'invRound' || topRightStyle == 'default' && rectStyle == 'invRound') { + c.arcTo(size + indent, size + indent, 0, 0, 1, w - size - indent, indent); + } else if (topRightStyle == 'snip' || topRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - size - indent * 0.5, indent); + } else if (topRightStyle == 'fold' || topRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w - size - indent, size + indent); + c.lineTo(w - size - indent, indent); + } +}; + +mxShapeBasicRect2.prototype.paintRightInner = function (c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right) { + if (!top && !right) { + c.lineTo(w, 0); + } else if (!top && right) { + c.lineTo(w - indent, 0); + } else if (top && !right) { + c.lineTo(w, indent); + } else if (!top) { + c.lineTo(w - indent, 0); + } else if (topRightStyle == 'square' || topRightStyle == 'default' && rectStyle == 'square') { + c.lineTo(w - indent, indent); + } else if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded' || topRightStyle == 'snip' || topRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - indent, size + indent * 0.5); + } else { + c.lineTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.paintLeftInner = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left) { + if (!bottom && !left) { + c.lineTo(0, h); + } else if (!bottom && left) { + c.lineTo(indent, h); + } else if (bottom && !left) { + c.lineTo(0, h - indent); + } else if (!bottom) { + c.lineTo(indent, h); + } else if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square') { + c.lineTo(indent, h - indent); + } else if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded' || bottomLeftStyle == 'snip' || bottomLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(indent, h - size - indent * 0.5); + } else { + c.lineTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.paintSEInner = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, indent) { + if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded') { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, w - indent, h - size - indent * 0.5); + } else if (bottomRightStyle == 'invRound' || bottomRightStyle == 'default' && rectStyle == 'invRound') { + c.arcTo(size + indent, size + indent, 0, 0, 1, w - indent, h - size - indent); + } else if (bottomRightStyle == 'snip' || bottomRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - indent, h - size - indent * 0.5); + } else if (bottomRightStyle == 'fold' || bottomRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w - size - indent, h - size - indent); + c.lineTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.paintBottomInner = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom) { + if (!right && !bottom) { + c.lineTo(w, h); + } else if (!right && bottom) { + c.lineTo(w, h - indent); + } else if (right && !bottom) { + c.lineTo(w - indent, h); + } else if (bottomRightStyle == 'square' || bottomRightStyle == 'default' && rectStyle == 'square' || !right) { + c.lineTo(w - indent, h - indent); + } else if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded' || bottomRightStyle == 'snip' || bottomRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - size - indent * 0.5, h - indent); + } else { + c.lineTo(w - size - indent, h - indent); + } +}; + +mxShapeBasicRect2.prototype.paintSWInner = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom) { + if (!bottom) { + c.lineTo(indent, h); + } else if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square') { + c.lineTo(indent, h - indent); + } else if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded') { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, size + indent * 0.5, h - indent); + } else if (bottomLeftStyle == 'invRound' || bottomLeftStyle == 'default' && rectStyle == 'invRound') { + c.arcTo(size + indent, size + indent, 0, 0, 1, size + indent, h - indent); + } else if (bottomLeftStyle == 'snip' || bottomLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(size + indent * 0.5, h - indent); + } else if (bottomLeftStyle == 'fold' || bottomLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(indent + size, h - size - indent); + c.lineTo(indent + size, h - indent); + } +}; + +mxShapeBasicRect2.prototype.moveSWInner = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left) { + if (!left) { + c.moveTo(0, h - indent); + } else if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square') { + c.moveTo(indent, h - indent); + } else if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded' || bottomLeftStyle == 'snip' || bottomLeftStyle == 'default' && rectStyle == 'snip') { + c.moveTo(indent, h - size - indent * 0.5); + } else if (bottomLeftStyle == 'invRound' || bottomLeftStyle == 'default' && rectStyle == 'invRound' || bottomLeftStyle == 'fold' || bottomLeftStyle == 'default' && rectStyle == 'fold') { + c.moveTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.lineSWInner = function (c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left) { + if (!left) { + c.lineTo(0, h - indent); + } else if (bottomLeftStyle == 'square' || bottomLeftStyle == 'default' && rectStyle == 'square') { + c.lineTo(indent, h - indent); + } else if (bottomLeftStyle == 'rounded' || bottomLeftStyle == 'default' && rectStyle == 'rounded' || bottomLeftStyle == 'snip' || bottomLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(indent, h - size - indent * 0.5); + } else if (bottomLeftStyle == 'invRound' || bottomLeftStyle == 'default' && rectStyle == 'invRound' || bottomLeftStyle == 'fold' || bottomLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.moveSEInner = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom) { + if (!bottom) { + c.moveTo(w - indent, h); + } else if (bottomRightStyle == 'square' || bottomRightStyle == 'default' && rectStyle == 'square') { + c.moveTo(w - indent, h - indent); + } else if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded' || bottomRightStyle == 'snip' || bottomRightStyle == 'default' && rectStyle == 'snip') { + c.moveTo(w - indent, h - size - indent * 0.5); + } else if (bottomRightStyle == 'invRound' || bottomRightStyle == 'default' && rectStyle == 'invRound' || bottomRightStyle == 'fold' || bottomRightStyle == 'default' && rectStyle == 'fold') { + c.moveTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.lineSEInner = function (c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom) { + if (!bottom) { + c.lineTo(w - indent, h); + } else if (bottomRightStyle == 'square' || bottomRightStyle == 'default' && rectStyle == 'square') { + c.lineTo(w - indent, h - indent); + } else if (bottomRightStyle == 'rounded' || bottomRightStyle == 'default' && rectStyle == 'rounded' || bottomRightStyle == 'snip' || bottomRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - indent, h - size - indent * 0.5); + } else if (bottomRightStyle == 'invRound' || bottomRightStyle == 'default' && rectStyle == 'invRound' || bottomRightStyle == 'fold' || bottomRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.moveNEInner = function (c, x, y, w, h, rectStyle, topRightStyle, size, indent, right) { + if (!right) { + c.moveTo(w, indent); + } else if (topRightStyle == 'square' || topRightStyle == 'default' && rectStyle == 'square' || right) { + c.moveTo(w - indent, indent); + } else if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded' || topRightStyle == 'snip' || topRightStyle == 'default' && rectStyle == 'snip') { + c.moveTo(w - indent, size + indent * 0.5); + } else if (topRightStyle == 'invRound' || topRightStyle == 'default' && rectStyle == 'invRound' || topRightStyle == 'fold' || topRightStyle == 'default' && rectStyle == 'fold') { + c.moveTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.lineNEInner = function (c, x, y, w, h, rectStyle, topRightStyle, size, indent, right) { + if (!right) { + c.lineTo(w, indent); + } else if (topRightStyle == 'square' || topRightStyle == 'default' && rectStyle == 'square' || right) { + c.lineTo(w - indent, indent); + } else if (topRightStyle == 'rounded' || topRightStyle == 'default' && rectStyle == 'rounded' || topRightStyle == 'snip' || topRightStyle == 'default' && rectStyle == 'snip') { + c.lineTo(w - indent, size + indent * 0.5); + } else if (topRightStyle == 'invRound' || topRightStyle == 'default' && rectStyle == 'invRound' || topRightStyle == 'fold' || topRightStyle == 'default' && rectStyle == 'fold') { + c.lineTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.moveNWInner = function (c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left) { + if (!top && !left) { + c.moveTo(0, 0); + } else if (!top && left) { + c.moveTo(indent, 0); + } else if (top && !left) { + c.moveTo(0, indent); + } else if (topLeftStyle == 'square' || topLeftStyle == 'default' && rectStyle == 'square') { + c.moveTo(indent, indent); + } else if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded' || topLeftStyle == 'snip' || topLeftStyle == 'default' && rectStyle == 'snip') { + c.moveTo(indent, size + indent * 0.5); + } else if (topLeftStyle == 'invRound' || topLeftStyle == 'default' && rectStyle == 'invRound' || topLeftStyle == 'fold' || topLeftStyle == 'default' && rectStyle == 'fold') { + c.moveTo(indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.lineNWInner = function (c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left) { + if (!top && !left) { + c.lineTo(0, 0); + } else if (!top && left) { + c.lineTo(indent, 0); + } else if (top && !left) { + c.lineTo(0, indent); + } else if (topLeftStyle == 'square' || topLeftStyle == 'default' && rectStyle == 'square') { + c.lineTo(indent, indent); + } else if (topLeftStyle == 'rounded' || topLeftStyle == 'default' && rectStyle == 'rounded' || topLeftStyle == 'snip' || topLeftStyle == 'default' && rectStyle == 'snip') { + c.lineTo(indent, size + indent * 0.5); + } else if (topLeftStyle == 'invRound' || topLeftStyle == 'default' && rectStyle == 'invRound' || topLeftStyle == 'fold' || topLeftStyle == 'default' && rectStyle == 'fold') { + c.lineTo(indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.paintFolds = function (c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left) { + if (rectStyle == 'fold' || topLeftStyle == 'fold' || topRightStyle == 'fold' || bottomRightStyle == 'fold' || bottomLeftStyle == 'fold') { + if ((topLeftStyle == 'fold' || topLeftStyle == 'default' && rectStyle == 'fold') && top && left) { + c.moveTo(0, size); + c.lineTo(size, size); + c.lineTo(size, 0); + } + + if ((topRightStyle == 'fold' || topRightStyle == 'default' && rectStyle == 'fold') && top && right) { + c.moveTo(w - size, 0); + c.lineTo(w - size, size); + c.lineTo(w, size); + } + + if ((bottomRightStyle == 'fold' || bottomRightStyle == 'default' && rectStyle == 'fold') && bottom && right) { + c.moveTo(w - size, h); + c.lineTo(w - size, h - size); + c.lineTo(w, h - size); + } + + if ((bottomLeftStyle == 'fold' || bottomLeftStyle == 'default' && rectStyle == 'fold') && bottom && left) { + c.moveTo(0, h - size); + c.lineTo(size, h - size); + c.lineTo(size, h); + } + } +}; + +mxCellRenderer.registerShape(mxShapeBasicRect2.prototype.cst.RECT2, mxShapeBasicRect2); +mxShapeBasicRect2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRect2.prototype.cst.DIAG_ROUND_RECT] = function (state) { + var handles = [Graph.createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(bounds.width / 2, bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + return new mxPoint(bounds.x + size, bounds.y + size); + }, function (bounds, pt) { + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['indent'], function (bounds) { + var dx2 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'indent', this.dx2)))); + return new mxPoint(bounds.x + bounds.width * 0.75, bounds.y + dx2 * bounds.height / 200); + }, function (bounds, pt) { + this.state.style['indent'] = Math.round(100 * Math.max(0, Math.min(100, 200 * (pt.y - bounds.y) / bounds.height))) / 100; + }); + handles.push(handle2); + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBootstrap.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBootstrap.js new file mode 100644 index 0000000000000..56549f934b1d9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxBootstrap.js @@ -0,0 +1,693 @@ +"use strict"; + +function mxShapeBootstrapRRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapRRect, mxShape); +mxShapeBootstrapRRect.prototype.cst = { + PACKAGE: 'mxgraph.bootstrap.rrect', + R_SIZE: 'rSize' +}; +mxShapeBootstrapRRect.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeBootstrapRRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRRect.prototype.cst.PACKAGE, mxShapeBootstrapRRect); + +function mxShapeBootstrapTopButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapTopButton, mxShape); +mxShapeBootstrapTopButton.prototype.cst = { + TOP_BUTTON: 'mxgraph.bootstrap.topButton', + R_SIZE: 'rSize' +}; +mxShapeBootstrapTopButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeBootstrapTopButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapTopButton.prototype.cst.TOP_BUTTON, mxShapeBootstrapTopButton); + +function mxShapeBootstrapBottomButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapBottomButton, mxShape); +mxShapeBootstrapBottomButton.prototype.cst = { + BOTTOM_BUTTON: 'mxgraph.bootstrap.bottomButton', + R_SIZE: 'rSize' +}; +mxShapeBootstrapBottomButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeBootstrapBottomButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapBottomButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeBootstrapBottomButton); + +function mxShapeBootstrapRightButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapRightButton, mxShape); +mxShapeBootstrapRightButton.prototype.cst = { + RIGHT_BUTTON: 'mxgraph.bootstrap.rightButton', + R_SIZE: 'rSize' +}; +mxShapeBootstrapRightButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeBootstrapRightButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapRightButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRightButton.prototype.cst.RIGHT_BUTTON, mxShapeBootstrapRightButton); + +function mxShapeBootstrapLeftButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapLeftButton, mxShape); +mxShapeBootstrapLeftButton.prototype.cst = { + LEFT_BUTTON: 'mxgraph.bootstrap.leftButton', + R_SIZE: 'rSize' +}; +mxShapeBootstrapLeftButton.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeBootstrapLeftButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapLeftButton.prototype.cst.R_SIZE, '10')); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapLeftButton.prototype.cst.LEFT_BUTTON, mxShapeBootstrapLeftButton); + +function mxShapeBootstrapLeftButtonStriped(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapLeftButtonStriped, mxShape); +mxShapeBootstrapLeftButtonStriped.prototype.cst = { + LEFT_BUTTON_STRIPED: 'mxgraph.bootstrap.leftButtonStriped' +}; + +mxShapeBootstrapLeftButtonStriped.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + rSize = 5; + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fill(); + var fillColor = '#ffffff'; + c.setAlpha('0.2'); + var stripeW = h * 0.5; + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.75); + c.lineTo(0, h * 0.25); + c.lineTo(h * 0.75, h); + c.lineTo(h * 0.25, h); + c.close(); + c.fill(); + var end = false; + var startX = stripeW * 0.5; + + while (!end) { + c.begin(); + c.moveTo(startX, 0); + + if (startX + stripeW >= w) { + c.lineTo(w, 0); + c.lineTo(w, w - startX); + } else { + c.lineTo(startX + stripeW, 0); + + if (startX + stripeW + h > w) { + c.lineTo(w, w - startX - stripeW); + + if (w - startX > h) { + c.lineTo(w, h); + c.lineTo(startX + h, h); + } else { + c.lineTo(w, w - startX); + } + } else { + c.lineTo(startX + stripeW + h, h); + c.lineTo(startX + h, h); + } + } + + c.close(); + c.fill(); + startX = startX + 2 * stripeW; + + if (startX > w) { + end = true; + } + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapLeftButtonStriped.prototype.cst.LEFT_BUTTON_STRIPED, mxShapeBootstrapLeftButtonStriped); + +function mxShapeBootstrapRoundedButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapRoundedButton, mxShape); +mxShapeBootstrapRoundedButton.prototype.cst = { + ROUNDED_BUTTON: 'mxgraph.bootstrap.roundedButton' +}; + +mxShapeBootstrapRoundedButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + + if (w > h) { + var r = h * 0.5; + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); + } else { + var r = w * 0.5; + c.begin(); + c.moveTo(0, h - r); + c.arcTo(r, r, 0, 0, 0, w, h - r); + c.lineTo(w, r); + c.arcTo(r, r, 0, 0, 0, 0, r); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRoundedButton.prototype.cst.ROUNDED_BUTTON, mxShapeBootstrapRoundedButton); + +function mxShapeBootstrapArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapArrow, mxShape); +mxShapeBootstrapArrow.prototype.cst = { + ARROW: 'mxgraph.bootstrap.arrow' +}; + +mxShapeBootstrapArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapArrow.prototype.cst.ARROW, mxShapeBootstrapArrow); + +function mxShapeBootstrapTabTop(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapTabTop, mxShape); +mxShapeBootstrapTabTop.prototype.cst = { + TAB_TOP: 'mxgraph.bootstrap.tabTop', + R_SIZE: 'rSize' +}; +mxShapeBootstrapTabTop.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeBootstrapTabTop.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10')); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setStrokeColor(strokeColor); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapTabTop.prototype.cst.TAB_TOP, mxShapeBootstrapTabTop); + +function mxShapeBootstrapImage(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapImage, mxShape); +mxShapeBootstrapImage.prototype.cst = { + IMAGE: 'mxgraph.bootstrap.image', + R_SIZE: 'rSize' +}; +mxShapeBootstrapImage.prototype.customProperties = [{ + name: 'rSize', + dispName: 'Arc Size', + type: 'float', + min: 0, + defVal: 5 +}]; + +mxShapeBootstrapImage.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = Math.max(0, parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10'))); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); + var rsHalf = rSize * 0.5; + c.translate(rsHalf, rsHalf); + w = Math.max(0, w - rSize); + h = Math.max(0, h - rSize); + c.begin(); + c.moveTo(0, rsHalf); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, rsHalf, 0); + c.lineTo(w - rsHalf, 0); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, w, rsHalf); + c.lineTo(w, h - rsHalf); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, w - rsHalf, h); + c.lineTo(rsHalf, h); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, 0, h - rsHalf); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapImage.prototype.cst.IMAGE, mxShapeBootstrapImage); + +function mxShapeBootstrapCheckbox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapCheckbox, mxShape); +mxShapeBootstrapCheckbox.prototype.cst = { + CHECKBOX: 'mxgraph.bootstrap.checkbox' +}; + +mxShapeBootstrapCheckbox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var rSize = 3; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + c.setStrokeWidth('3'); + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapCheckbox.prototype.cst.CHECKBOX, mxShapeBootstrapCheckbox); + +function mxShapeBootstrapRadioButton(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapRadioButton, mxShape); +mxShapeBootstrapRadioButton.prototype.cst = { + RADIO_BUTTON: 'mxgraph.bootstrap.radioButton' +}; + +mxShapeBootstrapRadioButton.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setFillColor(strokeColor); + c.ellipse(w * 0.25, h * 0.25, w * 0.5, h * 0.5); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRadioButton.prototype.cst.RADIO_BUTTON, mxShapeBootstrapRadioButton); + +function mxShapeBootstrapHorLines(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapHorLines, mxShape); +mxShapeBootstrapHorLines.prototype.cst = { + HOR_LINES: 'mxgraph.bootstrap.horLines' +}; + +mxShapeBootstrapHorLines.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fill(); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapHorLines.prototype.cst.HOR_LINES, mxShapeBootstrapHorLines); + +function mxShapeBootstrapUserTwo(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapUserTwo, mxShape); +mxShapeBootstrapUserTwo.prototype.cst = { + USER2: 'mxgraph.bootstrap.user2' +}; + +mxShapeBootstrapUserTwo.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.95); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.02, h * 0.87); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 1, w * 0.08, h * 0.812); + c.arcTo(w * 3, h * 3, 0, 0, 1, w * 0.29, h * 0.732); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.385, h * 0.607); + c.arcTo(w * 0.11, h * 0.11, 0, 0, 0, w * 0.355, h * 0.53); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.305, h * 0.44); + c.arcTo(w * 0.33, h * 0.38, 0, 0, 1, w * 0.312, h * 0.15); + c.arcTo(w * 0.218, h * 0.218, 0, 0, 1, w * 0.688, h * 0.15); + c.arcTo(w * 0.33, h * 0.38, 0, 0, 1, w * 0.693, h * 0.44); + c.arcTo(w * 0.25, h * 0.25, 0, 0, 1, w * 0.645, h * 0.53); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 0, w * 0.612, h * 0.6); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.7, h * 0.726); + c.arcTo(w * 3, h * 3, 0, 0, 1, w * 0.92, h * 0.812); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 1, w * 0.97, h * 0.865); + c.arcTo(w * 0.2, h * 0.2, 0, 0, 1, w * 0.995, h * 0.952); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapUserTwo.prototype.cst.USER2, mxShapeBootstrapUserTwo); + +function mxShapeBootstrapRating(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeBootstrapRating, mxShape); +mxShapeBootstrapRating.prototype.cst = { + RATING: 'mxgraph.bootstrap.rating', + RATING_STYLE: 'ratingStyle', + RATING_SCALE: 'ratingScale', + RATING_HEART: 'heart', + RATING_STAR: 'star', + EMPTY_FILL_COLOR: 'emptyFillColor', + GRADE: 'grade' +}; +mxShapeBootstrapRating.prototype.customProperties = [{ + name: 'ratingStyle', + dispName: 'Rating Style', + type: 'enum', + enumList: [{ + val: 'heart', + dispName: 'Heart' + }, { + val: 'star', + dispName: 'Star' + }] +}, { + name: 'ratingScale', + dispName: 'Rating Scale', + type: 'int', + min: 1, + defVal: 5 +}, { + name: 'emptyFillColor', + dispName: 'Inactive Color', + type: 'color', + defVal: 'none' +}, { + name: 'grade', + dispName: 'Grade', + type: 'int', + min: 1, + defVal: 3 +}]; + +mxShapeBootstrapRating.prototype.paintVertexShape = function (c, x, y, w, h) { + var ratingStyle = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.RATING_STYLE, mxShapeBootstrapRating.prototype.cst.RATING_STAR); + var grade = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.GRADE, '5'); + var ratingScale = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.RATING_SCALE, '10'); + c.translate(x, y); + + if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_STAR) { + for (var i = 0; i < grade; i++) { + c.begin(); + c.moveTo(i * h * 1.2, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0); + c.lineTo(i * h * 1.2 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.2 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.2 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } else if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_HEART) { + for (var i = 0; i < grade; i++) { + c.begin(); + c.moveTo(i * h * 1.2 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.2 + h * 0.558, h * 0.908, i * h * 1.2 + h * 0.778, h * 0.682, i * h * 1.2 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.2 + h * 1.039, h * 0.414, i * h * 1.2 + h * 1.036, h * 0.229, i * h * 1.2 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.812, 0, i * h * 1.2 + h * 0.631, 0, i * h * 1.2 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.408, 0, i * h * 1.2 + h * 0.227, 0, i * h * 1.2 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.03, h * 0.229, i * h * 1.2, h * 0.414, i * h * 1.2 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } + + var emptyFillColor = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.EMPTY_FILL_COLOR, '#ffffff'); + c.setFillColor(emptyFillColor); + + if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_STAR) { + for (var i = grade; i < ratingScale; i++) { + c.begin(); + c.moveTo(i * h * 1.2, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0); + c.lineTo(i * h * 1.2 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.2 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.2 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } else if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_HEART) { + for (var i = grade; i < ratingScale; i++) { + c.begin(); + c.moveTo(i * h * 1.2 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.2 + h * 0.558, h * 0.908, i * h * 1.2 + h * 0.778, h * 0.682, i * h * 1.2 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.2 + h * 1.039, h * 0.414, i * h * 1.2 + h * 1.036, h * 0.229, i * h * 1.2 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.812, 0, i * h * 1.2 + h * 0.631, 0, i * h * 1.2 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.408, 0, i * h * 1.2 + h * 0.227, 0, i * h * 1.2 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.03, h * 0.229, i * h * 1.2, h * 0.414, i * h * 1.2 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRating.prototype.cst.RATING, mxShapeBootstrapRating); + +function mxShapeBoostrapAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; +} + +; +mxUtils.extend(mxShapeBoostrapAnchor, mxShape); +mxShapeBoostrapAnchor.prototype.cst = { + ANCHOR: 'mxgraph.bootstrap.anchor' +}; + +mxShapeBoostrapAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeBoostrapAnchor.prototype.cst.ANCHOR, mxShapeBoostrapAnchor); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxCabinets.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxCabinets.js new file mode 100644 index 0000000000000..dafd06cbe8f48 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxCabinets.js @@ -0,0 +1,175 @@ +"use strict"; + +function mxCabinetsCabinet(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxCabinetsCabinet, mxShape); +mxCabinetsCabinet.prototype.cst = { + HAS_STAND: 'hasStand', + CABINET: 'mxgraph.cabinets.cabinet' +}; +mxCabinetsCabinet.prototype.customProperties = [{ + name: 'hasStand', + dispName: 'Has Stand', + type: 'bool', + defVal: true +}]; + +mxCabinetsCabinet.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxCabinetsCabinet.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCabinetsCabinet.prototype.foreground = function (c, x, y, w, h) { + var wallTh = 15; + c.rect(0, 0, w, wallTh); + c.stroke(); + c.begin(); + c.moveTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.moveTo(w - wallTh, wallTh); + c.lineTo(w - wallTh, h); + c.stroke(); + var hasStand = mxUtils.getValue(this.style, mxCabinetsCabinet.prototype.cst.HAS_STAND, '1'); + + if (hasStand === 1) { + c.rect(0, h - 40, w, 40); + c.fillAndStroke(); + } else { + c.rect(0, h - wallTh, w, wallTh); + c.fillAndStroke(); + } + + ; +}; + +mxCellRenderer.registerShape(mxCabinetsCabinet.prototype.cst.CABINET, mxCabinetsCabinet); + +function mxCabinetsCoverPlate(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxCabinetsCoverPlate, mxShape); +mxCabinetsCoverPlate.prototype.cst = { + COVER_PLATE: 'mxgraph.cabinets.coverPlate' +}; + +mxCabinetsCoverPlate.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxCabinetsCoverPlate.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(10, h * 0.5 - 12.5); + c.lineTo(10, h * 0.5 + 12.5); + c.lineTo(w - 10, h * 0.5 + 12.5); + c.lineTo(w - 10, h * 0.5 - 12.5); + c.close(); + c.fillAndStroke(); +}; + +mxCabinetsCoverPlate.prototype.foreground = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxCabinetsCoverPlate.prototype.cst.COVER_PLATE, mxCabinetsCoverPlate); + +function mxCabinetsDimension(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxCabinetsDimension, mxShape); +mxCabinetsDimension.prototype.cst = { + DIMENSION: 'mxgraph.cabinets.dimension' +}; + +mxCabinetsDimension.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxCabinetsDimension.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxCabinetsDimension.prototype.cst.DIMENSION, mxCabinetsDimension); + +function mxCabinetsDimensionBottom(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxCabinetsDimensionBottom, mxShape); +mxCabinetsDimensionBottom.prototype.cst = { + DIMENSION: 'mxgraph.cabinets.dimensionBottom' +}; + +mxCabinetsDimensionBottom.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxCabinetsDimensionBottom.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h - 20); + c.lineTo(w, h - 20); + c.moveTo(10, h - 15); + c.lineTo(0, h - 20); + c.lineTo(10, h - 25); + c.moveTo(w - 10, h - 15); + c.lineTo(w, h - 20); + c.lineTo(w - 10, h - 25); + c.moveTo(0, h - 15); + c.lineTo(0, 0); + c.moveTo(w, h - 15); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxCabinetsDimensionBottom.prototype.cst.DIMENSION, mxCabinetsDimensionBottom); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxDFD.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxDFD.js new file mode 100644 index 0000000000000..850b499e1e567 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxDFD.js @@ -0,0 +1,323 @@ +"use strict"; + +function mxShapeDFDStart(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDStart, mxShape); +mxShapeDFDStart.prototype.cst = { + START: 'mxgraph.dfd.start' +}; + +mxShapeDFDStart.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var r = Math.min(h * 0.5, w * 0.5); + c.begin(); + c.moveTo(w - r, h * 0.5 - r); + c.arcTo(r, r, 0, 0, 1, w, h * 0.5); + c.arcTo(r, r, 0, 0, 1, w - r, h * 0.5 + r); + c.lineTo(r, h * 0.5 + r); + c.arcTo(r, r, 0, 0, 1, 0, h * 0.5); + c.arcTo(r, r, 0, 0, 1, r, h * 0.5 - r); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDStart.prototype.cst.START, mxShapeDFDStart); + +mxShapeDFDStart.prototype.getConstraints = function (style, w, h) { + var constr = []; + var r = Math.min(h * 0.5, w * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, -r)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, r)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 + r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 + r * 0.707)); + + if (w >= 4 * h) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + } + + return constr; +}; + +function mxShapeDFDArchive(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDArchive, mxShape); +mxShapeDFDArchive.prototype.cst = { + ARCHIVE: 'mxgraph.dfd.archive' +}; + +mxShapeDFDArchive.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.1, h * 0.2); + c.lineTo(w * 0.9, h * 0.2); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDArchive.prototype.cst.ARCHIVE, mxShapeDFDArchive); + +mxShapeDFDArchive.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.375, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.25), false)); + return constr; +}; + +function mxShapeDFDCheck2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDCheck2, mxShape); +mxShapeDFDCheck2.prototype.cst = { + CHECK2: 'mxgraph.dfd.check2' +}; + +mxShapeDFDCheck2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var size = Math.min(h * 0.5, w * 0.5); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(size, 0); + c.lineTo(w - size, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - size, h); + c.lineTo(size, h); + c.lineTo(0, h * 0.5); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w - size, 0); + c.lineTo(w - 2 * size, h * 0.5); + c.lineTo(w - size, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDCheck2.prototype.cst.CHECK2, mxShapeDFDCheck2); + +mxShapeDFDCheck2.prototype.getConstraints = function (style, w, h) { + var constr = []; + var size = Math.min(h * 0.5, w * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.75)); + + if (w > h) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, h)); + } + + if (size * 4 <= w) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + + return constr; +}; + +function mxShapeDFDDataStoreID(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDDataStoreID, mxShape); +mxShapeDFDDataStoreID.prototype.cst = { + DATA_STORE_ID: 'mxgraph.dfd.dataStoreID' +}; + +mxShapeDFDDataStoreID.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var size = Math.min(h * 0.5, w * 0.5); + c.begin(); + c.moveTo(w, h); + c.lineTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.stroke(); + c.setShadow(false); + var s = Math.min(30, w); + c.begin(); + c.moveTo(s, 0); + c.lineTo(s, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDDataStoreID.prototype.cst.DATA_STORE_ID, mxShapeDFDDataStoreID); +mxShapeDFDDataStoreID.prototype.constraints = null; + +function mxShapeDFDExternalEntity(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDExternalEntity, mxShape); +mxShapeDFDExternalEntity.prototype.cst = { + EXTERNAL_ENTITY: 'mxgraph.dfd.externalEntity' +}; + +mxShapeDFDExternalEntity.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var size = 10; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(w, h); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha(0.5); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(size, size); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.fill(); + var opacity = parseFloat(mxUtils.getValue(this.style, 'opacity', '100')); + c.setAlpha(opacity / 100); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(w, h); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.moveTo(size, h); + c.lineTo(size, size); + c.lineTo(w, size); + c.moveTo(0, 0); + c.lineTo(size, size); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDExternalEntity.prototype.cst.EXTERNAL_ENTITY, mxShapeDFDExternalEntity); + +mxShapeDFDExternalEntity.prototype.getConstraints = function (style, w, h) { + var constr = []; + var size = 10; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - size)); + return constr; +}; + +function mxShapeDFDLoop(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeDFDLoop, mxShape); +mxShapeDFDLoop.prototype.cst = { + LOOP: 'mxgraph.dfd.loop' +}; + +mxShapeDFDLoop.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var r = Math.min(h * 0.8, w * 0.8); + c.begin(); + c.moveTo(w - r * 0.25, 0); + c.arcTo(r, r, 0, 0, 1, w - r * 0.25, h); + c.lineTo(r * 0.25, h); + c.arcTo(r, r, 0, 0, 1, r * 0.25, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDLoop.prototype.cst.LOOP, mxShapeDFDLoop); + +mxShapeDFDLoop.prototype.getConstraints = function (style, w, h) { + var constr = []; + var r = Math.min(h * 0.8, w * 0.8); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxEip.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxEip.js new file mode 100644 index 0000000000000..101bcd428ef20 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxEip.js @@ -0,0 +1,409 @@ +"use strict"; + +function mxShapeEipMessageExpiration(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipMessageExpiration, mxShape); +mxShapeEipMessageExpiration.prototype.cst = { + SHAPE_MESS_EXP: 'mxgraph.eip.messExp' +}; + +mxShapeEipMessageExpiration.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeEipMessageExpiration.prototype.background = function (c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.stroke(); + c.setStrokeColor("#808080"); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.6, h * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipMessageExpiration.prototype.cst.SHAPE_MESS_EXP, mxShapeEipMessageExpiration); + +mxShapeEipMessageExpiration.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeEipReturnAddress(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipReturnAddress, mxShape); +mxShapeEipReturnAddress.prototype.cst = { + SHAPE_RET_ADDR: 'mxgraph.eip.retAddr' +}; + +mxShapeEipReturnAddress.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipReturnAddress.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeEipReturnAddress.prototype.foreground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.05, h * 0.11); + c.lineTo(w * 0.25, h * 0.11); + c.moveTo(w * 0.05, h * 0.18); + c.lineTo(w * 0.25, h * 0.18); + c.moveTo(w * 0.05, h * 0.25); + c.lineTo(w * 0.25, h * 0.25); + c.setStrokeWidth(2); + c.moveTo(w * 0.3, h * 0.63); + c.lineTo(w * 0.8, h * 0.63); + c.moveTo(w * 0.3, h * 0.72); + c.lineTo(w * 0.8, h * 0.72); + c.moveTo(w * 0.3, h * 0.80); + c.lineTo(w * 0.8, h * 0.80); + c.stroke(); + c.setFillColor("#EDEDED"); + c.rect(w * 0.8, h * 0.1, w * 0.12, h * 0.19); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipReturnAddress.prototype.cst.SHAPE_RET_ADDR, mxShapeEipReturnAddress); + +mxShapeEipReturnAddress.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxShapeEipAnchor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipAnchor, mxShape); +mxShapeEipAnchor.prototype.cst = { + SHAPE_ANCHOR: 'mxgraph.eip.anchor' +}; + +mxShapeEipAnchor.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeEipAnchor.prototype.cst.SHAPE_ANCHOR, mxShapeEipAnchor); + +function mxShapeEipMessageChannel(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipMessageChannel, mxShape); +mxShapeEipMessageChannel.prototype.cst = { + SHAPE_MESSAGE_CHANNEL: 'mxgraph.eip.messageChannel' +}; + +mxShapeEipMessageChannel.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipMessageChannel.prototype.background = function (c, x, y, w, h) { + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipMessageChannel.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipMessageChannel.prototype.cst.SHAPE_MESSAGE_CHANNEL, mxShapeEipMessageChannel); + +mxShapeEipMessageChannel.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + var currW = 10; + + while (currW < w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + currW = currW + 10; + } + + return constr; +}; + +function mxShapeEipDatatypeChannel(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipDatatypeChannel, mxShape); +mxShapeEipDatatypeChannel.prototype.cst = { + SHAPE_DATATYPE_CHANNEL: 'mxgraph.eip.dataChannel' +}; + +mxShapeEipDatatypeChannel.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipDatatypeChannel.prototype.background = function (c, x, y, w, h) { + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipDatatypeChannel.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + c.setFillColor("#fffbc0"); + c.setStrokeWidth("1"); + + for (var i = 1; i * 20 + 10 < w - 14; i++) { + c.rect(i * 20, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); + } + + ; +}; + +mxCellRenderer.registerShape(mxShapeEipDatatypeChannel.prototype.cst.SHAPE_DATATYPE_CHANNEL, mxShapeEipDatatypeChannel); + +mxShapeEipDatatypeChannel.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + var currW = 10; + + while (currW < w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + currW = currW + 10; + } + + return constr; +}; + +function mxShapeEipDeadLetterChannel(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipDeadLetterChannel, mxShape); +mxShapeEipDeadLetterChannel.prototype.cst = { + SHAPE_DEAD_LETTER_CHANNEL: 'mxgraph.eip.deadLetterChannel' +}; + +mxShapeEipDeadLetterChannel.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipDeadLetterChannel.prototype.background = function (c, x, y, w, h) { + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipDeadLetterChannel.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + c.setFillColor("#ff0000"); + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5 - 6, h * 0.5 - 3); + c.lineTo(w * 0.5 - 3, h * 0.5 - 6); + c.lineTo(w * 0.5 + 3, h * 0.5 - 6); + c.lineTo(w * 0.5 + 6, h * 0.5 - 3); + c.lineTo(w * 0.5 + 6, h * 0.5 + 3); + c.lineTo(w * 0.5 + 3, h * 0.5 + 6); + c.lineTo(w * 0.5 - 3, h * 0.5 + 6); + c.lineTo(w * 0.5 - 6, h * 0.5 + 3); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth("2"); + c.setStrokeColor("#ffffff"); + c.begin(); + c.moveTo(w * 0.5 - 4, h * 0.5); + c.lineTo(w * 0.5 + 4, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipDeadLetterChannel.prototype.cst.SHAPE_DEAD_LETTER_CHANNEL, mxShapeEipDeadLetterChannel); + +mxShapeEipDeadLetterChannel.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + var currW = 10; + + while (currW < w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + currW = currW + 10; + } + + return constr; +}; + +function mxShapeEipInvalidMessageChannel(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeEipInvalidMessageChannel, mxShape); +mxShapeEipInvalidMessageChannel.prototype.cst = { + SHAPE_INVALID_MESSAGE_CHANNEL: 'mxgraph.eip.invalidMessageChannel' +}; + +mxShapeEipInvalidMessageChannel.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipInvalidMessageChannel.prototype.background = function (c, x, y, w, h) { + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipInvalidMessageChannel.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + c.setFillColor("#ffe040"); + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5 - 6, h * 0.5 + 5); + c.lineTo(w * 0.5, h * 0.5 - 5); + c.lineTo(w * 0.5 + 6, h * 0.5 + 5); + c.close(); + c.fillAndStroke(); + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5, h * 0.5 - 2); + c.lineTo(w * 0.5, h * 0.5 + 2); + c.moveTo(w * 0.5, h * 0.5 + 3); + c.lineTo(w * 0.5, h * 0.5 + 4); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipInvalidMessageChannel.prototype.cst.SHAPE_INVALID_MESSAGE_CHANNEL, mxShapeEipInvalidMessageChannel); + +mxShapeEipInvalidMessageChannel.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + var currW = 10; + + while (currW < w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + currW = currW + 10; + } + + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxElectrical.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxElectrical.js new file mode 100644 index 0000000000000..b13ba719ac44f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxElectrical.js @@ -0,0 +1,1469 @@ +"use strict"; + +function mxShapeElectricalTestPoint(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalTestPoint, mxShape); +mxShapeElectricalTestPoint.prototype.cst = { + SHAPE_TEST_POINT: 'mxgraph.electrical.transmission.testPoint' +}; + +mxShapeElectricalTestPoint.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var size = Math.min(w, h); + c.setFillColor(strokeColor); + c.begin(); + c.ellipse(w * 0.5 - size / 2, 0, size, size); + c.fillAndStroke(); + + if (h > w) { + c.begin(); + c.moveTo(w * 0.5, size); + c.lineTo(w * 0.5, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalTestPoint.prototype.cst.SHAPE_TEST_POINT, mxShapeElectricalTestPoint); +mxShapeElectricalTestPoint.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +function mxShapeElectricalStraightBus(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalStraightBus, mxShape); +mxShapeElectricalStraightBus.prototype.cst = { + SHAPE_STRAIGHT_BUS: 'mxgraph.electrical.transmission.straightBus' +}; + +mxShapeElectricalStraightBus.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var size = Math.min(w, h); + var x1 = w * 0.2; + var y1 = 0; + + if (w > h) { + y1 = h * 0.5; + } else { + y1 = w / 2; + } + + c.begin(); + c.moveTo(w - x1, 0); + c.lineTo(w - x1, h - y1); + c.lineTo(w, h - y1); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - y1); + c.lineTo(x1, h - y1); + c.lineTo(x1, 0); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalStraightBus.prototype.cst.SHAPE_STRAIGHT_BUS, mxShapeElectricalStraightBus); +mxShapeElectricalStraightBus.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +function mxShapeElectricalTwoLineBusElbow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeElectricalTwoLineBusElbow, mxShape); +mxShapeElectricalTwoLineBusElbow.prototype.cst = { + SHAPE_TWO_LINE_BUS_ELBOW: 'mxgraph.electrical.transmission.twoLineBusElbow' +}; +mxShapeElectricalTwoLineBusElbow.prototype.customProperties = [{ + name: 'notch', + dispName: 'Spacing', + type: 'float', + min: 0, + defVal: 25 +}]; + +mxShapeElectricalTwoLineBusElbow.prototype.paintVertexShape = function (c, x, y, w, h) { + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalTwoLineBusElbow.prototype.cst.SHAPE_TWO_LINE_BUS_ELBOW, mxShapeElectricalTwoLineBusElbow); +mxShapeElectricalTwoLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalTwoLineBusElbow.prototype.cst.SHAPE_TWO_LINE_BUS_ELBOW] = function (state) { + var handles = [Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + return handles; +}; + +function mxShapeElectricalThreeLineBusElbow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeElectricalThreeLineBusElbow, mxShape); +mxShapeElectricalThreeLineBusElbow.prototype.cst = { + SHAPE_THREE_LINE_BUS_ELBOW: 'mxgraph.electrical.transmission.threeLineBusElbow' +}; +mxShapeElectricalThreeLineBusElbow.prototype.customProperties = [{ + name: 'notch', + dispName: 'Spacing', + type: 'float', + min: 0, + defVal: 30 +}]; + +mxShapeElectricalThreeLineBusElbow.prototype.paintVertexShape = function (c, x, y, w, h) { + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn / 2); + c.lineTo(w - wn / 2, h - hn / 2); + c.lineTo(w - wn / 2, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalThreeLineBusElbow.prototype.cst.SHAPE_THREE_LINE_BUS_ELBOW, mxShapeElectricalThreeLineBusElbow); +mxShapeElectricalThreeLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalThreeLineBusElbow.prototype.cst.SHAPE_THREE_LINE_BUS_ELBOW] = function (state) { + var handles = [Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + return handles; +}; + +function mxShapeElectricalFourLineBusElbow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeElectricalFourLineBusElbow, mxShape); +mxShapeElectricalFourLineBusElbow.prototype.cst = { + SHAPE_FOUR_LINE_BUS_ELBOW: 'mxgraph.electrical.transmission.fourLineBusElbow' +}; +mxShapeElectricalFourLineBusElbow.prototype.customProperties = [{ + name: 'notch', + dispName: 'Spacing', + type: 'float', + min: 0, + defVal: 75 +}]; + +mxShapeElectricalFourLineBusElbow.prototype.paintVertexShape = function (c, x, y, w, h) { + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn / 3); + c.lineTo(w - wn / 3, h - hn / 3); + c.lineTo(w - wn / 3, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 2 / 3); + c.lineTo(w - wn * 2 / 3, h - hn * 2 / 3); + c.lineTo(w - wn * 2 / 3, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalFourLineBusElbow.prototype.cst.SHAPE_FOUR_LINE_BUS_ELBOW, mxShapeElectricalFourLineBusElbow); +mxShapeElectricalFourLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalFourLineBusElbow.prototype.cst.SHAPE_FOUR_LINE_BUS_ELBOW] = function (state) { + var handles = [Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + return handles; +}; + +function mxShapeElectricalEightLineBusElbow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.notch = 0; +} + +; +mxUtils.extend(mxShapeElectricalEightLineBusElbow, mxShape); +mxShapeElectricalEightLineBusElbow.prototype.cst = { + SHAPE_EIGHT_LINE_BUS_ELBOW: 'mxgraph.electrical.transmission.eightLineBusElbow' +}; +mxShapeElectricalEightLineBusElbow.prototype.customProperties = [{ + name: 'notch', + dispName: 'Spacing', + type: 'float', + min: 0, + defVal: 180 +}]; + +mxShapeElectricalEightLineBusElbow.prototype.paintVertexShape = function (c, x, y, w, h) { + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn / 7); + c.lineTo(w - wn / 7, h - hn / 7); + c.lineTo(w - wn / 7, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 2 / 7); + c.lineTo(w - wn * 2 / 7, h - hn * 2 / 7); + c.lineTo(w - wn * 2 / 7, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 3 / 7); + c.lineTo(w - wn * 3 / 7, h - hn * 3 / 7); + c.lineTo(w - wn * 3 / 7, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 4 / 7); + c.lineTo(w - wn * 4 / 7, h - hn * 4 / 7); + c.lineTo(w - wn * 4 / 7, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 5 / 7); + c.lineTo(w - wn * 5 / 7, h - hn * 5 / 7); + c.lineTo(w - wn * 5 / 7, 0); + c.stroke(); + c.begin(); + c.moveTo(0, h - hn * 6 / 7); + c.lineTo(w - wn * 6 / 7, h - hn * 6 / 7); + c.lineTo(w - wn * 6 / 7, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalEightLineBusElbow.prototype.cst.SHAPE_EIGHT_LINE_BUS_ELBOW, mxShapeElectricalEightLineBusElbow); +mxShapeElectricalEightLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalEightLineBusElbow.prototype.cst.SHAPE_EIGHT_LINE_BUS_ELBOW] = function (state) { + var handles = [Graph.createHandle(state, ['notch'], function (bounds) { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + return handles; +}; + +function mxShapeElectricalLogicGate(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalLogicGate, mxShape); +mxShapeElectricalLogicGate.prototype.cst = { + SHAPE_LOGIC_GATE: 'mxgraph.electrical.logic_gates.logic_gate' +}; +mxShapeElectricalLogicGate.prototype.customProperties = [{ + name: 'operation', + dispName: 'Operation', + type: 'enum', + defVal: 'and', + enumList: [{ + val: 'and', + dispName: 'And' + }, { + val: 'or', + dispName: 'Or' + }, { + val: 'xor', + dispName: 'Xor' + }] +}, { + name: 'numInputs', + dispName: 'Inputs', + type: 'int', + min: 2, + defVal: 2 +}, { + name: 'negating', + dispName: 'Negating', + type: 'bool', + defVal: 0 +}]; + +mxShapeElectricalLogicGate.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var numInputs = parseInt(mxUtils.getValue(this.style, 'numInputs', '2')); + var spacing = h / numInputs; + var currH = spacing * 0.5; + c.begin(); + c.moveTo(w * 0.8, h * 0.5); + c.lineTo(w, h * 0.5); + var operation = mxUtils.getValue(this.style, 'operation', 'and'); + + for (var i = 0; i < numInputs; i++) { + c.moveTo(0, currH); + + if (operation == 'and') { + c.lineTo(w * 0.2, currH); + } else { + c.lineTo(w * 0.23, currH); + } + + currH = currH + spacing; + } + + c.stroke(); + + switch (operation) { + case 'xor': + c.begin(); + c.moveTo(w * 0.1, 0); + c.arcTo(w * 0.6, h, 0, 0, 1, w * 0.1, h); + c.stroke(); + + case 'or': + c.begin(); + c.moveTo(w * 0.4, 0); + c.arcTo(w * 0.45, h * 0.83, 0, 0, 1, w * 0.8, h * 0.5); + c.arcTo(w * 0.45, h * 0.83, 0, 0, 1, w * 0.4, h); + c.lineTo(w * 0.15, h); + c.arcTo(w * 0.6, h, 0, 0, 0, w * 0.15, 0); + c.close(); + c.fillAndStroke(); + break; + + default: + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(w * 0.5, 0); + c.arcTo(w * 0.3, h * 0.5, 0, 0, 1, w * 0.5, h); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + } + + ; + var negating = mxUtils.getValue(this.style, 'negating', '0'); + + if (negating == '1') { + var negSize = Math.min(w * 0.04, h * 0.07); + c.begin(); + c.ellipse(w * 0.8, h * 0.5 - negSize * 0.5, negSize, negSize); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalLogicGate.prototype.cst.SHAPE_LOGIC_GATE, mxShapeElectricalLogicGate); + +mxShapeElectricalLogicGate.prototype.getConstraints = function (style) { + var constr = [new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + var numInputs = parseInt(mxUtils.getValue(style, 'numInputs', '2')); + var spacing = 1 / numInputs; + var currH = spacing * 0.5; + + for (var i = 0; i < numInputs; i++) { + constr.push(new mxConnectionConstraint(new mxPoint(0, currH), false)); + currH = currH + spacing; + } + + return constr; +}; + +function mxShapeElectricalBuffer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalBuffer, mxShape); +mxShapeElectricalBuffer.prototype.cst = { + SHAPE_BUFFER2: 'mxgraph.electrical.logic_gates.buffer2' +}; +mxShapeElectricalBuffer.prototype.customProperties = [{ + name: 'negating', + dispName: 'Negating', + type: 'bool', + defVal: 0 +}]; + +mxShapeElectricalBuffer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.2, h * 0.5); + c.moveTo(w * 0.8, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(w * 0.8, h * 0.5); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + var negating = mxUtils.getValue(this.style, 'negating', '0'); + + if (negating == '1') { + var negSize = Math.min(w * 0.04, h * 0.07); + c.begin(); + c.ellipse(w * 0.8, h * 0.5 - negSize * 0.5, negSize, negSize); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalBuffer.prototype.cst.SHAPE_BUFFER2, mxShapeElectricalBuffer); +mxShapeElectricalBuffer.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; + +function mxShapeElectricalDualInLineIC(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalDualInLineIC, mxShape); +mxShapeElectricalDualInLineIC.prototype.cst = { + SHAPE_DUAL_INLINE_IC: 'mxgraph.electrical.logic_gates.dual_inline_ic' +}; +mxShapeElectricalDualInLineIC.prototype.customProperties = [{ + name: 'pinStyle', + dispName: 'Pin Style', + type: 'enum', + defVal: 'line', + enumList: [{ + val: 'line', + dispName: 'Line' + }, { + val: 'square', + dispName: 'Square' + }] +}, { + name: 'startPin', + dispName: 'Starting Pin', + type: 'enum', + defVal: 'n', + enumList: [{ + val: 'n', + dispName: 'N' + }, { + val: 'e', + dispName: 'E' + }, { + val: 's', + dispName: 'S' + }, { + val: 'w', + dispName: 'W' + }] +}, { + name: 'pinSpacing', + dispName: 'Pin Spacing', + type: 'float', + min: 1, + defVal: 20 +}, { + name: 'pinLabelType', + dispName: 'Pin Label Type', + type: 'enum', + defVal: 'gen', + enumList: [{ + val: 'gen', + dispName: 'Generated' + }, { + val: 'cust', + dispName: 'Custom' + }] +}, { + name: 'labelCount', + dispName: 'Number of Labels', + type: 'int', + defVal: 20, + dependentProps: ['labelNames'] +}, { + name: 'labelNames', + dispName: 'Label Names', + type: 'staticArr', + subType: 'string', + sizeProperty: 'labelCount', + subDefVal: 'a' +}]; + +mxShapeElectricalDualInLineIC.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var startPin = mxUtils.getValue(this.style, 'startPin', 'n'); + var pinLabelType = mxUtils.getValue(this.style, 'pinLabelType', 'gen'); + var labelNames = mxUtils.getValue(this.style, 'labelNames', '').toString().split(','); + c.begin(); + + if (startPin == 'n' || startPin == 's') { + c.rect(10, 0, w - 20, h); + } else { + c.rect(0, 10, w, h - 20); + } + + c.fillAndStroke(); + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinStyle = mxUtils.getValue(this.style, 'pinStyle', 'line'); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + + if (startPin == 'n' || startPin == 's') { + var pinsOne = parseInt(h / pinSpacing); + } else { + var pinsOne = parseInt(w / pinSpacing); + } + + if (pinStyle == 'line') { + c.setFontSize(fontSize * 0.8); + var pinCount = 1; + var currH = pinSpacing * 0.5; + c.begin(); + + if (startPin == 'n' || startPin == 's') { + while (pinCount * pinSpacing <= h) { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + + if (startPin == 'n') { + var currPinNum = pinCount; + } else { + var currPinNum = pinsOne + pinCount; + } + + if (pinLabelType == 'gen') { + c.text(20, currH, 0, 0, currPinNum.toString(), mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(20, currH, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'n') { + var pc2 = 2 * pinsOne - pinCount + 1; + } else { + var pc2 = pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(w - 20, currH, 0, 0, pc2.toString(), mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(w - 20, currH, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } else { + while (pinCount * pinSpacing <= w) { + c.moveTo(currH, 0); + c.lineTo(currH, 10); + c.moveTo(currH, h - 10); + c.lineTo(currH, h); + + if (startPin == 'e') { + var currPinNum = pinsOne - pinCount + 1; + } else { + var currPinNum = 2 * pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(currH, 20, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(currH, 20, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'e') { + var pc2 = pinsOne + pinCount; + } else { + var pc2 = pinCount; + } + + if (pinLabelType == 'gen') { + c.text(currH, h - 20, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(currH, h - 20, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + + c.stroke(); + } else { + c.setFontSize(fontSize * 0.5); + var pinCount = 1; + var currH = pinSpacing * 0.5; + + if (startPin == 'n' || startPin == 's') { + while (pinCount * pinSpacing <= h) { + c.begin(); + c.rect(0, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + c.begin(); + c.rect(w - 10, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + if (startPin == 'n') { + var currPinNum = pinCount; + } else { + var currPinNum = pinsOne + pinCount; + } + + if (pinLabelType == 'gen') { + c.text(5, currH + 1, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(5, currH + 1, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'n') { + var pc2 = 2 * pinsOne - pinCount + 1; + } else { + var pc2 = pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(w - 5, currH + 1, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(w - 5, currH + 1, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } else { + while (pinCount * pinSpacing <= w) { + c.begin(); + c.rect(currH - pinSpacing * 0.25, 0, pinSpacing * 0.5, 10); + c.fillAndStroke(); + c.begin(); + c.rect(currH - pinSpacing * 0.25, h - 10, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + if (startPin == 'e') { + var currPinNum = pinsOne - pinCount + 1; + } else { + var currPinNum = 2 * pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(currH, 5, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(currH, 5, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'e') { + var pc2 = pinsOne + pinCount; + } else { + var pc2 = pinCount; + } + + if (pinLabelType == 'gen') { + c.text(currH, h - 5, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(currH, h - 5, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + } + + c.setShadow(false); + c.begin(); + + switch (startPin) { + case 'e': + if (h > 40) { + c.moveTo(w, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 0, w, h * 0.5 + 10); + } + + break; + + case 's': + if (w > 40) { + c.moveTo(w * 0.5 - 10, h); + c.arcTo(12, 12, 0, 0, 1, w * 0.5 + 10, h); + } + + break; + + case 'w': + if (h > 40) { + c.moveTo(0, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, 0, h * 0.5 + 10); + } + + break; + + default: + if (w > 40) { + c.moveTo(w * 0.5 - 10, 0); + c.arcTo(12, 12, 0, 0, 0, w * 0.5 + 10, 0); + } + + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalDualInLineIC.prototype.cst.SHAPE_DUAL_INLINE_IC, mxShapeElectricalDualInLineIC); + +mxShapeElectricalDualInLineIC.prototype.getConstraints = function (style, w, h) { + var constr = []; + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var startPin = mxUtils.getValue(this.style, 'startPin', 'n'); + var pinCount = 1; + var currH = pinSpacing * 0.5; + var pinsOne = parseInt(h / pinSpacing); + + if (startPin == 'n' || startPin == 's') { + while (pinCount * pinSpacing <= h) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, currH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, currH)); + currH = currH + pinSpacing; + pinCount++; + } + } else { + while (pinCount * pinSpacing <= w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currH, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currH, 0)); + currH = currH + pinSpacing; + pinCount++; + } + } + + return constr; +}; + +function mxShapeElectricalQFPIC(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalQFPIC, mxShape); +mxShapeElectricalQFPIC.prototype.cst = { + SHAPE_QFP_IC: 'mxgraph.electrical.logic_gates.qfp_ic' +}; +mxShapeElectricalQFPIC.prototype.customProperties = [{ + name: 'pinStyle', + dispName: 'Pin Style', + type: 'enum', + defVal: 'line', + enumList: [{ + val: 'line', + dispName: 'Line' + }, { + val: 'square', + dispName: 'Square' + }] +}, { + name: 'startPin', + dispName: 'Starting Pin', + type: 'enum', + defVal: 'sw', + enumList: [{ + val: 'sw', + dispName: 'SW' + }, { + val: 'nw', + dispName: 'NW' + }, { + val: 'ne', + dispName: 'NE' + }, { + val: 'se', + dispName: 'SE' + }] +}, { + name: 'pinSpacing', + dispName: 'Pin Spacing', + type: 'float', + min: 1, + defVal: 20 +}, { + name: 'pinLabelType', + dispName: 'Pin Label Type', + type: 'enum', + defVal: 'gen', + enumList: [{ + val: 'gen', + dispName: 'Generated' + }, { + val: 'cust', + dispName: 'Custom' + }] +}, { + name: 'labelCount', + dispName: 'Number of Labels', + type: 'int', + defVal: 40, + dependentProps: ['labelNames'] +}, { + name: 'labelNames', + dispName: 'Label Names', + type: 'staticArr', + subType: 'string', + sizeProperty: 'labelCount', + subDefVal: 'a' +}]; + +mxShapeElectricalQFPIC.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(15, 10); + c.lineTo(w - 15, 10); + c.lineTo(w - 10, 15); + c.lineTo(w - 10, h - 15); + c.lineTo(w - 15, h - 10); + c.lineTo(15, h - 10); + c.lineTo(10, h - 15); + c.lineTo(10, 15); + c.close(); + c.fillAndStroke(); + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinStyle = mxUtils.getValue(this.style, 'pinStyle', 'line'); + var pinLabelType = mxUtils.getValue(this.style, 'pinLabelType', 'gen'); + var labelNames = mxUtils.getValue(this.style, 'labelNames', '').toString().split(','); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var startPin = mxUtils.getValue(this.style, 'startPin', 'sw'); + + if (pinStyle == 'line') { + c.setFontSize(fontSize * 0.8); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + c.begin(); + var pinsVOne = parseInt((h - pinSpacing - 40) / pinSpacing) + 1; + var pinsHOne = parseInt((w - pinSpacing - 40) / pinSpacing) + 1; + + while (currH <= h - pinSpacing * 0.5 - 20) { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + + switch (startPin) { + case 'nw': + var currPinNum = pinCount; + break; + + case 'ne': + var currPinNum = pinsHOne + pinCount; + break; + + case 'se': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + + default: + var currPinNum = pinsVOne + 2 * pinsHOne + pinCount; + } + + if (pinLabelType == 'gen') { + c.text(20, currH, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(20, currH, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + switch (startPin) { + case 'nw': + var pc2 = pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'ne': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'se': + var pc2 = pinsVOne - pinCount + 1; + break; + + default: + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(w - 20, currH, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(w - 20, currH, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) { + c.moveTo(currH, 0); + c.lineTo(currH, 10); + c.moveTo(currH, h - 10); + c.lineTo(currH, h); + + switch (startPin) { + case 'nw': + var currPinNum = pinsVOne + pinCount; + break; + + case 'ne': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + + case 'se': + var currPinNum = 2 * pinsVOne + pinsHOne + pinCount; + break; + + default: + var currPinNum = pinCount; + } + + if (pinLabelType == 'gen') { + c.text(currH, h - 20, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(currH, h - 20, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + switch (startPin) { + case 'nw': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'ne': + var pc2 = pinsHOne - pinCount + 1; + break; + + case 'se': + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + break; + + default: + var pc2 = 2 * pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(currH, 20, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(currH, 20, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + c.stroke(); + } else { + c.setFontSize(fontSize * 0.5); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + var pinsVOne = parseInt((h - pinSpacing - 40) / pinSpacing) + 1; + var pinsHOne = parseInt((w - pinSpacing - 40) / pinSpacing) + 1; + + while (currH <= h - pinSpacing * 0.5 - 20) { + c.begin(); + c.rect(0, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + c.begin(); + c.rect(w - 10, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + switch (startPin) { + case 'nw': + var currPinNum = pinCount; + break; + + case 'ne': + var currPinNum = pinsHOne + pinCount; + break; + + case 'se': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + + default: + var currPinNum = pinsVOne + 2 * pinsHOne + pinCount; + } + + if (pinLabelType == 'gen') { + c.text(5, currH + 1, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(5, currH + 1, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + switch (startPin) { + case 'nw': + var pc2 = pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'ne': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'se': + var pc2 = pinsVOne - pinCount + 1; + break; + + default: + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(w - 5, currH + 1, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(w - 5, currH + 1, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) { + c.begin(); + c.rect(currH - pinSpacing * 0.25, 0, pinSpacing * 0.5, 10); + c.fillAndStroke(); + c.begin(); + c.rect(currH - pinSpacing * 0.25, h - 10, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + switch (startPin) { + case 'nw': + var currPinNum = pinsVOne + pinCount; + break; + + case 'ne': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + + case 'se': + var currPinNum = 2 * pinsVOne + pinsHOne + pinCount; + break; + + default: + var currPinNum = pinCount; + } + + if (pinLabelType == 'gen') { + c.text(currH, h - 4, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (currPinNum - 1 < labelNames.length) { + c.text(currH, h - 4, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + switch (startPin) { + case 'nw': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + + case 'ne': + var pc2 = pinsHOne - pinCount + 1; + break; + + case 'se': + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + break; + + default: + var pc2 = 2 * pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') { + c.text(currH, 6, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else if (pc2 - 1 < labelNames.length) { + c.text(currH, 6, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + + c.setShadow(false); + + if (w > 40) { + c.setFillColor(mxUtils.getValue(this.style, 'strokeColor', '#000000')); + c.begin(); + + switch (startPin) { + case 'nw': + c.ellipse(15, 15, 10, 10); + break; + + case 'ne': + c.ellipse(w - 25, 15, 10, 10); + break; + + case 'se': + c.ellipse(w - 25, h - 25, 10, 10); + break; + + default: + c.ellipse(15, h - 25, 10, 10); + } + + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalQFPIC.prototype.cst.SHAPE_QFP_IC, mxShapeElectricalQFPIC); + +mxShapeElectricalQFPIC.prototype.getConstraints = function (style, w, h) { + var constr = []; + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + var pinsOne = parseInt(h / pinSpacing); + + while (currH <= h - pinSpacing * 0.5 - 20) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, currH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, currH)); + currH = currH + pinSpacing; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currH, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currH, 0)); + currH = currH + pinSpacing; + } + + return constr; +}; + +function mxShapeElectricalMux(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalMux, mxShape); +mxShapeElectricalMux.prototype.cst = { + SHAPE_MUX: 'mxgraph.electrical.abstract.mux2' +}; +mxShapeElectricalMux.prototype.customProperties = [{ + name: 'operation', + dispName: 'Operation', + type: 'enum', + defVal: 'mux', + enumList: [{ + val: 'mux', + dispName: 'Mux' + }, { + val: 'demux', + dispName: 'Demux' + }] +}, { + name: 'selectorPins', + dispName: 'Selector Pins', + type: 'int', + min: 1, + max: 8, + defVal: 1 +}]; + +mxShapeElectricalMux.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '1')); + var operation = mxUtils.getValue(this.style, 'operation', 'mux'); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + c.setFontSize(fontSize * 0.5); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var dir = mxUtils.getValue(this.style, 'direction', 'east'); + var txtRot = 0; + + switch (dir) { + case 'south': + txtRot = 270; + break; + + case 'west': + txtRot = 180; + break; + + case 'north': + txtRot = 90; + break; + } + + switch (operation) { + case 'demux': + c.begin(); + c.moveTo(w - 10, 0); + c.lineTo(10, h * 0.1); + c.lineTo(10, h * 0.9 - 10); + c.lineTo(w - 10, h - 10); + c.close(); + c.fillAndStroke(); + break; + + default: + c.begin(); + c.moveTo(10, 0); + c.lineTo(w - 10, h * 0.1); + c.lineTo(w - 10, h * 0.9 - 10); + c.lineTo(10, h - 10); + c.close(); + c.fillAndStroke(); + } + + ; + var numInputs = 1; + var numOutputs = 1; + + if (operation == 'mux') { + numInputs = Math.pow(2, selectorPins); + var spacing = (h - 16) / numInputs; + } else { + numOutputs = Math.pow(2, selectorPins); + var spacing = (h - 16) / numOutputs; + } + + var currH = 3 + spacing * 0.5; + c.begin(); + + if (numInputs == 1) { + c.moveTo(0, (h - 10) * 0.5); + c.lineTo(10, (h - 10) * 0.5); + } else { + for (var i = 0; i < numInputs; i++) { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.text(14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currH = currH + spacing; + } + } + + if (numOutputs == 1) { + c.moveTo(w - 10, (h - 10) * 0.5); + c.lineTo(w, (h - 10) * 0.5); + } else { + for (var i = 0; i < numOutputs; i++) { + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + c.text(w - 14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currH = currH + spacing; + } + } + + var spacing = (w - 20) / selectorPins; + var currW = 10 + spacing * 0.5; + + for (var i = 0; i < selectorPins; i++) { + if (operation == 'mux') { + c.moveTo(currW, h - 10 - (currW - 10) / (w - 20) * h * 0.1); + } else { + c.moveTo(currW, h - 10 - (w - currW - 10) / (w - 20) * h * 0.1); + } + + c.lineTo(currW, h); + c.text(currW + 5, h - 4, 0, 0, 'S' + (selectorPins - i - 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currW = currW + spacing; + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalMux.prototype.cst.SHAPE_MUX, mxShapeElectricalMux); + +mxShapeElectricalMux.prototype.getConstraints = function (style, w, h) { + var constr = []; + var pinRange = (h - 16) / h; + var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '1')); + var operation = mxUtils.getValue(this.style, 'operation', 'mux'); + var dir = mxUtils.getValue(this.style, 'direction', 'east'); + var numInputs = 1; + var numOutputs = 1; + + if (operation == 'mux') { + numInputs = Math.pow(2, selectorPins); + var spacing = pinRange / numInputs; + } else { + numOutputs = Math.pow(2, selectorPins); + var spacing = pinRange / numOutputs; + } + + var currH = spacing * 0.5; + + if (numInputs == 1) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5 * (h - 10) / h), false, 0, 0)); + } else { + for (var i = 0; i < numInputs; i++) { + constr.push(new mxConnectionConstraint(new mxPoint(0, currH), false, null, 0, 3)); + currH = currH + spacing; + } + } + + if (numOutputs == 1) { + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -5)); + } else { + for (var i = 0; i < numOutputs; i++) { + constr.push(new mxConnectionConstraint(new mxPoint(1, currH), false, null, 0, 3)); + currH = currH + spacing; + } + } + + var spacing = (w - 20) / (w * selectorPins); + var currW = spacing * 0.5; + + for (var i = 0; i < selectorPins; i++) { + constr.push(new mxConnectionConstraint(new mxPoint(currW, 1), false, null, 10, 0)); + currW = currW + spacing; + } + + return constr; +}; + +function mxShapeElectricalBatteryStack(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeElectricalBatteryStack, mxShape); +mxShapeElectricalBatteryStack.prototype.cst = { + SHAPE_BATTERY_STACK: 'mxgraph.electrical.miscellaneous.batteryStack' +}; + +mxShapeElectricalBatteryStack.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var bw = h * 0.3; + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + var bNum = Math.floor((w - 20) / bw); + var startX = (w - bNum * bw) * 0.5; + + if (bNum > 0) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(startX + bw * 0.2, h * 0.5); + c.moveTo(w - startX - bw * 0.2, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + var currX = startX; + c.setFillColor(strokeColor); + + for (var i = 0; i < bNum; i++) { + c.rect(currX + bw * 0.2, h * 0.25, bw * 0.2, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(currX + bw * 0.8, 0); + c.lineTo(currX + bw * 0.8, h); + c.stroke(); + + if (i > 0) { + c.setDashed('1'); + c.begin(); + c.moveTo(currX - bw * 0.2, h * 0.5); + c.lineTo(currX + bw * 0.2, h * 0.5); + c.stroke(); + c.setDashed(dashed); + } + + currX = currX + bw; + } + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalBatteryStack.prototype.cst.SHAPE_BATTERY_STACK, mxShapeElectricalBatteryStack); +mxShapeElectricalBatteryStack.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFloorplan.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFloorplan.js new file mode 100644 index 0000000000000..de217519c0142 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFloorplan.js @@ -0,0 +1,481 @@ +"use strict"; + +function mxFloorplanWall(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanWall, mxShape); +mxFloorplanWall.prototype.cst = { + WALL: 'mxgraph.floorplan.wall', + WALL_THICKNESS: "wallThickness" +}; +mxFloorplanWall.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanWall.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWall.prototype.background = function (c, x, y, w, h) { + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWall.prototype.cst.WALL_THICKNESS, '10')); + c.rect(0, h * 0.5 - wallTh * 0.5, w, wallTh); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWall.prototype.cst.WALL, mxFloorplanWall); + +function mxFloorplanWallCorner(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanWallCorner, mxShape); +mxFloorplanWallCorner.prototype.cst = { + WALL_CORNER: 'mxgraph.floorplan.wallCorner', + WALL_THICKNESS: "wallThickness" +}; +mxFloorplanWallCorner.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanWallCorner.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWallCorner.prototype.background = function (c, x, y, w, h) { + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWallCorner.prototype.cst.WALL_THICKNESS, '10')); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, wallTh); + c.lineTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWallCorner.prototype.cst.WALL_CORNER, mxFloorplanWallCorner); + +function mxFloorplanWallU(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanWallU, mxShape); +mxFloorplanWallU.prototype.cst = { + WALL_U: 'mxgraph.floorplan.wallU', + WALL_THICKNESS: "wallThickness" +}; +mxFloorplanWallU.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanWallU.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWallU.prototype.background = function (c, x, y, w, h) { + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWallU.prototype.cst.WALL_THICKNESS, '10')); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - wallTh, h); + c.lineTo(w - wallTh, wallTh); + c.lineTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWallU.prototype.cst.WALL_U, mxFloorplanWallU); + +function mxFloorplanRoom(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanRoom, mxShape); +mxFloorplanRoom.prototype.cst = { + ROOM: 'mxgraph.floorplan.room', + WALL_THICKNESS: "wallThickness" +}; +mxFloorplanRoom.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanRoom.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanRoom.prototype.background = function (c, x, y, w, h) { + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanRoom.prototype.cst.WALL_THICKNESS, '10')); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.moveTo(wallTh, wallTh); + c.lineTo(wallTh, h - wallTh); + c.lineTo(w - wallTh, h - wallTh); + c.lineTo(w - wallTh, wallTh); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanRoom.prototype.cst.ROOM, mxFloorplanRoom); + +function mxFloorplanWindow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanWindow, mxShape); +mxFloorplanWindow.prototype.cst = { + WINDOW: 'mxgraph.floorplan.window', + WALL_THICKNESS: "wallThickness" +}; +mxFloorplanWindow.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanWindow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWindow.prototype.background = function (c, x, y, w, h) { + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWindow.prototype.cst.WALL_THICKNESS, '10')); + c.rect(0, h * 0.5 - wallTh * 0.5, w, wallTh); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWindow.prototype.cst.WINDOW, mxFloorplanWindow); + +function mxFloorplanDimension(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanDimension, mxShape); +mxFloorplanDimension.prototype.cst = { + DIMENSION: 'mxgraph.floorplan.dimension' +}; +mxFloorplanDimension.prototype.customProperties = [{ + name: 'wallThickness', + dispName: 'Thickness', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxFloorplanDimension.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDimension.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDimension.prototype.cst.DIMENSION, mxFloorplanDimension); + +function mxFloorplanDimensionBottom(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanDimensionBottom, mxShape); +mxFloorplanDimensionBottom.prototype.cst = { + DIMENSION: 'mxgraph.floorplan.dimensionBottom' +}; + +mxFloorplanDimensionBottom.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDimensionBottom.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h - 20); + c.lineTo(w, h - 20); + c.moveTo(10, h - 15); + c.lineTo(0, h - 20); + c.lineTo(10, h - 25); + c.moveTo(w - 10, h - 15); + c.lineTo(w, h - 20); + c.lineTo(w - 10, h - 25); + c.moveTo(0, h - 15); + c.lineTo(0, 0); + c.moveTo(w, h - 15); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDimensionBottom.prototype.cst.DIMENSION, mxFloorplanDimensionBottom); + +function mxFloorplanStairs(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanStairs, mxShape); +mxFloorplanStairs.prototype.cst = { + STAIRS: 'mxgraph.floorplan.stairs' +}; + +mxFloorplanStairs.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var minW = Math.max(w, 50); + this.background(c, x, y, minW, h); +}; + +mxFloorplanStairs.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); + var step = 25; + c.setShadow(false); + c.begin(); + + for (var i = 25; i < w; i = i + step) { + c.moveTo(i, 0); + c.lineTo(i, h); + } + + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w - step, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - step, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanStairs.prototype.cst.STAIRS, mxFloorplanStairs); + +function mxFloorplanStairsRest(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanStairsRest, mxShape); +mxFloorplanStairsRest.prototype.cst = { + STAIRS: 'mxgraph.floorplan.stairsRest' +}; + +mxFloorplanStairsRest.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var minW = Math.max(w, 50, h); + var minH = Math.min(w, h); + this.background(c, x, y, minW, h); +}; + +mxFloorplanStairsRest.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); + var step = 25; + c.setShadow(false); + c.begin(); + + for (var i = 25; i < w - h * 0.5; i = i + step) { + c.moveTo(i, 0); + c.lineTo(i, h); + } + + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w, 0); + c.lineTo(w - h * 0.5, h * 0.5); + c.lineTo(w, h); + c.moveTo(w - h * 0.5, 0); + c.lineTo(w - h * 0.5, h); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanStairsRest.prototype.cst.STAIRS, mxFloorplanStairsRest); + +function mxFloorplanDoorLeft(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanDoorLeft, mxShape); +mxFloorplanDoorLeft.prototype.cst = { + DOOR_LEFT: 'mxgraph.floorplan.doorLeft' +}; + +mxFloorplanDoorLeft.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorLeft.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, 5); + c.fillAndStroke(); + c.begin(); + c.moveTo(w, 5); + c.arcTo(w, w, 0, 0, 1, 0, 5 + w); + c.lineTo(0, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorLeft.prototype.cst.DOOR_LEFT, mxFloorplanDoorLeft); + +function mxFloorplanDoorRight(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanDoorRight, mxShape); +mxFloorplanDoorRight.prototype.cst = { + DOOR_RIGHT: 'mxgraph.floorplan.doorRight' +}; + +mxFloorplanDoorRight.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorRight.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, 5); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, 5); + c.arcTo(w, w, 0, 0, 0, w, 5 + w); + c.lineTo(w, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorRight.prototype.cst.DOOR_RIGHT, mxFloorplanDoorRight); + +function mxFloorplanDoorDouble(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxFloorplanDoorDouble, mxShape); +mxFloorplanDoorDouble.prototype.cst = { + DOOR_DOUBLE: 'mxgraph.floorplan.doorDouble' +}; + +mxFloorplanDoorDouble.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorDouble.prototype.background = function (c, x, y, w, h) { + var halfW = w * 0.5; + c.rect(0, 0, w, 5); + c.fillAndStroke(); + c.begin(); + c.moveTo(halfW, 0); + c.lineTo(halfW, 5); + c.moveTo(halfW, 5); + c.arcTo(halfW, halfW, 0, 0, 1, 0, 5 + halfW); + c.lineTo(0, 5); + c.moveTo(halfW, 5); + c.arcTo(halfW, halfW, 0, 0, 0, w, 5 + halfW); + c.lineTo(w, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorDouble.prototype.cst.DOOR_DOUBLE, mxFloorplanDoorDouble); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFlowchart.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFlowchart.js new file mode 100644 index 0000000000000..44a73c7558c66 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxFlowchart.js @@ -0,0 +1,55 @@ +"use strict"; + +function mxShapeFlowchartDocument2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.size = 0.5; +} + +; +mxUtils.extend(mxShapeFlowchartDocument2, mxActor); +mxShapeFlowchartDocument2.prototype.cst = { + DOCUMENT2: 'mxgraph.flowchart.document2' +}; +mxShapeFlowchartDocument2.prototype.customProperties = [{ + name: 'size', + dispName: 'Wave Size', + type: 'float', + min: 0, + max: 1, + defVal: 0.25 +}]; + +mxShapeFlowchartDocument2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + var r = 5; + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2, mxShapeFlowchartDocument2); +mxShapeFlowchartDocument2.prototype.constraints = null; + +Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2] = function (state) { + var handles = [Graph.createHandle(state, ['size'], function (bounds) { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height); + }, function (bounds, pt) { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGCP2.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGCP2.js new file mode 100644 index 0000000000000..d06b9bc7edc11 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGCP2.js @@ -0,0 +1,577 @@ +"use strict"; + +function mxShapeGCP2DoubleRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGCP2DoubleRect, mxShape); +mxShapeGCP2DoubleRect.prototype.cst = { + SHAPE_DOUBLE_RECT: 'mxgraph.gcp2.doubleRect' +}; + +mxShapeGCP2DoubleRect.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx = 8; + var dy = 8; + w = w - dx; + h = h - dy; + c.translate(x, y); + c.begin(); + c.roundrect(dx, dy, w, h, 1, 1); + c.fillAndStroke(); + c.roundrect(0, 0, w, h, 1, 1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGCP2DoubleRect.prototype.cst.SHAPE_DOUBLE_RECT, mxShapeGCP2DoubleRect); +mxShapeGCP2DoubleRect.prototype.constraints = mxRectangleShape.prototype.constraints; + +function mxShapeGCP2HexIcon(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGCP2HexIcon, mxShape); +mxShapeGCP2HexIcon.prototype.cst = { + HEX_ICON: 'mxgraph.gcp2.hexIcon' +}; +mxShapeGCP2HexIcon.prototype.customProperties = [{ + name: 'instNum', + dispName: 'Number of instances', + type: 'int', + min: 0, + defVal: 0 +}, { + name: 'prType', + dispName: 'Instance Type', + defVal: 'standard', + type: 'enum', + enumList: [{ + val: 'standard', + dispName: 'Standard' + }, { + val: 'dynamic', + dispName: 'Dynamic' + }, { + val: 'multiple', + dispName: 'Multiple' + }, { + val: 'shared', + dispName: 'Shared' + }, { + val: 'replica', + dispName: 'Replica' + }, { + val: 'dynamic2', + dispName: 'Dynamic 2' + }, { + val: 'dynamic3', + dispName: 'Dynamic 3' + }, { + val: 'highmem', + dispName: 'High-Mem' + }, { + val: 'highcomp', + dispName: 'High-Comp' + }, { + val: 'backend', + dispName: 'Backend' + }, { + val: 'input', + dispName: 'Input' + }] +}, { + name: 'prIcon', + dispName: 'Instance Icon', + defVal: 'compute_engine', + type: 'enum', + enumList: [{ + val: 'compute_engine', + dispName: 'Compute Engine' + }, { + val: 'gpu', + dispName: 'GPU' + }, { + val: 'app_engine', + dispName: 'App Engine' + }, { + val: 'cloud_functions', + dispName: 'Cloud Functions' + }, { + val: 'container_engine', + dispName: 'Kubernetes Engine' + }, { + val: 'container_optimized_os', + dispName: 'Container-Optimized OS' + }, { + val: 'api_analytics', + dispName: 'API Analytics' + }, { + val: 'apigee_sense', + dispName: 'Apigee Sense' + }, { + val: 'api_monetization', + dispName: 'API Monetization' + }, { + val: 'cloud_endpoints', + dispName: 'Cloud Endpoints' + }, { + val: 'apigee_api_platform', + dispName: 'Apigee API Platform' + }, { + val: 'developer_portal', + dispName: 'Developer Portal' + }, { + val: 'cloud_iam', + dispName: 'Cloud IAM' + }, { + val: 'beyondcorp', + dispName: 'BeyondCorp' + }, { + val: 'cloud_iam', + dispName: 'Cloud Resource Manager' + }, { + val: 'data_loss_prevention_api', + dispName: 'Data Loss Prevention API' + }, { + val: 'cloud_security_scanner', + dispName: 'Cloud Security Scanner' + }, { + val: 'key_management_service', + dispName: 'Key Management Service' + }, { + val: 'identity_aware_proxy', + dispName: 'Identity-Aware Proxy' + }, { + val: 'security_key_enforcement', + dispName: 'Security Key Enforcement' + }, { + val: 'bigquery', + dispName: 'BigQuery' + }, { + val: 'cloud_datalab', + dispName: 'Cloud Datalab' + }, { + val: 'cloud_dataflow', + dispName: 'Cloud Dataflow' + }, { + val: 'cloud_pubsub', + dispName: 'Cloud Pub/Sub' + }, { + val: 'cloud_dataproc', + dispName: 'Cloud Dataproc' + }, { + val: 'genomics', + dispName: 'Genomics' + }, { + val: 'cloud_dataprep', + dispName: 'Cloud Dataprep' + }, { + val: 'data_studio', + dispName: 'Data Studio' + }, { + val: 'transfer_appliance', + dispName: 'Transfer Appliance' + }, { + val: 'cloud_machine_learning', + dispName: 'Cloud Machine Learning' + }, { + val: 'cloud_natural_language_api', + dispName: 'Cloud Natural Language API' + }, { + val: 'cloud_vision_api', + dispName: 'Vision API' + }, { + val: 'cloud_translation_api', + dispName: 'Translation API' + }, { + val: 'cloud_speech_api', + dispName: 'Speech API' + }, { + val: 'cloud_jobs_api', + dispName: 'Jobs API' + }, { + val: 'cloud_video_intelligence_api', + dispName: 'Cloud Video Intelligence API' + }, { + val: 'advanced_solutions_lab', + dispName: 'Advanced Solutions Lab' + }, { + val: 'cloud_iot_core', + dispName: 'Cloud IoT Core' + }, { + val: 'cloud_storage', + dispName: 'Cloud Storage' + }, { + val: 'cloud_sql', + dispName: 'Cloud SQL' + }, { + val: 'cloud_bigtable', + dispName: 'Cloud Bigtable' + }, { + val: 'cloud_spanner', + dispName: 'Cloud Spanner' + }, { + val: 'cloud_datastore', + dispName: 'Cloud Datastore' + }, { + val: 'persistent_disk', + dispName: 'Persistent Disk' + }, { + val: 'cloud_memorystore', + dispName: 'Cloud Memorystore' + }, { + val: 'cloud_filestore', + dispName: 'Cloud Filestore' + }, { + val: 'stackdriver', + dispName: 'Stackdriver' + }, { + val: 'cloud_deployment_manager', + dispName: 'Monitoring' + }, { + val: 'cloud_deployment_manager', + dispName: 'Deployment Manager' + }, { + val: 'logging', + dispName: 'Logging' + }, { + val: 'placeholder', + dispName: 'Cloud Console' + }, { + val: 'error_reporting', + dispName: 'Error Reporting' + }, { + val: 'placeholder', + dispName: 'Cloud Shell' + }, { + val: 'trace', + dispName: 'Trace' + }, { + val: 'placeholder', + dispName: 'Cloud Mobile App' + }, { + val: 'profiler', + dispName: 'Profiler' + }, { + val: 'placeholder', + dispName: 'Billing API' + }, { + val: 'cloud_apis', + dispName: 'Cloud APIs' + }, { + val: 'virtual_private_cloud', + dispName: 'Virtual Private Cloud' + }, { + val: 'dedicated_interconnect', + dispName: 'Dedicated Interconnect' + }, { + val: 'cloud_load_balancing', + dispName: 'Cloud Load Balancing' + }, { + val: 'cloud_dns', + dispName: 'Cloud DNS' + }, { + val: 'cloud_cdn', + dispName: 'Cloud CDN' + }, { + val: 'cloud_network', + dispName: 'Cloud Network' + }, { + val: 'cloud_external_ip_addresses', + dispName: 'Cloud External IP Addresses' + }, { + val: 'cloud_routes', + dispName: 'Cloud Routes' + }, { + val: 'cloud_firewall_rules', + dispName: 'Cloud Firewall Rules' + }, { + val: 'cloud_vpn', + dispName: 'Cloud VPN' + }, { + val: 'cloud_router', + dispName: 'Cloud Router' + }, { + val: 'cloud_armor', + dispName: 'Cloud Armor' + }, { + val: 'standard_network_tier', + dispName: 'Standard Network Tier' + }, { + val: 'premium_network_tier', + dispName: 'Premium Network Tier' + }, { + val: 'partner_interconnect', + dispName: 'Partner Interconnect' + }, { + val: 'placeholder', + dispName: 'Cloud SDK' + }, { + val: 'container_builder', + dispName: 'Cloud Build' + }, { + val: 'cloud_tools_for_powershell', + dispName: 'Cloud Tools for Visual Studio' + }, { + val: 'placeholder', + dispName: 'Cloud Source Repositories' + }, { + val: 'placeholder', + dispName: 'Maven App Engine Plugin' + }, { + val: 'placeholder', + dispName: 'Cloud Tools for Eclipse' + }, { + val: 'placeholder', + dispName: 'Cloud Tools for IntelliJ' + }, { + val: 'placeholder', + dispName: 'Cloud Test Lab' + }, { + val: 'cloud_tools_for_powershell', + dispName: 'Cloud Tools for PowerShell' + }, { + val: 'cloud_tools_for_powershell', + dispName: 'IDE Plugins' + }, { + val: 'container_registry', + dispName: 'Container Registry' + }, { + val: 'cloud_iot_edge', + dispName: 'Cloud IoT Edge' + }, { + val: 'cloud_firestore', + dispName: 'Cloud Firestore' + }, { + val: 'cloud_run', + dispName: 'Cloud Run' + }, { + val: 'gke_on_prem', + dispName: 'GKE-on-Prem' + }, { + val: 'cloud_data_catalog', + dispName: 'Cloud Data Catalog' + }, { + val: 'cloud_data_fusion', + dispName: 'Cloud Data Fusion' + }, { + val: 'ai_hub', + dispName: 'AI Hub' + }, { + val: 'automl_video_intelligence', + dispName: 'AutoML Video Intelligence' + }, { + val: 'automl_natural_language', + dispName: 'AutoML Natural Language' + }, { + val: 'automl_tables', + dispName: 'AutoML Tables' + }, { + val: 'automl_translation', + dispName: 'AutoML Translation' + }, { + val: 'automl_vision', + dispName: 'AutoML Vision' + }, { + val: 'recommendations_ai', + dispName: 'Recommendations AI' + }, { + val: 'cloud_inference_api', + dispName: 'Cloud Inference API' + }, { + val: 'cloud_service_mesh', + dispName: 'Cloud Service Mesh' + }, { + val: 'cloud_nat', + dispName: 'Cloud NAT' + }, { + val: 'traffic_director', + dispName: 'Traffic Director' + }, { + val: 'cloud_test_lab', + dispName: 'Cloud Test Lab' + }, { + val: 'cloud_code', + dispName: 'Cloud Code' + }, { + val: 'cloud_tasks', + dispName: 'Cloud Tasks' + }, { + val: 'placeholder', + dispName: 'Gradle App Engine Plugin' + }] +}]; + +mxShapeGCP2HexIcon.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var prIcon = mxUtils.getValue(this.state.style, 'prIcon', 'compute_engine'); + var prType = mxUtils.getValue(this.state.style, 'prType', ''); + var instNum = parseInt(mxUtils.getValue(this.state.style, 'instNum', 0)); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + var opacity = mxUtils.getValue(this.state.style, 'opacity', '100'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none'); + var strokeWidth = mxUtils.getValue(this.state.style, 'strokeWidth', 1); + var iconSize = Math.min(w, h); + + switch (prType) { + case 'dynamic': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.21, h * 0.12, w * 0.58, h * 0.76); + break; + + case 'multiple': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.21, h * 0.12, w * 0.58, h * 0.76); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_3'); + c.setAlpha(opacity * 0.7 / 100); + c.setStrokeColor('none'); + bgSt2.drawShape(c, this, w * 0.17, h * 0.13, w * 0.66, h * 0.74); + break; + + case 'shared': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.038; + c.setAlpha(opacity * 0.4 / 100); + c.setStrokeColor(fillColor); + c.setFillColor('none'); + bgSt1.drawShape(c, this, w * 0.02, h * 0, w * 0.96, h); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.7 / 100); + bgSt2.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt1.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + + case 'replica': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.038; + c.setAlpha(opacity * 0.4 / 100); + c.setStrokeColor(fillColor); + c.setFillColor('none'); + bgSt1.drawShape(c, this, w * 0.02, h * 0, w * 0.96, h); + c.setAlpha(opacity * 0.7 / 100); + bgSt1.drawShape(c, this, w * 0.075, h * 0.06, w * 0.85, h * 0.88); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt1.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + + case 'dynamic2': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.01; + c.setStrokeColor(fillColor); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt2.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + + case 'dynamic3': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.01; + c.setStrokeColor(fillColor); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt2.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + + case 'highmem': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_highmem'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, 0, h * 0.56, w, h * 0.28); + break; + + case 'highcomp': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_highcomp'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, 0, h * 0.16, w, h * 0.28); + break; + + case 'backend': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + c.setFillColor('#FCC64D'); + bgSt1.drawShape(c, this, w * 0.12, h * 0.11, w * 0.76, h * 0.78); + break; + + case 'input': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + c.setFillColor('#A5DA40'); + bgSt1.drawShape(c, this, w * 0.12, h * 0.11, w * 0.76, h * 0.78); + break; + + case 'standard': + default: + break; + } + + c.setAlpha(opacity / 100); + var stencil = mxStencilRegistry.getStencil('mxgraph.gcp2.' + prIcon); + + if (stencil != null) { + c.setFillColor(fillColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, w * 0.17, h * 0.16, w * 0.66, h * 0.68); + } + + if (instNum > 0) { + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(iconSize * 0.038); + c.ellipse(w * 0.2, 0, w * 0.18, h * 0.22); + c.fillAndStroke(); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor(fillColor); + c.ellipse(w * 0.2, 0, w * 0.18, h * 0.22); + c.stroke(); + c.setAlpha(opacity / 100); + c.setFontColor('#4E6B89'); + c.setFontStyle(1); + c.setFontSize(Math.min(w, h) * 0.1); + c.text(w * 0.29, h * 0.11 + 1, 0, 0, instNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeGCP2HexIcon.prototype.cst.HEX_ICON, mxShapeGCP2HexIcon); + +mxShapeGCP2HexIcon.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.825, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.175, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.16), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.84), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.66, 0.17), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.66, 0.83), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.34, 0.17), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.34, 0.83), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.33), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.67), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.33), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.67), false)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGmdl.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGmdl.js new file mode 100644 index 0000000000000..4253a883f80d5 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxGmdl.js @@ -0,0 +1,749 @@ +"use strict"; + +function mxShapeGmdlPlayer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlPlayer, mxShape); +mxShapeGmdlPlayer.prototype.cst = { + SHAPE_PLAYER: 'mxgraph.gmdl.player' +}; + +mxShapeGmdlPlayer.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeGmdlPlayer.prototype.foreground = function (c, x, y, w, h) { + if (h >= 4) { + c.setFillColor('#FFED00'); + c.begin(); + c.rect(0, 0, w * 0.8, 4); + c.fill(); + } + + if (h >= 14 && w >= 33) { + c.setFillColor('#717171'); + c.begin(); + c.rect(w - 33, h * 0.5 - 7, 4, 14); + c.fill(); + c.begin(); + c.rect(w - 25, h * 0.5 - 7, 4, 14); + c.fill(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlPlayer.prototype.cst.SHAPE_PLAYER, mxShapeGmdlPlayer); + +function mxShapeGmdlSwitch(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSwitch, mxShape); +mxShapeGmdlSwitch.prototype.cst = { + SHAPE_SWITCH: 'mxgraph.gmdl.switch', + STATE: 'switchState', + STATE_ON: 'on', + STATE_OFF: 'off' +}; +mxShapeGmdlSwitch.prototype.customProperties = [{ + name: 'switchState', + dispName: 'State', + type: 'enum', + defVal: 'on', + enumList: [{ + val: 'on', + dispName: 'On' + }, { + val: 'off', + dispName: 'Off' + }] +}]; + +mxShapeGmdlSwitch.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var state = mxUtils.getValue(this.style, mxShapeGmdlSwitch.prototype.cst.STATE, mxShapeGmdlSwitch.prototype.cst.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(true); + this.foreground(c, x, y, w, h, state); +}; + +mxShapeGmdlSwitch.prototype.background = function (c, x, y, w, h, state) { + c.begin(); + + if (state === mxShapeGmdlSwitch.prototype.cst.STATE_ON) { + c.save(); + c.setAlpha('0.5'); + c.moveTo(w * 0.135, h * 0.8); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.135, h * 0.2); + c.lineTo(w * 0.675, h * 0.2); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.675, h * 0.8); + c.close(); + c.fillAndStroke(); + c.restore(); + } else { + c.setFillColor('#BCBBBB'); + c.moveTo(w * 0.225, h * 0.8); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.225, h * 0.2); + c.lineTo(w * 0.865, h * 0.2); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.865, h * 0.8); + c.close(); + c.fillAndStroke(); + } +}; + +mxShapeGmdlSwitch.prototype.foreground = function (c, x, y, w, h, state) { + c.begin(); + + if (state === mxShapeGmdlSwitch.prototype.cst.STATE_ON) { + c.ellipse(w * 0.36, 0, w * 0.64, h); + } else { + c.setFillColor('#F1F1F1'); + c.ellipse(0, 0, w * 0.64, h); + } + + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSwitch.prototype.cst.SHAPE_SWITCH, mxShapeGmdlSwitch); + +function mxShapeGmdlMarginRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlMarginRect, mxShape); +mxShapeGmdlMarginRect.prototype.cst = { + SHAPE_MARGIN_RECT: 'mxgraph.gmdl.marginRect', + MARGIN: 'rectMargin', + MARGIN_TOP: 'rectMarginTop', + MARGIN_LEFT: 'rectMarginLeft', + MARGIN_BOTTOM: 'rectMarginBottom', + MARGIN_RIGHT: 'rectMarginRight' +}; +mxShapeGmdlMarginRect.prototype.customProperties = [{ + name: 'rectMargin', + dispName: 'Margin', + type: 'float', + min: 0, + defVal: 0 +}, { + name: 'rectMarginTop', + dispName: 'Margin Top', + type: 'float', + defVal: 0 +}, { + name: 'rectMarginLeft', + dispName: 'Margin Left', + type: 'float', + defVal: 0 +}, { + name: 'rectMarginBottom', + dispName: 'Margin Bottom', + type: 'float', + defVal: 0 +}, { + name: 'rectMarginRight', + dispName: 'Margin Right', + type: 'float', + defVal: 0 +}]; + +mxShapeGmdlMarginRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeGmdlMarginRect.prototype.background = function (c, x, y, w, h, state) { + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_RIGHT, '0')); + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 > 0 && h1 > 0) { + c.begin(); + c.rect(x1, y1, w1, h1); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlMarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeGmdlMarginRect); + +function mxShapeGmdlSliderNormal(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderNormal, mxShape); +mxShapeGmdlSliderNormal.prototype.cst = { + SHAPE_SLIDER_NORMAL: 'mxgraph.gmdl.sliderNormal', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderNormal.prototype.customProperties = [{ + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeGmdlSliderNormal.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderNormal.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderNormal.prototype.cst.HANDLE_SIZE, '10')); + c.ellipse(0, h * 0.5 - hSize * 0.5, hSize, hSize); + c.stroke(); + c.begin(); + c.moveTo(hSize, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderNormal.prototype.cst.SHAPE_SLIDER_NORMAL, mxShapeGmdlSliderNormal); + +function mxShapeGmdlSlider2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSlider2, mxShape); +mxShapeGmdlSlider2.prototype.cst = { + SHAPE_SLIDER: 'mxgraph.gmdl.slider2', + BAR_POS: 'barPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSlider2.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeGmdlSlider2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSlider2.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSlider2.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSlider2.prototype.cst.BAR_POS, '40')) / 100; + barPos = Math.max(0, Math.min(1, barPos)); + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSlider2.prototype.cst.SHAPE_SLIDER, mxShapeGmdlSlider2); +mxShapeGmdlSlider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSlider2.prototype.cst.SHAPE_SLIDER] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeGmdlSliderFocused(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderFocused, mxShape); +mxShapeGmdlSliderFocused.prototype.cst = { + SHAPE_SLIDER_FOCUSED: 'mxgraph.gmdl.sliderFocused', + BAR_POS: 'barPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderFocused.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeGmdlSliderFocused.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderFocused.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderFocused.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderFocused.prototype.cst.BAR_POS, '40')) / 100; + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#ffffff'); + barPos = Math.max(0, Math.min(1, barPos)); + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.ellipse(barPos * w - hSize * 0.167, h * 0.5 - hSize * 0.167, hSize * 0.33, hSize * 0.33); + c.fillAndStroke(); + c.setFillColor(strokeColor); + c.setAlpha(0.15); + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderFocused.prototype.cst.SHAPE_SLIDER_FOCUSED, mxShapeGmdlSliderFocused); +mxShapeGmdlSliderFocused.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderFocused.prototype.cst.SHAPE_SLIDER_FOCUSED] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeGmdlSliderDisabled(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderDisabled, mxShape); +mxShapeGmdlSliderDisabled.prototype.cst = { + SHAPE_SLIDER_DISABLED: 'mxgraph.gmdl.sliderDisabled', + HANDLE_POSITION: 'hPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderDisabled.prototype.customProperties = [{ + name: 'hPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: 40 +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: 10 +}]; + +mxShapeGmdlSliderDisabled.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDisabled.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled.prototype.cst.HANDLE_SIZE, '10')); + var hPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled.prototype.cst.HANDLE_POSITION, '50')) / 100; + hPos = Math.max(hPos, 0); + hPos = Math.min(hPos, 1); + c.ellipse(w * hPos - hSize * 0.5, (h - hSize) * 0.5, hSize, hSize); + c.fillAndStroke(); + var endL = w * hPos - 7; + var startR = w * hPos + 7; + + if (endL > 0) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(endL, h * 0.5); + c.stroke(); + } + + if (startR < w) { + c.begin(); + c.moveTo(startR, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDisabled.prototype.cst.SHAPE_SLIDER_DISABLED, mxShapeGmdlSliderDisabled); + +function mxShapeGmdlSliderDisabled2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderDisabled2, mxShape); +mxShapeGmdlSliderDisabled2.prototype.cst = { + SHAPE_SLIDER_DISABLED: 'mxgraph.gmdl.sliderDisabled2', + HANDLE_POSITION: 'hPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderDisabled2.prototype.customProperties = [{ + name: 'hPos', + dispName: 'Handle Position', + type: 'float', + min: 0, + defVal: '40' +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: '10' +}]; + +mxShapeGmdlSliderDisabled2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDisabled2.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled2.prototype.cst.HANDLE_SIZE, '10')); + var hPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled2.prototype.cst.HANDLE_POSITION, '50')) / 100; + hPos = Math.min(Math.max(hPos, 0), 1); + c.ellipse(w * hPos - hSize * 0.5, (h - hSize) * 0.5, hSize, hSize); + c.fillAndStroke(); + var endL = w * hPos - 7; + var startR = w * hPos + 7; + + if (endL > 0) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(endL, h * 0.5); + c.stroke(); + } + + if (startR < w) { + c.begin(); + c.moveTo(startR, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDisabled2.prototype.cst.SHAPE_SLIDER_DISABLED, mxShapeGmdlSliderDisabled2); +mxShapeGmdlSlider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDisabled2.prototype.cst.SHAPE_SLIDER_DISABLED] = function (state) { + var handles = [Graph.createHandle(state, ['hPos'], function (bounds) { + var hPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'hPos', 0.4)))); + return new mxPoint(bounds.x + hPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['hPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeGmdlSliderDiscrete(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderDiscrete, mxShape); +mxShapeGmdlSliderDiscrete.prototype.cst = { + SHAPE_DISCRETE: 'mxgraph.gmdl.sliderDiscrete', + BAR_POS: 'barPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderDiscrete.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'int', + min: 0, + defVal: '40' +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: '10' +}]; + +mxShapeGmdlSliderDiscrete.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDiscrete.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscrete.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscrete.prototype.cst.BAR_POS, '40')) / 100; + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12')); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + barPos = Math.max(0, Math.min(1, barPos)); + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(w, h * 0.5 + 22.5); + c.fillAndStroke(); + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(barPos * w, h * 0.5 + 22.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(barPos * w, h * 0.5 + 15.5); + c.lineTo(barPos * w - 10.5, h * 0.5 + 2.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w, h * 0.5 - 22.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w + 10.5, h * 0.5 + 2.5); + c.close(); + c.fillAndStroke(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var p = Math.round(barPos * 100); + c.text(barPos * w, h * 0.5 - 9, 0, 0, p.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDiscrete.prototype.cst.SHAPE_DISCRETE, mxShapeGmdlSliderDiscrete); +mxShapeGmdlSliderDiscrete.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDiscrete.prototype.cst.SHAPE_DISCRETE] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2 + 22.5); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + return handles; +}; + +function mxShapeGmdlSliderDiscreteDots(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeGmdlSliderDiscreteDots, mxShape); +mxShapeGmdlSliderDiscreteDots.prototype.cst = { + SHAPE_DISCRETE_DOTS: 'mxgraph.gmdl.sliderDiscreteDots', + BAR_POS: 'barPos', + HANDLE_SIZE: 'handleSize' +}; +mxShapeGmdlSliderDiscreteDots.prototype.customProperties = [{ + name: 'barPos', + dispName: 'Handle Position', + type: 'int', + min: 0, + defVal: '40' +}, { + name: 'handleSize', + dispName: 'Handle Size', + type: 'float', + min: 0, + defVal: '10' +}]; + +mxShapeGmdlSliderDiscreteDots.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDiscreteDots.prototype.background = function (c, x, y, w, h) { + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscreteDots.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscreteDots.prototype.cst.BAR_POS, '40')) / 100; + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12')); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + var bright = mxUtils.getValue(this.style, 'bright', '1'); + barPos = Math.max(0, Math.min(1, barPos)); + c.save(); + c.setStrokeColor('#bebebe'); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(w, h * 0.5 + 22.5); + c.fillAndStroke(); + c.restore(); + + if (barPos <= 0.1) { + c.setFillColor('#bebebe'); + } + + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(barPos * w, h * 0.5 + 22.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(barPos * w, h * 0.5 + 15.5); + c.lineTo(barPos * w - 10.5, h * 0.5 + 2.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w, h * 0.5 - 22.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w + 10.5, h * 0.5 + 2.5); + c.close(); + c.fill(); + + if (bright == '1') { + c.setFillColor('#000000'); + } else { + c.setFillColor('#ffffff'); + } + + c.ellipse(-1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.ellipse(w * 0.2 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.ellipse(w * 0.4 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.ellipse(w * 0.6 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.ellipse(w * 0.8 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.ellipse(w - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var p = Math.round(barPos * 100); + c.text(barPos * w, h * 0.5 - 9, 0, 0, p.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDiscreteDots.prototype.cst.SHAPE_DISCRETE_DOTS, mxShapeGmdlSliderDiscreteDots); +mxShapeGmdlSliderDiscreteDots.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDiscreteDots.prototype.cst.SHAPE_DISCRETE_DOTS] = function (state) { + var handles = [Graph.createHandle(state, ['barPos'], function (bounds) { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2 + 22.5); + }, function (bounds, pt) { + this.state.style['barPos'] = Math.round(0.05 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 0.05; + })]; + return handles; +}; + +function mxShapeGmdlProgressBar(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx1 = 0.8; +} + +; +mxUtils.extend(mxShapeGmdlProgressBar, mxShape); +mxShapeGmdlProgressBar.prototype.cst = { + PROGRESS_BAR: 'mxgraph.gmdl.progressBar' +}; +mxShapeGmdlProgressBar.prototype.customProperties = [{ + name: 'dx1', + dispName: 'Handle Position', + type: 'int', + min: 0, + defVal: 0.8 +}]; + +mxShapeGmdlProgressBar.prototype.paintVertexShape = function (c, x, y, w, h) { + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + c.translate(x, y); + c.save(); + c.setStrokeColor('#aaaaaa'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR, mxShapeGmdlProgressBar); +mxShapeGmdlProgressBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR] = function (state) { + var handles = [Graph.createHandle(state, ['dx1'], function (bounds) { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx1)))); + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + handles.push(handle2); + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxInfographic.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxInfographic.js new file mode 100644 index 0000000000000..b53b39b354b9d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxInfographic.js @@ -0,0 +1,2134 @@ +"use strict"; + +function mxShapeInfographicNumEntryVert(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicNumEntryVert, mxActor); +mxShapeInfographicNumEntryVert.prototype.cst = { + NUM_ENTRY_VERT: 'mxgraph.infographic.numberedEntryVert' +}; +mxShapeInfographicNumEntryVert.prototype.customProperties = [{ + name: 'dy', + dispName: 'Circle Size', + min: 0, + defVal: 25 +}]; + +mxShapeInfographicNumEntryVert.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var inset = 5; + var d = Math.min(dy, w - 2 * inset, h - inset); + c.ellipse(w * 0.5 - d * 0.5, 0, d, d); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, d * 0.5); + c.lineTo(w * 0.5 - d * 0.5 - inset, d * 0.5); + c.arcTo(d * 0.5 + inset, d * 0.5 + inset, 0, 0, 0, w * 0.5 + d * 0.5 + inset, d * 0.5); + c.lineTo(w, d * 0.5); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT, mxShapeInfographicNumEntryVert); + +Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.width, bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.width, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicNumEntryVert.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var inset = 5; + var d = Math.min(dy, w - 2 * inset, h - inset); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + return constr; +}; + +function mxShapeInfographicBendingArch(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicBendingArch, mxActor); +mxShapeInfographicBendingArch.prototype.cst = { + BENDING_ARCH: 'mxgraph.infographic.bendingArch' +}; +mxShapeInfographicBendingArch.prototype.customProperties = [{ + name: 'startAngle', + dispName: 'Start Angle', + min: 0, + max: 1, + defVal: 0.75 +}, { + name: 'endAngle', + dispName: 'End Angle', + min: 0, + max: 1, + defVal: 0.25 +}, { + name: 'arcWidth', + dispName: 'Arc Width', + min: 0, + max: 1, + defVal: 0.25 +}]; + +mxShapeInfographicBendingArch.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) { + bigArc = 1; + } + + var rx3 = rx2 - 5; + var ry3 = ry2 - 5; + c.ellipse(w * 0.5 - rx3, h * 0.5 - ry3, 2 * rx3, 2 * ry3); + c.fillAndStroke(); + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH, mxShapeInfographicBendingArch); +mxShapeInfographicBendingArch.prototype.constraints = null; + +Graph.handleFactory[mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arcWidth'], function (bounds) { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + handles.push(handle3); + return handles; +}; + +function mxShapeInfographicParallelogram(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 10; +} + +; +mxUtils.extend(mxShapeInfographicParallelogram, mxActor); +mxShapeInfographicParallelogram.prototype.cst = { + PARALLELOGRAM: 'mxgraph.infographic.parallelogram' +}; +mxShapeInfographicParallelogram.prototype.customProperties = [{ + name: 'dx', + dispName: 'Angle', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicParallelogram.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + c.begin(); + c.moveTo(0, h); + c.lineTo(2 * dx, 0); + c.lineTo(w, 0); + c.lineTo(w - 2 * dx, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM, mxShapeInfographicParallelogram); + +Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height / 2); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +mxShapeInfographicParallelogram.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var w2 = w - 2 * dx; + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2 * dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + return constr; +}; + +function mxShapeInfographicRibbonRolled(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 185; + this.dy = 15; +} + +; +mxUtils.extend(mxShapeInfographicRibbonRolled, mxActor); +mxShapeInfographicRibbonRolled.prototype.cst = { + RIBBON_ROLLED: 'mxgraph.infographic.ribbonRolled' +}; +mxShapeInfographicRibbonRolled.prototype.customProperties = [{ + name: 'dx', + dispName: 'Roll Length', + min: 0, + defVal: 185 +}, { + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicRibbonRolled.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.close(); + c.moveTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED, mxShapeInfographicRibbonRolled); + +Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicRibbonRolled.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var h2 = h - dy; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 0, -dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeInfographicRibbonDoubleFolded(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 25; + this.dy = 15; +} + +; +mxUtils.extend(mxShapeInfographicRibbonDoubleFolded, mxActor); +mxShapeInfographicRibbonDoubleFolded.prototype.cst = { + RIBBON_DOUBLE_FOLDED: 'mxgraph.infographic.ribbonDoubleFolded' +}; +mxShapeInfographicRibbonDoubleFolded.prototype.customProperties = [{ + name: 'dx', + dispName: 'Fold Length', + min: 0, + defVal: 25 +}, { + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicRibbonDoubleFolded.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, h - 2 * dy); + c.lineTo(0, h - dy); + c.close(); + c.moveTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED, mxShapeInfographicRibbonDoubleFolded); + +Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicRibbonDoubleFolded.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeInfographicRibbonFrontFolded(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicRibbonFrontFolded, mxActor); +mxShapeInfographicRibbonFrontFolded.prototype.cst = { + RIBBON_FRONT_FOLDED: 'mxgraph.infographic.ribbonFrontFolded' +}; +mxShapeInfographicRibbonFrontFolded.prototype.customProperties = [{ + name: 'dx', + dispName: 'Fold Length', + min: 0, + defVal: 25 +}, { + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}, { + name: 'notch', + dispName: 'Notch', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicRibbonFrontFolded.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, h - dy); + c.lineTo(0, h); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED, mxShapeInfographicRibbonFrontFolded); + +Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.width + bounds.x - pt.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeInfographicRibbonFrontFolded.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + return constr; +}; + +function mxShapeInfographicRibbonBackFolded(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicRibbonBackFolded, mxActor); +mxShapeInfographicRibbonBackFolded.prototype.cst = { + RIBBON_BACK_FOLDED: 'mxgraph.infographic.ribbonBackFolded' +}; +mxShapeInfographicRibbonBackFolded.prototype.customProperties = [{ + name: 'dx', + dispName: 'Fold Length', + min: 0, + defVal: 25 +}, { + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}, { + name: 'notch', + dispName: 'Notch', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicRibbonBackFolded.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED, mxShapeInfographicRibbonBackFolded); + +Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.width + bounds.x - pt.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeInfographicRibbonBackFolded.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + return constr; +}; + +function mxShapeInfographicBanner(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicBanner, mxActor); +mxShapeInfographicBanner.prototype.cst = { + BANNER: 'mxgraph.infographic.banner' +}; +mxShapeInfographicBanner.prototype.customProperties = [{ + name: 'dx', + dispName: 'Fold Length', + min: 0, + defVal: 25 +}, { + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}, { + name: 'notch', + dispName: 'Notch', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicBanner.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w / 2, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w / 2 - 2 * dy, dx); + notch = Math.min(dx, notch); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, dy); + c.lineTo(dx, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h); + c.lineTo(0, h); + c.lineTo(notch, (h - dy) * 0.5 + dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, dy); + c.lineTo(dx, h - dy); + c.lineTo(dx + 2 * dy, h); + c.lineTo(0, h); + c.lineTo(notch, (h - dy) * 0.5 + dy); + c.close(); + c.moveTo(w, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w, h); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.close(); + c.fill(); + c.setFillAlpha('0.4'); + c.begin(); + c.moveTo(dx, h - dy); + c.lineTo(dx + 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h); + c.close(); + c.moveTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER, mxShapeInfographicBanner); + +Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.width + bounds.x - pt.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeInfographicBanner.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w / 2, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w / 2 - 2 * dy, dx); + notch = Math.min(dx, notch); + var w2 = w - 2 * dx; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + return constr; +}; + +function mxShapeInfographicCircularCallout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicCircularCallout, mxActor); +mxShapeInfographicCircularCallout.prototype.cst = { + CIRCULAR_CALLOUT: 'mxgraph.infographic.circularCallout' +}; +mxShapeInfographicCircularCallout.prototype.customProperties = [{ + name: 'dy', + dispName: 'Ribbon Width', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicCircularCallout.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, w * 0.5 - dy)); + var ry = Math.max(0, Math.min(h * 0.5, h * 0.5 - dy)); + c.begin(); + c.moveTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.lineTo(w, 0); + c.close(); + c.moveTo(w * 0.5, dy); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5 - rx, h * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5, h * 0.5 + ry); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5 + rx, h * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5, h * 0.5 - ry); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT, mxShapeInfographicCircularCallout); + +Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicCircularCallout.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, w * 0.5 - dy)); + var ry = Math.max(0, Math.min(h * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + return constr; +}; + +function mxShapeInfographicShadedTriangle(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeInfographicShadedTriangle, mxActor); +mxShapeInfographicShadedTriangle.prototype.cst = { + SHADED_TRIANGLE: 'mxgraph.infographic.shadedTriangle' +}; + +mxShapeInfographicShadedTriangle.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.67); + c.close(); + c.fill(); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w, h); + c.lineTo(w * 0.5, h * 0.67); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE, mxShapeInfographicShadedTriangle); + +mxShapeInfographicShadedTriangle.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + return constr; +}; + +function mxShapeInfographicShadedPyramid(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeInfographicShadedPyramid, mxActor); +mxShapeInfographicShadedPyramid.prototype.cst = { + SHADED_PYRAMID: 'mxgraph.infographic.shadedPyramid' +}; + +mxShapeInfographicShadedPyramid.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var h1 = Math.max(h - w * 0.3, 0); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w, h1); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID, mxShapeInfographicShadedPyramid); + +mxShapeInfographicShadedPyramid.prototype.getConstraints = function (style, w, h) { + var constr = []; + var h1 = Math.max(h - w * 0.3, 0); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + return constr; +}; + +function mxShapeInfographicPyramidStep(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeInfographicPyramidStep, mxActor); +mxShapeInfographicPyramidStep.prototype.cst = { + PYRAMID_STEP: 'mxgraph.infographic.pyramidStep' +}; + +mxShapeInfographicPyramidStep.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var h1 = Math.max(w * 0.1, 0); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.lineTo(0, h); + c.close(); + c.fill(); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w, h1); + c.lineTo(w, h); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP, mxShapeInfographicPyramidStep); + +mxShapeInfographicPyramidStep.prototype.getConstraints = function (style, w, h) { + var constr = []; + var h1 = Math.max(w * 0.1, 0); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + return constr; +}; + +function mxShapeInfographicCylinder(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeInfographicCylinder, mxActor); +mxShapeInfographicCylinder.prototype.cst = { + CYLINDER: 'mxgraph.infographic.cylinder' +}; + +mxShapeInfographicCylinder.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = 20; + var rx = w * 0.5; + var ry = dy * 0.5; + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setGradient('#000000', '#ffffff', 0, 0, w, h, mxConstants.DIRECTION_EAST, 0.4, 0.4); + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.fill(); + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER, mxShapeInfographicCylinder); + +mxShapeInfographicCylinder.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = 20; + var rx = w * 0.5; + var ry = dy * 0.5; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.25)); + return constr; +}; + +function mxShapeInfographicCircularCallout2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicCircularCallout2, mxActor); +mxShapeInfographicCircularCallout2.prototype.cst = { + CIRCULAR_CALLOUT_2: 'mxgraph.infographic.circularCallout2' +}; + +mxShapeInfographicCircularCallout2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + c.setFillColor(strokeColor); + var rx = Math.max(0, Math.min(w * 0.5, h * 0.4, h * 0.5 - 7)); + c.begin(); + c.moveTo(w * 0.5 - 2, 2.15 * rx); + c.arcTo(rx * 0.23, rx * 0.23, 0, 0, 0, w * 0.5 - rx * 0.2, rx * 1.97); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 - rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5, 0); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx * 0.2, rx * 1.97); + c.arcTo(rx * 0.23, rx * 0.23, 0, 0, 0, w * 0.5 + 2, 2.15 * rx); + var rxMin = Math.max(rx * 0.1, 6); + + if (rx * 0.04 > 4) { + c.lineTo(w * 0.5 + 2, h - rx * 0.22); + c.arcTo(rx * 0.05, rx * 0.05, 0, 0, 0, w * 0.5 + rx * 0.04, h - rx * 0.19); + } else { + c.lineTo(w * 0.5 + 2, h - 2 * rxMin); + } + + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 + rxMin, h - rxMin); + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5, h); + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - rxMin, h - rxMin); + + if (rx * 0.04 > 4) { + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - rx * 0.04, h - rx * 0.19); + c.arcTo(rxMin * 0.5, rxMin * 0.5, 0, 0, 0, w * 0.5 - 2, h - rx * 0.22); + } else { + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - 2, h - 2 * rxMin); + } + + c.close(); + c.moveTo(w * 0.5, rx * 0.2); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 - rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 1.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 + rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 0.2); + c.close(); + c.moveTo(w * 0.5, h - rxMin * 1.75); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 - rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 0.25); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 + rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 1.75); + c.close(); + c.fill(); + c.setFillColor(fillColor); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.5, rx * 0.2); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 - rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 1.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 + rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 0.2); + c.close(); + c.moveTo(w * 0.5, h - rxMin * 1.75); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 - rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 0.25); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 + rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 1.75); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2, mxShapeInfographicCircularCallout2); + +mxShapeInfographicCircularCallout2.prototype.getConstraints = function (style, w, h) { + var constr = []; + var rx = Math.max(0, Math.min(w * 0.5, h * 0.4, h * 0.5 - 7)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + return constr; +}; + +function mxShapeInfographicBannerSingleFold(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.dx2 = 0.5; + this.notch = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicBannerSingleFold, mxActor); +mxShapeInfographicBannerSingleFold.prototype.cst = { + BANNER_SINGLE_FOLD: 'mxgraph.infographic.bannerSingleFold' +}; +mxShapeInfographicBannerSingleFold.prototype.customProperties = [{ + name: 'dx', + dispName: 'Fold Length', + type: 'float', + defVal: 32, + min: 0 +}, { + name: 'dy', + dispName: 'Banner Width', + type: 'float', + defVal: 17, + min: 0 +}, { + name: 'notch', + dispName: 'Notch', + type: 'float', + defVal: 15, + min: 0 +}]; + +mxShapeInfographicBannerSingleFold.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w - 2 * dy, dx); + var dx2 = Math.max(0, Math.min(w - dx - 2 * dy, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + notch = Math.min(dx, notch); + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx2, h - dy); + c.lineTo(0, (h - dy) * 0.5); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.05'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w, h); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.close(); + c.fill(); + c.setFillAlpha('0.4'); + c.begin(); + c.moveTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.close(); + c.fill(); + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx2, h - dy); + c.lineTo(0, (h - dy) * 0.5); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD, mxShapeInfographicBannerSingleFold); + +Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.width + bounds.x - pt.x))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + dx2, bounds.y + (bounds.height - dy) * 0.5); + }, function (bounds, pt) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - dx - 2 * dy, pt.x - bounds.x))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeInfographicBannerSingleFold.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w - 2 * dy, dx); + var dx2 = Math.max(0, Math.min(w - dx - 2 * dy, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + notch = Math.min(dx, notch); + var w2 = w - dx - dx2; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.25, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.75, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 2 * dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, h - dy)); + return constr; +}; + +function mxShapeInfographicShadedCube(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.isoAngle = 15; +} + +; +mxUtils.extend(mxShapeInfographicShadedCube, mxActor); +mxShapeInfographicShadedCube.prototype.cst = { + SHADED_CUBE: 'mxgraph.infographic.shadedCube' +}; +mxShapeInfographicShadedCube.prototype.customProperties = [{ + name: 'isoAngle', + dispName: 'Perspective', + type: 'float', + defVal: 15, + min: 0 +}]; + +mxShapeInfographicShadedCube.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - isoH); + c.lineTo(0, isoH); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(0, isoH); + c.lineTo(0, h - isoH); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE, mxShapeInfographicShadedCube); + +Graph.handleFactory[mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE] = function (state) { + var handles = [Graph.createHandle(state, ['isoAngle'], function (bounds) { + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(bounds.width * Math.tan(isoAngle), bounds.height * 0.5); + return new mxPoint(bounds.x, bounds.y + isoH); + }, function (bounds, pt) { + this.state.style['isoAngle'] = Math.round(100 * Math.max(0, Math.min(100, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicShadedCube.prototype.getConstraints = function (style, w, h) { + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, isoH * 0.5)); + return constr; +}; + +function mxShapeInfographicPartConcEllipse(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicPartConcEllipse, mxActor); +mxShapeInfographicPartConcEllipse.prototype.cst = { + PART_CONC_ELLIPSE: 'mxgraph.infographic.partConcEllipse' +}; +mxShapeInfographicPartConcEllipse.prototype.customProperties = [{ + name: 'startAngle', + dispName: 'Start Angle', + min: 0, + max: 1, + defVal: 0.25 +}, { + name: 'endAngle', + dispName: 'End Angle', + min: 0, + max: 1, + defVal: 0.1 +}, { + name: 'arcWidth', + dispName: 'Arc Width', + min: 0, + max: 1, + defVal: 0.5 +}]; + +mxShapeInfographicPartConcEllipse.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + var angDiff = endAngle - startAngle; + + if (angDiff < 0) { + angDiff = angDiff + Math.PI * 2; + } else if (angDiff == Math.PI) { + endAngle = endAngle + 0.00001; + } + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + var bigArc = 0; + + if (angDiff <= Math.PI) { + bigArc = 1; + } + + c.begin(); + c.moveTo(rx, 0); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.arcTo(rx, ry, 0, 0, 1, rx, h); + c.arcTo(rx, ry, 0, 0, 1, 0, ry); + c.arcTo(rx, ry, 0, 0, 1, rx, 0); + c.close(); + c.moveTo(rx, h * 0.5 - ry2); + c.arcTo(rx2, ry2, 0, 0, 0, w * 0.5 - rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 0, rx, h * 0.5 + ry2); + c.arcTo(rx2, ry2, 0, 0, 0, w * 0.5 + rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 0, rx, h * 0.5 - ry2); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 0, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 1, innerStartX, innerStartY); + c.close(); + c.fill(); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + var rx3 = rx2 + (rx - rx2) * 0.25; + var ry3 = ry2 + (ry - ry2) * 0.25; + c.setFillColor('#000000'); + c.begin(); + c.moveTo(rx, h * 0.5 - ry2); + c.arcTo(rx2, ry2, 0, 0, 1, w * 0.5 + rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 1, rx, h * 0.5 + ry2); + c.arcTo(rx2, ry2, 0, 0, 1, w * 0.5 - rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 1, rx, h * 0.5 - ry2); + c.close(); + c.moveTo(rx, h * 0.5 - ry3); + c.arcTo(rx3, ry3, 0, 0, 0, w * 0.5 - rx3, ry); + c.arcTo(rx3, ry3, 0, 0, 0, rx, h * 0.5 + ry3); + c.arcTo(rx3, ry3, 0, 0, 0, w * 0.5 + rx3, ry); + c.arcTo(rx3, ry3, 0, 0, 0, rx, h * 0.5 - ry3); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE, mxShapeInfographicPartConcEllipse); + +Graph.handleFactory[mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] = function (state) { + var handles = [Graph.createHandle(state, ['startAngle'], function (bounds) { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + })]; + var handle2 = Graph.createHandle(state, ['endAngle'], function (bounds) { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function (bounds, pt) { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['arcWidth'], function (bounds) { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeInfographicPartConcEllipse.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeInfographicBannerHalfFold(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dx2 = 0.5; + this.notch = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicBannerHalfFold, mxActor); +mxShapeInfographicBannerHalfFold.prototype.cst = { + BANNER_HALF_FOLD: 'mxgraph.infographic.bannerHalfFold' +}; +mxShapeInfographicBannerHalfFold.prototype.customProperties = [{ + name: 'dx', + dispName: 'Banner Width', + min: 0, + defVal: 40 +}, { + name: 'dx2', + dispName: 'Spike Size', + min: 0, + defVal: 20 +}, { + name: 'notch', + dispName: 'Notch Size', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicBannerHalfFold.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(h - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(dx2, dx); + c.lineTo(0, dx * 0.5); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w - dx, dx); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(0, dx); + c.close(); + c.fill(); + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(dx2, dx); + c.lineTo(0, dx * 0.5); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD, mxShapeInfographicBannerHalfFold); + +Graph.handleFactory[mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD] = function (state) { + var handles = [Graph.createHandle(state, ['dx'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dx); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(bounds.height - dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + return new mxPoint(bounds.x + bounds.width - dx * 0.5, bounds.y + bounds.height - notch); + }, function (bounds, pt) { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.height + bounds.y - pt.y))) / 100; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dx2'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + return new mxPoint(bounds.x + dx2, bounds.y + dx); + }, function (bounds, pt) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - dx, pt.x - bounds.x))) / 100; + }); + handles.push(handle3); + return handles; +}; + +mxShapeInfographicBannerHalfFold.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(h - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var w2 = w - dx - dx2; + var h2 = h - dx; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, h - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, dx)); + return constr; +}; + +function mxShapeInfographicCircularDial(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicCircularDial, mxActor); +mxShapeInfographicCircularDial.prototype.cst = { + CIRCULAR_DIAL: 'mxgraph.infographic.circularDial' +}; +mxShapeInfographicCircularDial.prototype.customProperties = [{ + name: 'dy', + dispName: 'Hole Size', + min: 0, + defVal: 15 +}]; + +mxShapeInfographicCircularDial.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy = Math.max(0, Math.min(h * 0.5 - 10, w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, h * 0.5 - 10)); + var rx2 = rx - dy; + c.begin(); + c.moveTo(w * 0.5 - rx, h); + c.lineTo(w * 0.5 - rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5, 0); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx, rx); + c.lineTo(w * 0.5 + rx, h); + c.close(); + c.moveTo(w * 0.5, dy); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5 - rx2, rx); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5, rx + rx2); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5 + rx2, rx); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5, dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w * 0.5 - rx, 2 * rx); + c.lineTo(w * 0.5 + rx, 2 * rx); + c.lineTo(w * 0.5 + rx, h); + c.lineTo(w * 0.5 - rx, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL, mxShapeInfographicCircularDial); + +Graph.handleFactory[mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL] = function (state) { + var handles = [Graph.createHandle(state, ['dy'], function (bounds) { + var dy = Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + dy); + }, function (bounds, pt) { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.y - bounds.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicCircularDial.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5 - 10, w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, h * 0.5 - 10)); + var rx2 = rx - dy; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.5, h)); + return constr; +}; + +function mxShapeInfographicRibbonSimple(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.notch1 = 0.5; + this.notch2 = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicRibbonSimple, mxActor); +mxShapeInfographicRibbonSimple.prototype.cst = { + RIBBON_SIMPLE: 'mxgraph.infographic.ribbonSimple' +}; +mxShapeInfographicRibbonSimple.prototype.customProperties = [{ + name: 'notch1', + dispName: 'Notch Size', + min: 0, + defVal: 20 +}, { + name: 'notch2', + dispName: 'Spike Size', + min: 0, + defVal: 20 +}]; + +mxShapeInfographicRibbonSimple.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var notch1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch1', this.notch2)))); + var notch2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch2', this.notch2)))); + c.begin(); + c.moveTo(0, h); + c.lineTo(notch1, h * 0.5); + c.lineTo(0, 0); + c.lineTo(w - notch2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - notch2, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE, mxShapeInfographicRibbonSimple); + +Graph.handleFactory[mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE] = function (state) { + var handles = [Graph.createHandle(state, ['notch1'], function (bounds) { + var notch1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch1', this.notch1)))); + return new mxPoint(bounds.x + notch1, bounds.y + bounds.height * 0.5); + }, function (bounds, pt) { + this.state.style['notch1'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + var handle2 = Graph.createHandle(state, ['notch2'], function (bounds) { + var notch2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch2', this.notch2)))); + return new mxPoint(bounds.x + bounds.width - notch2, bounds.y); + }, function (bounds, pt) { + this.state.style['notch2'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.width + bounds.x - pt.x))) / 100; + }); + handles.push(handle2); + return handles; +}; + +mxShapeInfographicRibbonSimple.prototype.getConstraints = function (style, w, h) { + var constr = []; + var notch1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch1', this.notch2)))); + var notch2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch2', this.notch2)))); + var w2 = w - notch2; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch1, h * 0.5)); + return constr; +}; + +function mxShapeInfographicBarCallout(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicBarCallout, mxActor); +mxShapeInfographicBarCallout.prototype.cst = { + BAR_CALLOUT: 'mxgraph.infographic.barCallout' +}; +mxShapeInfographicBarCallout.prototype.customProperties = [{ + name: 'dx', + dispName: 'Callout Position', + min: 0, + defVal: 100 +}, { + name: 'dy', + dispName: 'Callout Size', + min: 0, + defVal: 30 +}]; + +mxShapeInfographicBarCallout.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var x1 = Math.max(dx - dy * 0.35, 0); + var x2 = Math.min(dx + dy * 0.35, w); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(x2, h - dy); + c.lineTo(dx, h); + c.lineTo(x1, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT, mxShapeInfographicBarCallout); +mxShapeInfographicBarCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicBarCallout.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var x1 = Math.max(dx - dy * 0.35, 0); + var x2 = Math.min(dx + dy * 0.35, w); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + return constr; +}; + +function mxShapeInfographicFlag(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; +} + +; +mxUtils.extend(mxShapeInfographicFlag, mxActor); +mxShapeInfographicFlag.prototype.cst = { + FLAG: 'mxgraph.infographic.flag' +}; +mxShapeInfographicFlag.prototype.customProperties = [{ + name: 'dx', + dispName: 'Pole Width', + min: 0, + defVal: 30 +}, { + name: 'dy', + dispName: 'Spike Size', + min: 0, + defVal: 20 +}]; + +mxShapeInfographicFlag.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx * 0.5, h); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(0, 0); + c.lineTo(dx, 0); + c.lineTo(dx, h - dy); + c.lineTo(dx * 0.5, h); + c.lineTo(0, h - dy); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicFlag.prototype.cst.FLAG, mxShapeInfographicFlag); + +Graph.handleFactory[mxShapeInfographicFlag.prototype.cst.FLAG] = function (state) { + var handles = [Graph.createHandle(state, ['dx', 'dy'], function (bounds) { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function (bounds, pt) { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 100; + })]; + return handles; +}; + +mxShapeInfographicFlag.prototype.getConstraints = function (style, w, h) { + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, 0)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxLeanMap.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxLeanMap.js new file mode 100644 index 0000000000000..04da5de2e4405 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxLeanMap.js @@ -0,0 +1,1299 @@ +"use strict"; + +function mxLeanBoatShipment(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanBoatShipment, mxShape); + +mxLeanBoatShipment.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.15, h * 0.77); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.85, h * 0.77); + c.close(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + c.lineTo(w * 0.8, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.boat_shipment', mxLeanBoatShipment); +mxLeanBoatShipment.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), false), new mxConnectionConstraint(new mxPoint(0.5, 1), false), new mxConnectionConstraint(new mxPoint(0, 0.8), false), new mxConnectionConstraint(new mxPoint(1, 0.8), false), new mxConnectionConstraint(new mxPoint(0.2, 1), false), new mxConnectionConstraint(new mxPoint(0.8, 1), false), new mxConnectionConstraint(new mxPoint(0.26, 0.5), false), new mxConnectionConstraint(new mxPoint(0.74, 0.5), false)]; + +function mxLeanSafetyStock(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanSafetyStock, mxShape); + +mxLeanSafetyStock.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanSafetyStock.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanSafetyStock.prototype.foreground = function (c, w, h) { + c.begin(); + c.moveTo(0, h * 0.34); + c.lineTo(w, h * 0.34); + c.moveTo(0, h * 0.66); + c.lineTo(w, h * 0.66); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.buffer_or_safety_stock', mxLeanSafetyStock); +mxLeanSafetyStock.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanDataBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanDataBox, mxShape); + +mxLeanDataBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanDataBox.prototype.background = function (c, w, h) { + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.fillAndStroke(); +}; + +mxLeanDataBox.prototype.foreground = function (c, w, h) { + c.begin(); + c.moveTo(0, h * 0.2); + c.lineTo(w, h * 0.2); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(0, h * 0.6); + c.lineTo(w, h * 0.6); + c.moveTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.data_box', mxLeanDataBox); +mxLeanDataBox.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanCustomerSupplier(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanCustomerSupplier, mxShape); + +mxLeanCustomerSupplier.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); +}; + +mxLeanCustomerSupplier.prototype.background = function (c, w, h) { + c.begin(); + c.moveTo(0, h); + c.lineTo(0, h * 0.3); + c.lineTo(w * 0.33, h * 0.02); + c.lineTo(w * 0.33, h * 0.3); + c.lineTo(w * 0.67, h * 0.02); + c.lineTo(w * 0.67, h * 0.3); + c.lineTo(w, h * 0.02); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.outside_sources', mxLeanCustomerSupplier); +mxLeanCustomerSupplier.prototype.constraints = [new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.33, 0), true), new mxConnectionConstraint(new mxPoint(0.67, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.3), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanDedicatedProcess(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanDedicatedProcess, mxShape); + +mxLeanDedicatedProcess.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, fontSize); +}; + +mxLeanDedicatedProcess.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanDedicatedProcess.prototype.foreground = function (c, w, h, fontSize) { + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.manufacturing_process', mxLeanDedicatedProcess); +mxLeanDedicatedProcess.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanSharedProcess(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanSharedProcess, mxShape); + +mxLeanSharedProcess.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, fontSize); +}; + +mxLeanSharedProcess.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanSharedProcess.prototype.foreground = function (c, w, h, fontSize) { + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.stroke(); + var start = 0; + var i = 0; + var s = 10; + var offset = 0; + c.begin(); + var strokeWidth = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '2')); + c.setStrokeWidth(strokeWidth * 0.5); + + while (start < h + w) { + start = start + s; + + if (start > lineH) { + var startX = Math.max(0, start - h); + var startY = Math.min(start, h); + var endX = Math.min(start - lineH, w); + var endY = lineH; + var endY = Math.max(start - w, lineH); + + if (startX < w) { + c.moveTo(startX, startY); + c.lineTo(endX, endY); + } + } + } + + ; + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.manufacturing_process_shared', mxLeanSharedProcess); +mxLeanSharedProcess.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanWorkcell(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanWorkcell, mxShape); + +mxLeanWorkcell.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(w * 0.65, h); + c.lineTo(w * 0.65, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.lineTo(w * 0.35, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.work_cell', mxLeanWorkcell); +mxLeanWorkcell.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanInventoryBox(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanInventoryBox, mxShape); + +mxLeanInventoryBox.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4, h * 0.45); + c.lineTo(w * 0.6, h * 0.45); + c.moveTo(w * 0.5, h * 0.45); + c.lineTo(w * 0.5, h * 0.85); + c.moveTo(w * 0.4, h * 0.85); + c.lineTo(w * 0.6, h * 0.85); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.inventory_box', mxLeanInventoryBox); +mxLeanInventoryBox.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.375, 0.25), false), new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), new mxConnectionConstraint(new mxPoint(0.125, 0.75), false), new mxConnectionConstraint(new mxPoint(0.625, 0.25), false), new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), new mxConnectionConstraint(new mxPoint(0.875, 0.75), false), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanPushArrow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanPushArrow, mxShape); + +mxLeanPushArrow.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanPushArrow.prototype.background = function (c, w, h) { + c.begin(); + c.moveTo(0, h * 0.17); + c.lineTo(w * 0.75, h * 0.17); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.75, h * 0.83); + c.lineTo(0, h * 0.83); + c.close(); + c.fillAndStroke(); +}; + +mxLeanPushArrow.prototype.foreground = function (c, w, h, fontSize) { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.rect(0, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + c.rect(w * 0.24, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + c.rect(w * 0.48, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + c.begin(); + c.moveTo(w * 0.72, h * 0.17); + c.lineTo(w * 0.75, h * 0.17); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.75, h * 0.83); + c.lineTo(w * 0.72, h * 0.83); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.push_arrow', mxLeanPushArrow); +mxLeanPushArrow.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.17), false), new mxConnectionConstraint(new mxPoint(0.5, 0.17), false), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.17), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.83), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 0.83), false), new mxConnectionConstraint(new mxPoint(0.5, 0.83), false), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanSupermarket(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanSupermarket, mxShape); + +mxLeanSupermarket.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.moveTo(0, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(0, h * 0.67); + c.lineTo(w, h * 0.67); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.supermarket', mxLeanSupermarket); +mxLeanSupermarket.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanMaterialPull(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanMaterialPull, mxShape); + +mxLeanMaterialPull.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.732, h * 0.0736); + c.arcTo(w * 0.4827, h * 0.4959, 0, 1, 0, w * 0.9553, h * 0.6191); + c.stroke(); + c.begin(); + c.moveTo(w * 0.9071, h * 0.6191); + c.lineTo(w * 0.9794, h * 0.4951); + c.lineTo(w, h * 0.6438); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.physical_pull', mxLeanMaterialPull); +mxLeanMaterialPull.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0.98, 0.5), true), new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), new mxConnectionConstraint(new mxPoint(0.144, 0.845), false), new mxConnectionConstraint(new mxPoint(0.845, 0.845), false)]; + +function mxLeanFifoLane(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanFifoLane, mxShape); + +mxLeanFifoLane.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + this.background(c, w, h, fontSize); + c.setShadow(false); +}; + +mxLeanFifoLane.prototype.background = function (c, w, h, fontSize) { + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); + c.rect(w * 0.02, lineH + 4, w * 0.26, h - lineH - 8); + c.fillAndStroke(); + c.ellipse(w * 0.35, lineH + 4, w * 0.26, h - lineH - 8); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.69, lineH + 4); + c.lineTo(w * 0.98, lineH + 4); + c.lineTo(w * 0.835, h - 4); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.fifo_lane', mxLeanFifoLane); +mxLeanFifoLane.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanTruckShipment(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanTruckShipment, mxShape); + +mxLeanTruckShipment.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); +}; + +mxLeanTruckShipment.prototype.background = function (c, w, h) { + c.rect(0, 0, w * 0.6, h * 0.8); + c.fillAndStroke(); + c.rect(w * 0.6, h * 0.35, w * 0.4, h * 0.45); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.15, h * 0.8, w * 0.2, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.65, h * 0.8, w * 0.2, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.truck_shipment', mxLeanTruckShipment); +mxLeanTruckShipment.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(0.6, 0.35), false), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 0.8), false), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanProductionControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanProductionControl, mxShape); + +mxLeanProductionControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.schedule', mxLeanProductionControl); +mxLeanProductionControl.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanFifoSequence(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanFifoSequence, mxShape); + +mxLeanFifoSequence.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.moveTo(w * 0.05, h * 0.5); + c.lineTo(w * 0.15, h * 0.5); + c.moveTo(w * 0.75, h * 0.5); + c.lineTo(w * 0.88, h * 0.5); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.88, h * 0.39); + c.lineTo(w * 0.98, h * 0.5); + c.lineTo(w * 0.88, h * 0.61); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.fifo_sequence_flow', mxLeanFifoSequence); +mxLeanFifoSequence.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanProductionKanban(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanProductionKanban, mxShape); + +mxLeanProductionKanban.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 25); + c.lineTo(w, 25); + c.stroke(); + c.setDashed(false); + c.begin(); + c.moveTo(w - 75, 0); + c.lineTo(w - 30, 0); + c.lineTo(w - 15, 15); + c.lineTo(w - 15, 50); + c.lineTo(w - 75, 50); + c.close(); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.production_kanban', mxLeanProductionKanban); + +mxLeanProductionKanban.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + return constr; +}; + +function mxLeanWithdrawalKanban(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanWithdrawalKanban, mxShape); + +mxLeanWithdrawalKanban.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 25); + c.lineTo(w, 25); + c.stroke(); + c.setDashed(false); + c.begin(); + c.moveTo(w - 75, 0); + c.lineTo(w - 30, 0); + c.lineTo(w - 15, 15); + c.lineTo(w - 15, 50); + c.lineTo(w - 75, 50); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - 75, 45); + c.lineTo(w - 70, 50); + c.moveTo(w - 75, 35); + c.lineTo(w - 60, 50); + c.moveTo(w - 75, 25); + c.lineTo(w - 50, 50); + c.moveTo(w - 75, 15); + c.lineTo(w - 40, 50); + c.moveTo(w - 75, 5); + c.lineTo(w - 30, 50); + c.moveTo(w - 70, 0); + c.lineTo(w - 20, 50); + c.moveTo(w - 60, 0); + c.lineTo(w - 15, 45); + c.moveTo(w - 50, 0); + c.lineTo(w - 15, 35); + c.moveTo(w - 40, 0); + c.lineTo(w - 15, 25); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.withdrawal_kanban', mxLeanWithdrawalKanban); + +mxLeanWithdrawalKanban.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + return constr; +}; + +function mxLeanSignalKanban(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanSignalKanban, mxShape); + +mxLeanSignalKanban.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 15); + c.lineTo(w, 15); + c.stroke(); + c.setDashed(false); + c.begin(); + c.moveTo(w - 65, 0); + c.lineTo(w - 25, 0); + c.lineTo(w - 45, 45); + c.close(); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.signal_kanban', mxLeanSignalKanban); + +mxLeanSignalKanban.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 15)); + return constr; +}; + +function mxLeanSequencedPullBall(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanSequencedPullBall, mxShape); + +mxLeanSequencedPullBall.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.sequenced_pull_ball', mxLeanSequencedPullBall); +mxLeanSequencedPullBall.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), new mxConnectionConstraint(new mxPoint(0.856, 0.144), false), new mxConnectionConstraint(new mxPoint(0.856, 0.856), false), new mxConnectionConstraint(new mxPoint(0.144, 0.856), false), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +function mxLeanRailShipment(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanRailShipment, mxShape); + +mxLeanRailShipment.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(w * 0.1, 0, w * 0.35, h * 0.8); + c.fillAndStroke(); + c.rect(w * 0.55, 0, w * 0.35, h * 0.8); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.55, h * 0.7); + c.stroke(); + c.ellipse(w * 0.15, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.34, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.6, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.79, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.rail_shipment', mxLeanRailShipment); +mxLeanRailShipment.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0.1, 0.25), false), new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), new mxConnectionConstraint(new mxPoint(0.1, 0.75), false), new mxConnectionConstraint(new mxPoint(0.9, 0.25), false), new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), new mxConnectionConstraint(new mxPoint(0.9, 0.75), false), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanWarehouse(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanWarehouse, mxShape); + +mxLeanWarehouse.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(w * 0.15, h); + c.lineTo(w * 0.15, h * 0.55); + c.lineTo(w * 0.3, h * 0.55); + c.lineTo(w * 0.3, h); + c.stroke(); + c.ellipse(w * 0.27, h * 0.75, w * 0.02, w * 0.02); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.warehouse', mxLeanWarehouse); +mxLeanWarehouse.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanTimeline(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanTimeline, mxShape); + +mxLeanTimeline.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var shapeInfo = mxUtils.getValue(this.style, 'mainText', '20,Time 1,50,Time 2,30,Time 3,40,Time 4,30,Time 5,50,Time 6,20,Time 7').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12'); + var times = new Array(); + var totalTime = 0; + + for (var i = 0; i < shapeInfo.length; i = i + 2) { + var currTime = parseFloat(shapeInfo[i]); + times.push(currTime); + totalTime = totalTime + currTime; + } + + ; + var scaleX = w / totalTime; + var names = new Array(); + + for (var i = 1; i < shapeInfo.length; i = i + 2) { + names.push(shapeInfo[i]); + } + + ; + c.begin(); + var currX = 0; + c.moveTo(0, h); + + for (var i = 0; i < names.length; i++) { + var currTime = times[i] * scaleX; + currX = currX + currTime; + + if (i % 2 === 0) { + c.lineTo(currX, h); + c.lineTo(currX, fontSize * 1.5); + c.text(currX - currTime * 0.5, h - fontSize * 0.75, 0, 0, names[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } else { + c.lineTo(currX, fontSize * 1.5); + c.lineTo(currX, h); + c.text(currX - currTime * 0.5, fontSize * 0.75, 0, 0, names[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + } + + ; + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.timeline', mxLeanTimeline); + +function mxLeanCrossDock(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanCrossDock, mxShape); + +mxLeanCrossDock.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 1, w * 0.5, h * 0.5); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.65, h * 0.6); + c.lineTo(w * 0.9, h * 0.6); + c.stroke(); + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.25, 0, 0, 1, w * 0.5, h * 0.55); + c.arcTo(w * 0.15, h * 0.25, 0, 0, 0, w * 0.65, h * 0.7); + c.lineTo(w * 0.9, h * 0.7); + c.stroke(); + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 1, w * 0.5, h * 0.6); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 0, w * 0.65, h * 0.8); + c.lineTo(w * 0.9, h * 0.8); + c.stroke(); + c.moveTo(w * 0.1, h * 0.8); + c.lineTo(w * 0.35, h * 0.8); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 0, w * 0.5, h * 0.6); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 1, w * 0.65, h * 0.4); + c.lineTo(w * 0.9, h * 0.4); + c.stroke(); + c.moveTo(w * 0.1, h * 0.8); + c.lineTo(w * 0.35, h * 0.8); + c.arcTo(w * 0.15, h * 0.1, 0, 0, 0, w * 0.5, h * 0.75); + c.arcTo(w * 0.15, h * 0.1, 0, 0, 1, w * 0.65, h * 0.7); + c.lineTo(w * 0.9, h * 0.7); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.crossDock', mxLeanCrossDock); +mxLeanCrossDock.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanOrders(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanOrders, mxShape); + +mxLeanOrders.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, h * 0.56, w, h * 0.44); + c.fillAndStroke(); + var strokeWidth = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '2')); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.moveTo(w * 0.04, h * 0.5418); + c.lineTo(w * 0.94, h * 0.5418); + c.moveTo(w * 0.0522, h * 0.5088); + c.lineTo(w * 0.9522, h * 0.5088); + c.moveTo(w * 0.05, h * 0.4738); + c.lineTo(w * 0.95, h * 0.4738); + c.moveTo(w * 0.0456, h * 0.4427); + c.lineTo(w * 0.9456, h * 0.4427); + c.moveTo(w * 0.0422, h * 0.4135); + c.lineTo(w * 0.9422, h * 0.4135); + c.moveTo(w * 0.0533, h * 0.3804); + c.lineTo(w * 0.9533, h * 0.3804); + c.moveTo(w * 0.0556, h * 0.3454); + c.lineTo(w * 0.9556, h * 0.3454); + c.moveTo(w * 0.05, h * 0.3143); + c.lineTo(w * 0.95, h * 0.3143); + c.moveTo(w * 0.0489, h * 0.2832); + c.lineTo(w * 0.0489, h * 0.2832); + c.moveTo(w * 0.0544, h * 0.254); + c.lineTo(w * 0.9544, h * 0.254); + c.moveTo(w * 0.0489, h * 0.221); + c.lineTo(w * 0.9489, h * 0.221); + c.moveTo(w * 0.0556, h * 0.1918); + c.lineTo(w * 0.9556, h * 0.1918); + c.moveTo(w * 0.0522, h * 0.1587); + c.lineTo(w * 0.9522, h * 0.1587); + c.moveTo(w * 0.0544, h * 0.1276); + c.lineTo(w * 0.9544, h * 0.1276); + c.moveTo(w * 0.0544, h * 0.0965); + c.lineTo(w * 0.9544, h * 0.0965); + c.moveTo(w * 0.0556, h * 0.0654); + c.lineTo(w * 0.9556, h * 0.0654); + c.moveTo(w * 0.0533, h * 0.0304); + c.lineTo(w * 0.9533, h * 0.0304); + c.moveTo(w * 0.0556, 0); + c.lineTo(w * 0.9556, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.orders', mxLeanOrders); +mxLeanOrders.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.05, 0), true), new mxConnectionConstraint(new mxPoint(0.95, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.25, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.75, 0), true), new mxConnectionConstraint(new mxPoint(0.05, 0.25), false), new mxConnectionConstraint(new mxPoint(0.05, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(0.95, 0.25), false), new mxConnectionConstraint(new mxPoint(0.95, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanBatchedKanban(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanBatchedKanban, mxShape); + +mxLeanBatchedKanban.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(110, w); + c.translate(x, y); + c.begin(); + c.moveTo(4, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + c.begin(); + c.moveTo(w * 0.5 - 20, h * 0.5 - 35); + c.lineTo(w * 0.5 + 25, h * 0.5 - 35); + c.lineTo(w * 0.5 + 40, h * 0.5 - 20); + c.lineTo(w * 0.5 + 40, h * 0.5 + 15); + c.lineTo(w * 0.5 - 20, h * 0.5 + 15); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5 - 30, h * 0.5 - 25); + c.lineTo(w * 0.5 + 15, h * 0.5 - 25); + c.lineTo(w * 0.5 + 30, h * 0.5 - 10); + c.lineTo(w * 0.5 + 30, h * 0.5 + 25); + c.lineTo(w * 0.5 - 30, h * 0.5 + 25); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5 - 40, h * 0.5 - 15); + c.lineTo(w * 0.5 + 5, h * 0.5 - 15); + c.lineTo(w * 0.5 + 20, h * 0.5); + c.lineTo(w * 0.5 + 20, h * 0.5 + 35); + c.lineTo(w * 0.5 - 40, h * 0.5 + 35); + c.close(); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w - 10, h * 0.5 - 4); + c.lineTo(w, h * 0.5); + c.lineTo(w - 10, h * 0.5 + 4); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.batched_kanban', mxLeanBatchedKanban); +mxLeanBatchedKanban.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; + +function mxLeanControlCenter(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxLeanControlCenter, mxShape); + +mxLeanControlCenter.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(w * 0.15, 0, w * 0.7, h * 0.8); + c.fillAndStroke(); + c.rect(0, h * 0.8, w, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.control_center', mxLeanControlCenter); +mxLeanControlCenter.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.15, 0), true), new mxConnectionConstraint(new mxPoint(0.85, 0), true), new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.15, 0.25), false), new mxConnectionConstraint(new mxPoint(0.15, 0.5), false), new mxConnectionConstraint(new mxPoint(0, 0.75), true), new mxConnectionConstraint(new mxPoint(0.85, 0.25), false), new mxConnectionConstraint(new mxPoint(0.85, 0.5), false), new mxConnectionConstraint(new mxPoint(1, 0.75), true), new mxConnectionConstraint(new mxPoint(0.25, 1), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + +function mxLeanElectronicInfoShape() { + mxArrow.call(this); +} + +; +mxUtils.extend(mxLeanElectronicInfoShape, mxArrow); + +mxLeanElectronicInfoShape.prototype.paintEdgeShape = function (c, pts) { + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + var midX = p0.x + dx * 0.5; + var midY = p0.y + dy * 0.5; + var p1x = midX - nx * dist * 0.1 - ny / 3 * dist * 0.1; + var p1y = midY - ny * dist * 0.1 + nx / 3 * dist * 0.1; + var p4x = midX + nx * dist * 0.1 + ny / 3 * dist * 0.1; + var p4y = midY + ny * dist * 0.1 - nx / 3 * dist * 0.1; + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(p4x, p4y); + c.lineTo(p1x, p1y); + c.lineTo(pe.x, pe.y); + c.stroke(); + var dx = pe.x - p1x; + var dy = pe.y - p1y; + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000')); + c.begin(); + c.moveTo(pe.x - nx * 10 - ny * 5, pe.y - ny * 10 + nx * 5); + c.lineTo(pe.x, pe.y); + c.lineTo(pe.x - nx * 10 + ny * 5, pe.y - ny * 10 - nx * 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.electronic_info_flow_edge', mxLeanElectronicInfoShape); + +function mxLeanManualInfoShape() { + mxArrow.call(this); +} + +; +mxUtils.extend(mxLeanManualInfoShape, mxArrow); + +mxLeanManualInfoShape.prototype.paintEdgeShape = function (c, pts) { + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(pe.x, pe.y); + c.stroke(); + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000')); + c.begin(); + c.moveTo(pe.x - nx * 10 - ny * 5, pe.y - ny * 10 + nx * 5); + c.lineTo(pe.x, pe.y); + c.lineTo(pe.x - nx * 10 + ny * 5, pe.y - ny * 10 - nx * 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.manual_info_flow_edge', mxLeanManualInfoShape); + +function mxShapeLeanTimeline(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeLeanTimeline, mxShape); +mxShapeLeanTimeline.prototype.cst = { + SHAPE_TIMELINE: 'mxgraph.lean_mapping.timeline2' +}; + +mxShapeLeanTimeline.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var dy1 = mxUtils.getValue(this.style, 'dy1', '0'); + var dx2 = mxUtils.getValue(this.style, 'dx2', '0'); + var dy2 = mxUtils.getValue(this.style, 'dy2', '0'); + var dx3 = mxUtils.getValue(this.style, 'dx3', '0'); + var dy3 = mxUtils.getValue(this.style, 'dy3', '0'); + var dx4 = mxUtils.getValue(this.style, 'dx4', '0'); + var dy4 = mxUtils.getValue(this.style, 'dy4', '0'); + var dx5 = mxUtils.getValue(this.style, 'dx5', '0'); + var dy5 = mxUtils.getValue(this.style, 'dy5', '0'); + var dy6 = mxUtils.getValue(this.style, 'dy6', '0'); + var lastUp = true; + c.begin(); + + if (dy1 <= 0.5) { + c.moveTo(0, 0); + lastUp = true; + } else { + c.moveTo(0, h); + lastUp = false; + } + + if (dy2 <= 0.5 && lastUp) { + c.lineTo(dx2, 0); + lastUp = true; + } else if (dy2 > 0.5 && !lastUp) { + c.lineTo(dx2, h); + lastUp = false; + } else if (dy2 <= 0.5 && !lastUp) { + c.lineTo(dx2, h); + c.lineTo(dx2, 0); + lastUp = true; + } else { + c.lineTo(dx2, 0); + c.lineTo(dx2, h); + lastUp = false; + } + + if (dy3 <= 0.5 && lastUp) { + c.lineTo(dx3, 0); + lastUp = true; + } else if (dy3 > 0.5 && !lastUp) { + c.lineTo(dx3, h); + lastUp = false; + } else if (dy3 <= 0.5 && !lastUp) { + c.lineTo(dx3, h); + c.lineTo(dx3, 0); + lastUp = true; + } else { + c.lineTo(dx3, 0); + c.lineTo(dx3, h); + lastUp = false; + } + + if (dy4 <= 0.5 && lastUp) { + c.lineTo(dx4, 0); + lastUp = true; + } else if (dy4 > 0.5 && !lastUp) { + c.lineTo(dx4, h); + lastUp = false; + } else if (dy4 <= 0.5 && !lastUp) { + c.lineTo(dx4, h); + c.lineTo(dx4, 0); + lastUp = true; + } else { + c.lineTo(dx4, 0); + c.lineTo(dx4, h); + lastUp = false; + } + + if (dy5 <= 0.5 && lastUp) { + c.lineTo(dx5, 0); + lastUp = true; + } else if (dy5 > 0.5 && !lastUp) { + c.lineTo(dx5, h); + lastUp = false; + } else if (dy5 <= 0.5 && !lastUp) { + c.lineTo(dx5, h); + c.lineTo(dx5, 0); + lastUp = true; + } else { + c.lineTo(dx5, 0); + c.lineTo(dx5, h); + lastUp = false; + } + + if (dy6 <= 0.5 && lastUp) { + c.lineTo(w, 0); + lastUp = true; + } else if (dy6 > 0.5 && !lastUp) { + c.lineTo(w, h); + lastUp = false; + } else if (dy6 <= 0.5 && !lastUp) { + c.lineTo(w, h); + c.lineTo(w, 0); + lastUp = true; + } else { + c.lineTo(w, 0); + c.lineTo(w, h); + lastUp = false; + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeLeanTimeline.prototype.cst.SHAPE_TIMELINE, mxShapeLeanTimeline); + +Graph.handleFactory[mxShapeLeanTimeline.prototype.cst.SHAPE_TIMELINE] = function (state) { + var handles = [Graph.createHandle(state, ['dy1'], function (bounds) { + var dy1 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy1', 0)))); + return new mxPoint(bounds.x, bounds.y + dy1 * bounds.height); + }, function (bounds, pt) { + this.state.style['dy1'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + var handle2 = Graph.createHandle(state, ['dx2', 'dy2'], function (bounds) { + var dx2 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)))); + var dy2 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy2', 0)))); + return new mxPoint(bounds.x + dx2, bounds.y + dy2 * bounds.height); + }, function (bounds, pt) { + this.state.style['dx2'] = Math.round(1000 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), pt.x - bounds.x))) / 1000; + this.state.style['dy2'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + handles.push(handle2); + var handle3 = Graph.createHandle(state, ['dx3', 'dy3'], function (bounds) { + var dx3 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)))); + var dy3 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy3', 0)))); + return new mxPoint(bounds.x + dx3, bounds.y + dy3 * bounds.height); + }, function (bounds, pt) { + this.state.style['dx3'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), pt.x - bounds.x))) / 1000; + this.state.style['dy3'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + handles.push(handle3); + var handle4 = Graph.createHandle(state, ['dx4', 'dy4'], function (bounds) { + var dx4 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)))); + var dy4 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy4', 0)))); + return new mxPoint(bounds.x + dx4, bounds.y + dy4 * bounds.height); + }, function (bounds, pt) { + this.state.style['dx4'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)), pt.x - bounds.x))) / 1000; + this.state.style['dy4'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + handles.push(handle4); + var handle5 = Graph.createHandle(state, ['dx5', 'dy5'], function (bounds) { + var dx5 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)))); + var dy5 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy5', 0)))); + return new mxPoint(bounds.x + dx5, bounds.y + dy5 * bounds.height); + }, function (bounds, pt) { + this.state.style['dx5'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), Math.min(bounds.width, pt.x - bounds.x))) / 1000; + this.state.style['dy5'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + handles.push(handle5); + var handle6 = Graph.createHandle(state, ['dy6'], function (bounds) { + var dy6 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy6', 0)))); + return new mxPoint(bounds.x + bounds.width, bounds.y + dy6 * bounds.height); + }, function (bounds, pt) { + this.state.style['dy6'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + handles.push(handle6); + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxNetworks.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxNetworks.js new file mode 100644 index 0000000000000..0375dc830215b --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxNetworks.js @@ -0,0 +1,87 @@ +"use strict"; + +function mxShapeNetworksBus(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeNetworksBus, mxShape); +mxShapeNetworksBus.prototype.cst = { + SHAPE_BUS: 'mxgraph.networks.bus' +}; + +mxShapeNetworksBus.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeNetworksBus.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeNetworksBus.prototype.foreground = function (c, x, y, w, h) { + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeNetworksBus.prototype.cst.SHAPE_BUS, mxShapeNetworksBus); + +function mxShapeNetworksCommLinkEdge() { + mxArrow.call(this); +} + +; +mxUtils.extend(mxShapeNetworksCommLinkEdge, mxArrow); + +mxShapeNetworksCommLinkEdge.prototype.paintEdgeShape = function (c, pts) { + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + var midX = p0.x + dx * 0.5; + var midY = p0.y + dy * 0.5; + var p1x = midX + nx * dist / 3 * 0.1 - ny / 3 * dist * 0.1; + var p1y = midY + ny * dist / 3 * 0.1 + nx / 3 * dist * 0.1; + var p2x = midX + nx * dist * 0.1 + ny * dist * 0.1; + var p2y = midY + ny * dist * 0.1 - nx * dist * 0.1; + var p3x = midX - nx * dist / 3 * 0.1 + ny / 3 * dist * 0.1; + var p3y = midY - ny * dist / 3 * 0.1 - nx / 3 * dist * 0.1; + var p4x = midX - nx * dist * 0.1 - ny * dist * 0.1; + var p4y = midY - ny * dist * 0.1 + nx * dist * 0.1; + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(p2x, p2y); + c.lineTo(p1x, p1y); + c.lineTo(pe.x, pe.y); + c.lineTo(p4x, p4y); + c.lineTo(p3x, p3y); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.networks.comm_link_edge', mxShapeNetworksCommLinkEdge); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/mxSysML.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxSysML.js new file mode 100644 index 0000000000000..bf389cfda72b9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/mxSysML.js @@ -0,0 +1,2163 @@ +"use strict"; + +function mxShapeSysMLComposite() { + mxCylinder.call(this); +} + +; +mxUtils.extend(mxShapeSysMLComposite, mxShape); + +mxShapeSysMLComposite.prototype.isHtmlAllowed = function () { + return false; +}; + +mxShapeSysMLComposite.prototype.paintForeground = function (c, x, y, w, h) { + if (this.style != null) { + var shape = mxCellRenderer.defaultShapes[this.style['symbol0']]; + c.save(); + var tmp = new shape(); + tmp.style = this.style; + shape.prototype.paintVertexShape.call(tmp, c, x, y, w, h); + c.restore(); + c.setDashed(false); + var counter = 1; + + do { + shape = mxCellRenderer.defaultShapes[this.style['symbol' + counter]]; + + if (shape != null) { + var align = this.style['symbol' + counter + 'Align']; + var valign = this.style['symbol' + counter + 'VerticalAlign']; + var width = this.style['symbol' + counter + 'Width']; + var height = this.style['symbol' + counter + 'Height']; + var spacing = this.style['symbol' + counter + 'Spacing'] || 0; + var vspacing = this.style['symbol' + counter + 'VSpacing'] || 0; + var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; + var direction = this.style['symbol' + counter + 'Direction']; + + if (arcspacing != null) { + spacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + vspacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + } + + var x2 = x; + var y2 = y; + + if (align == mxConstants.ALIGN_CENTER) { + x2 += (w - width) / 2; + } else if (align == mxConstants.ALIGN_RIGHT) { + x2 += w - width - spacing; + } else { + x2 += spacing; + } + + if (valign == mxConstants.ALIGN_MIDDLE) { + y2 += (h - height) / 2; + } else if (valign == mxConstants.ALIGN_BOTTOM) { + y2 += h - height - vspacing; + } else { + y2 += vspacing; + } + + c.save(); + var tmp = new shape(); + tmp.style = mxUtils.clone(this.style); + tmp.direction = direction; + tmp.updateTransform(c, x2, y2, width, height); + shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); + c.restore(); + } + + counter++; + } while (shape != null); + } +}; + +mxCellRenderer.registerShape('mxgraph.sysml.composite', mxShapeSysMLComposite); + +function mxShapeSysMLPackage(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPackage, mxShape); +mxShapeSysMLPackage.prototype.cst = { + PACKAGE: 'mxgraph.sysml.package', + LABEL_X: 'labelX' +}; +mxShapeSysMLPackage.prototype.customProperties = [{ + name: 'labelX', + dispName: 'Header Width', + type: 'float', + min: 0, + defVal: 90 +}]; + +mxShapeSysMLPackage.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +mxShapeSysMLPackage.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLPackage.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLPackage.prototype.foreground = function (c, x, y, w, h) { + var xSize = parseInt(mxUtils.getValue(this.style, mxShapeSysMLPackage.prototype.cst.LABEL_X, '90')); + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLPackage.prototype.cst.PACKAGE, mxShapeSysMLPackage); + +Graph.handleFactory[mxShapeSysMLPackage.prototype.cst.PACKAGE] = function (state) { + var handles = [Graph.createHandle(state, ['labelX'], function (bounds) { + var labelX = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'labelX', 90)))); + return new mxPoint(bounds.x + labelX, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['labelX'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +function mxShapeSysMLPackage2(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPackage2, mxShape); +mxShapeSysMLPackage2.prototype.cst = { + PACKAGE2: 'mxgraph.sysml.package2', + LABEL_X: 'labelX' +}; +mxShapeSysMLPackage2.prototype.customProperties = [{ + name: 'labelX', + dispName: 'Header Width', + type: 'float', + min: 0, + defVal: 90 +}]; + +mxShapeSysMLPackage2.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLPackage2.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeSysMLPackage2.prototype.foreground = function (c, x, y, w, h) { + var xSize = parseInt(mxUtils.getValue(this.style, mxShapeSysMLPackage2.prototype.cst.LABEL_X, '90')); + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLPackage2.prototype.cst.PACKAGE2, mxShapeSysMLPackage2); + +Graph.handleFactory[mxShapeSysMLPackage2.prototype.cst.PACKAGE2] = function (state) { + var handles = [Graph.createHandle(state, ['labelX'], function (bounds) { + var labelX = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'labelX', 90)))); + return new mxPoint(bounds.x + labelX, bounds.y + 10); + }, function (bounds, pt) { + this.state.style['labelX'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + return handles; +}; + +function mxShapeSysMLNone(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLNone, mxShape); +mxShapeSysMLNone.prototype.cst = { + NONE: 'mxgraph.sysml.none' +}; + +mxShapeSysMLNone.prototype.paintVertexShape = function (c, x, y, w, h) {}; + +mxCellRenderer.registerShape(mxShapeSysMLNone.prototype.cst.NONE, mxShapeSysMLNone); + +function mxShapeSysMLRect(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLRect, mxShape); +mxShapeSysMLRect.prototype.cst = { + RECT: 'mxgraph.sysml.rect' +}; + +mxShapeSysMLRect.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x, y, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLRect.prototype.cst.RECT, mxShapeSysMLRect); + +function mxShapeSysMLPortOne(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPortOne, mxShape); +mxShapeSysMLPortOne.prototype.cst = { + PORT1: 'mxgraph.sysml.port1' +}; + +mxShapeSysMLPortOne.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + w * 0.05, y, w - w * 0.1, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortOne.prototype.cst.PORT1, mxShapeSysMLPortOne); + +mxShapeSysMLPortOne.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + return constr; +}; + +function mxShapeSysMLPortTwo(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPortTwo, mxShape); +mxShapeSysMLPortTwo.prototype.cst = { + PORT2: 'mxgraph.sysml.port2' +}; + +mxShapeSysMLPortTwo.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + w * 0.05, y, w * 0.8, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortTwo.prototype.cst.PORT2, mxShapeSysMLPortTwo); + +mxShapeSysMLPortTwo.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + return constr; +}; + +function mxShapeSysMLPortThree(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPortThree, mxShape); +mxShapeSysMLPortThree.prototype.cst = { + PORT3: 'mxgraph.sysml.port3' +}; + +mxShapeSysMLPortThree.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + w * 0.07, y, w * 0.86, h); + c.fillAndStroke(); + c.rect(x, y + h * 0.125, w * 0.14, h * 0.25); + c.fillAndStroke(); + c.rect(x, y + h * 0.625, w * 0.14, h * 0.25); + c.fillAndStroke(); + c.rect(x + w * 0.86, y + h * 0.375, w * 0.14, h * 0.25); + c.fillAndStroke(); + this.drawIn(c, x + w * 0.01, y + h * 0.2, w * 0.11, h * 0.10); + this.drawOut(c, x + w * 0.02, y + h * 0.7, w * 0.11, h * 0.10); + this.drawInOut(c, x + w * 0.88, y + h * 0.45, w * 0.1, h * 0.10); +}; + +mxShapeSysMLPortThree.prototype.drawIn = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.stroke(); +}; + +mxShapeSysMLPortThree.prototype.drawOut = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +}; + +mxShapeSysMLPortThree.prototype.drawInOut = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortThree.prototype.cst.PORT3, mxShapeSysMLPortThree); + +function mxShapeSysMLPortFour(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLPortFour, mxShape); +mxShapeSysMLPortFour.prototype.cst = { + PORT4: 'mxgraph.sysml.port4' +}; + +mxShapeSysMLPortFour.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + w * 0.05, y, w - w * 0.05, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortFour.prototype.cst.PORT4, mxShapeSysMLPortFour); +mxShapeSysMLPortFour.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; + +function mxShapeSysMLItemFlow(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLItemFlow, mxShape); +mxShapeSysMLItemFlow.prototype.cst = { + ITEM_FLOW: 'mxgraph.sysml.itemFlow', + FLOW_DIR: 'flowDir', + FLOW_TYPE: 'flowType' +}; +mxShapeSysMLItemFlow.prototype.customProperties = [{ + name: 'flowDir', + dispName: 'Flow Direction', + type: 'enum', + enumList: [{ + val: 'n', + dispName: 'North' + }, { + val: 's', + dispName: 'South' + }, { + val: 'e', + dispName: 'East' + }, { + val: 'w', + dispName: 'West' + }] +}, { + name: 'flowType', + dispName: 'Flow Type', + type: 'enum', + enumList: [{ + val: 'in', + dispName: 'In' + }, { + val: 'out', + dispName: 'Out' + }] +}]; + +mxShapeSysMLItemFlow.prototype.paintVertexShape = function (c, x, y, w, h) { + var flowDir = mxUtils.getValue(this.style, mxShapeSysMLItemFlow.prototype.cst.FLOW_DIR, 'none').toLowerCase(); + var flowType = mxUtils.getValue(this.style, mxShapeSysMLItemFlow.prototype.cst.FLOW_TYPE, 'none'); + + if (flowDir === 'n') { + c.rect(x, y + 10, w, h - 10); + c.fillAndStroke(); + c.setShadow(false); + c.rect(x + w * 0.5 - 10, y, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') { + this.drawDown(c, x + w * 0.5 - 5, y + 2, 10, 16); + } else if (flowType === 'out') { + this.drawUp(c, x + w * 0.5 - 5, y + 2, 10, 16); + } + } else if (flowDir === 's') { + c.rect(x, y, w, h - 10); + c.fillAndStroke(); + c.setShadow(false); + c.rect(x + w * 0.5 - 10, y + h - 20, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') { + this.drawUp(c, x + w * 0.5 - 5, y + h - 18, 10, 16); + } else if (flowType === 'out') { + this.drawDown(c, x + w * 0.5 - 5, y + h - 18, 10, 16); + } + } else if (flowDir === 'w') { + c.rect(x + 10, y, w - 10, h); + c.fillAndStroke(); + c.setShadow(false); + c.rect(x, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') { + this.drawRight(c, x + 2, y + h * 0.5 - 5, 16, 10); + } else if (flowType === 'out') { + this.drawLeft(c, x + 2, y + h * 0.5 - 5, 16, 10); + } + } else if (flowDir === 'e') { + c.rect(x, y, w - 10, h); + c.fillAndStroke(); + c.setShadow(false); + c.rect(x + w - 20, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') { + this.drawLeft(c, x + w - 18, y + h * 0.5 - 5, 16, 10); + } else if (flowType === 'out') { + this.drawRight(c, x + w - 18, y + h * 0.5 - 5, 16, 10); + } + } +}; + +mxShapeSysMLItemFlow.prototype.drawRight = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.stroke(); +}; + +mxShapeSysMLItemFlow.prototype.drawDown = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x + w * 0.5, y); + c.lineTo(x + w * 0.5, y + h); + c.moveTo(x, y + h * 0.75); + c.lineTo(x + w * 0.5, y + h); + c.lineTo(x + w, y + h * 0.75); + c.stroke(); +}; + +mxShapeSysMLItemFlow.prototype.drawLeft = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +}; + +mxShapeSysMLItemFlow.prototype.drawUp = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x + w * 0.5, y + h); + c.lineTo(x + w * 0.5, y); + c.moveTo(x, y + h * 0.25); + c.lineTo(x + w * 0.5, y); + c.lineTo(x + w, y + h * 0.25); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLItemFlow.prototype.cst.ITEM_FLOW, mxShapeSysMLItemFlow); +mxShapeSysMLItemFlow.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true)]; + +function mxShapeSysMLItemFlowLeft(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLItemFlowLeft, mxShape); +mxShapeSysMLItemFlowLeft.prototype.cst = { + ITEM_FLOW_LEFT: 'mxgraph.sysml.itemFlowLeft' +}; + +mxShapeSysMLItemFlowLeft.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + 10, y, w - 10, h); + c.fillAndStroke(); + c.rect(x, y + h * 0.25 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x, y + h * 0.75 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLItemFlowLeft.prototype.cst.ITEM_FLOW_LEFT, mxShapeSysMLItemFlowLeft); +mxShapeSysMLItemFlowLeft.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.25), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0.75), true)]; + +function mxShapeSysMLItemFlowRight(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLItemFlowRight, mxShape); +mxShapeSysMLItemFlowRight.prototype.cst = { + ITEM_FLOW_RIGHT: 'mxgraph.sysml.itemFlowRight' +}; + +mxShapeSysMLItemFlowRight.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x, y, w - 10, h); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.25 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.75 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLItemFlowRight.prototype.cst.ITEM_FLOW_RIGHT, mxShapeSysMLItemFlowRight); +mxShapeSysMLItemFlowRight.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(1, 0.25), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.75), true)]; + +function mxShapeSysMLNestedPort(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLNestedPort, mxShape); +mxShapeSysMLNestedPort.prototype.cst = { + NESTED_PORT: 'mxgraph.sysml.nestedPort' +}; + +mxShapeSysMLNestedPort.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x + w * 0.08, y, w * 0.92, h); + c.fillAndStroke(); + c.rect(x + w * 0.03, y + h * 0.1, w * 0.1, h * 0.8); + c.fillAndStroke(); + c.rect(x, y + h * 0.15, w * 0.06, h * 0.16); + c.fillAndStroke(); + c.rect(x, y + h * 0.42, w * 0.06, h * 0.16); + c.fillAndStroke(); + c.rect(x, y + h * 0.69, w * 0.06, h * 0.16); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLNestedPort.prototype.cst.NESTED_PORT, mxShapeSysMLNestedPort); +mxMarker.addMarker('sysMLPackCont', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + c.stroke(); + }; +}); +mxMarker.addMarker('sysMLReqInt', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + var fillColor = mxUtils.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, 'none'); + c.setFillColor(fillColor); + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + c.fillAndStroke(); + }; +}); +mxMarker.addMarker('sysMLProvInt', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + var fillColor = mxUtils.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, 'none'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(pe.x - ny / 2, pe.y + nx / 2); + c.arcTo(a, a, 0, 0, 1, pe.x + ny / 2, pe.y - nx / 2); + c.fillAndStroke(); + }; +}); + +function mxShapeSysMLParametricDiagram(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLParametricDiagram, mxShape); +mxShapeSysMLParametricDiagram.prototype.cst = { + PARAM_DGM: 'mxgraph.sysml.paramDgm' +}; + +mxShapeSysMLParametricDiagram.prototype.paintVertexShape = function (c, x, y, w, h) { + c.roundrect(x, y, w, h, 10, 10); + c.fillAndStroke(); + c.setShadow(false); + + if (h > 60) { + c.rect(x, y + h * 0.25 - 10, 20, 20); + c.stroke(); + c.rect(x, y + h * 0.75 - 10, 20, 20); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLParametricDiagram.prototype.cst.PARAM_DGM, mxShapeSysMLParametricDiagram); + +function mxShapeSysMLConstraintProperty(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLConstraintProperty, mxShape); +mxShapeSysMLConstraintProperty.prototype.cst = { + CONS_PROP: 'mxgraph.sysml.consProp' +}; + +mxShapeSysMLConstraintProperty.prototype.paintVertexShape = function (c, x, y, w, h) { + c.rect(x, y, w, h); + c.fillAndStroke(); + c.setShadow(false); + + if (h > 60) { + c.rect(x, y + 50, 20, 20); + c.stroke(); + c.rect(x, y + 80, 20, 20); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLConstraintProperty.prototype.cst.CONS_PROP, mxShapeSysMLConstraintProperty); + +function mxShapeSysMLCallBehaviorAction(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLCallBehaviorAction, mxShape); +mxShapeSysMLCallBehaviorAction.prototype.cst = { + CALL_BEH_ACT: 'mxgraph.sysml.callBehAct' +}; + +mxShapeSysMLCallBehaviorAction.prototype.paintVertexShape = function (c, x, y, w, h) { + c.roundrect(x, y, w, h, 10, 10); + c.fillAndStroke(); + + if (h > 30 && w > 40) { + c.setShadow(false); + this.drawSymb(c, x + w - 30, y + h - 30, 20, 20); + } +}; + +mxShapeSysMLCallBehaviorAction.prototype.drawSymb = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x + w * 0.5, y); + c.lineTo(x + w * 0.5, y + h); + c.moveTo(x, y + h); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w, y + h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCallBehaviorAction.prototype.cst.CALL_BEH_ACT, mxShapeSysMLCallBehaviorAction); + +mxShapeSysMLCallBehaviorAction.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + return constr; +}; + +function mxShapeSysMLAcceptEventAction(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLAcceptEventAction, mxShape); +mxShapeSysMLAcceptEventAction.prototype.cst = { + ACC_EVENT: 'mxgraph.sysml.accEvent' +}; + +mxShapeSysMLAcceptEventAction.prototype.paintVertexShape = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x + h * 0.3, y + h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLAcceptEventAction.prototype.cst.ACC_EVENT, mxShapeSysMLAcceptEventAction); + +mxShapeSysMLAcceptEventAction.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, h * 0.3, 0)); + return constr; +}; + +function mxShapeSysMLTimeEvent(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLTimeEvent, mxShape); +mxShapeSysMLTimeEvent.prototype.cst = { + TIME_EVENT: 'mxgraph.sysml.timeEvent' +}; + +mxShapeSysMLTimeEvent.prototype.paintVertexShape = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x, y + h); + c.lineTo(x + w, y + h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLTimeEvent.prototype.cst.TIME_EVENT, mxShapeSysMLTimeEvent); + +mxShapeSysMLTimeEvent.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + return constr; +}; + +function mxShapeSysMLSendSignalAction(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLSendSignalAction, mxShape); +mxShapeSysMLSendSignalAction.prototype.cst = { + SEND_SIG_ACT: 'mxgraph.sysml.sendSigAct' +}; + +mxShapeSysMLSendSignalAction.prototype.paintVertexShape = function (c, x, y, w, h) { + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w - h * 0.3, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w - h * 0.3, y + h); + c.lineTo(x, y + h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSendSignalAction.prototype.cst.SEND_SIG_ACT, mxShapeSysMLSendSignalAction); + +mxShapeSysMLSendSignalAction.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + return constr; +}; + +function mxShapeSysMLActivityFinal(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLActivityFinal, mxShape); +mxShapeSysMLActivityFinal.prototype.cst = { + ACT_FINAL: 'mxgraph.sysml.actFinal' +}; + +mxShapeSysMLActivityFinal.prototype.paintVertexShape = function (c, x, y, w, h) { + c.ellipse(x, y, w, h); + c.fillAndStroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(x + 5, y + 5, w - 10, h - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityFinal.prototype.cst.ACT_FINAL, mxShapeSysMLActivityFinal); + +mxShapeSysMLActivityFinal.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeSysMLActivityParameterNode(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLActivityParameterNode, mxShape); +mxShapeSysMLActivityParameterNode.prototype.cst = { + ACT_PARAM_NODE: 'mxgraph.sysml.actParamNode' +}; + +mxShapeSysMLActivityParameterNode.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + var minX = Math.max(w * 0.35, 70); + var maxX = Math.min(w * 0.65, w - 10); + c.begin(); + c.moveTo(minX, h); + c.lineTo(10, h); + c.lineTo(10, 0); + c.lineTo(minX, 0); + c.moveTo(maxX, h); + c.lineTo(w - 10, h); + c.lineTo(w - 10, 0); + c.lineTo(maxX, 0); + c.stroke(); + var xSize = 50; + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(10, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(10, 0); + c.close(); + c.fillAndStroke(); + } + + c.rect(0, h * 0.35 - 10, 20, 20); + c.fillAndStroke(); + c.rect(0, h * 0.65 - 10, 20, 20); + c.fillAndStroke(); + c.rect(w - 20, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityParameterNode.prototype.cst.ACT_PARAM_NODE, mxShapeSysMLActivityParameterNode); + +mxShapeSysMLActivityParameterNode.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.35), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.65), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxShapeSysMLControlOperator(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLControlOperator, mxShape); +mxShapeSysMLControlOperator.prototype.cst = { + CONT_OPER: 'mxgraph.sysml.contOper' +}; + +mxShapeSysMLControlOperator.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLControlOperator.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLControlOperator.prototype.foreground = function (c, x, y, w, h) { + var xSize = 130; + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLControlOperator.prototype.cst.CONT_OPER, mxShapeSysMLControlOperator); + +function mxShapeSysMLFlowFinal(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLFlowFinal, mxShape); +mxShapeSysMLFlowFinal.prototype.cst = { + FLOW_FINAL: 'mxgraph.sysml.flowFinal' +}; + +mxShapeSysMLFlowFinal.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.855, h * 0.145); + c.lineTo(w * 0.145, h * 0.855); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLFlowFinal.prototype.cst.FLOW_FINAL, mxShapeSysMLFlowFinal); + +mxShapeSysMLFlowFinal.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + return constr; +}; + +function mxShapeSysMLIsControl(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLIsControl, mxShape); +mxShapeSysMLIsControl.prototype.cst = { + IS_CONTROL: 'mxgraph.sysml.isControl' +}; + +mxShapeSysMLIsControl.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsControl.prototype.cst.IS_CONTROL, mxShapeSysMLIsControl); + +mxShapeSysMLIsControl.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxShapeSysMLIsStream(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLIsStream, mxShape); +mxShapeSysMLIsStream.prototype.cst = { + IS_STREAM: 'mxgraph.sysml.isStream' +}; + +mxShapeSysMLIsStream.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(strokeColor); + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + c.setFillColor(strokeColor); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsStream.prototype.cst.IS_STREAM, mxShapeSysMLIsStream); + +mxShapeSysMLIsStream.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + return constr; +}; + +function mxShapeSysMLIsActStream(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLIsActStream, mxShape); +mxShapeSysMLIsActStream.prototype.cst = { + IS_ACT_STREAM: 'mxgraph.sysml.isActStream' +}; + +mxShapeSysMLIsActStream.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.rect(0, 0, w - 10, h); + c.fillAndStroke(); + var xSize = 40; + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } + + c.rect(w - 20, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsActStream.prototype.cst.IS_ACT_STREAM, mxShapeSysMLIsActStream); + +mxShapeSysMLIsActStream.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + return constr; +}; + +function mxShapeSysMLParameterSet(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLParameterSet, mxShape); +mxShapeSysMLParameterSet.prototype.cst = { + PARAM_SET: 'mxgraph.sysml.paramSet' +}; + +mxShapeSysMLParameterSet.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, h * 0.5 - 28, 10, 56); + c.fillAndStroke(); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 28, 10, 56); + c.fillAndStroke(); + c.setShadow(false); + c.rect(4, h * 0.5 - 24, 6, 20); + c.fillAndStroke(); + c.rect(4, h * 0.5 + 4, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 + 4, 6, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLParameterSet.prototype.cst.PARAM_SET, mxShapeSysMLParameterSet); + +mxShapeSysMLParameterSet.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + return constr; +}; + +function mxShapeSysMLParameterActivitySet(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLParameterActivitySet, mxShape); +mxShapeSysMLParameterActivitySet.prototype.cst = { + PARAM_ACT_SET: 'mxgraph.sysml.paramActSet' +}; + +mxShapeSysMLParameterActivitySet.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.rect(10, 0, w - 20, h); + c.fillAndStroke(); + var xSize = 50; + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(10, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(10, 0); + c.close(); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (h > 70) { + c.rect(0, h * 0.5 - 28, 15, 56); + c.fillAndStroke(); + c.rect(4, h * 0.5 - 24, 15, 20); + c.fillAndStroke(); + c.rect(4, h * 0.5 + 4, 15, 20); + c.fillAndStroke(); + c.rect(w - 15, h * 0.5 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.5 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.5 + 4, 15, 20); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLParameterActivitySet.prototype.cst.PARAM_ACT_SET, mxShapeSysMLParameterActivitySet); + +mxShapeSysMLParameterActivitySet.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + return constr; +}; + +function mxShapeSysMLProbability(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLProbability, mxShape); +mxShapeSysMLProbability.prototype.cst = { + PROBABILITY: 'mxgraph.sysml.probability' +}; + +mxShapeSysMLProbability.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.25 - 28, 10, 56); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 - 28, 10, 56); + c.fillAndStroke(); + c.setShadow(false); + c.rect(w - 10, h * 0.25 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.25 + 4, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 + 4, 6, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLProbability.prototype.cst.PROBABILITY, mxShapeSysMLProbability); + +mxShapeSysMLProbability.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + return constr; +}; + +function mxShapeSysMLActivityProbability(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLActivityProbability, mxShape); +mxShapeSysMLActivityProbability.prototype.cst = { + ACT_PROB: 'mxgraph.sysml.actProb' +}; + +mxShapeSysMLActivityProbability.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.rect(0, 0, w - 10, h); + c.fillAndStroke(); + var xSize = 40; + var ySize = 20; + xSize = Math.min(xSize, w); + + if (xSize > ySize) { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (h > 70) { + c.rect(w - 15, h * 0.25 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.25 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.25 + 4, 15, 20); + c.fillAndStroke(); + c.rect(w - 15, h * 0.75 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.75 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.75 + 4, 15, 20); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityProbability.prototype.cst.ACT_PROB, mxShapeSysMLActivityProbability); + +mxShapeSysMLActivityProbability.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + return constr; +}; + +function mxShapeSysMLObjectFlowRight(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLObjectFlowRight, mxShape); +mxShapeSysMLObjectFlowRight.prototype.cst = { + OBJ_FLOW_R: 'mxgraph.sysml.objFlowR' +}; + +mxShapeSysMLObjectFlowRight.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowRight.prototype.cst.OBJ_FLOW_R, mxShapeSysMLObjectFlowRight); + +mxShapeSysMLObjectFlowRight.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + return constr; +}; + +function mxShapeSysMLObjectFlowLeft(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLObjectFlowLeft, mxShape); +mxShapeSysMLObjectFlowLeft.prototype.cst = { + OBJ_FLOW_L: 'mxgraph.sysml.objFlowL' +}; + +mxShapeSysMLObjectFlowLeft.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + c.roundrect(10, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowLeft.prototype.cst.OBJ_FLOW_L, mxShapeSysMLObjectFlowLeft); + +mxShapeSysMLObjectFlowLeft.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 5, 0)); + return constr; +}; + +function mxShapeSysMLActivityPartition(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLActivityPartition, mxShape); +mxShapeSysMLActivityPartition.prototype.cst = { + ACT_PART: 'mxgraph.sysml.actPart' +}; + +mxShapeSysMLActivityPartition.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.moveTo(w, 0); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityPartition.prototype.cst.ACT_PART, mxShapeSysMLActivityPartition); + +function mxShapeSysMLContinuation(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLContinuation, mxShape); +mxShapeSysMLContinuation.prototype.cst = { + CONT: 'mxgraph.sysml.cont' +}; + +mxShapeSysMLContinuation.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + + if (w > h) { + var r = h * 0.5; + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); + } else { + var r = w * 0.5; + c.begin(); + c.moveTo(0, h - r); + c.arcTo(r, r, 0, 0, 0, w, h - r); + c.lineTo(w, r); + c.arcTo(r, r, 0, 0, 0, 0, r); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLContinuation.prototype.cst.CONT, mxShapeSysMLContinuation); + +mxShapeSysMLContinuation.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + if (w > h) { + var r = h * 0.5; + + if (w > 2 * h) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + } else { + var r = w * 0.5; + + if (h > 2 * w) { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + } + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, h - r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, h - r * 0.29)); + return constr; +}; + +function mxShapeSysMLCoregion(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLCoregion, mxShape); +mxShapeSysMLCoregion.prototype.cst = { + COREGION: 'mxgraph.sysml.coregion' +}; + +mxShapeSysMLCoregion.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + var brack = 10; + brack = Math.min(brack, h); + c.begin(); + c.moveTo(0, brack); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, brack); + c.moveTo(0, h - brack); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w, h - brack); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCoregion.prototype.cst.COREGION, mxShapeSysMLCoregion); +mxMarker.addMarker('sysMLx', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + return function () { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + nx / 2 + ny / 2, pe.y + ny / 2 - nx / 2); + c.moveTo(pe.x + nx / 2 - ny / 2, pe.y + ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); + +function mxShapeSysMLDimension(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLDimension, mxShape); +mxShapeSysMLDimension.prototype.cst = { + DIMENSION: 'mxgraph.sysml.dimension' +}; + +mxShapeSysMLDimension.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeSysMLDimension.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLDimension.prototype.cst.DIMENSION, mxShapeSysMLDimension); +mxMarker.addMarker('sysMLLost', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + c.begin(); + c.moveTo(pe.x - 1.5 * nx - ny / 2, pe.y - 1.5 * ny + nx / 2); + c.lineTo(pe.x - nx / 2, pe.y - ny / 2); + c.lineTo(pe.x - 1.5 * nx + ny / 2, pe.y - 1.5 * ny - nx / 2); + c.stroke(); + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + var strokeColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.fillAndStroke(); + }; +}); +mxMarker.addMarker('sysMLFound', function (c, shape, type, pe, unitX, unitY, size, source, sw, filled) { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + return function () { + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + var strokeColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.fillAndStroke(); + }; +}); + +function mxShapeSysMLCompositeState(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLCompositeState, mxShape); +mxShapeSysMLCompositeState.prototype.cst = { + COMP_STATE: 'mxgraph.sysml.compState' +}; + +mxShapeSysMLCompositeState.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeSysMLCompositeState.prototype.background = function (c, x, y, w, h) { + var tabH = 20; + var tabW = 110; + c.roundrect(0, tabH, w, h - tabH, 10, 10); + c.fillAndStroke(); + c.rect(15, 0, tabW, tabH); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCompositeState.prototype.cst.COMP_STATE, mxShapeSysMLCompositeState); + +mxShapeSysMLCompositeState.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 70, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 125, 0)); + + if (w * 0.75 > 125) { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 125) { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 125) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return constr; +}; + +function mxShapeSysMLRegion(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLRegion, mxShape); +mxShapeSysMLRegion.prototype.cst = { + REGION: 'mxgraph.sysml.region' +}; + +mxShapeSysMLRegion.prototype.paintVertexShape = function (c, x, y, w, h) { + var tabH = 20; + var tabW = 50; + c.translate(x, y); + this.background(c, x, y, w, h, tabH, tabW); + c.setShadow(false); + this.foreground(c, x, y, w, h, tabH, tabW); +}; + +mxShapeSysMLRegion.prototype.background = function (c, x, y, w, h, tabH, tabW) { + var strokeW = parseInt(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1')); + c.roundrect(0, tabH, w, h - tabH, 10, 10); + c.fillAndStroke(); + c.setStrokeWidth(strokeW * 2); + c.rect(15, 0, tabW, tabH); + c.fillAndStroke(); + c.setStrokeWidth(strokeW); +}; + +mxShapeSysMLRegion.prototype.foreground = function (c, x, y, w, h, tabH, tabW) { + c.setDashed(true); + c.begin(); + c.moveTo(w * 0.5, tabH); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLRegion.prototype.cst.REGION, mxShapeSysMLRegion); + +mxShapeSysMLRegion.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 40, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 65, 0)); + + if (w * 0.75 > 65) { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 65) { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 65) { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return constr; +}; + +function mxShapeSysMLSimpleState(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLSimpleState, mxShape); +mxShapeSysMLSimpleState.prototype.cst = { + SIMPLE_STATE: 'mxgraph.sysml.simpleState' +}; + +mxShapeSysMLSimpleState.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); +}; + +mxShapeSysMLSimpleState.prototype.background = function (c, x, y, w, h) { + var strokeW = parseInt(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1')); + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLSimpleState.prototype.foreground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSimpleState.prototype.cst.SIMPLE_STATE, mxShapeSysMLSimpleState); + +mxShapeSysMLSimpleState.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + return constr; +}; + +function mxShapeSysMLStateMachine(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLStateMachine, mxShape); +mxShapeSysMLStateMachine.prototype.cst = { + STATE_MACHINE: 'mxgraph.sysml.stateMachine' +}; + +mxShapeSysMLStateMachine.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLStateMachine.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLStateMachine.prototype.foreground = function (c, x, y, w, h) { + var strokeC = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeC); + c.ellipse(w - 20, h * 0.5 - 10, 20, 20); + c.stroke(); + c.ellipse(w - 17, h * 0.5 - 7, 14, 14); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLStateMachine.prototype.cst.STATE_MACHINE, mxShapeSysMLStateMachine); + +mxShapeSysMLStateMachine.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + return constr; +}; + +function mxShapeSysMLX(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLX, mxShape); +mxShapeSysMLX.prototype.cst = { + X: 'mxgraph.sysml.x' +}; + +mxShapeSysMLX.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.moveTo(0, h); + c.lineTo(w, 0); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLX.prototype.cst.X, mxShapeSysMLX); + +mxShapeSysMLX.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + return constr; +}; + +function mxShapeSysMLSubmachineState(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLSubmachineState, mxShape); +mxShapeSysMLSubmachineState.prototype.cst = { + SUBMACHINE_STATE: 'mxgraph.sysml.submState' +}; + +mxShapeSysMLSubmachineState.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLSubmachineState.prototype.background = function (c, x, y, w, h) { + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLSubmachineState.prototype.foreground = function (c, x, y, w, h) { + var strokeC = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeC); + c.ellipse(w - 20, h * 0.5 - 10, 20, 20); + c.stroke(); + c.ellipse(w - 17, h * 0.5 - 7, 14, 14); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSubmachineState.prototype.cst.SUBMACHINE_STATE, mxShapeSysMLSubmachineState); + +mxShapeSysMLSubmachineState.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + return constr; +}; + +function mxShapeSysMLUseCaseExtensionPoints(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapeSysMLUseCaseExtensionPoints, mxShape); +mxShapeSysMLUseCaseExtensionPoints.prototype.cst = { + USE_CASE_EXT_PT: 'mxgraph.sysml.useCaseExtPt' +}; + +mxShapeSysMLUseCaseExtensionPoints.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLUseCaseExtensionPoints.prototype.background = function (c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLUseCaseExtensionPoints.prototype.foreground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.02, h * 0.35); + c.lineTo(w * 0.98, h * 0.35); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLUseCaseExtensionPoints.prototype.cst.USE_CASE_EXT_PT, mxShapeSysMLUseCaseExtensionPoints); + +mxShapeSysMLUseCaseExtensionPoints.prototype.getConstraints = function (style, w, h) { + var constr = []; + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + return constr; +}; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidInstruments.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidInstruments.js new file mode 100644 index 0000000000000..f13549b056d39 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidInstruments.js @@ -0,0 +1,545 @@ +"use strict"; + +function mxShapePidDiscInst(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidDiscInst, mxShape); +mxShapePidDiscInst.prototype.cst = { + SHAPE_DISC_INST: 'mxgraph.pid2inst.discInst', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local' +}; +mxShapePidDiscInst.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}]; + +mxShapePidDiscInst.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidDiscInst.prototype.background = function (c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidDiscInst.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidDiscInst.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidDiscInst.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidDiscInst.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.005, h * 0.48); + c.lineTo(w * 0.995, h * 0.48); + c.moveTo(w * 0.005, h * 0.52); + c.lineTo(w * 0.995, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidDiscInst.prototype.cst.SHAPE_DISC_INST, mxShapePidDiscInst); +mxShapePidDiscInst.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.145, 0.145), false), new mxConnectionConstraint(new mxPoint(0.145, 0.855), false), new mxConnectionConstraint(new mxPoint(0.855, 0.145), false), new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)]; + +function mxShapePidSharedCont(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidSharedCont, mxShape); +mxShapePidSharedCont.prototype.cst = { + SHAPE_SHARED_CONT: 'mxgraph.pid2inst.sharedCont', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local' +}; +mxShapePidSharedCont.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}]; + +mxShapePidSharedCont.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidSharedCont.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidSharedCont.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidSharedCont.prototype.cst.MOUNTING, 'field'); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (mounting === mxShapePidSharedCont.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidSharedCont.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.005, h * 0.48); + c.lineTo(w * 0.995, h * 0.48); + c.moveTo(w * 0.005, h * 0.52); + c.lineTo(w * 0.995, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidSharedCont.prototype.cst.SHAPE_SHARED_CONT, mxShapePidSharedCont); +mxShapePidSharedCont.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0), false), new mxConnectionConstraint(new mxPoint(0, 1), false), new mxConnectionConstraint(new mxPoint(1, 0), false), new mxConnectionConstraint(new mxPoint(1, 1), false)]; + +function mxShapePidCompFunc(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidCompFunc, mxShape); +mxShapePidCompFunc.prototype.cst = { + SHAPE_COMP_FUNC: 'mxgraph.pid2inst.compFunc', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local' +}; +mxShapePidCompFunc.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}]; + +mxShapePidCompFunc.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidCompFunc.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.25, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidCompFunc.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidCompFunc.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidCompFunc.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidCompFunc.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.01, h * 0.48); + c.lineTo(w * 0.99, h * 0.48); + c.moveTo(w * 0.01, h * 0.52); + c.lineTo(w * 0.99, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidCompFunc.prototype.cst.SHAPE_COMP_FUNC, mxShapePidCompFunc); +mxShapePidCompFunc.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 0), false), new mxConnectionConstraint(new mxPoint(0.75, 0), false), new mxConnectionConstraint(new mxPoint(0.25, 1), false), new mxConnectionConstraint(new mxPoint(0.75, 1), false)]; + +function mxShapePidProgLogCont(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidProgLogCont, mxShape); +mxShapePidProgLogCont.prototype.cst = { + SHAPE_PROG_LOG_CONT: 'mxgraph.pid2inst.progLogCont', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local' +}; +mxShapePidProgLogCont.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}]; + +mxShapePidProgLogCont.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidProgLogCont.prototype.background = function (c, x, y, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidProgLogCont.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidProgLogCont.prototype.cst.MOUNTING, 'field'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + if (mounting === mxShapePidProgLogCont.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidProgLogCont.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.02, h * 0.48); + c.lineTo(w * 0.98, h * 0.48); + c.moveTo(w * 0.02, h * 0.52); + c.lineTo(w * 0.98, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidProgLogCont.prototype.cst.SHAPE_PROG_LOG_CONT, mxShapePidProgLogCont); +mxShapePidProgLogCont.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0, 0), false), new mxConnectionConstraint(new mxPoint(0, 1), false), new mxConnectionConstraint(new mxPoint(1, 0), false), new mxConnectionConstraint(new mxPoint(1, 1), false)]; + +function mxShapePidIndicator(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidIndicator, mxShape); +mxShapePidIndicator.prototype.cst = { + SHAPE_INDICATOR: 'mxgraph.pid2inst.indicator', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local', + IND_TYPE: 'indType', + INSTRUMENT: 'inst', + CONTROL: 'ctrl', + FUNCTION: 'func', + PLC: 'plc' +}; +mxShapePidIndicator.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}, { + name: 'indType', + dispName: 'Type', + type: 'enum', + defVal: 'inst', + enumList: [{ + val: 'inst', + dispName: 'Instrument' + }, { + val: 'ctrl', + dispName: 'Control' + }, { + val: 'func', + dispName: 'Function' + }, { + val: 'plc', + dispName: 'PLC' + }] +}]; + +mxShapePidIndicator.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidIndicator.prototype.background = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst'); + c.begin(); + c.moveTo(w * 0.5, w); + c.lineTo(w * 0.5, h); + c.stroke(); + + if (type === mxShapePidIndicator.prototype.cst.INSTRUMENT) { + c.ellipse(0, 0, w, w); + c.fillAndStroke(); + } else if (type === mxShapePidIndicator.prototype.cst.CONTROL) { + c.rect(0, 0, w, w); + c.fillAndStroke(); + } else if (type === mxShapePidIndicator.prototype.cst.FUNCTION) { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, w * 0.5); + c.lineTo(w * 0.75, w); + c.lineTo(w * 0.25, w); + c.close(); + c.fillAndStroke(); + } else if (type === mxShapePidIndicator.prototype.cst.PLC) { + c.rect(0, 0, w, w); + c.fillAndStroke(); + } +}; + +mxShapePidIndicator.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.MOUNTING, 'field'); + var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst'); + + if (type === mxShapePidIndicator.prototype.cst.CONTROL) { + c.ellipse(0, 0, w, w); + c.stroke(); + } else if (type === mxShapePidIndicator.prototype.cst.PLC) { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, w * 0.5); + c.lineTo(w * 0.5, w); + c.close(); + c.stroke(); + } + + if (mounting === mxShapePidIndicator.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w, w * 0.5); + c.stroke(); + } else if (mounting === mxShapePidIndicator.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w, w * 0.5); + c.stroke(); + } else if (mounting === mxShapePidIndicator.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.005, w * 0.48); + c.lineTo(w * 0.995, w * 0.48); + c.moveTo(w * 0.005, w * 0.52); + c.lineTo(w * 0.995, w * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidIndicator.prototype.cst.SHAPE_INDICATOR, mxShapePidIndicator); +mxShapePidIndicator.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +function mxShapePidLogic(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidLogic, mxShape); +mxShapePidLogic.prototype.cst = { + SHAPE_LOGIC: 'mxgraph.pid2inst.logic', + MOUNTING: 'mounting', + FIELD: 'field', + ROOM: 'room', + INACCESSIBLE: 'inaccessible', + LOCAL: 'local' +}; +mxShapePidLogic.prototype.customProperties = [{ + name: 'mounting', + dispName: 'Mounting', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'field', + dispName: 'Field' + }, { + val: 'room', + dispName: 'Room' + }, { + val: 'inaccessible', + dispName: 'Inaccessible' + }, { + val: 'local', + dispName: 'Local' + }] +}]; + +mxShapePidLogic.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidLogic.prototype.background = function (c, x, y, w, h) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidLogic.prototype.foreground = function (c, x, y, w, h) { + var mounting = mxUtils.getValue(this.style, mxShapePidLogic.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidLogic.prototype.cst.ROOM) { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidLogic.prototype.cst.INACCESSIBLE) { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } else if (mounting === mxShapePidLogic.prototype.cst.LOCAL) { + c.begin(); + c.moveTo(w * 0.02, h * 0.48); + c.lineTo(w * 0.98, h * 0.48); + c.moveTo(w * 0.02, h * 0.52); + c.lineTo(w * 0.98, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidLogic.prototype.cst.SHAPE_LOGIC, mxShapePidLogic); +mxShapePidLogic.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5), true), new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), new mxConnectionConstraint(new mxPoint(0.75, 0.75), false)]; diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidMisc.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidMisc.js new file mode 100644 index 0000000000000..955b186683cb6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidMisc.js @@ -0,0 +1,405 @@ +"use strict"; + +function mxShapePidFan(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidFan, mxShape); +mxShapePidFan.prototype.cst = { + SHAPE_FAN: 'mxgraph.pid2misc.fan', + FAN_TYPE: 'fanType', + COMMON: 'common', + AXIAL: 'axial', + RADIAL: 'radial' +}; +mxShapePidFan.prototype.customProperties = [{ + name: 'fanType', + dispName: 'Type', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'common', + dispName: 'Common' + }, { + val: 'axial', + dispName: 'Axial' + }, { + val: 'radial', + dispName: 'Radial' + }] +}]; + +mxShapePidFan.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidFan.prototype.background = function (c, x, y, w, h) { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidFan.prototype.foreground = function (c, x, y, w, h) { + c.begin(); + c.moveTo(w * 0.3, h * 0.045); + c.lineTo(w * 0.97, h * 0.33); + c.moveTo(w * 0.3, h * 0.955); + c.lineTo(w * 0.97, h * 0.67); + c.moveTo(w * 0.4228, h * 0.3655); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.5, h * 0.5); + c.arcTo(w * 0, 15, h * 0.03, 50, 0, 1, w * 0.3772, h * 0.4045); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.3025, h * 0.271); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.4228, h * 0.3655); + c.close(); + c.moveTo(w * 0.377, h * 0.5973); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.4966, h * 0.5019); + c.arcTo(w * 0, 15, h * 0.03, -50, 0, 1, w * 0.423, h * 0.636); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.3034, h * 0.7314); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.377, h * 0.5973); + c.close(); + c.stroke(); + c.ellipse(w * 0.5, h * 0.47, w * 0.3, h * 0.06); + c.stroke(); + var type = mxUtils.getValue(this.style, mxShapePidFan.prototype.cst.FAN_TYPE, 'common'); + + if (type === mxShapePidFan.prototype.cst.AXIAL) { + c.begin(); + c.moveTo(w * 0.1, h * 0.5); + c.lineTo(w * 0.3, h * 0.5); + c.stroke(); + } else if (type === mxShapePidFan.prototype.cst.RADIAL) { + c.begin(); + c.moveTo(w * 0.2, h * 0.4); + c.lineTo(w * 0.2, h * 0.6); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidFan.prototype.cst.SHAPE_FAN, mxShapePidFan); + +function mxShapePidColumn(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidColumn, mxShape); +mxShapePidColumn.prototype.cst = { + SHAPE_COLUMN: 'mxgraph.pid2misc.column', + COLUMN_TYPE: 'columnType', + COMMON: 'common', + FIXED: 'fixed', + FLUIDIZED: 'fluid', + BAFFLE: 'baffle', + VALVE: 'valve', + BUBBLE: 'bubble', + NOZZLE: 'nozzle', + TRAY: 'tray' +}; +mxShapePidColumn.prototype.customProperties = [{ + name: 'columnType', + dispName: 'Type', + type: 'enum', + defVal: 'field', + enumList: [{ + val: 'common', + dispName: 'Common' + }, { + val: 'fixed', + dispName: 'Fixed' + }, { + val: 'fluid', + dispName: 'Fluid' + }, { + val: 'baffle', + dispName: 'Baffle' + }, { + val: 'valve', + dispName: 'Valve' + }, { + val: 'bubble', + dispName: 'Bubble' + }, { + val: 'nozzle', + dispName: 'Nozzle' + }, { + val: 'tray', + dispName: 'Tray' + }] +}]; + +mxShapePidColumn.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidColumn.prototype.background = function (c, x, y, w, h) { + h = Math.max(h, 30); + c.begin(); + c.moveTo(0, 15); + c.arcTo(w * 0.5, 15, 0, 0, 1, w, 15); + c.lineTo(w, h - 15); + c.arcTo(w * 0.5, 15, 0, 0, 1, 0, h - 15); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidColumn.prototype.foreground = function (c, x, y, w, h) { + var type = mxUtils.getValue(this.style, mxShapePidColumn.prototype.cst.COLUMN_TYPE, 'common'); + + if (type === mxShapePidColumn.prototype.cst.FIXED) { + var step = w * 1.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + c.begin(); + + for (var i = 0; i <= range - step; i += step) { + c.moveTo(0, i + off + step * 0.1); + c.lineTo(w, i + off + step * 0.1); + c.moveTo(0, i + off + step * 0.9); + c.lineTo(w, i + off + step * 0.9); + c.moveTo(0, i + off + step * 0.1); + c.lineTo(w, i + off + step * 0.9); + c.moveTo(0, i + off + step * 0.9); + c.lineTo(w, i + off + step * 0.1); + } + + c.stroke(); + } else if (type === mxShapePidColumn.prototype.cst.TRAY) { + var step = w * 0.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + c.setDashed(true); + c.begin(); + + for (var i = 0; i <= range; i += step) { + c.moveTo(0, i + off); + c.lineTo(w, i + off); + } + + c.stroke(); + } else if (type === mxShapePidColumn.prototype.cst.FLUIDIZED) { + var stepY = w * 0.1; + var stepX = w * 0.1; + var range = h - 50; + var rem = range % stepY; + var off = 25; + var dot = Math.min(w, h) * 0.02; + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var odd = 0; + c.setFillColor(strokeColor); + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + + if (dashed === '0') { + c.setDashed(false); + } else { + c.setDashed(true); + } + + var counter = 0; + + for (var i = off + stepY * 0.5; i < range + off - dot; i += stepY) { + var startJ = stepX; + odd = counter % 2; + + if (odd === 0) { + startJ = stepX * 0.5; + } + + for (var j = startJ; j < w; j += stepX) { + c.ellipse(j, i, dot, dot); + c.fillAndStroke(); + } + + counter++; + } + } else if (type === mxShapePidColumn.prototype.cst.BAFFLE) { + var stepY = w * 0.2; + var range = h - 50 - stepY; + var rem = range % stepY; + var off = 25 + stepY * 0.5; + var odd = 0; + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + var counter = 0; + c.begin(); + + for (var i = off + stepY * 0.5; i < range + off; i += stepY) { + odd = counter % 2; + + if (odd === 0) { + c.moveTo(0, i); + c.lineTo(w * 0.9, i); + c.lineTo(w * 0.9, i - stepY * 0.3); + } else { + c.moveTo(w * 0.1, i - stepY * 0.5); + c.lineTo(w * 0.1, i); + c.lineTo(w, i); + } + + counter++; + } + + c.stroke(); + } else if (type === mxShapePidColumn.prototype.cst.VALVE || type === mxShapePidColumn.prototype.cst.BUBBLE) { + var stepY = w * 0.2; + var range = h - 50 - stepY; + var rem = range % stepY; + var off = 25 + stepY * 0.5; + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + var odd = 0; + c.setFillColor(strokeColor); + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + + if (dashed === '0') { + c.setDashed(false); + } else { + c.setDashed(true); + } + + c.begin(); + + for (var i = off + stepY * 0.5; i < range + off; i += stepY) { + c.moveTo(0, i); + c.lineTo(w * 0.4, i); + + if (type === mxShapePidColumn.prototype.cst.VALVE) { + c.moveTo(w * 0.4, i - stepY * 0.2); + c.lineTo(w * 0.6, i - stepY * 0.2); + } else if (type === mxShapePidColumn.prototype.cst.BUBBLE) { + c.moveTo(w * 0.25, i - stepY * 0.2); + c.arcTo(stepY * 3, stepY * 3, 0, 0, 1, w * 0.75, i - stepY * 0.2); + } + + c.moveTo(w * 0.6, i); + c.lineTo(w, i); + } + + c.stroke(); + } else if (type === mxShapePidColumn.prototype.cst.NOZZLE) { + var step = w * 1.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, 0); + + for (var i = 0; i <= range - step; i += step) { + c.setDashed(true); + c.begin(); + c.moveTo(0, i + off + step * 0.2); + c.lineTo(w, i + off + step * 0.2); + c.moveTo(0, i + off + step * 0.8); + c.lineTo(w, i + off + step * 0.8); + c.stroke(); + + if (dashed === 0) { + c.setDashed(false); + } else { + c.setDashed(true); + } + + c.begin(); + c.moveTo(0, i + off + step * 0.2); + c.lineTo(w, i + off + step * 0.8); + c.moveTo(0, i + off + step * 0.8); + c.lineTo(w, i + off + step * 0.2); + + if (i !== 0) { + c.moveTo(0, i + off); + c.lineTo(w * 0.5, i + off); + c.moveTo(w * 0.5 - step * 0.08, i + off + step * 0.08); + c.lineTo(w * 0.5, i + off); + c.lineTo(w * 0.5 + step * 0.08, i + off + step * 0.08); + c.moveTo(w * 0.5, i + off); + c.lineTo(w * 0.5, i + off + step * 0.08); + } + + c.stroke(); + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidColumn.prototype.cst.SHAPE_COLUMN, mxShapePidColumn); + +function mxShapePidConveyor(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidConveyor, mxShape); +mxShapePidConveyor.prototype.cst = { + SHAPE_CONVEYOR: 'mxgraph.pid2misc.conveyor' +}; + +mxShapePidConveyor.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); +}; + +mxShapePidConveyor.prototype.background = function (c, x, y, w, h) { + var wheelSize = Math.min(h, w * 0.5); + c.begin(); + c.moveTo(wheelSize * 0.5, 0); + c.lineTo(w - wheelSize * 0.5, 0); + c.stroke(); + c.ellipse(0, 0, wheelSize, wheelSize); + c.fillAndStroke(); + c.ellipse(w - wheelSize, 0, wheelSize, wheelSize); + c.fillAndStroke(); + c.begin(); + c.moveTo(wheelSize * 0.5, wheelSize); + c.lineTo(w - wheelSize * 0.5, wheelSize); + c.stroke(); + var dist = w - wheelSize * 1.8; + var startX = wheelSize * 0.9; + var step = wheelSize * 0.7; + + for (var i = 0; i < dist; i = i + step) { + c.rect(startX + i, 0, wheelSize * 0.2, wheelSize * 0.1); + c.fillAndStroke(); + c.rect(startX + i, wheelSize * 0.9, wheelSize * 0.2, wheelSize * 0.1); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidConveyor.prototype.cst.SHAPE_CONVEYOR, mxShapePidConveyor); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidValves.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidValves.js new file mode 100644 index 0000000000000..a53b693dadecf --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/pid2/mxPidValves.js @@ -0,0 +1,925 @@ +"use strict"; + +function mxShapePidValve(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidValve, mxShape); +mxShapePidValve.prototype.cst = { + SHAPE_VALVE: 'mxgraph.pid2valves.valve', + DEFAULT_STATE: 'defState', + CLOSED: 'closed', + OPEN: 'open', + ACTUATOR: 'actuator', + MANUAL: 'man', + DIAPHRAGM: 'diaph', + BALANCED_DIAPHRAGM: 'balDiaph', + MOTOR: 'motor', + NONE: 'none', + SPRING: 'spring', + PILOT: 'pilot', + POWERED: 'powered', + SOLENOID: 'solenoid', + SOLENOID_MANUAL_RESET: 'solenoidManRes', + SINGLE_ACTING: 'singActing', + DOUBLE_ACTING: 'dblActing', + PILOT_CYLINDER: 'pilotCyl', + DIGITAL: 'digital', + WEIGHT: 'weight', + KEY: 'key', + ELECTRO_HYDRAULIC: 'elHyd', + VALVE_TYPE: 'valveType', + BUTTERFLY: 'butterfly', + CHECK: 'check', + GATE: 'gate', + GLOBE: 'globe', + NEEDLE: 'needle', + PLUG: 'plug', + SELF_DRAINING: 'selfDrain', + ANGLE: 'angle', + ANGLE_GLOBE: 'angleGlobe', + THREE_WAY: 'threeWay', + ANGLE_BLOWDOWN: 'angBlow', + BALL: 'ball' +}; +mxShapePidValve.prototype.customProperties = [{ + name: 'defState', + dispName: 'Default State', + type: 'enum', + defVal: 'open', + enumList: [{ + val: 'closed', + dispName: 'Closed' + }, { + val: 'open', + dispName: 'Open' + }] +}, { + name: 'actuator', + dispName: 'Actuator', + type: 'enum', + defVal: 'man', + enumList: [{ + val: 'man', + dispName: 'Manual' + }, { + val: 'diaph', + dispName: 'Diphragm' + }, { + val: 'balDiaph', + dispName: 'Balanced Diaphragm' + }, { + val: 'motor', + dispName: 'Motor' + }, { + val: 'none', + dispName: 'None' + }, { + val: 'spring', + dispName: 'Spring' + }, { + val: 'pilot', + dispName: 'Pilot' + }, { + val: 'powered', + dispName: 'Powered' + }, { + val: 'solenoid', + dispName: 'Solenoid' + }, { + val: 'solenoidManRes', + dispName: 'Solenoid w/ Manual Reset' + }, { + val: 'singActing', + dispName: 'Single Acting' + }, { + val: 'dblActing', + dispName: 'Double Acting' + }, { + val: 'pilotCyl', + dispName: 'Pilot Cylinder' + }, { + val: 'digital', + dispName: 'Digital' + }, { + val: 'weight', + dispName: 'Weight' + }, { + val: 'key', + dispName: 'Key' + }, { + val: 'elHyd', + dispName: 'Electro-Hidraulic' + }] +}, { + name: 'valveType', + dispName: 'Type', + type: 'enum', + defVal: 'gate', + enumList: [{ + val: 'butterfly', + dispName: 'Butterfly' + }, { + val: 'check', + dispName: 'check' + }, { + val: 'gate', + dispName: 'Gate' + }, { + val: 'globe', + dispName: 'Globe' + }, { + val: 'needle', + dispName: 'Needle' + }, { + val: 'plug', + dispName: 'Plug' + }, { + val: 'selfDrain', + dispName: 'Self Draining' + }, { + val: 'angle', + dispName: 'Angle' + }, { + val: 'angleGlobe', + dispName: 'Angle Globe' + }, { + val: 'threeWay', + dispName: 'Three Way' + }, { + val: 'ball', + dispName: 'Ball' + }] +}]; + +mxShapePidValve.prototype.paintVertexShape = function (c, x, y, w, h) { + var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); + var actuator = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.ACTUATOR, mxShapePidValve.prototype.cst.NONE); + var actH = 0; + + if (actuator !== 'none') { + if (this.isAngleVariant(valveType)) { + actH = h * 0.3333; + } else { + actH = h * 0.4; + } + } + + c.translate(x, y); + c.setLineJoin('round'); + this.background(c, x, y, w, h, valveType, actuator, actH); + c.setShadow(false); + this.foreground(c, x, y, w, h, valveType, actuator, actH); +}; + +mxShapePidValve.prototype.background = function (c, x, y, w, h, valveType, actuator, actH) { + if (actuator !== mxShapePidValve.prototype.cst.NONE) { + if (this.isAngleVariant(valveType)) { + this.drawActuatorBg(c, x, y, w, h / 1.2, actuator, actH); + } else { + this.drawActuatorBg(c, x, y, w, h, actuator, actH); + } + } + + if (this.isGateVariant(valveType)) { + this.drawGateVariantBg(c, 0, 0, w, h, valveType, actuator, actH); + } else if (this.isAngleVariant(valveType)) { + this.drawAngleVariantBg(c, 0, 0, w, h, valveType, actuator, actH); + } else if (valveType === mxShapePidValve.prototype.cst.BUTTERFLY) { + this.drawButterflyValve(c, 0, 0, w, h, actuator, actH); + } else if (valveType === mxShapePidValve.prototype.cst.CHECK) { + this.drawCheckValve(c, 0, 0, w, h, actuator, actH); + } +}; + +mxShapePidValve.prototype.foreground = function (c, x, y, w, h, valveType, actuator, actH) { + var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); + + if (actuator !== mxShapePidValve.prototype.cst.NONE) { + if (this.isAngleVariant(valveType)) { + this.drawActuatorFg(c, x, y, w, h / 1.2, actuator, actH); + } else { + this.drawActuatorFg(c, x, y, w, h, actuator, actH); + } + } + + if (this.isGateVariant(valveType)) { + this.drawGateVariantFg(c, 0, 0, w, h, valveType, actuator, actH); + } + + if (this.isAngleVariant(valveType)) { + this.drawAngleVariantFg(c, 0, 0, w, h, valveType, actuator, actH); + } +}; + +mxShapePidValve.prototype.drawActuatorBg = function (c, x, y, w, h, actuator) { + if (this.isSquareVariant(actuator)) { + c.translate(w * 0.325, 0); + this.drawSquareAct(c, w * 0.35, h * 0.7, actuator); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidValve.prototype.cst.MANUAL) { + c.translate(w * 0.25, h * 0.15); + this.drawManAct(c, w * 0.5, h * 0.55); + c.translate(-w * 0.25, -h * 0.15); + } else if (actuator === mxShapePidValve.prototype.cst.DIAPHRAGM) { + c.translate(w * 0.25, h * 0.1); + this.drawDiaphAct(c, w * 0.5, h * 0.6); + c.translate(-w * 0.25, -h * 0.1); + } else if (actuator === mxShapePidValve.prototype.cst.BALANCED_DIAPHRAGM) { + c.translate(w * 0.25, h * 0.1); + this.drawBalDiaphActBg(c, w * 0.5, h * 0.6); + c.translate(-w * 0.25, -h * 0.1); + } else if (actuator === mxShapePidValve.prototype.cst.MOTOR || actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) { + c.translate(w * 0.325, 0); + this.drawCircleAct(c, w * 0.35, h * 0.7, actuator); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidValve.prototype.cst.SPRING) { + c.translate(w * 0.36, 0); + this.drawSpringAct(c, w * 0.28, h * 0.7); + c.translate(-w * 0.36, 0); + } else if (actuator === mxShapePidValve.prototype.cst.SOLENOID_MANUAL_RESET) { + c.translate(w * 0.325, 0); + this.drawSolenoidManResetAct(c, w * 0.575, h * 0.7); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidValve.prototype.cst.SINGLE_ACTING) { + c.translate(w * 0.35, 0); + this.drawSingActingActBg(c, w * 0.65, h * 0.7); + c.translate(-w * 0.35, 0); + } else if (actuator === mxShapePidValve.prototype.cst.DOUBLE_ACTING) { + c.translate(w * 0.35, 0); + this.drawDblActingActBg(c, w * 0.65, h * 0.7); + c.translate(-w * 0.35, 0); + } else if (actuator === mxShapePidValve.prototype.cst.PILOT_CYLINDER) { + c.translate(w * 0.35, 0); + this.drawPilotCylinderActBg(c, w * 0.65, h * 0.7); + c.translate(-w * 0.35, 0); + } else if (actuator === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) { + c.translate(w * 0.5, h * 0.2); + this.drawAngleBlowdownAct(c, w * 0.4, h * 0.5); + c.translate(-w * 0.5, -h * 0.2); + } +}; + +mxShapePidValve.prototype.drawActuatorFg = function (c, x, y, w, h, actuator) { + if (actuator === mxShapePidValve.prototype.cst.BALANCED_DIAPHRAGM) { + c.translate(w * 0.25, h * 0.1); + this.drawBalDiaphActFg(c, w * 0.5, h * 0.6); + c.translate(-w * 0.25, -h * 0.1); + } else if (actuator === mxShapePidValve.prototype.cst.SINGLE_ACTING || actuator === mxShapePidValve.prototype.cst.DOUBLE_ACTING || actuator === mxShapePidValve.prototype.cst.PILOT_CYLINDER) { + c.translate(w * 0.35, 0); + this.drawActingActFg(c, w * 0.65, h * 0.7); + c.translate(-w * 0.35, 0); + } +}; + +mxShapePidValve.prototype.drawManAct = function (c, w, h) { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapePidValve.prototype.drawDiaphAct = function (c, w, h) { + c.begin(); + c.moveTo(w * 0.5, h * 0.2); + c.lineTo(w * 0.5, h); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.2); + c.arcTo(w * 0.6, h * 0.4, 0, 0, 1, w, h * 0.2); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidValve.prototype.drawBalDiaphActBg = function (c, w, h) { + c.ellipse(0, 0, w, h * 0.3); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapePidValve.prototype.drawBalDiaphActFg = function (c, w, h) { + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w, h * 0.15); + c.stroke(); +}; + +mxShapePidValve.prototype.drawCircleAct = function (c, w, h, actuator) { + c.ellipse(0, 0, w, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.stroke(); + var m = ''; + + if (actuator === mxShapePidValve.prototype.cst.MOTOR) { + m = 'M'; + } else if (actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) { + m = 'E/H'; + } + + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawSpringAct = function (c, w, h) { + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.32, h * 0.16); + c.lineTo(w * 0.68, h * 0.08); + c.moveTo(w * 0.21, h * 0.32); + c.lineTo(w * 0.79, h * 0.20); + c.moveTo(w * 0.1, h * 0.52); + c.lineTo(w * 0.9, h * 0.36); + c.moveTo(0, h * 0.72); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxShapePidValve.prototype.drawSolenoidManResetAct = function (c, w, h) { + c.rect(0, 0, w * 0.61, h * 0.46); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.56, h * 0.6); + c.lineTo(w * 0.78, h * 0.5); + c.lineTo(w, h * 0.6); + c.lineTo(w * 0.78, h * 0.7); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.305, h * 0.46); + c.lineTo(w * 0.305, h); + c.moveTo(w * 0.305, h * 0.6); + c.lineTo(w * 0.56, h * 0.6); + c.stroke(); + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.305, h * 0.23, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontStyle(0); + c.setFontSize(Math.min(w, h) * 0.15); + c.text(w * 0.78, h * 0.6, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawSingActingActBg = function (c, w, h) { + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.23); + c.lineTo(w, h * 0.23); + c.moveTo(w * 0.77, h * 0.15); + c.lineTo(w * 0.69, h * 0.31); + c.moveTo(w * 0.82, h * 0.15); + c.lineTo(w * 0.74, h * 0.31); + c.stroke(); +}; + +mxShapePidValve.prototype.drawActingActFg = function (c, w, h) { + c.begin(); + c.moveTo(w * 0.23, h * 0.23); + c.lineTo(w * 0.23, h * 0.46); + c.moveTo(0, h * 0.23); + c.lineTo(w * 0.46, h * 0.23); + c.stroke(); +}; + +mxShapePidValve.prototype.drawDblActingActBg = function (c, w, h) { + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.115); + c.lineTo(w, h * 0.115); + c.moveTo(w * 0.77, h * 0.035); + c.lineTo(w * 0.69, h * 0.195); + c.moveTo(w * 0.82, h * 0.035); + c.lineTo(w * 0.74, h * 0.195); + c.moveTo(w * 0.46, h * 0.345); + c.lineTo(w, h * 0.345); + c.moveTo(w * 0.77, h * 0.265); + c.lineTo(w * 0.69, h * 0.425); + c.moveTo(w * 0.82, h * 0.265); + c.lineTo(w * 0.74, h * 0.425); + c.stroke(); +}; + +mxShapePidValve.prototype.drawPilotCylinderActBg = function (c, w, h) { + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.23); + c.lineTo(w * 0.77, h * 0.23); + c.stroke(); + c.rect(w * 0.77, h * 0.115, w * 0.23, h * 0.23); + c.fillAndStroke(); + c.setFontStyle(0); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.15); + c.text(w * 0.885, h * 0.23, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawAngleBlowdownAct = function (c, w, h) { + c.begin(); + c.moveTo(w * 0.34, 0); + c.lineTo(w, h * 0.405); + c.moveTo(0, h); + c.lineTo(w * 0.665, h * 0.205); + c.stroke(); +}; + +mxShapePidValve.prototype.drawSquareAct = function (c, w, h, actuator) { + c.rect(0, 0, w, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.stroke(); + var m = ''; + + if (actuator === mxShapePidValve.prototype.cst.PILOT) { + m = 'P'; + } else if (actuator === mxShapePidValve.prototype.cst.SOLENOID) { + m = 'S'; + } else if (actuator === mxShapePidValve.prototype.cst.DIGITAL) { + m = 'D'; + } else if (actuator === mxShapePidValve.prototype.cst.WEIGHT) { + m = 'W'; + } else if (actuator === mxShapePidValve.prototype.cst.KEY) { + m = 'K'; + } + + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawGateVariantFg = function (c, x, y, w, h, valveType, actuator, actH) { + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + if (valveType === mxShapePidValve.prototype.cst.BALL) { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.fillAndStroke(); + } else if (valveType === mxShapePidValve.prototype.cst.GLOBE) { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } else if (valveType === mxShapePidValve.prototype.cst.PLUG) { + this.drawPlug(c, x + w * 0.4, y + actH + (h - actH) * 0.25, w * 0.2, (h - actH) * 0.5); + } else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) { + this.drawNeedle(c, x + w * 0.45, y + actH + (h - actH) * 0.1, w * 0.1, (h - actH) * 0.9); + } else if (valveType === mxShapePidValve.prototype.cst.SELF_DRAINING) { + this.drawDrain(c, x + w * 0.48, y + actH + (h - actH) * 0.5, w * 0.04, (h - actH) * 0.49); + } +}; + +mxShapePidValve.prototype.drawAngleVariantFg = function (c, x, y, w, h, valveType, actuator, actH) { + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + if (valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE) { + if (actuator === 'none') { + c.ellipse(w * 0.34, h * 0.175, w * 0.32, h * 0.4); + } else { + c.ellipse(w * 0.34, h * 0.45, w * 0.32, h * 0.2667); + } + + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } +}; + +mxShapePidValve.prototype.drawGateVariantBg = function (c, x, y, w, h, valveType, actuator, actH) { + if (valveType === mxShapePidValve.prototype.cst.GATE) { + this.drawGateValve(c, x, y + actH, w, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.BALL || valveType === mxShapePidValve.prototype.cst.GLOBE) { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.fillAndStroke(); + this.drawGateValve(c, x, y + actH, w, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.PLUG) { + this.drawPlug(c, x + w * 0.4, y + actH + (h - actH) * 0.25, w * 0.2, (h - actH) * 0.5); + this.drawGateValve(c, x, y + actH, w, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) { + this.drawNeedle(c, x + w * 0.45, y + actH + (h - actH) * 0.1, w * 0.1, (h - actH) * 0.9); + this.drawGateValve(c, x, y + actH, w, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.SELF_DRAINING) { + this.drawDrain(c, x + w * 0.48, y + actH + (h - actH) * 0.5, w * 0.04, (h - actH) * 0.49); + this.drawGateValve(c, x, y + actH, w, h - actH); + } +}; + +mxShapePidValve.prototype.drawAngleVariantBg = function (c, x, y, w, h, valveType, actuator, actH) { + if (valveType === mxShapePidValve.prototype.cst.ANGLE) { + this.drawAngleValve(c, w * 0.2, y + actH, w * 0.8, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE) { + this.drawAngleGlobeValveBg(c, w * 0.2, y + actH, w * 0.8, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.THREE_WAY) { + this.drawThreeWayValve(c, 0, y + actH, w, h - actH); + } else if (valveType === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) { + this.drawAngleBlowdownValve(c, x, y + actH, w, h - actH); + } +}; + +mxShapePidValve.prototype.drawPlug = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawNeedle = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawDrain = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.96); + c.stroke(); + c.begin(); + c.moveTo(0, h * 0.9); + c.lineTo(w, h * 0.9); + c.lineTo(w * 0.5, h); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawGateValve = function (c, x, y, w, h) { + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(0, h); + c.close(); + c.moveTo(w, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, h); + c.close(); + + if (defState === mxShapePidValve.prototype.cst.CLOSED) { + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } else { + c.fillAndStroke(); + } + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleValve = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.close(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleGlobeValveBg = function (c, x, y, w, h) { + c.translate(x, y); + c.ellipse(w * 0.175, h * 0.175, w * 0.4, h * 0.4); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.close(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleGlobeValveFg = function (c, x, y, w, h) { + c.translate(x, y); + c.ellipse(w * 0.275, h * 0.275, w * 0.2, h * 0.2); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawThreeWayValve = function (c, x, y, w, h) { + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.375); + c.lineTo(0, h * 0.75); + c.close(); + c.moveTo(w, 0); + c.lineTo(w * 0.5, h * 0.375); + c.lineTo(w, h * 0.75); + c.close(); + c.moveTo(w * 0.5, h * 0.375); + c.lineTo(w * 0.8, h); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleBlowdownValve = function (c, x, y, w, h) {}; + +mxShapePidValve.prototype.drawButterflyValve = function (c, x, y, w, h, actuator, actH) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var yv = y + actH; + var hv = h - actH; + c.translate(x, yv); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, hv); + c.moveTo(w, 0); + c.lineTo(w, hv); + c.moveTo(w * 0.05, hv * 0.05); + c.lineTo(w * 0.95, hv * 0.95); + c.fillAndStroke(); + c.ellipse(w * 0.4, hv * 0.33, w * 0.2, hv * 0.33); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawCheckValve = function (c, x, y, w, h, actuator, actH) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var yv = y + actH; + var hv = h - actH; + c.translate(x, yv); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, hv); + c.moveTo(w, 0); + c.lineTo(w, hv); + c.moveTo(w * 0.05, hv * 0.05); + c.lineTo(w * 0.95, hv * 0.95); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.8925, hv * 0.815); + c.lineTo(w * 0.957, hv * 0.955); + c.lineTo(w * 0.85, hv * 0.928); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.isGateVariant = function (valveType) { + if (valveType === mxShapePidValve.prototype.cst.GATE || valveType === mxShapePidValve.prototype.cst.BALL || valveType === mxShapePidValve.prototype.cst.PLUG || valveType === mxShapePidValve.prototype.cst.NEEDLE || valveType === mxShapePidValve.prototype.cst.SELF_DRAINING || valveType === mxShapePidValve.prototype.cst.GLOBE) { + return true; + } else { + return false; + } +}; + +mxShapePidValve.prototype.isAngleVariant = function (valveType) { + if (valveType === mxShapePidValve.prototype.cst.ANGLE || valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE || valveType === mxShapePidValve.prototype.cst.THREE_WAY || valveType === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) { + return true; + } else { + return false; + } +}; + +mxShapePidValve.prototype.isSquareVariant = function (actType) { + if (actType === mxShapePidValve.prototype.cst.PILOT || actType === mxShapePidValve.prototype.cst.SOLENOID || actType === mxShapePidValve.prototype.cst.POWERED || actType === mxShapePidValve.prototype.cst.DIGITAL || actType === mxShapePidValve.prototype.cst.WEIGHT || actType === mxShapePidValve.prototype.cst.KEY) { + return true; + } else { + return false; + } +}; + +mxCellRenderer.registerShape(mxShapePidValve.prototype.cst.SHAPE_VALVE, mxShapePidValve); + +function mxShapePidIntBlockBleedValve(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidIntBlockBleedValve, mxShapePidValve); + +mxShapePidIntBlockBleedValve.prototype.paintVertexShape = function (c, x, y, w, h) { + var actuator = mxUtils.getValue(this.style, mxShapePidIntBlockBleedValve.prototype.cst.ACTUATOR, mxShapePidIntBlockBleedValve.prototype.cst.NONE); + var actH = 0; + + if (actuator !== 'none') { + actH = h * 0.2353; + } + + c.translate(x, y); + c.setLineJoin('round'); + this.background(c, x, y, w, h, actuator, actH); + c.setShadow(false); + this.foreground(c, x, y, w, h, actuator, actH); +}; + +mxShapePidIntBlockBleedValve.prototype.background = function (c, x, y, w, h, actuator, actH) { + if (actuator !== mxShapePidIntBlockBleedValve.prototype.cst.NONE) { + this.drawActuatorBg(c, x, y, w, h, actuator); + } + + this.drawValveBg(c, 0, actH, w, h - actH); +}; + +mxShapePidIntBlockBleedValve.prototype.foreground = function (c, x, y, w, h, actuator, actH) { + if (actuator !== mxShapePidIntBlockBleedValve.prototype.cst.NONE) { + this.drawActuatorFg(c, x, y, w, h, actuator); + } +}; + +mxShapePidIntBlockBleedValve.prototype.drawValveBg = function (c, x, y, w, h) { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.23); + c.lineTo(0, h * 0.46); + c.close(); + c.moveTo(w * 0.5, h * 0.23); + c.lineTo(w, 0); + c.lineTo(w, h * 0.46); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.5, h * 0.23); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.lineTo(w * 0.5, h * 0.75); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.3, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w * 0.7, h); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidIntBlockBleedValve.prototype.drawActuatorBg = function (c, x, y, w, h, actuator) { + if (this.isSquareVariant(actuator)) { + c.translate(w * 0.325, 0); + this.drawSquareAct(c, w * 0.35, h * 0.4112, actuator); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.MANUAL) { + c.translate(w * 0.25, h * 0.0882); + this.drawManAct(c, w * 0.5, h * 0.323); + c.translate(-w * 0.25, -h * 0.0882); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.DIAPHRAGM) { + c.translate(w * 0.25, h * 0.0588); + this.drawDiaphAct(c, w * 0.5, h * 0.3524); + c.translate(-w * 0.25, -h * 0.0588); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.BALANCED_DIAPHRAGM) { + c.translate(w * 0.25, h * 0.0588); + this.drawBalDiaphActBg(c, w * 0.5, h * 0.3524); + c.translate(-w * 0.25, -h * 0.0588); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.MOTOR || actuator === mxShapePidIntBlockBleedValve.prototype.cst.ELECTRO_HYDRAULIC) { + c.translate(w * 0.325, 0); + this.drawCircleAct(c, w * 0.35, h * 0.4112, actuator); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SPRING) { + c.translate(w * 0.36, 0); + this.drawSpringAct(c, w * 0.28, h * 0.4112); + c.translate(-w * 0.36, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SOLENOID_MANUAL_RESET) { + c.translate(w * 0.325, 0); + this.drawSolenoidManResetAct(c, w * 0.575, h * 0.4112); + c.translate(-w * 0.325, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SINGLE_ACTING) { + c.translate(w * 0.35, 0); + this.drawSingActingActBg(c, w * 0.65, h * 0.4112); + c.translate(-w * 0.35, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.DOUBLE_ACTING) { + c.translate(w * 0.35, 0); + this.drawDblActingActBg(c, w * 0.65, h * 0.4112); + c.translate(-w * 0.35, 0); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.PILOT_CYLINDER) { + c.translate(w * 0.35, 0); + this.drawPilotCylinderActBg(c, w * 0.65, h * 0.4112); + c.translate(-w * 0.35, 0); + } +}; + +mxShapePidIntBlockBleedValve.prototype.drawActuatorFg = function (c, x, y, w, h, actuator) { + if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.BALANCED_DIAPHRAGM) { + c.translate(w * 0.25, h * 0.0588); + this.drawBalDiaphActFg(c, w * 0.5, h * 0.3524); + c.translate(-w * 0.25, -h * 0.0588); + } else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SINGLE_ACTING || actuator === mxShapePidIntBlockBleedValve.prototype.cst.DOUBLE_ACTING || actuator === mxShapePidIntBlockBleedValve.prototype.cst.PILOT_CYLINDER) { + c.translate(w * 0.35, 0); + this.drawActingActFg(c, w * 0.65, h * 0.4112); + c.translate(-w * 0.35, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.pid2valves.blockBleedValve', mxShapePidIntBlockBleedValve); + +function mxShapePidAutoRecircValve(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxShapePidAutoRecircValve, mxShape); + +mxShapePidAutoRecircValve.prototype.paintVertexShape = function (c, x, y, w, h) { + c.setLineJoin('round'); + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.08, h * 0.08); + c.lineTo(w * 0.08, h * 0.92); + c.moveTo(w * 0.92, h * 0.08); + c.lineTo(w * 0.92, h * 0.92); + c.moveTo(w * 0.12, h * 0.122); + c.lineTo(w * 0.8738, h * 0.8837); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.55, h * 0.05); + c.lineTo(w * 0.45, h * 0.15); + c.lineTo(w * 0.55, h * 0.25); + c.lineTo(w * 0.45, h * 0.35); + c.lineTo(w * 0.55, h * 0.45); + c.lineTo(w * 0.49, h * 0.5); + c.stroke(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.begin(); + c.moveTo(w * 0.8257, h * 0.7695); + c.lineTo(w * 0.8797, h * 0.888); + c.lineTo(w * 0.79, h * 0.8651); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); +}; + +mxCellRenderer.registerShape('mxgraph.pid2valves.autoRecircValve', mxShapePidAutoRecircValve); diff --git a/data/plugins/grafana-flowcharting/dist/libs/shapes/rack/mxRack.js b/data/plugins/grafana-flowcharting/dist/libs/shapes/rack/mxRack.js new file mode 100644 index 0000000000000..cfbccd03f7bf7 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/libs/shapes/rack/mxRack.js @@ -0,0 +1,918 @@ +"use strict"; + +function mxRackContainer(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackContainer, mxShape); +mxRackContainer.unitSize = 20; +mxRackContainer.prototype.cst = { + SHAPE_RACK_CONTAINER: 'mxgraph.rackGeneral.container', + TEXT_COLOR: 'textColor', + NUMBER_DISPLAY: 'numDisp', + OFF: 'off', + DIR_ASC: 'ascend', + DIR_DESC: 'descend' +}; +mxRackContainer.prototype.customProperties = [{ + name: 'fillColor2', + dispName: 'Cabinet Color', + type: 'color' +}, { + name: 'textColor', + dispName: 'Numbers Color', + type: 'color' +}, { + name: 'numDisp', + dispName: 'Display Numbers', + type: 'enum', + enumList: [{ + val: 'off', + dispName: 'Off' + }, { + val: 'ascend', + dispName: 'Ascending' + }, { + val: 'descend', + dispName: 'Descending' + }], + onChange: function onChange(graph, newValue) { + graph.setCellStyles('marginLeft', newValue == 'off' ? 9 : 33, graph.getSelectionCells()); + } +}]; + +mxRackContainer.prototype.paintVertexShape = function (c, x, y, w, h) { + var fontSize = 12; + var displayNumbers = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.NUMBER_DISPLAY, mxRackContainer.prototype.cst.DIR_ASC); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', '#f4f4f4'); + + if (displayNumbers !== mxRackContainer.prototype.cst.OFF) { + c.translate(x + fontSize * 2, y); + w = Math.max(w - fontSize * 2, 0); + } else { + c.translate(x, y); + } + + ; + c.setFillColor(fillColor); + this.background(c, w, h, fontSize); + c.setShadow(false); + c.setFillColor(fillColor2); + this.foreground(c, w, h, fontSize); + + if (displayNumbers !== mxRackContainer.prototype.cst.OFF && w > 18 + fontSize * 2) { + this.sideText(c, w, h, fontSize); + } + + ; +}; + +mxRackContainer.prototype.background = function (c, w, h, fontSize) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackContainer.prototype.foreground = function (c, w, h, fontSize) { + if (w > 18 + fontSize * 2 && h > 42) { + c.rect(0, 0, w, 21); + c.fillAndStroke(); + c.rect(0, h - 21, w, 21); + c.fillAndStroke(); + c.rect(0, 21, 9, h - 42); + c.fillAndStroke(); + c.rect(w - 9, 21, 9, h - 42); + c.fillAndStroke(); + c.ellipse(2.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(w - 8.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(2.5, h - 13.5, 6, 6); + c.stroke(); + c.ellipse(w - 8.5, h - 13.5, 6, 6); + c.stroke(); + } +}; + +mxRackContainer.prototype.sideText = function (c, w, h, fontSize) { + var fontColor = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.TEXT_COLOR, '#666666'); + var displayNumbers = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.NUMBER_DISPLAY, mxRackContainer.prototype.cst.DIR_ASC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var units = Math.floor((Math.abs(h) - 42) / mxRackContainer.unitSize); + + for (var i = 0; i < units; i++) { + var displayNumber = displayNumbers === mxRackContainer.prototype.cst.DIR_DESC ? (i + 1).toString() : (units - i).toString(); + c.text(-fontSize, 21 + mxRackContainer.unitSize * 0.5 + i * mxRackContainer.unitSize, 0, 0, displayNumber, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.begin(); + + for (var i = 0; i < units + 1; i++) { + c.moveTo(-2 * fontSize, 21 + i * mxRackContainer.unitSize); + c.lineTo(0, 21 + i * mxRackContainer.unitSize); + } + + ; + c.stroke(); +}; + +function mxRackPlate(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = 1; +} + +; +mxUtils.extend(mxRackPlate, mxShape); +mxRackPlate.prototype.cst = { + SHAPE_RACK_PLATE: 'mxgraph.rackGeneral.plate' +}; + +mxRackPlate.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackPlate.prototype.background = function (c, w, h) { + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackPlate.prototype.foreground = function (c, w, h) { + var bufferSize = 9; + + if (w > bufferSize * 2) { + c.save(); + c.setFillColor('#000000'); + c.setAlpha(0.23); + c.rect(0, 0, bufferSize, h); + c.fill(); + c.rect(w - bufferSize, 0, bufferSize, h); + c.fill(); + c.restore(); + c.rect(0, 0, w, h); + c.stroke(); + c.rect(bufferSize, 0, w - bufferSize * 2, h); + c.stroke(); + } +}; + +function mxRackHorCableDuct(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorCableDuct, mxShape); +mxRackHorCableDuct.prototype.cst = { + SHAPE_RACK_HOR_CABLE_DUCT: 'mxgraph.rackGeneral.horCableDuct' +}; + +mxRackHorCableDuct.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackHorCableDuct.prototype.foreground = function (c, w, h) { + var spaceBuffer = 20; + var unitSpacing = 33; + var unitsAcross = Math.floor((w - spaceBuffer) / unitSpacing); + var buffer = spaceBuffer / 2 + Math.floor((w - spaceBuffer - unitsAcross * unitSpacing) / 2); + + if (unitsAcross > 0) { + for (var i = 0; i <= unitsAcross; i++) { + c.rect(buffer, 0, 3, 7); + c.stroke(); + c.rect(buffer, 7, 3, 7.8); + c.stroke(); + buffer += unitSpacing; + } + } +}; + +function mxRackHorRoutingBank(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorRoutingBank, mxShape); +mxRackHorRoutingBank.prototype.cst = { + SHAPE_RACK_HOR_ROUTING_BANK: 'mxgraph.rackGeneral.horRoutingBank' +}; + +mxRackHorRoutingBank.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank.prototype.background = function (c, w, h) { + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank.prototype.foreground = function (c, w, h) { + var spaceBuffer = 20; + var unitSpacing = 22; + var rectWidth = 16; + var unitsAcross = Math.floor((w - spaceBuffer - rectWidth) / unitSpacing); + var unitsDown = Math.floor(h / mxRackContainer.unitSize); + + if (unitsAcross > 0 && unitsDown > 0) { + for (var i = 0; i < unitsDown; i++) { + var buffer = (spaceBuffer + rectWidth) / 2 + Math.floor((w - spaceBuffer - rectWidth - unitsAcross * unitSpacing) / 2) - rectWidth / 2; + + for (var j = 0; j <= unitsAcross; j++) { + c.rect(buffer, 4 + i * mxRackContainer.unitSize, rectWidth, 6.8); + c.stroke(); + buffer += unitSpacing; + } + } + } +}; + +function mxRackNeatPatch(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackNeatPatch, mxShape); +mxRackNeatPatch.prototype.cst = { + SHAPE_RACK_NEAT_PATCH: 'mxgraph.rackGeneral.neatPatch' +}; + +mxRackNeatPatch.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.mainText(c, w, h); +}; + +mxRackNeatPatch.prototype.background = function (c, w, h) { + c.setFillColor('#666666'); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackNeatPatch.prototype.mainText = function (c, w, h) { + c.setFontSize('12'); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w / 2, h - 6, 0, 0, 'NEAT-PATCH', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +function mxRackShelf(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackShelf, mxShape); +mxRackShelf.prototype.cst = { + SHAPE_RACK_SHELF: 'mxgraph.rackGeneral.shelf' +}; + +mxRackShelf.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf.prototype.background = function (c, w, h) { + c.setStrokeWidth(2); + c.begin(); + c.moveTo(1, 0); + c.lineTo(1, h - 1); + c.lineTo(w - 1, h - 1); + c.lineTo(w - 1, 1); + c.fillAndStroke(); +}; + +function mxRackRackNumbering(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackRackNumbering, mxShape); +mxRackRackNumbering.prototype.cst = { + SHAPE_RACK_RACK_NUMBERING: 'mxgraph.rackGeneral.rackNumbering', + UNIT_NUM: 'unitNum', + UNIT_HEIGHT: 'unitHeight', + TEXT_COLOR: 'textColor', + NUM_DIR: 'numDir', + DIR_ASC: 'ascend', + DIR_DESC: 'descend', + TEXT_SIZE: 'textSize' +}; + +mxRackRackNumbering.prototype.paintVertexShape = function (c, x, y, w, h) { + var unitNum = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.UNIT_NUM, '42')); + var unitH = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.UNIT_HEIGHT, '14.8')); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.TEXT_SIZE, '12')); + c.translate(x, y); + var h = unitNum * unitH; + this.background(c, w, h, fontSize); + c.setShadow(false); + this.sideText(c, w, h, unitNum, unitH, fontSize); +}; + +mxRackRackNumbering.prototype.background = function (c, w, h, fontSize) { + c.rect(fontSize * 3, 0, 160.9, h); + c.fillAndStroke(); +}; + +mxRackRackNumbering.prototype.sideText = function (c, w, h, unitNum, unitH, fontSize) { + var fontColor = mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.TEXT_COLOR, '#666666'); + var numDir = mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.NUM_DIR, mxRackRackNumbering.prototype.cst.DIR_DESC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (numDir === mxRackRackNumbering.prototype.cst.DIR_ASC) { + for (var i = 0; i < unitNum; i++) { + c.text(fontSize, unitH * 0.5 + i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + ; + } else { + for (var i = 0; i < unitNum; i++) { + c.text(fontSize, h - unitH * 0.5 - i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + ; + } + + ; + c.setStrokeColor('#dddddd'); + c.begin(); + + for (var i = 0; i < unitNum + 1; i++) { + c.moveTo(0, i * unitH); + c.lineTo(fontSize * 3, i * unitH); + } + + ; + c.stroke(); +}; + +function mxRackRackCabinet(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackRackCabinet, mxShape); +mxRackRackCabinet.prototype.cst = { + SHAPE_RACK_RACK_CABINET: 'mxgraph.rackGeneral.rackCabinet', + UNIT_NUM: 'unitNum', + UNIT_HEIGHT: 'unitHeight', + TEXT_COLOR: 'textColor', + NUM_DIR: 'numDir', + NUMBER_DISPLAY: 'numDisp', + ON: 'on', + OFF: 'off', + DIR_ASC: 'ascend', + DIR_DESC: 'descend', + TEXT_SIZE: 'textSize' +}; + +mxRackRackCabinet.prototype.paintVertexShape = function (c, x, y, w, h) { + var unitNum = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.UNIT_NUM, '12')); + var unitH = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.UNIT_HEIGHT, '14.8')); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.TEXT_SIZE, '12')); + var numDis = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.NUMBER_DISPLAY, mxRackRackCabinet.prototype.cst.ON); + + if (numDis === mxRackRackCabinet.prototype.cst.ON) { + c.translate(x + fontSize * 2, y); + } else { + c.translate(x, y); + } + + ; + var h = unitNum * unitH + 42; + this.background(c, w, h, fontSize); + c.setShadow(false); + this.foreground(c, w, h, fontSize); + + if (numDis === mxRackRackCabinet.prototype.cst.ON) { + this.sideText(c, w, h, unitNum, unitH, fontSize); + } + + ; +}; + +mxRackRackCabinet.prototype.background = function (c, w, h, fontSize) { + c.setFillColor('#ffffff'); + c.rect(0, 0, 180, h); + c.fillAndStroke(); +}; + +mxRackRackCabinet.prototype.foreground = function (c, w, h, fontSize) { + c.setFillColor('#f4f4f4'); + c.rect(0, 0, 180, 21); + c.fillAndStroke(); + c.rect(0, h - 21, 180, 21); + c.fillAndStroke(); + c.rect(0, 21, 9, h - 42); + c.fillAndStroke(); + c.rect(171, 21, 9, h - 42); + c.fillAndStroke(); + c.ellipse(2.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(171.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(2.5, h - 13.5, 6, 6); + c.stroke(); + c.ellipse(171.5, h - 13.5, 6, 6); + c.stroke(); +}; + +mxRackRackCabinet.prototype.sideText = function (c, w, h, unitNum, unitH, fontSize) { + var fontColor = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.TEXT_COLOR, '#666666'); + var numDir = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.NUM_DIR, mxRackRackCabinet.prototype.cst.DIR_DESC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (numDir === mxRackRackCabinet.prototype.cst.DIR_ASC) { + for (var i = 0; i < unitNum; i++) { + c.text(-fontSize, 21 + unitH * 0.5 + i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + ; + } else { + for (var i = 0; i < unitNum; i++) { + c.text(-fontSize, h - 21 - unitH * 0.5 - i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + ; + } + + ; + c.setStrokeColor('#dddddd'); + c.begin(); + + for (var i = 0; i < unitNum + 1; i++) { + c.moveTo(-2 * fontSize, 21 + i * unitH); + c.lineTo(0, 21 + i * unitH); + } + + ; + c.stroke(); +}; + +function mxRackHorCableDuct1U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorCableDuct1U, mxShape); +mxRackHorCableDuct1U.prototype.cst = { + SHAPE_RACK_HOR_CABLE_DUCT_1U: 'mxgraph.rackGeneral.horCableDuct1U' +}; + +mxRackHorCableDuct1U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct1U.prototype.background = function (c, w, h) { + c.rect(0, 0, 160.9, 14.8); + c.fillAndStroke(); +}; + +mxRackHorCableDuct1U.prototype.foreground = function (c, w, h) { + c.rect(12, 0, 3, 7); + c.stroke(); + c.rect(12, 7, 3, 7.8); + c.stroke(); + c.rect(45.5, 0, 3, 7); + c.stroke(); + c.rect(45.5, 7, 3, 7.8); + c.stroke(); + c.rect(79, 0, 3, 7); + c.stroke(); + c.rect(79, 7, 3, 7.8); + c.stroke(); + c.rect(112.5, 0, 3, 7); + c.stroke(); + c.rect(112.5, 7, 3, 7.8); + c.stroke(); + c.rect(146, 0, 3, 7); + c.stroke(); + c.rect(146, 7, 3, 7.8); + c.stroke(); +}; + +function mxRackHorCableDuct2U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorCableDuct2U, mxShape); +mxRackHorCableDuct2U.prototype.cst = { + SHAPE_RACK_HOR_CABLE_DUCT_2U: 'mxgraph.rackGeneral.horCableDuct2U' +}; + +mxRackHorCableDuct2U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct2U.prototype.background = function (c, w, h) { + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackHorCableDuct2U.prototype.foreground = function (c, w, h) { + c.rect(12, 0, 3, 7); + c.stroke(); + c.rect(12, 7, 3, 22.6); + c.stroke(); + c.rect(45.5, 0, 3, 7); + c.stroke(); + c.rect(45.5, 7, 3, 22.6); + c.stroke(); + c.rect(79, 0, 3, 7); + c.stroke(); + c.rect(79, 7, 3, 22.6); + c.stroke(); + c.rect(112.5, 0, 3, 7); + c.stroke(); + c.rect(112.5, 7, 3, 22.6); + c.stroke(); + c.rect(146, 0, 3, 7); + c.stroke(); + c.rect(146, 7, 3, 22.6); + c.stroke(); +}; + +function mxRackHorRoutingBank1U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorRoutingBank1U, mxShape); +mxRackHorRoutingBank1U.prototype.cst = { + SHAPE_RACK_HOR_ROUTING_BANK_1U: 'mxgraph.rackGeneral.horRoutingBank1U' +}; + +mxRackHorRoutingBank1U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank1U.prototype.background = function (c, w, h) { + c.rect(0, 0, 160.9, 14.8); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank1U.prototype.foreground = function (c, w, h) { + c.rect(10, 4, 17, 6.8); + c.stroke(); + c.rect(31, 4, 17, 6.8); + c.stroke(); + c.rect(52, 4, 17, 6.8); + c.stroke(); + c.rect(73, 4, 17, 6.8); + c.stroke(); + c.rect(94, 4, 17, 6.8); + c.stroke(); + c.rect(115, 4, 17, 6.8); + c.stroke(); + c.rect(136, 4, 17, 6.8); + c.stroke(); +}; + +function mxRackHorRoutingBank2U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackHorRoutingBank2U, mxShape); +mxRackHorRoutingBank2U.prototype.cst = { + SHAPE_RACK_HOR_ROUTING_BANK_2U: 'mxgraph.rackGeneral.horRoutingBank2U' +}; + +mxRackHorRoutingBank2U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank2U.prototype.background = function (c, w, h) { + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank2U.prototype.foreground = function (c, w, h) { + c.rect(10, 4, 17, 6.8); + c.stroke(); + c.rect(31, 4, 17, 6.8); + c.stroke(); + c.rect(52, 4, 17, 6.8); + c.stroke(); + c.rect(73, 4, 17, 6.8); + c.stroke(); + c.rect(94, 4, 17, 6.8); + c.stroke(); + c.rect(115, 4, 17, 6.8); + c.stroke(); + c.rect(136, 4, 17, 6.8); + c.stroke(); + c.rect(10, 18.8, 17, 6.8); + c.stroke(); + c.rect(31, 18.8, 17, 6.8); + c.stroke(); + c.rect(52, 18.8, 17, 6.8); + c.stroke(); + c.rect(73, 18.8, 17, 6.8); + c.stroke(); + c.rect(94, 18.8, 17, 6.8); + c.stroke(); + c.rect(115, 18.8, 17, 6.8); + c.stroke(); + c.rect(136, 18.8, 17, 6.8); + c.stroke(); +}; + +function mxRackNeatPatch2U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackNeatPatch2U, mxShape); +mxRackNeatPatch2U.prototype.cst = { + SHAPE_RACK_NEAT_PATCH_2U: 'mxgraph.rackGeneral.neatPatch2U' +}; + +mxRackNeatPatch2U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.mainText(c, w, h); +}; + +mxRackNeatPatch2U.prototype.background = function (c, w, h) { + c.setFillColor('#666666'); + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackNeatPatch2U.prototype.mainText = function (c, w, h) { + c.setFontSize('12'); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(80.45, 24, 0, 0, 'NEAT-PATCH', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +function mxRackShelf1U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackShelf1U, mxShape); +mxRackShelf1U.prototype.cst = { + SHAPE_RACK_SHELF_1U: 'mxgraph.rackGeneral.shelf1U' +}; + +mxRackShelf1U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf1U.prototype.background = function (c, w, h) { + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 14.8); + c.lineTo(160.9, 14.8); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +function mxRackShelf2U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackShelf2U, mxShape); +mxRackShelf2U.prototype.cst = { + SHAPE_RACK_SHELF_2U: 'mxgraph.rackGeneral.shelf2U' +}; + +mxRackShelf2U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf2U.prototype.background = function (c, w, h) { + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 29.6); + c.lineTo(160.9, 29.6); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +function mxRackShelf4U(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackShelf4U, mxShape); +mxRackShelf4U.prototype.cst = { + SHAPE_RACK_SHELF_4U: 'mxgraph.rackGeneral.shelf4U' +}; + +mxRackShelf4U.prototype.paintVertexShape = function (c, x, y, w, h) { + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf4U.prototype.background = function (c, w, h) { + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 59.2); + c.lineTo(160.9, 59.2); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +function mxRackChannelBase(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackChannelBase, mxShape); +mxRackChannelBase.prototype.cst = { + SHAPE_RACK_CHANNEL_BASE: 'mxgraph.rackGeneral.channelBase' +}; + +mxRackChannelBase.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(w, 20); + h = Math.max(h, 20); + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackChannelBase.prototype.background = function (c, w, h) { + c.rect(10, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(w - 15, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(0, 0, w, h - 5); + c.fillAndStroke(); +}; + +mxRackChannelBase.prototype.foreground = function (c, w, h) { + c.setFillColor('#000000'); + c.rect(10, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(w - 15, h - 15, 5, 15); + c.fillAndStroke(); +}; + +function mxRackCabinetLeg(bounds, fill, stroke, strokewidth) { + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = strokewidth != null ? strokewidth : 1; +} + +; +mxUtils.extend(mxRackCabinetLeg, mxShape); +mxRackCabinetLeg.prototype.cst = { + SHAPE_RACK_CABINET_LEG: 'mxgraph.rackGeneral.cabinetLeg' +}; + +mxRackCabinetLeg.prototype.paintVertexShape = function (c, x, y, w, h) { + w = Math.max(w, 20); + h = Math.max(h, 20); + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackCabinetLeg.prototype.background = function (c, w, h) { + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(5, h - 10); + c.lineTo(5, h - 12); + c.lineTo(9, h - 12); + c.lineTo(9, h - 10); + c.lineTo(w - 10, h - 10); + c.lineTo(w - 10, 9); + c.lineTo(w - 12, 9); + c.lineTo(w - 12, 5); + c.lineTo(w - 10, 5); + c.lineTo(w - 10, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxRackContainer.prototype.cst.SHAPE_RACK_CONTAINER, mxRackContainer); +mxCellRenderer.registerShape(mxRackHorCableDuct.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT, mxRackHorCableDuct); +mxCellRenderer.registerShape(mxRackHorRoutingBank.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK, mxRackHorRoutingBank); +mxCellRenderer.registerShape(mxRackNeatPatch.prototype.cst.SHAPE_RACK_NEAT_PATCH, mxRackNeatPatch); +mxCellRenderer.registerShape(mxRackShelf.prototype.cst.SHAPE_RACK_SHELF, mxRackShelf); +mxCellRenderer.registerShape(mxRackPlate.prototype.cst.SHAPE_RACK_PLATE, mxRackPlate); +mxCellRenderer.registerShape(mxRackRackNumbering.prototype.cst.SHAPE_RACK_RACK_NUMBERING, mxRackRackNumbering); +mxCellRenderer.registerShape(mxRackRackCabinet.prototype.cst.SHAPE_RACK_RACK_CABINET, mxRackRackCabinet); +mxCellRenderer.registerShape(mxRackHorCableDuct1U.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT_1U, mxRackHorCableDuct1U); +mxCellRenderer.registerShape(mxRackHorCableDuct2U.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT_2U, mxRackHorCableDuct2U); +mxCellRenderer.registerShape(mxRackHorRoutingBank1U.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK_1U, mxRackHorRoutingBank1U); +mxCellRenderer.registerShape(mxRackHorRoutingBank2U.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK_2U, mxRackHorRoutingBank2U); +mxCellRenderer.registerShape(mxRackNeatPatch2U.prototype.cst.SHAPE_RACK_NEAT_PATCH_2U, mxRackNeatPatch2U); +mxCellRenderer.registerShape(mxRackShelf1U.prototype.cst.SHAPE_RACK_SHELF_1U, mxRackShelf1U); +mxCellRenderer.registerShape(mxRackShelf2U.prototype.cst.SHAPE_RACK_SHELF_2U, mxRackShelf2U); +mxCellRenderer.registerShape(mxRackShelf4U.prototype.cst.SHAPE_RACK_SHELF_4U, mxRackShelf4U); +mxCellRenderer.registerShape(mxRackChannelBase.prototype.cst.SHAPE_RACK_CHANNEL_BASE, mxRackChannelBase); +mxCellRenderer.registerShape(mxRackCabinetLeg.prototype.cst.SHAPE_RACK_CABINET_LEG, mxRackCabinetLeg); diff --git a/data/plugins/grafana-flowcharting/dist/mapping_options.js b/data/plugins/grafana-flowcharting/dist/mapping_options.js new file mode 100644 index 0000000000000..4bba5aa93b802 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/mapping_options.js @@ -0,0 +1,320 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.mappingOptionsTab = mappingOptionsTab; +exports.MappingOptionsCtrl = void 0; + +var _kbn = _interopRequireDefault(require("app/core/utils/kbn")); + +var _plugin = require("./plugin"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var MappingOptionsCtrl = function () { + function MappingOptionsCtrl($scope) { + var _this = this; + + _classCallCheck(this, MappingOptionsCtrl); + + $scope.editor = this; + $scope.GF_PLUGIN = window.GF_PLUGIN; + this.$scope = $scope; + this.panelCtrl = $scope.ctrl; + this.panel = this.panelCtrl.panel; + $scope.rulesHandler = this.panelCtrl.rulesHandler; + $scope.flowchartHandler = this.panelCtrl.flowchartHandler; + this.flowchartHandler = $scope.ctrl.flowchartHandler; + this.rulesHandler = this.panelCtrl.rulesHandler; + this.unitFormats = _kbn["default"].getUnitFormats(); + this.style = [{ + text: 'Disabled', + value: 'disabled' + }, { + text: 'Stroke', + value: 'strokeColor' + }, { + text: 'Fill', + value: 'fillColor' + }, { + text: 'Text', + value: 'fontColor' + }, { + text: 'Background (image)', + value: 'imageBackground' + }, { + text: 'Border (image)', + value: 'imageBorder' + }]; + this.colorOn = [{ + text: 'Never', + value: 'n' + }, { + text: 'Warning / Critical', + value: 'wc' + }, { + text: 'Always', + value: 'a' + }]; + this.linkOn = [{ + text: 'Warning / Critical', + value: 'wc' + }, { + text: 'Always', + value: 'a' + }]; + this.tooltipOn = [{ + text: 'Warning / Critical', + value: 'wc' + }, { + text: 'Always', + value: 'a' + }]; + this.tpDirection = [{ + text: 'Vertical', + value: 'v' + }, { + text: 'Horizontal ', + value: 'h' + }]; + this.textOn = [{ + text: 'Never', + value: 'n' + }, { + text: 'When Metric Displayed', + value: 'wmd' + }, { + text: 'Warning / Critical', + value: 'wc' + }, { + text: 'Critical Only', + value: 'co' + }]; + this.textReplace = [{ + text: 'All content', + value: 'content' + }, { + text: 'Substring', + value: 'pattern' + }, { + text: 'Append (Space) ', + value: 'as' + }, { + text: 'Append (New line) ', + value: 'anl' + }]; + this.propTypes = [{ + text: 'Id', + value: 'id' + }]; + this.textPattern = '/.*/'; + this.metricTypes = [{ + text: 'Number', + value: 'number' + }, { + text: 'String', + value: 'string' + }, { + text: 'Date', + value: 'date' + }]; + this.dateFormats = [{ + text: 'YYYY-MM-DD HH:mm:ss', + value: 'YYYY-MM-DD HH:mm:ss' + }, { + text: 'YYYY-MM-DD HH:mm:ss.SSS', + value: 'YYYY-MM-DD HH:mm:ss.SSS' + }, { + text: 'MM/DD/YY h:mm:ss a', + value: 'MM/DD/YY h:mm:ss a' + }, { + text: 'MMMM D, YYYY LT', + value: 'MMMM D, YYYY LT' + }, { + text: 'YYYY-MM-DD', + value: 'YYYY-MM-DD' + }]; + this.aggregationTypes = [{ + text: 'First', + value: 'first' + }, { + text: 'Last', + value: 'current' + }, { + text: 'Min', + value: 'min' + }, { + text: 'Max', + value: 'max' + }, { + text: 'Sum', + value: 'total' + }, { + text: 'Avg', + value: 'avg' + }, { + text: 'Count', + value: 'count' + }, { + text: 'Delta', + value: 'delta' + }, { + text: 'Range', + value: 'range' + }, { + text: 'Diff', + value: 'diff' + }]; + this.mappingTypes = [{ + text: 'Value to text', + value: 1 + }, { + text: 'Range to text', + value: 2 + }]; + this.tpGraphType = [{ + text: 'Line', + value: 'line' + }]; + this.tpGraphSize = [{ + text: 'Adjustable', + value: '100%' + }, { + text: 'Small', + value: '100px' + }, { + text: 'Medium', + value: '200px' + }, { + text: 'Large', + value: '400px' + }]; + + this.getMetricNames = function () { + if (!_this.panelCtrl.series) { + return []; + } + + return _.map(_this.panelCtrl.series, function (t) { + return t.alias; + }); + }; + + this.getCellNamesForShape = function () { + u.log(1, 'MappingOptionsCtrl.getCellNamesForShape()'); + + var flowchart = _this.flowchartHandler.getFlowchart(0); + + var cells = flowchart.getNamesByProp('id'); + return _.map(cells, function (t) { + return t; + }); + }; + + this.getCellNamesForText = function () { + u.log(1, 'MappingOptionsCtrl.getCellNamesForText()'); + + var flowchart = _this.flowchartHandler.getFlowchart(0); + + var cells = flowchart.getNamesByProp('id'); + return _.map(cells, function (t) { + return t; + }); + }; + + this.getCellNamesForLink = function () { + u.log(1, 'MappingOptionsCtrl.getCellNamesForLink()'); + + var flowchart = _this.flowchartHandler.getFlowchart(0); + + var cells = flowchart.getNamesByProp('id'); + return _.map(cells, function (t) { + return t; + }); + }; + + this.getVariables = function () { + u.log('MappingOptionsCtrl.getVariables'); + return _this.panelCtrl.getVariables(); + }; + } + + _createClass(MappingOptionsCtrl, [{ + key: "render", + value: function render() { + this.panelCtrl.render(); + } + }, { + key: "setUnitFormat", + value: function setUnitFormat(rule, subItem) { + rule.unit = subItem.value; + this.onRulesChange(); + } + }, { + key: "onRulesChange", + value: function onRulesChange() { + u.log(1, 'MappingOptionsCtrl.onRulesChange()'); + this.flowchartHandler.ruleChanged(); + this.render(); + } + }, { + key: "onColorChange", + value: function onColorChange(ruleIndex, colorIndex) { + var _this2 = this; + + return function (newColor) { + var rule = _this2.rulesHandler.getRule(ruleIndex); + + rule.data.colors[colorIndex] = newColor; + + _this2.onRulesChange(); + }; + } + }, { + key: "selectCell", + value: function selectCell(prop, value) { + var flowchart = this.flowchartHandler.getFlowchart(0); + var xgraph = flowchart.getXGraph(); + xgraph.selectMxCells(prop, value); + } + }, { + key: "unselectCell", + value: function unselectCell(prop, value) { + var flowchart = this.flowchartHandler.getFlowchart(0); + var xgraph = flowchart.getXGraph(); + xgraph.unselectMxCells(prop, value); + } + }, { + key: "highlightCells", + value: function highlightCells(rule) { + rule.highlightCells(); + } + }, { + key: "unhighlightCells", + value: function unhighlightCells(rule) { + rule.unhighlightCells(); + } + }]); + + return MappingOptionsCtrl; +}(); + +exports.MappingOptionsCtrl = MappingOptionsCtrl; + +function mappingOptionsTab($q, uiSegmentSrv) { + 'use strict'; + + return { + restrict: 'E', + scope: true, + templateUrl: "".concat(GF_PLUGIN.getPartialPath(), "/mapping_options.html"), + controller: MappingOptionsCtrl + }; +} diff --git a/data/plugins/grafana-flowcharting/dist/module.js b/data/plugins/grafana-flowcharting/dist/module.js new file mode 100644 index 0000000000000..4e166cdc94df5 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/module.js @@ -0,0 +1,20 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "PanelCtrl", { + enumerable: true, + get: function get() { + return _flowchart_ctrl.FlowchartCtrl; + } +}); + +var _sdk = require("app/plugins/sdk"); + +var _flowchart_ctrl = require("./flowchart_ctrl"); + +(0, _sdk.loadPluginCss)({ + dark: 'plugins/agenty-flowcharting-panel/css/flowchart.dark.css', + light: 'plugins/agenty-flowcharting-panel/css/flowchart.light.css' +}); diff --git a/data/plugins/grafana-flowcharting/dist/partials/flowchart_options.html b/data/plugins/grafana-flowcharting/dist/partials/flowchart_options.html new file mode 100644 index 0000000000000..e79e9c801db02 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/partials/flowchart_options.html @@ -0,0 +1,278 @@ +
+
+
+
+ mxGraph Edition + +
+ +
+
+ Definition + +
+ +
+ + +
+
+ + +
+ +
+
+
+ + Source Type + + + +
+ +
+
+ +
+
+ + URL + + This service should respond with a xml/plain response containing mxgraph syntax + + + +
+
+ +
+ + Source Content + + + + +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
Advanced
+
+
+ Display + + +
+ + + + + + +
+ + + + + +
+ +
+ + Zoom + + + + +
+
+
+
+ Others options + + +
+ + + + + + + + + +
+
+
+
diff --git a/data/plugins/grafana-flowcharting/dist/partials/inspect_options.html b/data/plugins/grafana-flowcharting/dist/partials/inspect_options.html new file mode 100644 index 0000000000000..4a2c02f72ebb4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/partials/inspect_options.html @@ -0,0 +1,191 @@ +
+
+
+
Inspector
+
+
+ +
+
Graph inspect + Id + + + + +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ Id + + + + +
+
+
+ Text
+
+
+ Level +
+
+
+ Font Col. +
+
+
+ Fill Col. +
+
+
+ Stoke Col. +
+
+
+ Match +
+
+
+
{{state.cellId}}
+
{{state.cellId}}
+
+ +
+
+
+
+ {{state.getCellProp('value')}} +
+
+
+ {{state.getTextLevel()}} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + + + + +
+
Debug Mode
+
+
+ Display + +
+
+ Level + +
+
+
+
\ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/partials/mapping_options copy.html b/data/plugins/grafana-flowcharting/dist/partials/mapping_options copy.html new file mode 100644 index 0000000000000..d6464372ea933 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/partials/mapping_options copy.html @@ -0,0 +1,616 @@ +
+ + +
+
+ +
+
+
\ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/partials/mapping_options.html b/data/plugins/grafana-flowcharting/dist/partials/mapping_options.html new file mode 100644 index 0000000000000..b7a1ea842e47d --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/partials/mapping_options.html @@ -0,0 +1,1085 @@ +
+
+
+ +
+ + + + + {{ rule.data.order }} : Rule [{{ rule.data.alias }}] + + + + +
+ + +
+ +
+
+ Options + + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+ Type + + + + +
+
+ +
+ +
+
+
+ + + +
+ +
+ +
+
+ + +
+ +
+
+ +
+
+
+ + +
+
+
+ + +
+
+ Thresholds (Ok > Warn > Critical) + + +
+
+ Thresholds (Critical > Warn > Ok) + + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + + + + + + + + + +
+ Invert +
+
+ + +
+ + +
+
+ Display + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ + +
+
+ Tooltips + + + + +
+ + +
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ + +
+
+ Graph Tooltips + + + + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ Link + + + + +
+ +
+ +
+ +
+
+
+ + +
+ + + +
+ + +
+ +
+
+ Color Mappings + + + + +
+
+ + Props + + +
+ +
+
+
+ + + + + + +
+
+ +
+
+ + +
+
+ Text Mappings + + + + +
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Link Mappings
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Value Mappings
+
+
+ + Type + +
+ +
+
+ +
+
+ + + + + + +
+
+ +
+
+ +
+
+ + + + From + + To + + Text + +
+
+ +
+
+
+
+
+ +
+ + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+
diff --git a/data/plugins/grafana-flowcharting/dist/partials/module.html b/data/plugins/grafana-flowcharting/dist/partials/module.html new file mode 100644 index 0000000000000..63e6e2f365678 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/partials/module.html @@ -0,0 +1,14 @@ +
+
+ +
+
+
+ Select Object to map + +
+
+ \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/plugin.js b/data/plugins/grafana-flowcharting/dist/plugin.js new file mode 100644 index 0000000000000..c78f443e91da4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/plugin.js @@ -0,0 +1,72 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _jquery = _interopRequireDefault(require("jquery")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +var plugin = {}; +plugin.dirname = "".concat(__dirname, "/"); +plugin.repository = 'https://algenty.github.io/flowcharting-repository/'; +plugin.mxBasePath = "".concat(plugin.dirname, "libs/mxgraph/javascript/dist/"); +plugin.mxImagePath = "".concat(plugin.mxBasePath, "images/"); +plugin.partialPath = "".concat(plugin.dirname, "/partials/"); +plugin.data = {}; + +_jquery["default"].ajaxSetup({ + async: false +}); + +_jquery["default"].getJSON("".concat(plugin.dirname, "/plugin.json"), function (data) { + plugin.data = data; +}); + +plugin.getRootPath = function () { + return this.dirname; +}; + +plugin.getLibsPath = function () { + return "".concat(this.dirname, "/libs"); +}; + +plugin.getShapesPath = function () { + return "".concat(this.dirname, "libs/shapes"); +}; + +plugin.getMxBasePath = function () { + return this.mxBasePath; +}; + +plugin.getMxImagePath = function () { + return this.mxImagePath; +}; + +plugin.getName = function () { + return this.data.id; +}; + +plugin.getPartialPath = function () { + return this.partialPath; +}; + +plugin.popover = function (text, tagBook, tagImage) { + var url = this.repository; + var images = "".concat(this.repository, "images/"); + var textEncoded = String(text).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + var desc = "".concat(textEncoded); + var book = ''; + var image = ''; + if (tagBook) book = "Help"); + if (tagImage) image = "Example"); + return "\n
\n
".concat(desc, "
\n
").concat(book, "
\n
").concat(image, "
\n
"); +}; + +plugin.logLevel = 1; +plugin.logDisplay = false; +window.GF_PLUGIN = window.GF_PLUGIN || plugin; +var _default = plugin; +exports["default"] = _default; diff --git a/data/plugins/grafana-flowcharting/dist/plugin.json b/data/plugins/grafana-flowcharting/dist/plugin.json new file mode 100644 index 0000000000000..641da7ed91e11 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/plugin.json @@ -0,0 +1,48 @@ +{ + "type": "panel", + "name": "FlowCharting", + "id": "agenty-flowcharting-panel", + "info": { + "description": "Flowcharting is a plugin for grafana. It aims to display complexe diagram draws with draw.io like Visio", + "author": { + "name": "Arnaud GENTY", + "url": "https://github.com/algenty/grafana-flowcharting" + }, + "keywords": [ + "flowchart", + "panel", + "diagram", + "workflow", + "floorplan", + "map", + "organigram", + "draw.io", + "visio", + "mxgraph" + ], + "links": [ + { + "name": "Project site", + "url": "https://github.com/algenty/grafana-flowcharting" + }, + { + "name": "Apache License", + "url": "https://github.com/algenty/grafana-flowcharting/blob/master/LICENSE" + }, + { + "name": "Documentation", + "url": "https://algenty.github.io/flowcharting-repository/" + } + ], + "version": "0.5.0", + "updated": "2019-09-26", + "logos": { + "small": "img/agenty-flowcharting.svg", + "large": "img/agenty-flowcharting.svg" + } + }, + "dependencies": { + "grafanaVersion": "5.x.x", + "plugins": [] + } +} \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/rule_class.js b/data/plugins/grafana-flowcharting/dist/rule_class.js new file mode 100644 index 0000000000000..b28a7613c7652 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/rule_class.js @@ -0,0 +1,965 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _kbn = _interopRequireDefault(require("app/core/utils/kbn")); + +var _moment = _interopRequireDefault(require("moment")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Rule = function () { + function Rule(pattern, data) { + _classCallCheck(this, Rule); + + this.data = data; + this.data.pattern = pattern; + this.shapeMaps = []; + this.textMaps = []; + this.linkMaps = []; + this.valueMaps = []; + this.rangeMaps = []; + this.id = u.uniqueID(); + this["import"](data); + var LEVEL_OK = 0; + var LEVEL_WARN = 1; + var LEVEL_ERROR = 2; + } + + _createClass(Rule, [{ + key: "getData", + value: function getData() { + return this.data; + } + }, { + key: "import", + value: function _import(obj) { + var _this = this; + + this.data.unit = obj.unit || 'short'; + this.data.type = obj.type || 'number'; + this.data.alias = obj.alias || 'No name'; + this.data.aggregation = obj.aggregation || 'current'; + this.data.decimals = obj.decimals !== undefined ? obj.decimals : 2; + this.data.colors = obj.colors ? _toConsumableArray(obj.colors) : ['rgba(245, 54, 54, 0.9)', 'rgba(237, 129, 40, 0.89)', 'rgba(50, 172, 45, 0.97)']; + this.data.reduce = true; + this.data.style = obj.style || obj.colorMode || 'fillColor'; + this.data.colorOn = obj.colorOn || 'a'; + this.data.link = obj.link !== undefined ? obj.link : false; + this.data.linkOn = obj.colorOn || 'a'; + this.data.linkUrl = obj.linkUrl || ''; + this.data.linkParams = obj.linkParams !== undefined ? obj.linkParams : false; + this.data.textOn = obj.textOn || 'wmd'; + this.data.textReplace = obj.textReplace || 'content'; + this.data.textPattern = obj.textPattern || '/.*/'; + this.data.pattern = obj.pattern || this.data.pattern; + this.data.dateFormat = obj.dateFormat || 'YYYY-MM-DD HH:mm:ss'; + this.data.thresholds = obj.thresholds !== undefined ? _toConsumableArray(obj.thresholds) : []; + this.data.stringWarning = obj.stringWarning || ''; + this.data.stringCritical = obj.stringCritical || ''; + this.data.invert = obj.invert !== undefined ? obj.invert : false; + this.data.overlayIcon = obj.overlayIcon !== undefined ? obj.overlayIcon : false; + this.data.tooltip = obj.tooltip !== undefined ? obj.tooltip : false; + this.data.tooltipLabel = obj.tooltipLabel !== undefined ? obj.tooltipLabel : this.data.alias; + this.data.tooltipColors = obj.tooltipColors !== undefined ? obj.tooltipColors : false; + this.data.tooltipOn = obj.tooltipOn !== undefined ? obj.tooltipOn : 'a'; + this.data.tpDirection = obj.tpDirection !== undefined ? obj.tpDirection : 'v'; + this.data.tpGraph = obj.tpGraph !== undefined ? obj.tpGraph : false; + this.data.tpGraphSize = obj.tpGraphSize !== undefined ? obj.tpGraphSize : '100%'; + this.data.tpGraphType = obj.tpGraphType !== undefined ? obj.tpGraphType : 'line'; + var maps = []; + this.data.shapeProp = obj.shapeProp || 'id'; + this.data.shapeData = []; + maps = []; + if (obj.shapeMaps !== undefined && obj.shapeMaps !== null && obj.shapeMaps.length > 0) maps = obj.shapeMaps;else maps = obj.shapeData; + + if (maps !== undefined && maps !== null && maps.length > 0) { + maps.forEach(function (map) { + var newData = {}; + var sm = new ShapeMap(map.pattern, newData); + sm["import"](map); + + _this.shapeMaps.push(sm); + + _this.data.shapeData.push(newData); + }); + } + + this.data.textProp = obj.textProp || 'id'; + this.data.textData = []; + maps = []; + if (obj.shapeMaps !== undefined && obj.shapeMaps !== null && obj.shapeMaps.length > 0) maps = obj.textMaps;else maps = obj.textData; + + if (maps !== undefined && maps != null && maps.length > 0) { + maps.forEach(function (map) { + var newData = {}; + var tm = new TextMap(map.pattern, newData); + tm["import"](map); + + _this.textMaps.push(tm); + + _this.data.textData.push(newData); + }); + } + + this.data.linkProp = obj.linkProp || 'id'; + this.data.linkData = []; + + if (obj.linkData !== undefined && obj.linkData != null && obj.linkData.length > 0) { + obj.linkData.forEach(function (map) { + var newData = {}; + var lm = new LinkMap(map.pattern, newData); + lm["import"](map); + + _this.linkMaps.push(lm); + + _this.data.linkData.push(newData); + }); + } + + this.data.mappingType = obj.mappingType || 1; + this.data.valueData = []; + + if (obj.valueData !== undefined && obj.valueData != null && obj.valueData.length > 0) { + obj.valueData.forEach(function (map) { + var newData = {}; + var vm = new ValueMap(map.value, map.text, newData); + vm["import"](map); + + _this.valueMaps.push(vm); + + _this.data.valueData.push(newData); + }); + } + + this.data.rangeData = []; + + if (obj.rangeData !== undefined && obj.rangeData != null && obj.rangeData.length > 0) { + obj.rangeData.forEach(function (map) { + var newData = {}; + var rm = new RangeMap(map.from, map.to, map.text, newData); + + _this.rangeMaps.push(rm); + + _this.data.rangeData.push(newData); + }); + } + + this.data.sanitize = obj.sanitize || false; + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "highlightCells", + value: function highlightCells() { + if (this.states) { + this.states.forEach(function (state) { + state.highlightCell(); + }); + } + } + }, { + key: "unhighlightCells", + value: function unhighlightCells() { + if (this.states) { + this.states.forEach(function (state) { + state.unhighlightCell(); + }); + } + } + }, { + key: "setOrder", + value: function setOrder(order) { + this.data.order = order; + } + }, { + key: "getOrder", + value: function getOrder() { + return this.data.order; + } + }, { + key: "invertColorOrder", + value: function invertColorOrder() { + var ref = this.data.colors; + var copy = ref[0]; + ref[0] = ref[2]; + ref[2] = copy; + if (this.data.invert) this.data.invert = false;else this.data.invert = true; + } + }, { + key: "toColorize", + value: function toColorize(level) { + if (level === -1) return false; + if (this.data.colorMode === "disabled") return false; + if (this.data.colorOn === 'n') return false; + if (this.data.colorOn === 'a') return true; + if (this.data.colorOn === 'wc' && level >= 1) return true; + return false; + } + }, { + key: "toLabelize", + value: function toLabelize(level) { + if (this.data.textOn === 'wmd') return true; + if (this.data.textOn === 'n') return false; + if (this.data.textOn === 'wc' && level >= 1) return true; + if (this.data.textOn === 'co' && level >= 2) return true; + return false; + } + }, { + key: "toIconize", + value: function toIconize(level) { + if (this.data.overlayIcon === false) return false; + if (this.data.overlayIcon === true && level >= 1) return true; + return false; + } + }, { + key: "toLinkable", + value: function toLinkable(level) { + if (this.data.link === false) return false; + if (this.data.linkOn === 'n') return false; + if (this.data.linkOn === 'a') return true; + if (this.data.linkOn === 'wc' && level >= 1) return true; + return false; + } + }, { + key: "toTooltipize", + value: function toTooltipize(level) { + if (this.data.tooltip === false) return false; + if (this.data.tooltipOn === 'n') return false; + if (this.data.tooltipOn === 'a') return true; + if (this.data.tooltipOn === 'wc' && level >= 1) return true; + return false; + } + }, { + key: "matchSerie", + value: function matchSerie(serie) { + return u.matchString(serie.alias, this.data.pattern); + } + }, { + key: "addShapeMap", + value: function addShapeMap(pattern) { + var data = {}; + var m = new ShapeMap(pattern, data); + m["import"](data); + this.shapeMaps.push(m); + this.data.shapeData.push(data); + } + }, { + key: "removeShapeMap", + value: function removeShapeMap(index) { + this.data.shapeData.splice(index, 1); + this.shapeMaps.splice(index, 1); + } + }, { + key: "getShapeMap", + value: function getShapeMap(index) { + return this.shapeMaps[index]; + } + }, { + key: "getShapeMaps", + value: function getShapeMaps() { + return this.shapeMaps; + } + }, { + key: "matchShape", + value: function matchShape(pattern) { + var found = false; + this.shapeMaps.forEach(function (element) { + if (element.match(pattern)) found = true; + }); + return found; + } + }, { + key: "addTextMap", + value: function addTextMap(pattern) { + var data = {}; + var m = new TextMap(pattern, data); + m["import"](data); + this.textMaps.push(m); + this.data.textData.push(data); + } + }, { + key: "removeTextMap", + value: function removeTextMap(index) { + this.data.textData.splice(index, 1); + this.textMaps.splice(index, 1); + } + }, { + key: "getTextMap", + value: function getTextMap(index) { + return this.textMaps[index]; + } + }, { + key: "getTextMaps", + value: function getTextMaps() { + return this.textMaps; + } + }, { + key: "matchText", + value: function matchText(pattern) { + var found = false; + this.textMaps.forEach(function (element) { + if (element.match(pattern)) found = true; + }); + return found; + } + }, { + key: "addLinkMap", + value: function addLinkMap(pattern) { + u.log(1, 'Rule.addLinkMap()'); + var data = {}; + var m = new LinkMap(pattern, data); + m["import"](data); + this.linkMaps.push(m); + this.data.linkData.push(data); + } + }, { + key: "removeLinkMap", + value: function removeLinkMap(index) { + this.data.linkData.splice(index, 1); + this.linkMaps.splice(index, 1); + } + }, { + key: "getLinkMap", + value: function getLinkMap(index) { + return this.linkMaps[index]; + } + }, { + key: "getLinkMaps", + value: function getLinkMaps() { + return this.linkMaps; + } + }, { + key: "matchLink", + value: function matchLink(pattern) { + var found = false; + this.linkMaps.forEach(function (element) { + if (element.match(pattern)) found = true; + }); + return found; + } + }, { + key: "addValueMap", + value: function addValueMap(value, text) { + var data = {}; + var m = new ValueMap(value, text, data); + m["import"](data); + this.valueMaps.push(m); + this.data.valueData.push(data); + } + }, { + key: "removeValueMap", + value: function removeValueMap(index) { + this.data.valueData.splice(index, 1); + this.valueMaps.splice(index, 1); + } + }, { + key: "getValueMap", + value: function getValueMap(index) { + return this.valueMaps[index]; + } + }, { + key: "getValueMaps", + value: function getValueMaps() { + return this.valueMaps; + } + }, { + key: "addRangeMap", + value: function addRangeMap(from, to, text) { + var data = {}; + var m = new RangeMap(from, to, text, data); + this.rangeMaps.push(m); + this.data.rangeData.push(data); + } + }, { + key: "removeRangeMap", + value: function removeRangeMap(index) { + this.data.rangeData.splice(index, 1); + this.rangeMaps.splice(index, 1); + } + }, { + key: "getRangeMap", + value: function getRangeMap(index) { + return this.rangeMaps[index]; + } + }, { + key: "getRangeMaps", + value: function getRangeMaps() { + return this.rangeMaps; + } + }, { + key: "hideRangeMap", + value: function hideRangeMap(index) { + this.rangeMaps[index].hide(); + } + }, { + key: "showRangeMap", + value: function showRangeMap(index) { + this.rangeMaps[index].show(); + } + }, { + key: "getColorForValue", + value: function getColorForValue(value) { + if (!this.data.thresholds || this.data.thresholds.length === 0) { + return null; + } + + for (var i = this.data.thresholds.length; i > 0; i -= 1) { + if (value >= this.data.thresholds[i - 1]) { + return this.data.colors[i]; + } + } + + return _.first(this.data.colors); + } + }, { + key: "getColorForLevel", + value: function getColorForLevel(level) { + var colors = _toConsumableArray(this.data.colors); + + if (!this.data.invert) colors = colors.reverse(); + if (level <= 0) return colors[0];else if (colors[level] !== undefined) return colors[level]; + return _.first(colors); + } + }, { + key: "getThresholdLevel", + value: function getThresholdLevel(value) { + if (this.data.type === 'number') { + var thresholdLevel = 0; + var thresholds = this.data.thresholds; + if (thresholds === undefined || thresholds.length === 0) return -1; + if (thresholds.length !== 2) return -1; + + if (!this.data.invert) { + thresholdLevel = 2; + if (value >= thresholds[0]) thresholdLevel = 1; + if (value >= thresholds[1]) thresholdLevel = 0; + } else { + thresholdLevel = 0; + if (value >= thresholds[0]) thresholdLevel = 1; + if (value >= thresholds[1]) thresholdLevel = 2; + } + + return thresholdLevel; + } else if (this.data.type === 'string') { + if (value === this.data.stringWarning) return 1; + if (value === this.data.stringCritical) return 2; + var formatedValue = this.getFormattedValue(value); + if (formatedValue === this.data.stringWarning) return 1; + if (formatedValue === this.data.stringCritical) return 2; + return 0; + } + + return 0; + } + }, { + key: "getValueForSerie", + value: function getValueForSerie(serie) { + if (this.matchSerie(serie)) { + var value = _.get(serie.stats, this.data.aggregation); + + if (value === undefined || value === null) { + value = serie.datapoints[serie.datapoints.length - 1][0]; + } + + return value; + } + + return '-'; + } + }, { + key: "getFormattedValueForSerie", + value: function getFormattedValueForSerie(serie) { + var formattedValue = this.getValueForSerie(serie); + return this.getFormattedValue(formattedValue); + } + }, { + key: "getLink", + value: function getLink() { + if (this.data.linkParams) return this.data.linkUrl + window.location.search; + return this.data.linkUrl; + } + }, { + key: "getFormattedValue", + value: function getFormattedValue(value) { + if (this.data.type === 'number') { + if (!_.isFinite(value)) return 'Invalid Number'; + + if (value === null || value === void 0) { + return '-'; + } + + var decimals = this.decimalPlaces(value); + decimals = typeof this.data.decimals === 'number' ? Math.min(this.data.decimals, decimals) : decimals; + return formatValue(value, this.data.unit, this.data.decimals); + } + + if (this.data.type === 'string') { + if (_.isArray(value)) { + value = value.join(', '); + } + + var mappingType = this.data.mappingType || 0; + + if (mappingType === 1 && this.valueMaps) { + for (var i = 0; i < this.valueMaps.length; i += 1) { + var map = this.valueMaps[i]; + if (map.match(value)) return map.getFormattedText(value); + } + + return value.toString(); + } + + if (mappingType === 2 && this.rangeMaps) { + for (var _i = 0; _i < this.rangeMaps.length; _i += 1) { + var _map = this.rangeMaps[_i]; + if (_map.match(value)) return _map.getFormattedText(value); + } + + return value.toString(); + } + + if (value === null || value === void 0) { + return '-'; + } + } + + if (this.data.type === 'date') { + if (value === undefined || value === null) { + return '-'; + } + + if (_.isArray(value)) { + value = value[0]; + } + + var date = (0, _moment["default"])(value); + return date.format(this.data.dateFormat); + } + + return value; + } + }, { + key: "getReplaceText", + value: function getReplaceText(text, FormattedValue) { + if (this.data.textReplace === 'content') return FormattedValue; + + if (this.data.textReplace === 'pattern') { + var regexVal = u.stringToJsRegex(this.data.textPattern); + if (text.toString().match(regexVal)) return text.toString().replace(regexVal, FormattedValue); + return text; + } + + if (this.data.textReplace === 'as') { + return "".concat(text, " ").concat(FormattedValue); + } + + if (this.data.textReplace === 'anl') { + return "".concat(text, "\n").concat(FormattedValue); + } + } + }, { + key: "defaultValueFormatter", + value: function defaultValueFormatter(value) { + if (value === null || value === void 0 || value === undefined) { + return ''; + } + + if (_.isArray(value)) { + value = value.join(', '); + } + + if (this.sanitize) { + return this.$sanitize(value); + } + + return _.escape(value); + } + }, { + key: "decimalPlaces", + value: function decimalPlaces(num) { + var match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + + if (!match) { + return 0; + } + + return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); + } + }]); + + return Rule; +}(); + +exports["default"] = Rule; + +var ShapeMap = function () { + function ShapeMap(pattern, data) { + _classCallCheck(this, ShapeMap); + + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = undefined; + this.data.pattern = pattern; + this["import"](data); + } + + _createClass(ShapeMap, [{ + key: "import", + value: function _import(obj) { + this.data.pattern = obj.pattern || ''; + this.data.hidden = obj.hidden || false; + } + }, { + key: "match", + value: function match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "show", + value: function show() { + this.data.hidden = false; + } + }, { + key: "hide", + value: function hide() { + this.data.hidden = true; + } + }, { + key: "isHidden", + value: function isHidden() { + return this.data.hidden; + } + }, { + key: "export", + value: function _export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } + }, { + key: "toVisible", + value: function toVisible() { + if (this.data.hidden) return false; + return true; + } + }]); + + return ShapeMap; +}(); + +var TextMap = function () { + function TextMap(pattern, data) { + _classCallCheck(this, TextMap); + + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = pattern; + this["import"](data); + } + + _createClass(TextMap, [{ + key: "import", + value: function _import(obj) { + this.data.pattern = obj.pattern || this.data.pattern; + this.data.hidden = obj.hidden || false; + } + }, { + key: "match", + value: function match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "show", + value: function show() { + this.data.hidden = false; + } + }, { + key: "hide", + value: function hide() { + this.data.hidden = true; + } + }, { + key: "isHidden", + value: function isHidden() { + return this.data.hidden; + } + }, { + key: "export", + value: function _export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } + }]); + + return TextMap; +}(); + +var LinkMap = function () { + function LinkMap(pattern, data) { + _classCallCheck(this, LinkMap); + + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = pattern; + this["import"](data); + } + + _createClass(LinkMap, [{ + key: "import", + value: function _import(obj) { + this.data.pattern = obj.pattern || this.data.pattern || ''; + this.data.hidden = obj.hidden || false; + } + }, { + key: "match", + value: function match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "show", + value: function show() { + this.data.hidden = false; + } + }, { + key: "hide", + value: function hide() { + this.data.hidden = true; + } + }, { + key: "isHidden", + value: function isHidden() { + return this.data.hidden; + } + }, { + key: "export", + value: function _export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } + }]); + + return LinkMap; +}(); + +var RangeMap = function () { + function RangeMap(from, to, text, data) { + _classCallCheck(this, RangeMap); + + this.data = data; + this.id = u.uniqueID(); + this.data.from = from; + this.data.to = to; + this.data.text = text; + this.data.hidden = false; + this["import"](data); + } + + _createClass(RangeMap, [{ + key: "import", + value: function _import(obj) { + this.data.from = obj.from || this.data.from || ''; + this.data.to = obj.to || this.data.to || ''; + this.data.text = obj.text || this.data.text || ''; + this.data.hidden = obj.hidden || this.data.hidden || false; + } + }, { + key: "match", + value: function match(value) { + if (this.data.from === 'null' && this.data.to === 'null') { + return true; + } + + if (value === null) { + if (this.data.from === 'null' && this.data.to === 'null') { + return true; + } + } + + if (Number(this.data.from) <= Number(value) && Number(this.data.to) >= Number(value)) { + return true; + } + + return false; + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "getFormattedText", + value: function getFormattedText(value) { + if (value === null) { + if (this.data.from === 'null' && this.data.to === 'null') { + return this.data.text; + } + } + + if (this.match(value)) { + return this.data.text; + } + + return value; + } + }, { + key: "show", + value: function show() { + this.data.hidden = false; + } + }, { + key: "hide", + value: function hide() { + this.data.hidden = true; + } + }, { + key: "isHidden", + value: function isHidden() { + return this.data.hidden; + } + }, { + key: "export", + value: function _export() { + return { + from: this.data.from, + to: this.data.to, + text: this.data.text, + hidden: this.data.hidden + }; + } + }]); + + return RangeMap; +}(); + +var ValueMap = function () { + function ValueMap(value, text, data) { + _classCallCheck(this, ValueMap); + + this.data = data; + this.id = u.uniqueID(); + this.data.value = value; + this.data.text = text; + this.data.hidden = false; + this["import"](data); + } + + _createClass(ValueMap, [{ + key: "import", + value: function _import(obj) { + this.data.value = obj.value || this.data.value || ''; + this.data.text = obj.text || this.data.text || ''; + this.data.hidden = obj.hidden || this.data.hidden || false; + } + }, { + key: "match", + value: function match(value) { + if (value === null || value === undefined) { + if (this.data.value === 'null') { + return true; + } + + return false; + } + + if (!_.isString(value) && Number(this.data.value) === Number(value)) { + return true; + } + + return u.matchString(value.toString(), this.data.value); + } + }, { + key: "getId", + value: function getId() { + return this.id; + } + }, { + key: "getFormattedText", + value: function getFormattedText(value) { + if (value === null) { + if (this.data.value === 'null') { + return this.data.text; + } + } + + if (this.match(value)) { + return this.data.text; + } + + return value; + } + }, { + key: "show", + value: function show() { + this.data.hidden = false; + } + }, { + key: "hide", + value: function hide() { + this.data.hidden = true; + } + }, { + key: "isHidden", + value: function isHidden() { + return this.data.hidden; + } + }, { + key: "export", + value: function _export() { + return { + value: this.data.value, + text: this.data.text, + hidden: this.data.hidden + }; + } + }]); + + return ValueMap; +}(); + +function formatValue(value, unit, decimals) { + return _kbn["default"].valueFormats[unit](value, decimals, null).toString(); +} diff --git a/data/plugins/grafana-flowcharting/dist/rulesHandler.js b/data/plugins/grafana-flowcharting/dist/rulesHandler.js new file mode 100644 index 0000000000000..b4af296de024e --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/rulesHandler.js @@ -0,0 +1,164 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _rule_class = _interopRequireDefault(require("./rule_class")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var RulesHandler = function () { + function RulesHandler($scope, data) { + _classCallCheck(this, RulesHandler); + + u.log(1, 'RulesHandler.constructor()'); + this.$scope = $scope || null; + this.rules = []; + this.data = data; + this["import"](this.data); + } + + _createClass(RulesHandler, [{ + key: "import", + value: function _import(obj) { + var _this = this; + + u.log(1, 'RuleHandler.import()'); + u.log(0, 'RuleHandler.import() obj', obj); + this.rules = []; + var index = 1; + + if (obj !== undefined && obj !== null && obj.length > 0) { + if (obj[0].order != undefined) obj = _.sortBy(_.sortBy(obj, function (o) { + return o.order; + })); + obj.forEach(function (map) { + var newData = {}; + var rule = new _rule_class["default"](map.pattern, newData); + rule["import"](map); + rule.setOrder(index); + index += 1; + + _this.rules.push(rule); + + _this.data.push(newData); + }); + } + } + }, { + key: "getRules", + value: function getRules() { + return this.rules; + } + }, { + key: "getRule", + value: function getRule(index) { + return this.rules[index]; + } + }, { + key: "addRule", + value: function addRule(pattern) { + var data = {}; + var newRule = new _rule_class["default"](pattern, data); + this.rules.push(newRule); + this.data.push(data); + newRule.setOrder(this.countRules()); + return newRule; + } + }, { + key: "countRules", + value: function countRules() { + if (this.rules !== undefined && Array.isArray(this.rules)) return this.rules.length; + return 0; + } + }, { + key: "setOrder", + value: function setOrder() { + for (var index = 0; index < this.rules.length; index++) { + var rule = this.rules[index]; + rule.setOrder(index + 1); + } + } + }, { + key: "removeRule", + value: function removeRule(index) { + this.rules.splice(index, 1); + this.data.splice(index, 1); + this.setOrder(); + } + }, { + key: "cloneRule", + value: function cloneRule(index) { + var rule = this.getRule(index); + var data = rule.getData(); + var newData = {}; + this.reduce(); + var newRule = new _rule_class["default"](newData.pattern, newData); + newRule["import"](data); + newData.alias = "Copy of ".concat(newData.alias); + this.rules.splice(index, 0, newRule); + this.data.splice(index, 0, newData); + newRule.data.reduce = false; + this.activeRuleIndex = index; + this.setOrder(); + var elt = document.getElementById(newRule.getId()); + + if (elt) { + setTimeout(function () { + elt.focus(); + }, 100); + } + } + }, { + key: "reduce", + value: function reduce() { + this.getRules().forEach(function (rule) { + rule.data.reduce = true; + }); + } + }, { + key: "moveRuleToUp", + value: function moveRuleToUp(index) { + var first = 0; + var rules = this.rules; + var last = rules.length - 1; + + if (index !== first && last !== first) { + var curr = rules[index]; + curr.setOrder(index); + var before = rules[index - 1]; + before.setOrder(index + 1); + rules[index - 1] = curr; + rules[index] = before; + } + } + }, { + key: "moveRuleToDown", + value: function moveRuleToDown(index) { + var first = 0; + var rules = this.rules; + var last = rules.length - 1; + + if (index !== last && last !== first) { + var curr = rules[index]; + curr.setOrder(index + 2); + var after = rules[index + 1]; + after.setOrder(index + 1); + rules[index + 1] = curr; + rules[index] = after; + } + } + }]); + + return RulesHandler; +}(); + +exports["default"] = RulesHandler; diff --git a/data/plugins/grafana-flowcharting/dist/state_class.js b/data/plugins/grafana-flowcharting/dist/state_class.js new file mode 100644 index 0000000000000..b46bf9c873eef --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/state_class.js @@ -0,0 +1,516 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _tooltipHandler = _interopRequireDefault(require("./tooltipHandler")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var State = function () { + function State(mxcell, xgraph, ctrl) { + var _this = this; + + _classCallCheck(this, State); + + u.log(1, 'State.constructor()'); + this.mxcell = mxcell; + this.cellId = mxcell.id; + this.xgraph = xgraph; + this.ctrl = ctrl; + this.templateSrv = this.ctrl.templateSrv; + this.changed = false; + this.changedShape = false; + this.changedStyle = { + fillColor: false, + strokeColor: false, + fontColor: false, + imageBorder: false, + imageBackground: false + }; + this.changedText = false; + this.changedLink = false; + this.matched = false; + this.matchedShape = false; + this.matchedStyle = { + fillColor: false, + strokeColor: false, + fontColor: false, + imageBorder: false, + imageBackground: false + }; + this.matchedText = false; + this.matchedLink = false; + this.globalLevel = -1; + this.styleKeys = ['fillColor', 'strokeColor', 'fontColor', 'imageBorder', 'imageBackground']; + this.level = { + fillColor: -1, + strokeColor: -1, + fontColor: -1, + imageBorder: -1, + imageBackground: -1 + }; + this.tooltipHandler = null; + this.mxcell.GF_tooltipHandler = null; + this.currentColors = {}; + this.originalColors = {}; + this.originalStyle = mxcell.getStyle(); + this.originalText = this.xgraph.getLabel(mxcell); + this.currentText = this.originalText; + var link = this.xgraph.getLink(mxcell); + if (link === undefined) link = null; + this.originalLink = link; + this.currentLink = link; + this.styleKeys.forEach(function (style) { + var color = _this.xgraph.getStyleCell(mxcell, style); + + _this.currentColors[style] = color; + _this.originalColors[style] = color; + }); + } + + _createClass(State, [{ + key: "async_applyState", + value: function () { + var _async_applyState = _asyncToGenerator(regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + this.applyState(); + + case 1: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + function async_applyState() { + return _async_applyState.apply(this, arguments); + } + + return async_applyState; + }() + }, { + key: "setState", + value: function setState(rule, serie) { + var _this2 = this; + + u.log(1, 'State.setState()'); + u.log(0, 'State.setState() Rule', rule); + u.log(0, 'State.setState() Serie', serie); + + if (rule.matchSerie(serie)) { + var shapeMaps = rule.getShapeMaps(); + var textMaps = rule.getTextMaps(); + var linkMaps = rule.getLinkMaps(); + var value = rule.getValueForSerie(serie); + var FormattedValue = rule.getFormattedValue(value); + var level = rule.getThresholdLevel(value); + var color = rule.getColorForLevel(level); + var tooltipName = rule.data.alias + "_" + serie.alias; + var cellProp = this.getCellProp(rule.data.shapeProp); + shapeMaps.forEach(function (shape) { + if (!shape.isHidden() && shape.match(cellProp)) { + _this2.matchedShape = true; + _this2.matched = true; + _this2.mxcell.serie = serie; + + if (rule.toTooltipize(level)) { + var tpColor = null; + var label = rule.data.tooltipLabel == null || rule.data.tooltipLabel.length === 0 ? serie.alias : rule.data.tooltipLabel; + if (rule.data.tooltipColors) tpColor = color; + + _this2.addTooltip(tooltipName, label, FormattedValue, tpColor, rule.data.tpDirection); + + if (rule.data.tpGraph) _this2.addTooltipGraph(tooltipName, rule.data.tpGraphType, rule.data.tpGraphSize, serie); + + _this2.updateTooltipDate(); + } + + if (_this2.globalLevel <= level) { + _this2.setLevelStyle(rule.data.style, level); + + if (rule.toColorize(level)) { + _this2.setColorStyle(rule.data.style, color); + + _this2.matchedStyle[rule.data.style] = true; + } else if (_this2.changedShape) { + if (_this2.changedStyle[rule.data.style]) _this2.unsetColorStyle(rule.data.style); + } + + _this2.overlayIcon = rule.toIconize(level); + } + } + }); + cellProp = this.getCellProp(rule.data.textProp); + textMaps.forEach(function (text) { + if (!text.isHidden() && text.match(cellProp)) { + _this2.matchedText = true; + _this2.matched = true; + + if (rule.toLabelize(level)) { + var textScoped = _this2.templateSrv.replaceWithText(FormattedValue); + + _this2.setText(rule.getReplaceText(_this2.currentText, textScoped)); + } else { + _this2.setText(rule.getReplaceText(_this2.currentText, '')); + } + } + }); + cellProp = this.getCellProp(rule.data.linkProp); + linkMaps.forEach(function (link) { + if (!link.isHidden() && link.match(cellProp)) { + _this2.matchedLink = true; + _this2.matched = true; + + if (_this2.globalLevel <= level) { + if (rule.toLinkable(level)) { + var linkScoped = _this2.templateSrv.replaceWithText(rule.getLink()); + + _this2.setLink(linkScoped); + } + } + } + }); + } + + u.log(0, 'State.setState() state', this); + } + }, { + key: "unsetState", + value: function unsetState() { + var _this3 = this; + + u.log(1, 'State.unsetState()'); + this.unsetLevel(); + this.resetStyle(); + this.unsetText(); + this.unsetLink(); + this.unsetTooltip(); + this.matched = false; + this.matchedShape = false; + this.styleKeys.forEach(function (key) { + _this3.matchedStyle[key] = false; + }); + this.matchedText = false; + this.matchedLink = false; + } + }, { + key: "isMatched", + value: function isMatched() { + return this.matched; + } + }, { + key: "isChanged", + value: function isChanged() { + return this.changed; + } + }, { + key: "getCellProp", + value: function getCellProp(prop) { + if (prop === 'id') return this.cellId; + if (prop === 'value') return this.originalText; + return '/!\\ Not found'; + } + }, { + key: "setColorStyle", + value: function setColorStyle(style, color) { + u.log(1, 'State.setColorStyle()'); + this.currentColors[style] = color; + } + }, { + key: "unsetColorStyle", + value: function unsetColorStyle(style) { + this.currentColors[style] = this.originalColors[style]; + } + }, { + key: "unsetColor", + value: function unsetColor() { + var _this4 = this; + + this.styleKeys.forEach(function (style) { + _this4.unsetColorStyle(style); + }); + } + }, { + key: "unsetLevelStyle", + value: function unsetLevelStyle(style) { + this.level[style] = -1; + } + }, { + key: "unsetTooltip", + value: function unsetTooltip() { + if (this.tooltipHandler != null) this.tooltipHandler.destroy(); + this.tooltipHandler = null; + } + }, { + key: "unsetLevel", + value: function unsetLevel() { + var _this5 = this; + + this.styleKeys.forEach(function (key) { + _this5.unsetLevelStyle(key); + }); + this.globalLevel = -1; + } + }, { + key: "setLevelStyle", + value: function setLevelStyle(style, level) { + u.log(1, 'State.setLevelStyle()'); + this.level[style] = level; + if (this.globalLevel < level) this.globalLevel = level; + } + }, { + key: "getLevelStyle", + value: function getLevelStyle(style) { + return this.level[style]; + } + }, { + key: "getLevel", + value: function getLevel() { + return this.globalLevel; + } + }, { + key: "getTextLevel", + value: function getTextLevel() { + var level = this.getLevel(); + + switch (level) { + case -1: + return 'NO DATA'; + + case 0: + return 'OK'; + + case 1: + return 'WARN'; + + case 2: + return 'ERROR'; + + default: + return 'NULL'; + } + } + }, { + key: "setText", + value: function setText(text) { + this.currentText = text; + } + }, { + key: "unsetText", + value: function unsetText() { + this.currentText = this.originalText; + } + }, { + key: "setLink", + value: function setLink(url) { + this.currentLink = url; + } + }, { + key: "unsetLink", + value: function unsetLink() { + this.currentLink = this.originalLink; + } + }, { + key: "addTooltip", + value: function addTooltip(name, label, value, color, direction) { + u.log(1, 'State.addTooltipValue()'); + u.log(0, 'State.addTooltipValue() label', label); + u.log(0, 'State.addTooltipValue() value', value); + if (this.tooltipHandler == null) this.tooltipHandler = new _tooltipHandler["default"](this.mxcell); + this.tooltipHandler.addMetric(name, label, value, color, direction); + } + }, { + key: "addTooltipGraph", + value: function addTooltipGraph(name, type, size, serie) { + this.tooltipHandler.addGraph(name, type, size, serie); + } + }, { + key: "updateTooltipDate", + value: function updateTooltipDate() { + this.tooltipHandler.updateDate(); + } + }, { + key: "isGradient", + value: function isGradient() {} + }, { + key: "isShape", + value: function isShape() { + return this.mxcell.isVertex(); + } + }, { + key: "isConnector", + value: function isConnector() { + return this.mxcell.isEdge(); + } + }, { + key: "applyShape", + value: function applyShape() { + this.changedShape = true; + this.applyStyle(); + this.applyIcon(); + } + }, { + key: "applyStyle", + value: function applyStyle() { + var _this6 = this; + + this.styleKeys.forEach(function (key) { + if (_this6.matchedStyle[key]) { + var color = _this6.currentColors[key]; + + _this6.xgraph.setStyleCell(_this6.mxcell, key, color); + + if (color !== _this6.originalColors[key]) _this6.changedStyle[key] = true; + } + }); + } + }, { + key: "applyIcon", + value: function applyIcon() { + if (this.overlayIcon) { + this.changedIcon = true; + this.xgraph.addOverlay(this.getTextLevel(), this.mxcell); + } else { + this.xgraph.removeOverlay(this.mxcell); + } + } + }, { + key: "resetShape", + value: function resetShape() { + this.changedShape = false; + this.resetStyle(); + this.resetIcon(); + } + }, { + key: "resetIcon", + value: function resetIcon() { + this.changedIcon = false; + this.xgraph.removeOverlay(this.mxcell); + } + }, { + key: "resetStyle", + value: function resetStyle() { + var _this7 = this; + + this.unsetColor(); + this.mxcell.setStyle(this.originalStyle); + this.styleKeys.forEach(function (key) { + _this7.changedStyle[key] = false; + }); + } + }, { + key: "applyText", + value: function applyText() { + this.changedText = true; + this.xgraph.setLabelCell(this.mxcell, this.currentText); + } + }, { + key: "resetText", + value: function resetText() { + this.changedText = false; + this.unsetText(); + this.xgraph.setLabelCell(this.mxcell, this.originalText); + } + }, { + key: "applyLink", + value: function applyLink() { + this.changedLink = true; + this.xgraph.addLink(this.mxcell, this.currentLink); + } + }, { + key: "resetLink", + value: function resetLink() { + this.changedLink = false; + this.unsetLink(); + this.xgraph.addLink(this.mxcell, this.originalLink); + } + }, { + key: "applyTooltip", + value: function applyTooltip() { + if (this.tooltipHandler != null && this.tooltipHandler.isChecked()) { + this.mxcell.GF_tooltipHandler = this.tooltipHandler; + } + } + }, { + key: "applyState", + value: function applyState() { + u.log(1, 'State.applyState()'); + + if (this.matched) { + this.changed = true; + this.applyTooltip(); + + if (this.matchedShape) { + this.applyShape(); + } else if (this.changedShape) { + this.resetShape(); + } + + if (this.matchedText) { + this.applyText(); + } else if (this.changedText) { + this.resetText(); + } + + if (this.matchedLink) { + this.applyLink(); + } else if (this.changedLink) { + this.resetLink(); + } + } else if (this.changed) this.reset(); + } + }, { + key: "reset", + value: function reset() { + this.resetShape(); + this.resetText(); + this.resetLink(); + this.changed = false; + } + }, { + key: "prepare", + value: function prepare() { + if (this.changed) { + this.lastChange = null; + this.unsetLevel(); + this.unsetTooltip(); + this.unsetText(); + this.matched = false; + this.matchedShape = false; + this.matchedText = false; + this.matchedLink = false; + } + } + }, { + key: "highlightCell", + value: function highlightCell() { + this.xgraph.highlightCell(this.mxcell); + } + }, { + key: "unhighlightCell", + value: function unhighlightCell() { + this.xgraph.unhighlightCell(this.mxcell); + } + }]); + + return State; +}(); + +exports["default"] = State; diff --git a/data/plugins/grafana-flowcharting/dist/statesHandler.js b/data/plugins/grafana-flowcharting/dist/statesHandler.js new file mode 100644 index 0000000000000..4154a05688d6f --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/statesHandler.js @@ -0,0 +1,182 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _state_class = _interopRequireDefault(require("./state_class")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var StateHandler = function () { + function StateHandler(xgraph, ctrl) { + _classCallCheck(this, StateHandler); + + u.log(1, 'StateHandler.constructor()'); + this.states = []; + this.ctrl = ctrl; + this.templateSrv = this.ctrl.templateSrv; + this.xgraph = xgraph; + this.initStates(this.xgraph, ctrl.rulesHandler.getRules()); + } + + _createClass(StateHandler, [{ + key: "initStates", + value: function initStates(xgraph, rules) { + var _this = this; + + u.log(1, 'StateHandler.initStates()'); + this.xgraph = xgraph; + this.states = []; + var mxcells = xgraph.getMxCells(); + + _.each(mxcells, function (mxcell) { + _this.addState(mxcell); + }); + } + }, { + key: "getStatesForRule", + value: function getStatesForRule(rule) { + u.log(1, 'StateHandler.getStatesForRule()'); + var result = []; + var name = null; + var xgraph = this.xgraph; + this.states.forEach(function (state) { + var mxcell = state.mxcell; + var found = false; + name = xgraph.getValuePropOfMxCell(rule.data.shapeProp, mxcell); + + if (rule.matchShape(name)) { + result.push(state); + found = true; + } + + if (!found) { + name = xgraph.getValuePropOfMxCell(rule.data.textProp, mxcell); + + if (rule.matchText(name)) { + result.push(state); + found = true; + } + } + + if (!found) { + name = xgraph.getValuePropOfMxCell(rule.data.linkProp, mxcell); + + if (rule.matchLink(name)) { + result.push(state); + found = true; + } + } + }); + return result; + } + }, { + key: "updateStates", + value: function updateStates(rules) { + var _this2 = this; + + u.log(1, 'StateHandler.updateStates()'); + rules.forEach(function (rule) { + rule.states = _this2.getStatesForRule(rule); + }); + } + }, { + key: "getStates", + value: function getStates() { + return this.states; + } + }, { + key: "getState", + value: function getState(cellId) { + var foundState = null; + + for (var index = 0; index < this.states.length; index++) { + var state = this.states[index]; + + if (cellId == state.cellId) { + foundState = state; + break; + } + } + + return foundState; + } + }, { + key: "addState", + value: function addState(mxcell) { + var state = this.getState(mxcell.id); + + if (state === null) { + state = new _state_class["default"](mxcell, this.xgraph, this.ctrl); + this.states.push(state); + } + + return state; + } + }, { + key: "countStates", + value: function countStates() { + return this.states.length; + } + }, { + key: "countStatesWithLevel", + value: function countStatesWithLevel(level) { + var count = 0; + this.states.forEach(function (state) { + if (state.getLevel() === level) count += 1; + }); + return count; + } + }, { + key: "prepare", + value: function prepare() { + this.states.forEach(function (state) { + state.prepare(); + }); + } + }, { + key: "setStates", + value: function setStates(rules, series) { + var _this3 = this; + + u.log(1, 'StateHandler.setStates()'); + u.log(0, 'StatesHandler.setStates() Rules', rules); + u.log(0, 'StatesHandler.setStates() Series', series); + u.log(0, 'StatesHandler.setStates() States', this.states); + this.prepare(); + rules.forEach(function (rule) { + if (rule.states === undefined || rule.states.length === 0) rule.states = _this3.getStatesForRule(rule); + rule.states.forEach(function (state) { + series.forEach(function (serie) { + state.setState(rule, serie); + }); + }); + }); + } + }, { + key: "applyStates", + value: function applyStates() { + u.log(1, 'StateHandler.applyStates()'); + this.states.forEach(function (state) { + state.applyState(); + }); + } + }, { + key: "async_applyStates", + value: function async_applyStates() { + this.applyStates(); + } + }]); + + return StateHandler; +}(); + +exports["default"] = StateHandler; diff --git a/data/plugins/grafana-flowcharting/dist/tooltipHandler.js b/data/plugins/grafana-flowcharting/dist/tooltipHandler.js new file mode 100644 index 0000000000000..74fad9fd1c9ba --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/tooltipHandler.js @@ -0,0 +1,134 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["tooltipHandler"] = factory(); + else + root["tooltipHandler"] = factory(); +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/tooltipHandler.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/chartist/dist/chartist.js": +/*!************************************************!*\ + !*** ./node_modules/chartist/dist/chartist.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {\n if (true) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return (root['Chartist'] = factory());\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n}(this, function () {\n\n/* Chartist.js 0.11.4\n * Copyright © 2019 Gion Kunz\n * Free to use under either the WTFPL license or the MIT license.\n * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL\n * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT\n */\n/**\n * The core module of Chartist that is mainly providing static functions and higher level functions for chart modules.\n *\n * @module Chartist.Core\n */\nvar Chartist = {\n version: '0.11.4'\n};\n\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * This object contains all namespaces used within Chartist.\n *\n * @memberof Chartist.Core\n * @type {{svg: string, xmlns: string, xhtml: string, xlink: string, ct: string}}\n */\n Chartist.namespaces = {\n svg: 'http://www.w3.org/2000/svg',\n xmlns: 'http://www.w3.org/2000/xmlns/',\n xhtml: 'http://www.w3.org/1999/xhtml',\n xlink: 'http://www.w3.org/1999/xlink',\n ct: 'http://gionkunz.github.com/chartist-js/ct'\n };\n\n /**\n * Helps to simplify functional style code\n *\n * @memberof Chartist.Core\n * @param {*} n This exact value will be returned by the noop function\n * @return {*} The same value that was provided to the n parameter\n */\n Chartist.noop = function (n) {\n return n;\n };\n\n /**\n * Generates a-z from a number 0 to 26\n *\n * @memberof Chartist.Core\n * @param {Number} n A number from 0 to 26 that will result in a letter a-z\n * @return {String} A character from a-z based on the input number n\n */\n Chartist.alphaNumerate = function (n) {\n // Limit to a-z\n return String.fromCharCode(97 + n % 26);\n };\n\n /**\n * Simple recursive object extend\n *\n * @memberof Chartist.Core\n * @param {Object} target Target object where the source will be merged into\n * @param {Object...} sources This object (objects) will be merged into target and then target is returned\n * @return {Object} An object that has the same reference as target but is extended and merged with the properties of source\n */\n Chartist.extend = function (target) {\n var i, source, sourceProp;\n target = target || {};\n\n for (i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (var prop in source) {\n sourceProp = source[prop];\n if (typeof sourceProp === 'object' && sourceProp !== null && !(sourceProp instanceof Array)) {\n target[prop] = Chartist.extend(target[prop], sourceProp);\n } else {\n target[prop] = sourceProp;\n }\n }\n }\n\n return target;\n };\n\n /**\n * Replaces all occurrences of subStr in str with newSubStr and returns a new string.\n *\n * @memberof Chartist.Core\n * @param {String} str\n * @param {String} subStr\n * @param {String} newSubStr\n * @return {String}\n */\n Chartist.replaceAll = function(str, subStr, newSubStr) {\n return str.replace(new RegExp(subStr, 'g'), newSubStr);\n };\n\n /**\n * Converts a number to a string with a unit. If a string is passed then this will be returned unmodified.\n *\n * @memberof Chartist.Core\n * @param {Number} value\n * @param {String} unit\n * @return {String} Returns the passed number value with unit.\n */\n Chartist.ensureUnit = function(value, unit) {\n if(typeof value === 'number') {\n value = value + unit;\n }\n\n return value;\n };\n\n /**\n * Converts a number or string to a quantity object.\n *\n * @memberof Chartist.Core\n * @param {String|Number} input\n * @return {Object} Returns an object containing the value as number and the unit as string.\n */\n Chartist.quantity = function(input) {\n if (typeof input === 'string') {\n var match = (/^(\\d+)\\s*(.*)$/g).exec(input);\n return {\n value : +match[1],\n unit: match[2] || undefined\n };\n }\n return { value: input };\n };\n\n /**\n * This is a wrapper around document.querySelector that will return the query if it's already of type Node\n *\n * @memberof Chartist.Core\n * @param {String|Node} query The query to use for selecting a Node or a DOM node that will be returned directly\n * @return {Node}\n */\n Chartist.querySelector = function(query) {\n return query instanceof Node ? query : document.querySelector(query);\n };\n\n /**\n * Functional style helper to produce array with given length initialized with undefined values\n *\n * @memberof Chartist.Core\n * @param length\n * @return {Array}\n */\n Chartist.times = function(length) {\n return Array.apply(null, new Array(length));\n };\n\n /**\n * Sum helper to be used in reduce functions\n *\n * @memberof Chartist.Core\n * @param previous\n * @param current\n * @return {*}\n */\n Chartist.sum = function(previous, current) {\n return previous + (current ? current : 0);\n };\n\n /**\n * Multiply helper to be used in `Array.map` for multiplying each value of an array with a factor.\n *\n * @memberof Chartist.Core\n * @param {Number} factor\n * @returns {Function} Function that can be used in `Array.map` to multiply each value in an array\n */\n Chartist.mapMultiply = function(factor) {\n return function(num) {\n return num * factor;\n };\n };\n\n /**\n * Add helper to be used in `Array.map` for adding a addend to each value of an array.\n *\n * @memberof Chartist.Core\n * @param {Number} addend\n * @returns {Function} Function that can be used in `Array.map` to add a addend to each value in an array\n */\n Chartist.mapAdd = function(addend) {\n return function(num) {\n return num + addend;\n };\n };\n\n /**\n * Map for multi dimensional arrays where their nested arrays will be mapped in serial. The output array will have the length of the largest nested array. The callback function is called with variable arguments where each argument is the nested array value (or undefined if there are no more values).\n *\n * @memberof Chartist.Core\n * @param arr\n * @param cb\n * @return {Array}\n */\n Chartist.serialMap = function(arr, cb) {\n var result = [],\n length = Math.max.apply(null, arr.map(function(e) {\n return e.length;\n }));\n\n Chartist.times(length).forEach(function(e, index) {\n var args = arr.map(function(e) {\n return e[index];\n });\n\n result[index] = cb.apply(null, args);\n });\n\n return result;\n };\n\n /**\n * This helper function can be used to round values with certain precision level after decimal. This is used to prevent rounding errors near float point precision limit.\n *\n * @memberof Chartist.Core\n * @param {Number} value The value that should be rounded with precision\n * @param {Number} [digits] The number of digits after decimal used to do the rounding\n * @returns {number} Rounded value\n */\n Chartist.roundWithPrecision = function(value, digits) {\n var precision = Math.pow(10, digits || Chartist.precision);\n return Math.round(value * precision) / precision;\n };\n\n /**\n * Precision level used internally in Chartist for rounding. If you require more decimal places you can increase this number.\n *\n * @memberof Chartist.Core\n * @type {number}\n */\n Chartist.precision = 8;\n\n /**\n * A map with characters to escape for strings to be safely used as attribute values.\n *\n * @memberof Chartist.Core\n * @type {Object}\n */\n Chartist.escapingMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n };\n\n /**\n * This function serializes arbitrary data to a string. In case of data that can't be easily converted to a string, this function will create a wrapper object and serialize the data using JSON.stringify. The outcoming string will always be escaped using Chartist.escapingMap.\n * If called with null or undefined the function will return immediately with null or undefined.\n *\n * @memberof Chartist.Core\n * @param {Number|String|Object} data\n * @return {String}\n */\n Chartist.serialize = function(data) {\n if(data === null || data === undefined) {\n return data;\n } else if(typeof data === 'number') {\n data = ''+data;\n } else if(typeof data === 'object') {\n data = JSON.stringify({data: data});\n }\n\n return Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n return Chartist.replaceAll(result, key, Chartist.escapingMap[key]);\n }, data);\n };\n\n /**\n * This function de-serializes a string previously serialized with Chartist.serialize. The string will always be unescaped using Chartist.escapingMap before it's returned. Based on the input value the return type can be Number, String or Object. JSON.parse is used with try / catch to see if the unescaped string can be parsed into an Object and this Object will be returned on success.\n *\n * @memberof Chartist.Core\n * @param {String} data\n * @return {String|Number|Object}\n */\n Chartist.deserialize = function(data) {\n if(typeof data !== 'string') {\n return data;\n }\n\n data = Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n return Chartist.replaceAll(result, Chartist.escapingMap[key], key);\n }, data);\n\n try {\n data = JSON.parse(data);\n data = data.data !== undefined ? data.data : data;\n } catch(e) {}\n\n return data;\n };\n\n /**\n * Create or reinitialize the SVG element for the chart\n *\n * @memberof Chartist.Core\n * @param {Node} container The containing DOM Node object that will be used to plant the SVG element\n * @param {String} width Set the width of the SVG element. Default is 100%\n * @param {String} height Set the height of the SVG element. Default is 100%\n * @param {String} className Specify a class to be added to the SVG element\n * @return {Object} The created/reinitialized SVG element\n */\n Chartist.createSvg = function (container, width, height, className) {\n var svg;\n\n width = width || '100%';\n height = height || '100%';\n\n // Check if there is a previous SVG element in the container that contains the Chartist XML namespace and remove it\n // Since the DOM API does not support namespaces we need to manually search the returned list http://www.w3.org/TR/selectors-api/\n Array.prototype.slice.call(container.querySelectorAll('svg')).filter(function filterChartistSvgObjects(svg) {\n return svg.getAttributeNS(Chartist.namespaces.xmlns, 'ct');\n }).forEach(function removePreviousElement(svg) {\n container.removeChild(svg);\n });\n\n // Create svg object with width and height or use 100% as default\n svg = new Chartist.Svg('svg').attr({\n width: width,\n height: height\n }).addClass(className);\n\n svg._node.style.width = width;\n svg._node.style.height = height;\n\n // Add the DOM node to our container\n container.appendChild(svg._node);\n\n return svg;\n };\n\n /**\n * Ensures that the data object passed as second argument to the charts is present and correctly initialized.\n *\n * @param {Object} data The data object that is passed as second argument to the charts\n * @return {Object} The normalized data object\n */\n Chartist.normalizeData = function(data, reverse, multi) {\n var labelCount;\n var output = {\n raw: data,\n normalized: {}\n };\n\n // Check if we should generate some labels based on existing series data\n output.normalized.series = Chartist.getDataArray({\n series: data.series || []\n }, reverse, multi);\n\n // If all elements of the normalized data array are arrays we're dealing with\n // multi series data and we need to find the largest series if they are un-even\n if (output.normalized.series.every(function(value) {\n return value instanceof Array;\n })) {\n // Getting the series with the the most elements\n labelCount = Math.max.apply(null, output.normalized.series.map(function(series) {\n return series.length;\n }));\n } else {\n // We're dealing with Pie data so we just take the normalized array length\n labelCount = output.normalized.series.length;\n }\n\n output.normalized.labels = (data.labels || []).slice();\n // Padding the labels to labelCount with empty strings\n Array.prototype.push.apply(\n output.normalized.labels,\n Chartist.times(Math.max(0, labelCount - output.normalized.labels.length)).map(function() {\n return '';\n })\n );\n\n if(reverse) {\n Chartist.reverseData(output.normalized);\n }\n\n return output;\n };\n\n /**\n * This function safely checks if an objects has an owned property.\n *\n * @param {Object} object The object where to check for a property\n * @param {string} property The property name\n * @returns {boolean} Returns true if the object owns the specified property\n */\n Chartist.safeHasProperty = function(object, property) {\n return object !== null &&\n typeof object === 'object' &&\n object.hasOwnProperty(property);\n };\n\n /**\n * Checks if a value is considered a hole in the data series.\n *\n * @param {*} value\n * @returns {boolean} True if the value is considered a data hole\n */\n Chartist.isDataHoleValue = function(value) {\n return value === null ||\n value === undefined ||\n (typeof value === 'number' && isNaN(value));\n };\n\n /**\n * Reverses the series, labels and series data arrays.\n *\n * @memberof Chartist.Core\n * @param data\n */\n Chartist.reverseData = function(data) {\n data.labels.reverse();\n data.series.reverse();\n for (var i = 0; i < data.series.length; i++) {\n if(typeof(data.series[i]) === 'object' && data.series[i].data !== undefined) {\n data.series[i].data.reverse();\n } else if(data.series[i] instanceof Array) {\n data.series[i].reverse();\n }\n }\n };\n\n /**\n * Convert data series into plain array\n *\n * @memberof Chartist.Core\n * @param {Object} data The series object that contains the data to be visualized in the chart\n * @param {Boolean} [reverse] If true the whole data is reversed by the getDataArray call. This will modify the data object passed as first parameter. The labels as well as the series order is reversed. The whole series data arrays are reversed too.\n * @param {Boolean} [multi] Create a multi dimensional array from a series data array where a value object with `x` and `y` values will be created.\n * @return {Array} A plain array that contains the data to be visualized in the chart\n */\n Chartist.getDataArray = function(data, reverse, multi) {\n // Recursively walks through nested arrays and convert string values to numbers and objects with value properties\n // to values. Check the tests in data core -> data normalization for a detailed specification of expected values\n function recursiveConvert(value) {\n if(Chartist.safeHasProperty(value, 'value')) {\n // We are dealing with value object notation so we need to recurse on value property\n return recursiveConvert(value.value);\n } else if(Chartist.safeHasProperty(value, 'data')) {\n // We are dealing with series object notation so we need to recurse on data property\n return recursiveConvert(value.data);\n } else if(value instanceof Array) {\n // Data is of type array so we need to recurse on the series\n return value.map(recursiveConvert);\n } else if(Chartist.isDataHoleValue(value)) {\n // We're dealing with a hole in the data and therefore need to return undefined\n // We're also returning undefined for multi value output\n return undefined;\n } else {\n // We need to prepare multi value output (x and y data)\n if(multi) {\n var multiValue = {};\n\n // Single series value arrays are assumed to specify the Y-Axis value\n // For example: [1, 2] => [{x: undefined, y: 1}, {x: undefined, y: 2}]\n // If multi is a string then it's assumed that it specified which dimension should be filled as default\n if(typeof multi === 'string') {\n multiValue[multi] = Chartist.getNumberOrUndefined(value);\n } else {\n multiValue.y = Chartist.getNumberOrUndefined(value);\n }\n\n multiValue.x = value.hasOwnProperty('x') ? Chartist.getNumberOrUndefined(value.x) : multiValue.x;\n multiValue.y = value.hasOwnProperty('y') ? Chartist.getNumberOrUndefined(value.y) : multiValue.y;\n\n return multiValue;\n\n } else {\n // We can return simple data\n return Chartist.getNumberOrUndefined(value);\n }\n }\n }\n\n return data.series.map(recursiveConvert);\n };\n\n /**\n * Converts a number into a padding object.\n *\n * @memberof Chartist.Core\n * @param {Object|Number} padding\n * @param {Number} [fallback] This value is used to fill missing values if a incomplete padding object was passed\n * @returns {Object} Returns a padding object containing top, right, bottom, left properties filled with the padding number passed in as argument. If the argument is something else than a number (presumably already a correct padding object) then this argument is directly returned.\n */\n Chartist.normalizePadding = function(padding, fallback) {\n fallback = fallback || 0;\n\n return typeof padding === 'number' ? {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n } : {\n top: typeof padding.top === 'number' ? padding.top : fallback,\n right: typeof padding.right === 'number' ? padding.right : fallback,\n bottom: typeof padding.bottom === 'number' ? padding.bottom : fallback,\n left: typeof padding.left === 'number' ? padding.left : fallback\n };\n };\n\n Chartist.getMetaData = function(series, index) {\n var value = series.data ? series.data[index] : series[index];\n return value ? value.meta : undefined;\n };\n\n /**\n * Calculate the order of magnitude for the chart scale\n *\n * @memberof Chartist.Core\n * @param {Number} value The value Range of the chart\n * @return {Number} The order of magnitude\n */\n Chartist.orderOfMagnitude = function (value) {\n return Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n };\n\n /**\n * Project a data length into screen coordinates (pixels)\n *\n * @memberof Chartist.Core\n * @param {Object} axisLength The svg element for the chart\n * @param {Number} length Single data value from a series array\n * @param {Object} bounds All the values to set the bounds of the chart\n * @return {Number} The projected data length in pixels\n */\n Chartist.projectLength = function (axisLength, length, bounds) {\n return length / bounds.range * axisLength;\n };\n\n /**\n * Get the height of the area in the chart for the data series\n *\n * @memberof Chartist.Core\n * @param {Object} svg The svg element for the chart\n * @param {Object} options The Object that contains all the optional values for the chart\n * @return {Number} The height of the area in the chart for the data series\n */\n Chartist.getAvailableHeight = function (svg, options) {\n return Math.max((Chartist.quantity(options.height).value || svg.height()) - (options.chartPadding.top + options.chartPadding.bottom) - options.axisX.offset, 0);\n };\n\n /**\n * Get highest and lowest value of data array. This Array contains the data that will be visualized in the chart.\n *\n * @memberof Chartist.Core\n * @param {Array} data The array that contains the data to be visualized in the chart\n * @param {Object} options The Object that contains the chart options\n * @param {String} dimension Axis dimension 'x' or 'y' used to access the correct value and high / low configuration\n * @return {Object} An object that contains the highest and lowest value that will be visualized on the chart.\n */\n Chartist.getHighLow = function (data, options, dimension) {\n // TODO: Remove workaround for deprecated global high / low config. Axis high / low configuration is preferred\n options = Chartist.extend({}, options, dimension ? options['axis' + dimension.toUpperCase()] : {});\n\n var highLow = {\n high: options.high === undefined ? -Number.MAX_VALUE : +options.high,\n low: options.low === undefined ? Number.MAX_VALUE : +options.low\n };\n var findHigh = options.high === undefined;\n var findLow = options.low === undefined;\n\n // Function to recursively walk through arrays and find highest and lowest number\n function recursiveHighLow(data) {\n if(data === undefined) {\n return undefined;\n } else if(data instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n recursiveHighLow(data[i]);\n }\n } else {\n var value = dimension ? +data[dimension] : +data;\n\n if (findHigh && value > highLow.high) {\n highLow.high = value;\n }\n\n if (findLow && value < highLow.low) {\n highLow.low = value;\n }\n }\n }\n\n // Start to find highest and lowest number recursively\n if(findHigh || findLow) {\n recursiveHighLow(data);\n }\n\n // Overrides of high / low based on reference value, it will make sure that the invisible reference value is\n // used to generate the chart. This is useful when the chart always needs to contain the position of the\n // invisible reference value in the view i.e. for bipolar scales.\n if (options.referenceValue || options.referenceValue === 0) {\n highLow.high = Math.max(options.referenceValue, highLow.high);\n highLow.low = Math.min(options.referenceValue, highLow.low);\n }\n\n // If high and low are the same because of misconfiguration or flat data (only the same value) we need\n // to set the high or low to 0 depending on the polarity\n if (highLow.high <= highLow.low) {\n // If both values are 0 we set high to 1\n if (highLow.low === 0) {\n highLow.high = 1;\n } else if (highLow.low < 0) {\n // If we have the same negative value for the bounds we set bounds.high to 0\n highLow.high = 0;\n } else if (highLow.high > 0) {\n // If we have the same positive value for the bounds we set bounds.low to 0\n highLow.low = 0;\n } else {\n // If data array was empty, values are Number.MAX_VALUE and -Number.MAX_VALUE. Set bounds to prevent errors\n highLow.high = 1;\n highLow.low = 0;\n }\n }\n\n return highLow;\n };\n\n /**\n * Checks if a value can be safely coerced to a number. This includes all values except null which result in finite numbers when coerced. This excludes NaN, since it's not finite.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {Boolean}\n */\n Chartist.isNumeric = function(value) {\n return value === null ? false : isFinite(value);\n };\n\n /**\n * Returns true on all falsey values except the numeric value 0.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {boolean}\n */\n Chartist.isFalseyButZero = function(value) {\n return !value && value !== 0;\n };\n\n /**\n * Returns a number if the passed parameter is a valid number or the function will return undefined. On all other values than a valid number, this function will return undefined.\n *\n * @memberof Chartist.Core\n * @param value\n * @returns {*}\n */\n Chartist.getNumberOrUndefined = function(value) {\n return Chartist.isNumeric(value) ? +value : undefined;\n };\n\n /**\n * Checks if provided value object is multi value (contains x or y properties)\n *\n * @memberof Chartist.Core\n * @param value\n */\n Chartist.isMultiValue = function(value) {\n return typeof value === 'object' && ('x' in value || 'y' in value);\n };\n\n /**\n * Gets a value from a dimension `value.x` or `value.y` while returning value directly if it's a valid numeric value. If the value is not numeric and it's falsey this function will return `defaultValue`.\n *\n * @memberof Chartist.Core\n * @param value\n * @param dimension\n * @param defaultValue\n * @returns {*}\n */\n Chartist.getMultiValue = function(value, dimension) {\n if(Chartist.isMultiValue(value)) {\n return Chartist.getNumberOrUndefined(value[dimension || 'y']);\n } else {\n return Chartist.getNumberOrUndefined(value);\n }\n };\n\n /**\n * Pollard Rho Algorithm to find smallest factor of an integer value. There are more efficient algorithms for factorization, but this one is quite efficient and not so complex.\n *\n * @memberof Chartist.Core\n * @param {Number} num An integer number where the smallest factor should be searched for\n * @returns {Number} The smallest integer factor of the parameter num.\n */\n Chartist.rho = function(num) {\n if(num === 1) {\n return num;\n }\n\n function gcd(p, q) {\n if (p % q === 0) {\n return q;\n } else {\n return gcd(q, p % q);\n }\n }\n\n function f(x) {\n return x * x + 1;\n }\n\n var x1 = 2, x2 = 2, divisor;\n if (num % 2 === 0) {\n return 2;\n }\n\n do {\n x1 = f(x1) % num;\n x2 = f(f(x2)) % num;\n divisor = gcd(Math.abs(x1 - x2), num);\n } while (divisor === 1);\n\n return divisor;\n };\n\n /**\n * Calculate and retrieve all the bounds for the chart and return them in one array\n *\n * @memberof Chartist.Core\n * @param {Number} axisLength The length of the Axis used for\n * @param {Object} highLow An object containing a high and low property indicating the value range of the chart.\n * @param {Number} scaleMinSpace The minimum projected length a step should result in\n * @param {Boolean} onlyInteger\n * @return {Object} All the values to set the bounds of the chart\n */\n Chartist.getBounds = function (axisLength, highLow, scaleMinSpace, onlyInteger) {\n var i,\n optimizationCounter = 0,\n newMin,\n newMax,\n bounds = {\n high: highLow.high,\n low: highLow.low\n };\n\n bounds.valueRange = bounds.high - bounds.low;\n bounds.oom = Chartist.orderOfMagnitude(bounds.valueRange);\n bounds.step = Math.pow(10, bounds.oom);\n bounds.min = Math.floor(bounds.low / bounds.step) * bounds.step;\n bounds.max = Math.ceil(bounds.high / bounds.step) * bounds.step;\n bounds.range = bounds.max - bounds.min;\n bounds.numberOfSteps = Math.round(bounds.range / bounds.step);\n\n // Optimize scale step by checking if subdivision is possible based on horizontalGridMinSpace\n // If we are already below the scaleMinSpace value we will scale up\n var length = Chartist.projectLength(axisLength, bounds.step, bounds);\n var scaleUp = length < scaleMinSpace;\n var smallestFactor = onlyInteger ? Chartist.rho(bounds.range) : 0;\n\n // First check if we should only use integer steps and if step 1 is still larger than scaleMinSpace so we can use 1\n if(onlyInteger && Chartist.projectLength(axisLength, 1, bounds) >= scaleMinSpace) {\n bounds.step = 1;\n } else if(onlyInteger && smallestFactor < bounds.step && Chartist.projectLength(axisLength, smallestFactor, bounds) >= scaleMinSpace) {\n // If step 1 was too small, we can try the smallest factor of range\n // If the smallest factor is smaller than the current bounds.step and the projected length of smallest factor\n // is larger than the scaleMinSpace we should go for it.\n bounds.step = smallestFactor;\n } else {\n // Trying to divide or multiply by 2 and find the best step value\n while (true) {\n if (scaleUp && Chartist.projectLength(axisLength, bounds.step, bounds) <= scaleMinSpace) {\n bounds.step *= 2;\n } else if (!scaleUp && Chartist.projectLength(axisLength, bounds.step / 2, bounds) >= scaleMinSpace) {\n bounds.step /= 2;\n if(onlyInteger && bounds.step % 1 !== 0) {\n bounds.step *= 2;\n break;\n }\n } else {\n break;\n }\n\n if(optimizationCounter++ > 1000) {\n throw new Error('Exceeded maximum number of iterations while optimizing scale step!');\n }\n }\n }\n\n var EPSILON = 2.221E-16;\n bounds.step = Math.max(bounds.step, EPSILON);\n function safeIncrement(value, increment) {\n // If increment is too small use *= (1+EPSILON) as a simple nextafter\n if (value === (value += increment)) {\n \tvalue *= (1 + (increment > 0 ? EPSILON : -EPSILON));\n }\n return value;\n }\n\n // Narrow min and max based on new step\n newMin = bounds.min;\n newMax = bounds.max;\n while (newMin + bounds.step <= bounds.low) {\n \tnewMin = safeIncrement(newMin, bounds.step);\n }\n while (newMax - bounds.step >= bounds.high) {\n \tnewMax = safeIncrement(newMax, -bounds.step);\n }\n bounds.min = newMin;\n bounds.max = newMax;\n bounds.range = bounds.max - bounds.min;\n\n var values = [];\n for (i = bounds.min; i <= bounds.max; i = safeIncrement(i, bounds.step)) {\n var value = Chartist.roundWithPrecision(i);\n if (value !== values[values.length - 1]) {\n values.push(value);\n }\n }\n bounds.values = values;\n return bounds;\n };\n\n /**\n * Calculate cartesian coordinates of polar coordinates\n *\n * @memberof Chartist.Core\n * @param {Number} centerX X-axis coordinates of center point of circle segment\n * @param {Number} centerY X-axis coordinates of center point of circle segment\n * @param {Number} radius Radius of circle segment\n * @param {Number} angleInDegrees Angle of circle segment in degrees\n * @return {{x:Number, y:Number}} Coordinates of point on circumference\n */\n Chartist.polarToCartesian = function (centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;\n\n return {\n x: centerX + (radius * Math.cos(angleInRadians)),\n y: centerY + (radius * Math.sin(angleInRadians))\n };\n };\n\n /**\n * Initialize chart drawing rectangle (area where chart is drawn) x1,y1 = bottom left / x2,y2 = top right\n *\n * @memberof Chartist.Core\n * @param {Object} svg The svg element for the chart\n * @param {Object} options The Object that contains all the optional values for the chart\n * @param {Number} [fallbackPadding] The fallback padding if partial padding objects are used\n * @return {Object} The chart rectangles coordinates inside the svg element plus the rectangles measurements\n */\n Chartist.createChartRect = function (svg, options, fallbackPadding) {\n var hasAxis = !!(options.axisX || options.axisY);\n var yAxisOffset = hasAxis ? options.axisY.offset : 0;\n var xAxisOffset = hasAxis ? options.axisX.offset : 0;\n // If width or height results in invalid value (including 0) we fallback to the unitless settings or even 0\n var width = svg.width() || Chartist.quantity(options.width).value || 0;\n var height = svg.height() || Chartist.quantity(options.height).value || 0;\n var normalizedPadding = Chartist.normalizePadding(options.chartPadding, fallbackPadding);\n\n // If settings were to small to cope with offset (legacy) and padding, we'll adjust\n width = Math.max(width, yAxisOffset + normalizedPadding.left + normalizedPadding.right);\n height = Math.max(height, xAxisOffset + normalizedPadding.top + normalizedPadding.bottom);\n\n var chartRect = {\n padding: normalizedPadding,\n width: function () {\n return this.x2 - this.x1;\n },\n height: function () {\n return this.y1 - this.y2;\n }\n };\n\n if(hasAxis) {\n if (options.axisX.position === 'start') {\n chartRect.y2 = normalizedPadding.top + xAxisOffset;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom, chartRect.y2 + 1);\n } else {\n chartRect.y2 = normalizedPadding.top;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom - xAxisOffset, chartRect.y2 + 1);\n }\n\n if (options.axisY.position === 'start') {\n chartRect.x1 = normalizedPadding.left + yAxisOffset;\n chartRect.x2 = Math.max(width - normalizedPadding.right, chartRect.x1 + 1);\n } else {\n chartRect.x1 = normalizedPadding.left;\n chartRect.x2 = Math.max(width - normalizedPadding.right - yAxisOffset, chartRect.x1 + 1);\n }\n } else {\n chartRect.x1 = normalizedPadding.left;\n chartRect.x2 = Math.max(width - normalizedPadding.right, chartRect.x1 + 1);\n chartRect.y2 = normalizedPadding.top;\n chartRect.y1 = Math.max(height - normalizedPadding.bottom, chartRect.y2 + 1);\n }\n\n return chartRect;\n };\n\n /**\n * Creates a grid line based on a projected value.\n *\n * @memberof Chartist.Core\n * @param position\n * @param index\n * @param axis\n * @param offset\n * @param length\n * @param group\n * @param classes\n * @param eventEmitter\n */\n Chartist.createGrid = function(position, index, axis, offset, length, group, classes, eventEmitter) {\n var positionalData = {};\n positionalData[axis.units.pos + '1'] = position;\n positionalData[axis.units.pos + '2'] = position;\n positionalData[axis.counterUnits.pos + '1'] = offset;\n positionalData[axis.counterUnits.pos + '2'] = offset + length;\n\n var gridElement = group.elem('line', positionalData, classes.join(' '));\n\n // Event for grid draw\n eventEmitter.emit('draw',\n Chartist.extend({\n type: 'grid',\n axis: axis,\n index: index,\n group: group,\n element: gridElement\n }, positionalData)\n );\n };\n\n /**\n * Creates a grid background rect and emits the draw event.\n *\n * @memberof Chartist.Core\n * @param gridGroup\n * @param chartRect\n * @param className\n * @param eventEmitter\n */\n Chartist.createGridBackground = function (gridGroup, chartRect, className, eventEmitter) {\n var gridBackground = gridGroup.elem('rect', {\n x: chartRect.x1,\n y: chartRect.y2,\n width: chartRect.width(),\n height: chartRect.height(),\n }, className, true);\n\n // Event for grid background draw\n eventEmitter.emit('draw', {\n type: 'gridBackground',\n group: gridGroup,\n element: gridBackground\n });\n };\n\n /**\n * Creates a label based on a projected value and an axis.\n *\n * @memberof Chartist.Core\n * @param position\n * @param length\n * @param index\n * @param labels\n * @param axis\n * @param axisOffset\n * @param labelOffset\n * @param group\n * @param classes\n * @param useForeignObject\n * @param eventEmitter\n */\n Chartist.createLabel = function(position, length, index, labels, axis, axisOffset, labelOffset, group, classes, useForeignObject, eventEmitter) {\n var labelElement;\n var positionalData = {};\n\n positionalData[axis.units.pos] = position + labelOffset[axis.units.pos];\n positionalData[axis.counterUnits.pos] = labelOffset[axis.counterUnits.pos];\n positionalData[axis.units.len] = length;\n positionalData[axis.counterUnits.len] = Math.max(0, axisOffset - 10);\n\n if(useForeignObject) {\n // We need to set width and height explicitly to px as span will not expand with width and height being\n // 100% in all browsers\n var content = document.createElement('span');\n content.className = classes.join(' ');\n content.setAttribute('xmlns', Chartist.namespaces.xhtml);\n content.innerText = labels[index];\n content.style[axis.units.len] = Math.round(positionalData[axis.units.len]) + 'px';\n content.style[axis.counterUnits.len] = Math.round(positionalData[axis.counterUnits.len]) + 'px';\n\n labelElement = group.foreignObject(content, Chartist.extend({\n style: 'overflow: visible;'\n }, positionalData));\n } else {\n labelElement = group.elem('text', positionalData, classes.join(' ')).text(labels[index]);\n }\n\n eventEmitter.emit('draw', Chartist.extend({\n type: 'label',\n axis: axis,\n index: index,\n group: group,\n element: labelElement,\n text: labels[index]\n }, positionalData));\n };\n\n /**\n * Helper to read series specific options from options object. It automatically falls back to the global option if\n * there is no option in the series options.\n *\n * @param {Object} series Series object\n * @param {Object} options Chartist options object\n * @param {string} key The options key that should be used to obtain the options\n * @returns {*}\n */\n Chartist.getSeriesOption = function(series, options, key) {\n if(series.name && options.series && options.series[series.name]) {\n var seriesOptions = options.series[series.name];\n return seriesOptions.hasOwnProperty(key) ? seriesOptions[key] : options[key];\n } else {\n return options[key];\n }\n };\n\n /**\n * Provides options handling functionality with callback for options changes triggered by responsive options and media query matches\n *\n * @memberof Chartist.Core\n * @param {Object} options Options set by user\n * @param {Array} responsiveOptions Optional functions to add responsive behavior to chart\n * @param {Object} eventEmitter The event emitter that will be used to emit the options changed events\n * @return {Object} The consolidated options object from the defaults, base and matching responsive options\n */\n Chartist.optionsProvider = function (options, responsiveOptions, eventEmitter) {\n var baseOptions = Chartist.extend({}, options),\n currentOptions,\n mediaQueryListeners = [],\n i;\n\n function updateCurrentOptions(mediaEvent) {\n var previousOptions = currentOptions;\n currentOptions = Chartist.extend({}, baseOptions);\n\n if (responsiveOptions) {\n for (i = 0; i < responsiveOptions.length; i++) {\n var mql = window.matchMedia(responsiveOptions[i][0]);\n if (mql.matches) {\n currentOptions = Chartist.extend(currentOptions, responsiveOptions[i][1]);\n }\n }\n }\n\n if(eventEmitter && mediaEvent) {\n eventEmitter.emit('optionsChanged', {\n previousOptions: previousOptions,\n currentOptions: currentOptions\n });\n }\n }\n\n function removeMediaQueryListeners() {\n mediaQueryListeners.forEach(function(mql) {\n mql.removeListener(updateCurrentOptions);\n });\n }\n\n if (!window.matchMedia) {\n throw 'window.matchMedia not found! Make sure you\\'re using a polyfill.';\n } else if (responsiveOptions) {\n\n for (i = 0; i < responsiveOptions.length; i++) {\n var mql = window.matchMedia(responsiveOptions[i][0]);\n mql.addListener(updateCurrentOptions);\n mediaQueryListeners.push(mql);\n }\n }\n // Execute initially without an event argument so we get the correct options\n updateCurrentOptions();\n\n return {\n removeMediaQueryListeners: removeMediaQueryListeners,\n getCurrentOptions: function getCurrentOptions() {\n return Chartist.extend({}, currentOptions);\n }\n };\n };\n\n\n /**\n * Splits a list of coordinates and associated values into segments. Each returned segment contains a pathCoordinates\n * valueData property describing the segment.\n *\n * With the default options, segments consist of contiguous sets of points that do not have an undefined value. Any\n * points with undefined values are discarded.\n *\n * **Options**\n * The following options are used to determine how segments are formed\n * ```javascript\n * var options = {\n * // If fillHoles is true, undefined values are simply discarded without creating a new segment. Assuming other options are default, this returns single segment.\n * fillHoles: false,\n * // If increasingX is true, the coordinates in all segments have strictly increasing x-values.\n * increasingX: false\n * };\n * ```\n *\n * @memberof Chartist.Core\n * @param {Array} pathCoordinates List of point coordinates to be split in the form [x1, y1, x2, y2 ... xn, yn]\n * @param {Array} values List of associated point values in the form [v1, v2 .. vn]\n * @param {Object} options Options set by user\n * @return {Array} List of segments, each containing a pathCoordinates and valueData property.\n */\n Chartist.splitIntoSegments = function(pathCoordinates, valueData, options) {\n var defaultOptions = {\n increasingX: false,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n var segments = [];\n var hole = true;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n // If this value is a \"hole\" we set the hole flag\n if(Chartist.getMultiValue(valueData[i / 2].value) === undefined) {\n // if(valueData[i / 2].value === undefined) {\n if(!options.fillHoles) {\n hole = true;\n }\n } else {\n if(options.increasingX && i >= 2 && pathCoordinates[i] <= pathCoordinates[i-2]) {\n // X is not increasing, so we need to make sure we start a new segment\n hole = true;\n }\n\n\n // If it's a valid value we need to check if we're coming out of a hole and create a new empty segment\n if(hole) {\n segments.push({\n pathCoordinates: [],\n valueData: []\n });\n // As we have a valid value now, we are not in a \"hole\" anymore\n hole = false;\n }\n\n // Add to the segment pathCoordinates and valueData\n segments[segments.length - 1].pathCoordinates.push(pathCoordinates[i], pathCoordinates[i + 1]);\n segments[segments.length - 1].valueData.push(valueData[i / 2]);\n }\n }\n\n return segments;\n };\n}(this || global, Chartist));\n;/**\n * Chartist path interpolation functions.\n *\n * @module Chartist.Interpolation\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n Chartist.Interpolation = {};\n\n /**\n * This interpolation function does not smooth the path and the result is only containing lines and no curves.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.none({\n * fillHoles: false\n * })\n * });\n *\n *\n * @memberof Chartist.Interpolation\n * @return {Function}\n */\n Chartist.Interpolation.none = function(options) {\n var defaultOptions = {\n fillHoles: false\n };\n options = Chartist.extend({}, defaultOptions, options);\n return function none(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n var hole = true;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var currData = valueData[i / 2];\n\n if(Chartist.getMultiValue(currData.value) !== undefined) {\n\n if(hole) {\n path.move(currX, currY, false, currData);\n } else {\n path.line(currX, currY, false, currData);\n }\n\n hole = false;\n } else if(!options.fillHoles) {\n hole = true;\n }\n }\n\n return path;\n };\n };\n\n /**\n * Simple smoothing creates horizontal handles that are positioned with a fraction of the length between two data points. You can use the divisor option to specify the amount of smoothing.\n *\n * Simple smoothing can be used instead of `Chartist.Smoothing.cardinal` if you'd like to get rid of the artifacts it produces sometimes. Simple smoothing produces less flowing lines but is accurate by hitting the points and it also doesn't swing below or above the given data point.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The simple interpolation function accepts one configuration parameter `divisor`, between 1 and ∞, which controls the smoothing characteristics.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.simple({\n * divisor: 2,\n * fillHoles: false\n * })\n * });\n *\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the simple interpolation factory function.\n * @return {Function}\n */\n Chartist.Interpolation.simple = function(options) {\n var defaultOptions = {\n divisor: 2,\n fillHoles: false\n };\n options = Chartist.extend({}, defaultOptions, options);\n\n var d = 1 / Math.max(1, options.divisor);\n\n return function simple(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n var prevX, prevY, prevData;\n\n for(var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var length = (currX - prevX) * d;\n var currData = valueData[i / 2];\n\n if(currData.value !== undefined) {\n\n if(prevData === undefined) {\n path.move(currX, currY, false, currData);\n } else {\n path.curve(\n prevX + length,\n prevY,\n currX - length,\n currY,\n currX,\n currY,\n false,\n currData\n );\n }\n\n prevX = currX;\n prevY = currY;\n prevData = currData;\n } else if(!options.fillHoles) {\n prevX = currX = prevData = undefined;\n }\n }\n\n return path;\n };\n };\n\n /**\n * Cardinal / Catmull-Rome spline interpolation is the default smoothing function in Chartist. It produces nice results where the splines will always meet the points. It produces some artifacts though when data values are increased or decreased rapidly. The line may not follow a very accurate path and if the line should be accurate this smoothing function does not produce the best results.\n *\n * Cardinal splines can only be created if there are more than two data points. If this is not the case this smoothing will fallback to `Chartist.Smoothing.none`.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The cardinal interpolation function accepts one configuration parameter `tension`, between 0 and 1, which controls the smoothing intensity.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.cardinal({\n * tension: 1,\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the cardinal factory function.\n * @return {Function}\n */\n Chartist.Interpolation.cardinal = function(options) {\n var defaultOptions = {\n tension: 1,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n var t = Math.min(1, Math.max(0, options.tension)),\n c = 1 - t;\n\n return function cardinal(pathCoordinates, valueData) {\n // First we try to split the coordinates into segments\n // This is necessary to treat \"holes\" in line charts\n var segments = Chartist.splitIntoSegments(pathCoordinates, valueData, {\n fillHoles: options.fillHoles\n });\n\n if(!segments.length) {\n // If there were no segments return 'Chartist.Interpolation.none'\n return Chartist.Interpolation.none()([]);\n } else if(segments.length > 1) {\n // If the split resulted in more that one segment we need to interpolate each segment individually and join them\n // afterwards together into a single path.\n var paths = [];\n // For each segment we will recurse the cardinal function\n segments.forEach(function(segment) {\n paths.push(cardinal(segment.pathCoordinates, segment.valueData));\n });\n // Join the segment path data into a single path and return\n return Chartist.Svg.Path.join(paths);\n } else {\n // If there was only one segment we can proceed regularly by using pathCoordinates and valueData from the first\n // segment\n pathCoordinates = segments[0].pathCoordinates;\n valueData = segments[0].valueData;\n\n // If less than two points we need to fallback to no smoothing\n if(pathCoordinates.length <= 4) {\n return Chartist.Interpolation.none()(pathCoordinates, valueData);\n }\n\n var path = new Chartist.Svg.Path().move(pathCoordinates[0], pathCoordinates[1], false, valueData[0]),\n z;\n\n for (var i = 0, iLen = pathCoordinates.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {x: +pathCoordinates[i - 2], y: +pathCoordinates[i - 1]},\n {x: +pathCoordinates[i], y: +pathCoordinates[i + 1]},\n {x: +pathCoordinates[i + 2], y: +pathCoordinates[i + 3]},\n {x: +pathCoordinates[i + 4], y: +pathCoordinates[i + 5]}\n ];\n if (z) {\n if (!i) {\n p[0] = {x: +pathCoordinates[iLen - 2], y: +pathCoordinates[iLen - 1]};\n } else if (iLen - 4 === i) {\n p[3] = {x: +pathCoordinates[0], y: +pathCoordinates[1]};\n } else if (iLen - 2 === i) {\n p[2] = {x: +pathCoordinates[0], y: +pathCoordinates[1]};\n p[3] = {x: +pathCoordinates[2], y: +pathCoordinates[3]};\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {x: +pathCoordinates[i], y: +pathCoordinates[i + 1]};\n }\n }\n\n path.curve(\n (t * (-p[0].x + 6 * p[1].x + p[2].x) / 6) + (c * p[2].x),\n (t * (-p[0].y + 6 * p[1].y + p[2].y) / 6) + (c * p[2].y),\n (t * (p[1].x + 6 * p[2].x - p[3].x) / 6) + (c * p[2].x),\n (t * (p[1].y + 6 * p[2].y - p[3].y) / 6) + (c * p[2].y),\n p[2].x,\n p[2].y,\n false,\n valueData[(i + 2) / 2]\n );\n }\n\n return path;\n }\n };\n };\n\n /**\n * Monotone Cubic spline interpolation produces a smooth curve which preserves monotonicity. Unlike cardinal splines, the curve will not extend beyond the range of y-values of the original data points.\n *\n * Monotone Cubic splines can only be created if there are more than two data points. If this is not the case this smoothing will fallback to `Chartist.Smoothing.none`.\n *\n * The x-values of subsequent points must be increasing to fit a Monotone Cubic spline. If this condition is not met for a pair of adjacent points, then there will be a break in the curve between those data points.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.monotoneCubic({\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param {Object} options The options of the monotoneCubic factory function.\n * @return {Function}\n */\n Chartist.Interpolation.monotoneCubic = function(options) {\n var defaultOptions = {\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n return function monotoneCubic(pathCoordinates, valueData) {\n // First we try to split the coordinates into segments\n // This is necessary to treat \"holes\" in line charts\n var segments = Chartist.splitIntoSegments(pathCoordinates, valueData, {\n fillHoles: options.fillHoles,\n increasingX: true\n });\n\n if(!segments.length) {\n // If there were no segments return 'Chartist.Interpolation.none'\n return Chartist.Interpolation.none()([]);\n } else if(segments.length > 1) {\n // If the split resulted in more that one segment we need to interpolate each segment individually and join them\n // afterwards together into a single path.\n var paths = [];\n // For each segment we will recurse the monotoneCubic fn function\n segments.forEach(function(segment) {\n paths.push(monotoneCubic(segment.pathCoordinates, segment.valueData));\n });\n // Join the segment path data into a single path and return\n return Chartist.Svg.Path.join(paths);\n } else {\n // If there was only one segment we can proceed regularly by using pathCoordinates and valueData from the first\n // segment\n pathCoordinates = segments[0].pathCoordinates;\n valueData = segments[0].valueData;\n\n // If less than three points we need to fallback to no smoothing\n if(pathCoordinates.length <= 4) {\n return Chartist.Interpolation.none()(pathCoordinates, valueData);\n }\n\n var xs = [],\n ys = [],\n i,\n n = pathCoordinates.length / 2,\n ms = [],\n ds = [], dys = [], dxs = [],\n path;\n\n // Populate x and y coordinates into separate arrays, for readability\n\n for(i = 0; i < n; i++) {\n xs[i] = pathCoordinates[i * 2];\n ys[i] = pathCoordinates[i * 2 + 1];\n }\n\n // Calculate deltas and derivative\n\n for(i = 0; i < n - 1; i++) {\n dys[i] = ys[i + 1] - ys[i];\n dxs[i] = xs[i + 1] - xs[i];\n ds[i] = dys[i] / dxs[i];\n }\n\n // Determine desired slope (m) at each point using Fritsch-Carlson method\n // See: http://math.stackexchange.com/questions/45218/implementation-of-monotone-cubic-interpolation\n\n ms[0] = ds[0];\n ms[n - 1] = ds[n - 2];\n\n for(i = 1; i < n - 1; i++) {\n if(ds[i] === 0 || ds[i - 1] === 0 || (ds[i - 1] > 0) !== (ds[i] > 0)) {\n ms[i] = 0;\n } else {\n ms[i] = 3 * (dxs[i - 1] + dxs[i]) / (\n (2 * dxs[i] + dxs[i - 1]) / ds[i - 1] +\n (dxs[i] + 2 * dxs[i - 1]) / ds[i]);\n\n if(!isFinite(ms[i])) {\n ms[i] = 0;\n }\n }\n }\n\n // Now build a path from the slopes\n\n path = new Chartist.Svg.Path().move(xs[0], ys[0], false, valueData[0]);\n\n for(i = 0; i < n - 1; i++) {\n path.curve(\n // First control point\n xs[i] + dxs[i] / 3,\n ys[i] + ms[i] * dxs[i] / 3,\n // Second control point\n xs[i + 1] - dxs[i] / 3,\n ys[i + 1] - ms[i + 1] * dxs[i] / 3,\n // End point\n xs[i + 1],\n ys[i + 1],\n\n false,\n valueData[i + 1]\n );\n }\n\n return path;\n }\n };\n };\n\n /**\n * Step interpolation will cause the line chart to move in steps rather than diagonal or smoothed lines. This interpolation will create additional points that will also be drawn when the `showPoint` option is enabled.\n *\n * All smoothing functions within Chartist are factory functions that accept an options parameter. The step interpolation function accepts one configuration parameter `postpone`, that can be `true` or `false`. The default value is `true` and will cause the step to occur where the value actually changes. If a different behaviour is needed where the step is shifted to the left and happens before the actual value, this option can be set to `false`.\n *\n * @example\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [[1, 2, 8, 1, 7]]\n * }, {\n * lineSmooth: Chartist.Interpolation.step({\n * postpone: true,\n * fillHoles: false\n * })\n * });\n *\n * @memberof Chartist.Interpolation\n * @param options\n * @returns {Function}\n */\n Chartist.Interpolation.step = function(options) {\n var defaultOptions = {\n postpone: true,\n fillHoles: false\n };\n\n options = Chartist.extend({}, defaultOptions, options);\n\n return function step(pathCoordinates, valueData) {\n var path = new Chartist.Svg.Path();\n\n var prevX, prevY, prevData;\n\n for (var i = 0; i < pathCoordinates.length; i += 2) {\n var currX = pathCoordinates[i];\n var currY = pathCoordinates[i + 1];\n var currData = valueData[i / 2];\n\n // If the current point is also not a hole we can draw the step lines\n if(currData.value !== undefined) {\n if(prevData === undefined) {\n path.move(currX, currY, false, currData);\n } else {\n if(options.postpone) {\n // If postponed we should draw the step line with the value of the previous value\n path.line(currX, prevY, false, prevData);\n } else {\n // If not postponed we should draw the step line with the value of the current value\n path.line(prevX, currY, false, currData);\n }\n // Line to the actual point (this should only be a Y-Axis movement\n path.line(currX, currY, false, currData);\n }\n\n prevX = currX;\n prevY = currY;\n prevData = currData;\n } else if(!options.fillHoles) {\n prevX = prevY = prevData = undefined;\n }\n }\n\n return path;\n };\n };\n\n}(this || global, Chartist));\n;/**\n * A very basic event module that helps to generate and catch events.\n *\n * @module Chartist.Event\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n Chartist.EventEmitter = function () {\n var handlers = [];\n\n /**\n * Add an event handler for a specific event\n *\n * @memberof Chartist.Event\n * @param {String} event The event name\n * @param {Function} handler A event handler function\n */\n function addEventHandler(event, handler) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n }\n\n /**\n * Remove an event handler of a specific event name or remove all event handlers for a specific event.\n *\n * @memberof Chartist.Event\n * @param {String} event The event name where a specific or all handlers should be removed\n * @param {Function} [handler] An optional event handler function. If specified only this specific handler will be removed and otherwise all handlers are removed.\n */\n function removeEventHandler(event, handler) {\n // Only do something if there are event handlers with this name existing\n if(handlers[event]) {\n // If handler is set we will look for a specific handler and only remove this\n if(handler) {\n handlers[event].splice(handlers[event].indexOf(handler), 1);\n if(handlers[event].length === 0) {\n delete handlers[event];\n }\n } else {\n // If no handler is specified we remove all handlers for this event\n delete handlers[event];\n }\n }\n }\n\n /**\n * Use this function to emit an event. All handlers that are listening for this event will be triggered with the data parameter.\n *\n * @memberof Chartist.Event\n * @param {String} event The event name that should be triggered\n * @param {*} data Arbitrary data that will be passed to the event handler callback functions\n */\n function emit(event, data) {\n // Only do something if there are event handlers with this name existing\n if(handlers[event]) {\n handlers[event].forEach(function(handler) {\n handler(data);\n });\n }\n\n // Emit event to star event handlers\n if(handlers['*']) {\n handlers['*'].forEach(function(starHandler) {\n starHandler(event, data);\n });\n }\n }\n\n return {\n addEventHandler: addEventHandler,\n removeEventHandler: removeEventHandler,\n emit: emit\n };\n };\n\n}(this || global, Chartist));\n;/**\n * This module provides some basic prototype inheritance utilities.\n *\n * @module Chartist.Class\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n function listToArray(list) {\n var arr = [];\n if (list.length) {\n for (var i = 0; i < list.length; i++) {\n arr.push(list[i]);\n }\n }\n return arr;\n }\n\n /**\n * Method to extend from current prototype.\n *\n * @memberof Chartist.Class\n * @param {Object} properties The object that serves as definition for the prototype that gets created for the new class. This object should always contain a constructor property that is the desired constructor for the newly created class.\n * @param {Object} [superProtoOverride] By default extens will use the current class prototype or Chartist.class. With this parameter you can specify any super prototype that will be used.\n * @return {Function} Constructor function of the new class\n *\n * @example\n * var Fruit = Class.extend({\n * color: undefined,\n * sugar: undefined,\n *\n * constructor: function(color, sugar) {\n * this.color = color;\n * this.sugar = sugar;\n * },\n *\n * eat: function() {\n * this.sugar = 0;\n * return this;\n * }\n * });\n *\n * var Banana = Fruit.extend({\n * length: undefined,\n *\n * constructor: function(length, sugar) {\n * Banana.super.constructor.call(this, 'Yellow', sugar);\n * this.length = length;\n * }\n * });\n *\n * var banana = new Banana(20, 40);\n * console.log('banana instanceof Fruit', banana instanceof Fruit);\n * console.log('Fruit is prototype of banana', Fruit.prototype.isPrototypeOf(banana));\n * console.log('bananas prototype is Fruit', Object.getPrototypeOf(banana) === Fruit.prototype);\n * console.log(banana.sugar);\n * console.log(banana.eat().sugar);\n * console.log(banana.color);\n */\n function extend(properties, superProtoOverride) {\n var superProto = superProtoOverride || this.prototype || Chartist.Class;\n var proto = Object.create(superProto);\n\n Chartist.Class.cloneDefinitions(proto, properties);\n\n var constr = function() {\n var fn = proto.constructor || function () {},\n instance;\n\n // If this is linked to the Chartist namespace the constructor was not called with new\n // To provide a fallback we will instantiate here and return the instance\n instance = this === Chartist ? Object.create(proto) : this;\n fn.apply(instance, Array.prototype.slice.call(arguments, 0));\n\n // If this constructor was not called with new we need to return the instance\n // This will not harm when the constructor has been called with new as the returned value is ignored\n return instance;\n };\n\n constr.prototype = proto;\n constr.super = superProto;\n constr.extend = this.extend;\n\n return constr;\n }\n\n // Variable argument list clones args > 0 into args[0] and retruns modified args[0]\n function cloneDefinitions() {\n var args = listToArray(arguments);\n var target = args[0];\n\n args.splice(1, args.length - 1).forEach(function (source) {\n Object.getOwnPropertyNames(source).forEach(function (propName) {\n // If this property already exist in target we delete it first\n delete target[propName];\n // Define the property with the descriptor from source\n Object.defineProperty(target, propName,\n Object.getOwnPropertyDescriptor(source, propName));\n });\n });\n\n return target;\n }\n\n Chartist.Class = {\n extend: extend,\n cloneDefinitions: cloneDefinitions\n };\n\n}(this || global, Chartist));\n;/**\n * Base for all chart types. The methods in Chartist.Base are inherited to all chart types.\n *\n * @module Chartist.Base\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n\n // TODO: Currently we need to re-draw the chart on window resize. This is usually very bad and will affect performance.\n // This is done because we can't work with relative coordinates when drawing the chart because SVG Path does not\n // work with relative positions yet. We need to check if we can do a viewBox hack to switch to percentage.\n // See http://mozilla.6506.n7.nabble.com/Specyfing-paths-with-percentages-unit-td247474.html\n // Update: can be done using the above method tested here: http://codepen.io/gionkunz/pen/KDvLj\n // The problem is with the label offsets that can't be converted into percentage and affecting the chart container\n /**\n * Updates the chart which currently does a full reconstruction of the SVG DOM\n *\n * @param {Object} [data] Optional data you'd like to set for the chart before it will update. If not specified the update method will use the data that is already configured with the chart.\n * @param {Object} [options] Optional options you'd like to add to the previous options for the chart before it will update. If not specified the update method will use the options that have been already configured with the chart.\n * @param {Boolean} [override] If set to true, the passed options will be used to extend the options that have been configured already. Otherwise the chart default options will be used as the base\n * @memberof Chartist.Base\n */\n function update(data, options, override) {\n if(data) {\n this.data = data || {};\n this.data.labels = this.data.labels || [];\n this.data.series = this.data.series || [];\n // Event for data transformation that allows to manipulate the data before it gets rendered in the charts\n this.eventEmitter.emit('data', {\n type: 'update',\n data: this.data\n });\n }\n\n if(options) {\n this.options = Chartist.extend({}, override ? this.options : this.defaultOptions, options);\n\n // If chartist was not initialized yet, we just set the options and leave the rest to the initialization\n // Otherwise we re-create the optionsProvider at this point\n if(!this.initializeTimeoutId) {\n this.optionsProvider.removeMediaQueryListeners();\n this.optionsProvider = Chartist.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter);\n }\n }\n\n // Only re-created the chart if it has been initialized yet\n if(!this.initializeTimeoutId) {\n this.createChart(this.optionsProvider.getCurrentOptions());\n }\n\n // Return a reference to the chart object to chain up calls\n return this;\n }\n\n /**\n * This method can be called on the API object of each chart and will un-register all event listeners that were added to other components. This currently includes a window.resize listener as well as media query listeners if any responsive options have been provided. Use this function if you need to destroy and recreate Chartist charts dynamically.\n *\n * @memberof Chartist.Base\n */\n function detach() {\n // Only detach if initialization already occurred on this chart. If this chart still hasn't initialized (therefore\n // the initializationTimeoutId is still a valid timeout reference, we will clear the timeout\n if(!this.initializeTimeoutId) {\n window.removeEventListener('resize', this.resizeListener);\n this.optionsProvider.removeMediaQueryListeners();\n } else {\n window.clearTimeout(this.initializeTimeoutId);\n }\n\n return this;\n }\n\n /**\n * Use this function to register event handlers. The handler callbacks are synchronous and will run in the main thread rather than the event loop.\n *\n * @memberof Chartist.Base\n * @param {String} event Name of the event. Check the examples for supported events.\n * @param {Function} handler The handler function that will be called when an event with the given name was emitted. This function will receive a data argument which contains event data. See the example for more details.\n */\n function on(event, handler) {\n this.eventEmitter.addEventHandler(event, handler);\n return this;\n }\n\n /**\n * Use this function to un-register event handlers. If the handler function parameter is omitted all handlers for the given event will be un-registered.\n *\n * @memberof Chartist.Base\n * @param {String} event Name of the event for which a handler should be removed\n * @param {Function} [handler] The handler function that that was previously used to register a new event handler. This handler will be removed from the event handler list. If this parameter is omitted then all event handlers for the given event are removed from the list.\n */\n function off(event, handler) {\n this.eventEmitter.removeEventHandler(event, handler);\n return this;\n }\n\n function initialize() {\n // Add window resize listener that re-creates the chart\n window.addEventListener('resize', this.resizeListener);\n\n // Obtain current options based on matching media queries (if responsive options are given)\n // This will also register a listener that is re-creating the chart based on media changes\n this.optionsProvider = Chartist.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter);\n // Register options change listener that will trigger a chart update\n this.eventEmitter.addEventHandler('optionsChanged', function() {\n this.update();\n }.bind(this));\n\n // Before the first chart creation we need to register us with all plugins that are configured\n // Initialize all relevant plugins with our chart object and the plugin options specified in the config\n if(this.options.plugins) {\n this.options.plugins.forEach(function(plugin) {\n if(plugin instanceof Array) {\n plugin[0](this, plugin[1]);\n } else {\n plugin(this);\n }\n }.bind(this));\n }\n\n // Event for data transformation that allows to manipulate the data before it gets rendered in the charts\n this.eventEmitter.emit('data', {\n type: 'initial',\n data: this.data\n });\n\n // Create the first chart\n this.createChart(this.optionsProvider.getCurrentOptions());\n\n // As chart is initialized from the event loop now we can reset our timeout reference\n // This is important if the chart gets initialized on the same element twice\n this.initializeTimeoutId = undefined;\n }\n\n /**\n * Constructor of chart base class.\n *\n * @param query\n * @param data\n * @param defaultOptions\n * @param options\n * @param responsiveOptions\n * @constructor\n */\n function Base(query, data, defaultOptions, options, responsiveOptions) {\n this.container = Chartist.querySelector(query);\n this.data = data || {};\n this.data.labels = this.data.labels || [];\n this.data.series = this.data.series || [];\n this.defaultOptions = defaultOptions;\n this.options = options;\n this.responsiveOptions = responsiveOptions;\n this.eventEmitter = Chartist.EventEmitter();\n this.supportsForeignObject = Chartist.Svg.isSupported('Extensibility');\n this.supportsAnimations = Chartist.Svg.isSupported('AnimationEventsAttribute');\n this.resizeListener = function resizeListener(){\n this.update();\n }.bind(this);\n\n if(this.container) {\n // If chartist was already initialized in this container we are detaching all event listeners first\n if(this.container.__chartist__) {\n this.container.__chartist__.detach();\n }\n\n this.container.__chartist__ = this;\n }\n\n // Using event loop for first draw to make it possible to register event listeners in the same call stack where\n // the chart was created.\n this.initializeTimeoutId = setTimeout(initialize.bind(this), 0);\n }\n\n // Creating the chart base class\n Chartist.Base = Chartist.Class.extend({\n constructor: Base,\n optionsProvider: undefined,\n container: undefined,\n svg: undefined,\n eventEmitter: undefined,\n createChart: function() {\n throw new Error('Base chart type can\\'t be instantiated!');\n },\n update: update,\n detach: detach,\n on: on,\n off: off,\n version: Chartist.version,\n supportsForeignObject: false\n });\n\n}(this || global, Chartist));\n;/**\n * Chartist SVG module for simple SVG DOM abstraction\n *\n * @module Chartist.Svg\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var document = globalRoot.document;\n\n /**\n * Chartist.Svg creates a new SVG object wrapper with a starting element. You can use the wrapper to fluently create sub-elements and modify them.\n *\n * @memberof Chartist.Svg\n * @constructor\n * @param {String|Element} name The name of the SVG element to create or an SVG dom element which should be wrapped into Chartist.Svg\n * @param {Object} attributes An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added.\n * @param {String} className This class or class list will be added to the SVG element\n * @param {Object} parent The parent SVG wrapper object where this newly created wrapper and it's element will be attached to as child\n * @param {Boolean} insertFirst If this param is set to true in conjunction with a parent element the newly created element will be added as first child element in the parent element\n */\n function Svg(name, attributes, className, parent, insertFirst) {\n // If Svg is getting called with an SVG element we just return the wrapper\n if(name instanceof Element) {\n this._node = name;\n } else {\n this._node = document.createElementNS(Chartist.namespaces.svg, name);\n\n // If this is an SVG element created then custom namespace\n if(name === 'svg') {\n this.attr({\n 'xmlns:ct': Chartist.namespaces.ct\n });\n }\n }\n\n if(attributes) {\n this.attr(attributes);\n }\n\n if(className) {\n this.addClass(className);\n }\n\n if(parent) {\n if (insertFirst && parent._node.firstChild) {\n parent._node.insertBefore(this._node, parent._node.firstChild);\n } else {\n parent._node.appendChild(this._node);\n }\n }\n }\n\n /**\n * Set attributes on the current SVG element of the wrapper you're currently working on.\n *\n * @memberof Chartist.Svg\n * @param {Object|String} attributes An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added. If this parameter is a String then the function is used as a getter and will return the attribute value.\n * @param {String} [ns] If specified, the attribute will be obtained using getAttributeNs. In order to write namepsaced attributes you can use the namespace:attribute notation within the attributes object.\n * @return {Object|String} The current wrapper object will be returned so it can be used for chaining or the attribute value if used as getter function.\n */\n function attr(attributes, ns) {\n if(typeof attributes === 'string') {\n if(ns) {\n return this._node.getAttributeNS(ns, attributes);\n } else {\n return this._node.getAttribute(attributes);\n }\n }\n\n Object.keys(attributes).forEach(function(key) {\n // If the attribute value is undefined we can skip this one\n if(attributes[key] === undefined) {\n return;\n }\n\n if (key.indexOf(':') !== -1) {\n var namespacedAttribute = key.split(':');\n this._node.setAttributeNS(Chartist.namespaces[namespacedAttribute[0]], key, attributes[key]);\n } else {\n this._node.setAttribute(key, attributes[key]);\n }\n }.bind(this));\n\n return this;\n }\n\n /**\n * Create a new SVG element whose wrapper object will be selected for further operations. This way you can also create nested groups easily.\n *\n * @memberof Chartist.Svg\n * @param {String} name The name of the SVG element that should be created as child element of the currently selected element wrapper\n * @param {Object} [attributes] An object with properties that will be added as attributes to the SVG element that is created. Attributes with undefined values will not be added.\n * @param {String} [className] This class or class list will be added to the SVG element\n * @param {Boolean} [insertFirst] If this param is set to true in conjunction with a parent element the newly created element will be added as first child element in the parent element\n * @return {Chartist.Svg} Returns a Chartist.Svg wrapper object that can be used to modify the containing SVG data\n */\n function elem(name, attributes, className, insertFirst) {\n return new Chartist.Svg(name, attributes, className, this, insertFirst);\n }\n\n /**\n * Returns the parent Chartist.SVG wrapper object\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} Returns a Chartist.Svg wrapper around the parent node of the current node. If the parent node is not existing or it's not an SVG node then this function will return null.\n */\n function parent() {\n return this._node.parentNode instanceof SVGElement ? new Chartist.Svg(this._node.parentNode) : null;\n }\n\n /**\n * This method returns a Chartist.Svg wrapper around the root SVG element of the current tree.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The root SVG element wrapped in a Chartist.Svg element\n */\n function root() {\n var node = this._node;\n while(node.nodeName !== 'svg') {\n node = node.parentNode;\n }\n return new Chartist.Svg(node);\n }\n\n /**\n * Find the first child SVG element of the current element that matches a CSS selector. The returned object is a Chartist.Svg wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} selector A CSS selector that is used to query for child SVG elements\n * @return {Chartist.Svg} The SVG wrapper for the element found or null if no element was found\n */\n function querySelector(selector) {\n var foundNode = this._node.querySelector(selector);\n return foundNode ? new Chartist.Svg(foundNode) : null;\n }\n\n /**\n * Find the all child SVG elements of the current element that match a CSS selector. The returned object is a Chartist.Svg.List wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} selector A CSS selector that is used to query for child SVG elements\n * @return {Chartist.Svg.List} The SVG wrapper list for the element found or null if no element was found\n */\n function querySelectorAll(selector) {\n var foundNodes = this._node.querySelectorAll(selector);\n return foundNodes.length ? new Chartist.Svg.List(foundNodes) : null;\n }\n\n /**\n * Returns the underlying SVG node for the current element.\n *\n * @memberof Chartist.Svg\n * @returns {Node}\n */\n function getNode() {\n return this._node;\n }\n\n /**\n * This method creates a foreignObject (see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject) that allows to embed HTML content into a SVG graphic. With the help of foreignObjects you can enable the usage of regular HTML elements inside of SVG where they are subject for SVG positioning and transformation but the Browser will use the HTML rendering capabilities for the containing DOM.\n *\n * @memberof Chartist.Svg\n * @param {Node|String} content The DOM Node, or HTML string that will be converted to a DOM Node, that is then placed into and wrapped by the foreignObject\n * @param {String} [attributes] An object with properties that will be added as attributes to the foreignObject element that is created. Attributes with undefined values will not be added.\n * @param {String} [className] This class or class list will be added to the SVG element\n * @param {Boolean} [insertFirst] Specifies if the foreignObject should be inserted as first child\n * @return {Chartist.Svg} New wrapper object that wraps the foreignObject element\n */\n function foreignObject(content, attributes, className, insertFirst) {\n // If content is string then we convert it to DOM\n // TODO: Handle case where content is not a string nor a DOM Node\n if(typeof content === 'string') {\n var container = document.createElement('div');\n container.innerHTML = content;\n content = container.firstChild;\n }\n\n // Adding namespace to content element\n content.setAttribute('xmlns', Chartist.namespaces.xmlns);\n\n // Creating the foreignObject without required extension attribute (as described here\n // http://www.w3.org/TR/SVG/extend.html#ForeignObjectElement)\n var fnObj = this.elem('foreignObject', attributes, className, insertFirst);\n\n // Add content to foreignObjectElement\n fnObj._node.appendChild(content);\n\n return fnObj;\n }\n\n /**\n * This method adds a new text element to the current Chartist.Svg wrapper.\n *\n * @memberof Chartist.Svg\n * @param {String} t The text that should be added to the text element that is created\n * @return {Chartist.Svg} The same wrapper object that was used to add the newly created element\n */\n function text(t) {\n this._node.appendChild(document.createTextNode(t));\n return this;\n }\n\n /**\n * This method will clear all child nodes of the current wrapper object.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The same wrapper object that got emptied\n */\n function empty() {\n while (this._node.firstChild) {\n this._node.removeChild(this._node.firstChild);\n }\n\n return this;\n }\n\n /**\n * This method will cause the current wrapper to remove itself from its parent wrapper. Use this method if you'd like to get rid of an element in a given DOM structure.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The parent wrapper object of the element that got removed\n */\n function remove() {\n this._node.parentNode.removeChild(this._node);\n return this.parent();\n }\n\n /**\n * This method will replace the element with a new element that can be created outside of the current DOM.\n *\n * @memberof Chartist.Svg\n * @param {Chartist.Svg} newElement The new Chartist.Svg object that will be used to replace the current wrapper object\n * @return {Chartist.Svg} The wrapper of the new element\n */\n function replace(newElement) {\n this._node.parentNode.replaceChild(newElement._node, this._node);\n return newElement;\n }\n\n /**\n * This method will append an element to the current element as a child.\n *\n * @memberof Chartist.Svg\n * @param {Chartist.Svg} element The Chartist.Svg element that should be added as a child\n * @param {Boolean} [insertFirst] Specifies if the element should be inserted as first child\n * @return {Chartist.Svg} The wrapper of the appended object\n */\n function append(element, insertFirst) {\n if(insertFirst && this._node.firstChild) {\n this._node.insertBefore(element._node, this._node.firstChild);\n } else {\n this._node.appendChild(element._node);\n }\n\n return this;\n }\n\n /**\n * Returns an array of class names that are attached to the current wrapper element. This method can not be chained further.\n *\n * @memberof Chartist.Svg\n * @return {Array} A list of classes or an empty array if there are no classes on the current element\n */\n function classes() {\n return this._node.getAttribute('class') ? this._node.getAttribute('class').trim().split(/\\s+/) : [];\n }\n\n /**\n * Adds one or a space separated list of classes to the current element and ensures the classes are only existing once.\n *\n * @memberof Chartist.Svg\n * @param {String} names A white space separated list of class names\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function addClass(names) {\n this._node.setAttribute('class',\n this.classes(this._node)\n .concat(names.trim().split(/\\s+/))\n .filter(function(elem, pos, self) {\n return self.indexOf(elem) === pos;\n }).join(' ')\n );\n\n return this;\n }\n\n /**\n * Removes one or a space separated list of classes from the current element.\n *\n * @memberof Chartist.Svg\n * @param {String} names A white space separated list of class names\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function removeClass(names) {\n var removedClasses = names.trim().split(/\\s+/);\n\n this._node.setAttribute('class', this.classes(this._node).filter(function(name) {\n return removedClasses.indexOf(name) === -1;\n }).join(' '));\n\n return this;\n }\n\n /**\n * Removes all classes from the current element.\n *\n * @memberof Chartist.Svg\n * @return {Chartist.Svg} The wrapper of the current element\n */\n function removeAllClasses() {\n this._node.setAttribute('class', '');\n\n return this;\n }\n\n /**\n * Get element height using `getBoundingClientRect`\n *\n * @memberof Chartist.Svg\n * @return {Number} The elements height in pixels\n */\n function height() {\n return this._node.getBoundingClientRect().height;\n }\n\n /**\n * Get element width using `getBoundingClientRect`\n *\n * @memberof Chartist.Core\n * @return {Number} The elements width in pixels\n */\n function width() {\n return this._node.getBoundingClientRect().width;\n }\n\n /**\n * The animate function lets you animate the current element with SMIL animations. You can add animations for multiple attributes at the same time by using an animation definition object. This object should contain SMIL animation attributes. Please refer to http://www.w3.org/TR/SVG/animate.html for a detailed specification about the available animation attributes. Additionally an easing property can be passed in the animation definition object. This can be a string with a name of an easing function in `Chartist.Svg.Easing` or an array with four numbers specifying a cubic Bézier curve.\n * **An animations object could look like this:**\n * ```javascript\n * element.animate({\n * opacity: {\n * dur: 1000,\n * from: 0,\n * to: 1\n * },\n * x1: {\n * dur: '1000ms',\n * from: 100,\n * to: 200,\n * easing: 'easeOutQuart'\n * },\n * y1: {\n * dur: '2s',\n * from: 0,\n * to: 100\n * }\n * });\n * ```\n * **Automatic unit conversion**\n * For the `dur` and the `begin` animate attribute you can also omit a unit by passing a number. The number will automatically be converted to milli seconds.\n * **Guided mode**\n * The default behavior of SMIL animations with offset using the `begin` attribute is that the attribute will keep it's original value until the animation starts. Mostly this behavior is not desired as you'd like to have your element attributes already initialized with the animation `from` value even before the animation starts. Also if you don't specify `fill=\"freeze\"` on an animate element or if you delete the animation after it's done (which is done in guided mode) the attribute will switch back to the initial value. This behavior is also not desired when performing simple one-time animations. For one-time animations you'd want to trigger animations immediately instead of relative to the document begin time. That's why in guided mode Chartist.Svg will also use the `begin` property to schedule a timeout and manually start the animation after the timeout. If you're using multiple SMIL definition objects for an attribute (in an array), guided mode will be disabled for this attribute, even if you explicitly enabled it.\n * If guided mode is enabled the following behavior is added:\n * - Before the animation starts (even when delayed with `begin`) the animated attribute will be set already to the `from` value of the animation\n * - `begin` is explicitly set to `indefinite` so it can be started manually without relying on document begin time (creation)\n * - The animate element will be forced to use `fill=\"freeze\"`\n * - The animation will be triggered with `beginElement()` in a timeout where `begin` of the definition object is interpreted in milli seconds. If no `begin` was specified the timeout is triggered immediately.\n * - After the animation the element attribute value will be set to the `to` value of the animation\n * - The animate element is deleted from the DOM\n *\n * @memberof Chartist.Svg\n * @param {Object} animations An animations object where the property keys are the attributes you'd like to animate. The properties should be objects again that contain the SMIL animation attributes (usually begin, dur, from, and to). The property begin and dur is auto converted (see Automatic unit conversion). You can also schedule multiple animations for the same attribute by passing an Array of SMIL definition objects. Attributes that contain an array of SMIL definition objects will not be executed in guided mode.\n * @param {Boolean} guided Specify if guided mode should be activated for this animation (see Guided mode). If not otherwise specified, guided mode will be activated.\n * @param {Object} eventEmitter If specified, this event emitter will be notified when an animation starts or ends.\n * @return {Chartist.Svg} The current element where the animation was added\n */\n function animate(animations, guided, eventEmitter) {\n if(guided === undefined) {\n guided = true;\n }\n\n Object.keys(animations).forEach(function createAnimateForAttributes(attribute) {\n\n function createAnimate(animationDefinition, guided) {\n var attributeProperties = {},\n animate,\n timeout,\n easing;\n\n // Check if an easing is specified in the definition object and delete it from the object as it will not\n // be part of the animate element attributes.\n if(animationDefinition.easing) {\n // If already an easing Bézier curve array we take it or we lookup a easing array in the Easing object\n easing = animationDefinition.easing instanceof Array ?\n animationDefinition.easing :\n Chartist.Svg.Easing[animationDefinition.easing];\n delete animationDefinition.easing;\n }\n\n // If numeric dur or begin was provided we assume milli seconds\n animationDefinition.begin = Chartist.ensureUnit(animationDefinition.begin, 'ms');\n animationDefinition.dur = Chartist.ensureUnit(animationDefinition.dur, 'ms');\n\n if(easing) {\n animationDefinition.calcMode = 'spline';\n animationDefinition.keySplines = easing.join(' ');\n animationDefinition.keyTimes = '0;1';\n }\n\n // Adding \"fill: freeze\" if we are in guided mode and set initial attribute values\n if(guided) {\n animationDefinition.fill = 'freeze';\n // Animated property on our element should already be set to the animation from value in guided mode\n attributeProperties[attribute] = animationDefinition.from;\n this.attr(attributeProperties);\n\n // In guided mode we also set begin to indefinite so we can trigger the start manually and put the begin\n // which needs to be in ms aside\n timeout = Chartist.quantity(animationDefinition.begin || 0).value;\n animationDefinition.begin = 'indefinite';\n }\n\n animate = this.elem('animate', Chartist.extend({\n attributeName: attribute\n }, animationDefinition));\n\n if(guided) {\n // If guided we take the value that was put aside in timeout and trigger the animation manually with a timeout\n setTimeout(function() {\n // If beginElement fails we set the animated attribute to the end position and remove the animate element\n // This happens if the SMIL ElementTimeControl interface is not supported or any other problems occured in\n // the browser. (Currently FF 34 does not support animate elements in foreignObjects)\n try {\n animate._node.beginElement();\n } catch(err) {\n // Set animated attribute to current animated value\n attributeProperties[attribute] = animationDefinition.to;\n this.attr(attributeProperties);\n // Remove the animate element as it's no longer required\n animate.remove();\n }\n }.bind(this), timeout);\n }\n\n if(eventEmitter) {\n animate._node.addEventListener('beginEvent', function handleBeginEvent() {\n eventEmitter.emit('animationBegin', {\n element: this,\n animate: animate._node,\n params: animationDefinition\n });\n }.bind(this));\n }\n\n animate._node.addEventListener('endEvent', function handleEndEvent() {\n if(eventEmitter) {\n eventEmitter.emit('animationEnd', {\n element: this,\n animate: animate._node,\n params: animationDefinition\n });\n }\n\n if(guided) {\n // Set animated attribute to current animated value\n attributeProperties[attribute] = animationDefinition.to;\n this.attr(attributeProperties);\n // Remove the animate element as it's no longer required\n animate.remove();\n }\n }.bind(this));\n }\n\n // If current attribute is an array of definition objects we create an animate for each and disable guided mode\n if(animations[attribute] instanceof Array) {\n animations[attribute].forEach(function(animationDefinition) {\n createAnimate.bind(this)(animationDefinition, false);\n }.bind(this));\n } else {\n createAnimate.bind(this)(animations[attribute], guided);\n }\n\n }.bind(this));\n\n return this;\n }\n\n Chartist.Svg = Chartist.Class.extend({\n constructor: Svg,\n attr: attr,\n elem: elem,\n parent: parent,\n root: root,\n querySelector: querySelector,\n querySelectorAll: querySelectorAll,\n getNode: getNode,\n foreignObject: foreignObject,\n text: text,\n empty: empty,\n remove: remove,\n replace: replace,\n append: append,\n classes: classes,\n addClass: addClass,\n removeClass: removeClass,\n removeAllClasses: removeAllClasses,\n height: height,\n width: width,\n animate: animate\n });\n\n /**\n * This method checks for support of a given SVG feature like Extensibility, SVG-animation or the like. Check http://www.w3.org/TR/SVG11/feature for a detailed list.\n *\n * @memberof Chartist.Svg\n * @param {String} feature The SVG 1.1 feature that should be checked for support.\n * @return {Boolean} True of false if the feature is supported or not\n */\n Chartist.Svg.isSupported = function(feature) {\n return document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#' + feature, '1.1');\n };\n\n /**\n * This Object contains some standard easing cubic bezier curves. Then can be used with their name in the `Chartist.Svg.animate`. You can also extend the list and use your own name in the `animate` function. Click the show code button to see the available bezier functions.\n *\n * @memberof Chartist.Svg\n */\n var easingCubicBeziers = {\n easeInSine: [0.47, 0, 0.745, 0.715],\n easeOutSine: [0.39, 0.575, 0.565, 1],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeOutCubic: [0.215, 0.61, 0.355, 1],\n easeInOutCubic: [0.645, 0.045, 0.355, 1],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeOutQuart: [0.165, 0.84, 0.44, 1],\n easeInOutQuart: [0.77, 0, 0.175, 1],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeOutQuint: [0.23, 1, 0.32, 1],\n easeInOutQuint: [0.86, 0, 0.07, 1],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeOutExpo: [0.19, 1, 0.22, 1],\n easeInOutExpo: [1, 0, 0, 1],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n easeOutCirc: [0.075, 0.82, 0.165, 1],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n easeInBack: [0.6, -0.28, 0.735, 0.045],\n easeOutBack: [0.175, 0.885, 0.32, 1.275],\n easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n };\n\n Chartist.Svg.Easing = easingCubicBeziers;\n\n /**\n * This helper class is to wrap multiple `Chartist.Svg` elements into a list where you can call the `Chartist.Svg` functions on all elements in the list with one call. This is helpful when you'd like to perform calls with `Chartist.Svg` on multiple elements.\n * An instance of this class is also returned by `Chartist.Svg.querySelectorAll`.\n *\n * @memberof Chartist.Svg\n * @param {Array|NodeList} nodeList An Array of SVG DOM nodes or a SVG DOM NodeList (as returned by document.querySelectorAll)\n * @constructor\n */\n function SvgList(nodeList) {\n var list = this;\n\n this.svgElements = [];\n for(var i = 0; i < nodeList.length; i++) {\n this.svgElements.push(new Chartist.Svg(nodeList[i]));\n }\n\n // Add delegation methods for Chartist.Svg\n Object.keys(Chartist.Svg.prototype).filter(function(prototypeProperty) {\n return ['constructor',\n 'parent',\n 'querySelector',\n 'querySelectorAll',\n 'replace',\n 'append',\n 'classes',\n 'height',\n 'width'].indexOf(prototypeProperty) === -1;\n }).forEach(function(prototypeProperty) {\n list[prototypeProperty] = function() {\n var args = Array.prototype.slice.call(arguments, 0);\n list.svgElements.forEach(function(element) {\n Chartist.Svg.prototype[prototypeProperty].apply(element, args);\n });\n return list;\n };\n });\n }\n\n Chartist.Svg.List = Chartist.Class.extend({\n constructor: SvgList\n });\n}(this || global, Chartist));\n;/**\n * Chartist SVG path module for SVG path description creation and modification.\n *\n * @module Chartist.Svg.Path\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n /**\n * Contains the descriptors of supported element types in a SVG path. Currently only move, line and curve are supported.\n *\n * @memberof Chartist.Svg.Path\n * @type {Object}\n */\n var elementDescriptions = {\n m: ['x', 'y'],\n l: ['x', 'y'],\n c: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n a: ['rx', 'ry', 'xAr', 'lAf', 'sf', 'x', 'y']\n };\n\n /**\n * Default options for newly created SVG path objects.\n *\n * @memberof Chartist.Svg.Path\n * @type {Object}\n */\n var defaultOptions = {\n // The accuracy in digit count after the decimal point. This will be used to round numbers in the SVG path. If this option is set to false then no rounding will be performed.\n accuracy: 3\n };\n\n function element(command, params, pathElements, pos, relative, data) {\n var pathElement = Chartist.extend({\n command: relative ? command.toLowerCase() : command.toUpperCase()\n }, params, data ? { data: data } : {} );\n\n pathElements.splice(pos, 0, pathElement);\n }\n\n function forEachParam(pathElements, cb) {\n pathElements.forEach(function(pathElement, pathElementIndex) {\n elementDescriptions[pathElement.command.toLowerCase()].forEach(function(paramName, paramIndex) {\n cb(pathElement, paramName, pathElementIndex, paramIndex, pathElements);\n });\n });\n }\n\n /**\n * Used to construct a new path object.\n *\n * @memberof Chartist.Svg.Path\n * @param {Boolean} close If set to true then this path will be closed when stringified (with a Z at the end)\n * @param {Object} options Options object that overrides the default objects. See default options for more details.\n * @constructor\n */\n function SvgPath(close, options) {\n this.pathElements = [];\n this.pos = 0;\n this.close = close;\n this.options = Chartist.extend({}, defaultOptions, options);\n }\n\n /**\n * Gets or sets the current position (cursor) inside of the path. You can move around the cursor freely but limited to 0 or the count of existing elements. All modifications with element functions will insert new elements at the position of this cursor.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} [pos] If a number is passed then the cursor is set to this position in the path element array.\n * @return {Chartist.Svg.Path|Number} If the position parameter was passed then the return value will be the path object for easy call chaining. If no position parameter was passed then the current position is returned.\n */\n function position(pos) {\n if(pos !== undefined) {\n this.pos = Math.max(0, Math.min(this.pathElements.length, pos));\n return this;\n } else {\n return this.pos;\n }\n }\n\n /**\n * Removes elements from the path starting at the current position.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} count Number of path elements that should be removed from the current position.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function remove(count) {\n this.pathElements.splice(this.pos, count);\n return this;\n }\n\n /**\n * Use this function to add a new move SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The x coordinate for the move element.\n * @param {Number} y The y coordinate for the move element.\n * @param {Boolean} [relative] If set to true the move element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function move(x, y, relative, data) {\n element('M', {\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new line SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The x coordinate for the line element.\n * @param {Number} y The y coordinate for the line element.\n * @param {Boolean} [relative] If set to true the line element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function line(x, y, relative, data) {\n element('L', {\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new curve SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x1 The x coordinate for the first control point of the bezier curve.\n * @param {Number} y1 The y coordinate for the first control point of the bezier curve.\n * @param {Number} x2 The x coordinate for the second control point of the bezier curve.\n * @param {Number} y2 The y coordinate for the second control point of the bezier curve.\n * @param {Number} x The x coordinate for the target point of the curve element.\n * @param {Number} y The y coordinate for the target point of the curve element.\n * @param {Boolean} [relative] If set to true the curve element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function curve(x1, y1, x2, y2, x, y, relative, data) {\n element('C', {\n x1: +x1,\n y1: +y1,\n x2: +x2,\n y2: +y2,\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Use this function to add a new non-bezier curve SVG path element.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} rx The radius to be used for the x-axis of the arc.\n * @param {Number} ry The radius to be used for the y-axis of the arc.\n * @param {Number} xAr Defines the orientation of the arc\n * @param {Number} lAf Large arc flag\n * @param {Number} sf Sweep flag\n * @param {Number} x The x coordinate for the target point of the curve element.\n * @param {Number} y The y coordinate for the target point of the curve element.\n * @param {Boolean} [relative] If set to true the curve element will be created with relative coordinates (lowercase letter)\n * @param {*} [data] Any data that should be stored with the element object that will be accessible in pathElement\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function arc(rx, ry, xAr, lAf, sf, x, y, relative, data) {\n element('A', {\n rx: +rx,\n ry: +ry,\n xAr: +xAr,\n lAf: +lAf,\n sf: +sf,\n x: +x,\n y: +y\n }, this.pathElements, this.pos++, relative, data);\n return this;\n }\n\n /**\n * Parses an SVG path seen in the d attribute of path elements, and inserts the parsed elements into the existing path object at the current cursor position. Any closing path indicators (Z at the end of the path) will be ignored by the parser as this is provided by the close option in the options of the path object.\n *\n * @memberof Chartist.Svg.Path\n * @param {String} path Any SVG path that contains move (m), line (l) or curve (c) components.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function parse(path) {\n // Parsing the SVG path string into an array of arrays [['M', '10', '10'], ['L', '100', '100']]\n var chunks = path.replace(/([A-Za-z])([0-9])/g, '$1 $2')\n .replace(/([0-9])([A-Za-z])/g, '$1 $2')\n .split(/[\\s,]+/)\n .reduce(function(result, element) {\n if(element.match(/[A-Za-z]/)) {\n result.push([]);\n }\n\n result[result.length - 1].push(element);\n return result;\n }, []);\n\n // If this is a closed path we remove the Z at the end because this is determined by the close option\n if(chunks[chunks.length - 1][0].toUpperCase() === 'Z') {\n chunks.pop();\n }\n\n // Using svgPathElementDescriptions to map raw path arrays into objects that contain the command and the parameters\n // For example {command: 'M', x: '10', y: '10'}\n var elements = chunks.map(function(chunk) {\n var command = chunk.shift(),\n description = elementDescriptions[command.toLowerCase()];\n\n return Chartist.extend({\n command: command\n }, description.reduce(function(result, paramName, index) {\n result[paramName] = +chunk[index];\n return result;\n }, {}));\n });\n\n // Preparing a splice call with the elements array as var arg params and insert the parsed elements at the current position\n var spliceArgs = [this.pos, 0];\n Array.prototype.push.apply(spliceArgs, elements);\n Array.prototype.splice.apply(this.pathElements, spliceArgs);\n // Increase the internal position by the element count\n this.pos += elements.length;\n\n return this;\n }\n\n /**\n * This function renders to current SVG path object into a final SVG string that can be used in the d attribute of SVG path elements. It uses the accuracy option to round big decimals. If the close parameter was set in the constructor of this path object then a path closing Z will be appended to the output string.\n *\n * @memberof Chartist.Svg.Path\n * @return {String}\n */\n function stringify() {\n var accuracyMultiplier = Math.pow(10, this.options.accuracy);\n\n return this.pathElements.reduce(function(path, pathElement) {\n var params = elementDescriptions[pathElement.command.toLowerCase()].map(function(paramName) {\n return this.options.accuracy ?\n (Math.round(pathElement[paramName] * accuracyMultiplier) / accuracyMultiplier) :\n pathElement[paramName];\n }.bind(this));\n\n return path + pathElement.command + params.join(',');\n }.bind(this), '') + (this.close ? 'Z' : '');\n }\n\n /**\n * Scales all elements in the current SVG path object. There is an individual parameter for each coordinate. Scaling will also be done for control points of curves, affecting the given coordinate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The number which will be used to scale the x, x1 and x2 of all path elements.\n * @param {Number} y The number which will be used to scale the y, y1 and y2 of all path elements.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function scale(x, y) {\n forEachParam(this.pathElements, function(pathElement, paramName) {\n pathElement[paramName] *= paramName[0] === 'x' ? x : y;\n });\n return this;\n }\n\n /**\n * Translates all elements in the current SVG path object. The translation is relative and there is an individual parameter for each coordinate. Translation will also be done for control points of curves, affecting the given coordinate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Number} x The number which will be used to translate the x, x1 and x2 of all path elements.\n * @param {Number} y The number which will be used to translate the y, y1 and y2 of all path elements.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function translate(x, y) {\n forEachParam(this.pathElements, function(pathElement, paramName) {\n pathElement[paramName] += paramName[0] === 'x' ? x : y;\n });\n return this;\n }\n\n /**\n * This function will run over all existing path elements and then loop over their attributes. The callback function will be called for every path element attribute that exists in the current path.\n * The method signature of the callback function looks like this:\n * ```javascript\n * function(pathElement, paramName, pathElementIndex, paramIndex, pathElements)\n * ```\n * If something else than undefined is returned by the callback function, this value will be used to replace the old value. This allows you to build custom transformations of path objects that can't be achieved using the basic transformation functions scale and translate.\n *\n * @memberof Chartist.Svg.Path\n * @param {Function} transformFnc The callback function for the transformation. Check the signature in the function description.\n * @return {Chartist.Svg.Path} The current path object for easy call chaining.\n */\n function transform(transformFnc) {\n forEachParam(this.pathElements, function(pathElement, paramName, pathElementIndex, paramIndex, pathElements) {\n var transformed = transformFnc(pathElement, paramName, pathElementIndex, paramIndex, pathElements);\n if(transformed || transformed === 0) {\n pathElement[paramName] = transformed;\n }\n });\n return this;\n }\n\n /**\n * This function clones a whole path object with all its properties. This is a deep clone and path element objects will also be cloned.\n *\n * @memberof Chartist.Svg.Path\n * @param {Boolean} [close] Optional option to set the new cloned path to closed. If not specified or false, the original path close option will be used.\n * @return {Chartist.Svg.Path}\n */\n function clone(close) {\n var c = new Chartist.Svg.Path(close || this.close);\n c.pos = this.pos;\n c.pathElements = this.pathElements.slice().map(function cloneElements(pathElement) {\n return Chartist.extend({}, pathElement);\n });\n c.options = Chartist.extend({}, this.options);\n return c;\n }\n\n /**\n * Split a Svg.Path object by a specific command in the path chain. The path chain will be split and an array of newly created paths objects will be returned. This is useful if you'd like to split an SVG path by it's move commands, for example, in order to isolate chunks of drawings.\n *\n * @memberof Chartist.Svg.Path\n * @param {String} command The command you'd like to use to split the path\n * @return {Array}\n */\n function splitByCommand(command) {\n var split = [\n new Chartist.Svg.Path()\n ];\n\n this.pathElements.forEach(function(pathElement) {\n if(pathElement.command === command.toUpperCase() && split[split.length - 1].pathElements.length !== 0) {\n split.push(new Chartist.Svg.Path());\n }\n\n split[split.length - 1].pathElements.push(pathElement);\n });\n\n return split;\n }\n\n /**\n * This static function on `Chartist.Svg.Path` is joining multiple paths together into one paths.\n *\n * @memberof Chartist.Svg.Path\n * @param {Array} paths A list of paths to be joined together. The order is important.\n * @param {boolean} close If the newly created path should be a closed path\n * @param {Object} options Path options for the newly created path.\n * @return {Chartist.Svg.Path}\n */\n\n function join(paths, close, options) {\n var joinedPath = new Chartist.Svg.Path(close, options);\n for(var i = 0; i < paths.length; i++) {\n var path = paths[i];\n for(var j = 0; j < path.pathElements.length; j++) {\n joinedPath.pathElements.push(path.pathElements[j]);\n }\n }\n return joinedPath;\n }\n\n Chartist.Svg.Path = Chartist.Class.extend({\n constructor: SvgPath,\n position: position,\n remove: remove,\n move: move,\n line: line,\n curve: curve,\n arc: arc,\n scale: scale,\n translate: translate,\n transform: transform,\n parse: parse,\n stringify: stringify,\n clone: clone,\n splitByCommand: splitByCommand\n });\n\n Chartist.Svg.Path.elementDescriptions = elementDescriptions;\n Chartist.Svg.Path.join = join;\n}(this || global, Chartist));\n;/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n var axisUnits = {\n x: {\n pos: 'x',\n len: 'width',\n dir: 'horizontal',\n rectStart: 'x1',\n rectEnd: 'x2',\n rectOffset: 'y2'\n },\n y: {\n pos: 'y',\n len: 'height',\n dir: 'vertical',\n rectStart: 'y2',\n rectEnd: 'y1',\n rectOffset: 'x1'\n }\n };\n\n function Axis(units, chartRect, ticks, options) {\n this.units = units;\n this.counterUnits = units === axisUnits.x ? axisUnits.y : axisUnits.x;\n this.chartRect = chartRect;\n this.axisLength = chartRect[units.rectEnd] - chartRect[units.rectStart];\n this.gridOffset = chartRect[units.rectOffset];\n this.ticks = ticks;\n this.options = options;\n }\n\n function createGridAndLabels(gridGroup, labelGroup, useForeignObject, chartOptions, eventEmitter) {\n var axisOptions = chartOptions['axis' + this.units.pos.toUpperCase()];\n var projectedValues = this.ticks.map(this.projectValue.bind(this));\n var labelValues = this.ticks.map(axisOptions.labelInterpolationFnc);\n\n projectedValues.forEach(function(projectedValue, index) {\n var labelOffset = {\n x: 0,\n y: 0\n };\n\n // TODO: Find better solution for solving this problem\n // Calculate how much space we have available for the label\n var labelLength;\n if(projectedValues[index + 1]) {\n // If we still have one label ahead, we can calculate the distance to the next tick / label\n labelLength = projectedValues[index + 1] - projectedValue;\n } else {\n // If we don't have a label ahead and we have only two labels in total, we just take the remaining distance to\n // on the whole axis length. We limit that to a minimum of 30 pixel, so that labels close to the border will\n // still be visible inside of the chart padding.\n labelLength = Math.max(this.axisLength - projectedValue, 30);\n }\n\n // Skip grid lines and labels where interpolated label values are falsey (execpt for 0)\n if(Chartist.isFalseyButZero(labelValues[index]) && labelValues[index] !== '') {\n return;\n }\n\n // Transform to global coordinates using the chartRect\n // We also need to set the label offset for the createLabel function\n if(this.units.pos === 'x') {\n projectedValue = this.chartRect.x1 + projectedValue;\n labelOffset.x = chartOptions.axisX.labelOffset.x;\n\n // If the labels should be positioned in start position (top side for vertical axis) we need to set a\n // different offset as for positioned with end (bottom)\n if(chartOptions.axisX.position === 'start') {\n labelOffset.y = this.chartRect.padding.top + chartOptions.axisX.labelOffset.y + (useForeignObject ? 5 : 20);\n } else {\n labelOffset.y = this.chartRect.y1 + chartOptions.axisX.labelOffset.y + (useForeignObject ? 5 : 20);\n }\n } else {\n projectedValue = this.chartRect.y1 - projectedValue;\n labelOffset.y = chartOptions.axisY.labelOffset.y - (useForeignObject ? labelLength : 0);\n\n // If the labels should be positioned in start position (left side for horizontal axis) we need to set a\n // different offset as for positioned with end (right side)\n if(chartOptions.axisY.position === 'start') {\n labelOffset.x = useForeignObject ? this.chartRect.padding.left + chartOptions.axisY.labelOffset.x : this.chartRect.x1 - 10;\n } else {\n labelOffset.x = this.chartRect.x2 + chartOptions.axisY.labelOffset.x + 10;\n }\n }\n\n if(axisOptions.showGrid) {\n Chartist.createGrid(projectedValue, index, this, this.gridOffset, this.chartRect[this.counterUnits.len](), gridGroup, [\n chartOptions.classNames.grid,\n chartOptions.classNames[this.units.dir]\n ], eventEmitter);\n }\n\n if(axisOptions.showLabel) {\n Chartist.createLabel(projectedValue, labelLength, index, labelValues, this, axisOptions.offset, labelOffset, labelGroup, [\n chartOptions.classNames.label,\n chartOptions.classNames[this.units.dir],\n (axisOptions.position === 'start' ? chartOptions.classNames[axisOptions.position] : chartOptions.classNames['end'])\n ], useForeignObject, eventEmitter);\n }\n }.bind(this));\n }\n\n Chartist.Axis = Chartist.Class.extend({\n constructor: Axis,\n createGridAndLabels: createGridAndLabels,\n projectValue: function(value, index, data) {\n throw new Error('Base axis can\\'t be instantiated!');\n }\n });\n\n Chartist.Axis.units = axisUnits;\n\n}(this || global, Chartist));\n;/**\n * The auto scale axis uses standard linear scale projection of values along an axis. It uses order of magnitude to find a scale automatically and evaluates the available space in order to find the perfect amount of ticks for your chart.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // If high is specified then the axis will display values explicitly up to this value and the computed maximum from the data is ignored\n * high: 100,\n * // If low is specified then the axis will display values explicitly down to this value and the computed minimum from the data is ignored\n * low: 0,\n * // This option will be used when finding the right scale division settings. The amount of ticks on the scale will be determined so that as many ticks as possible will be displayed, while not violating this minimum required space (in pixel).\n * scaleMinSpace: 20,\n * // Can be set to true or false. If set to true, the scale will be generated with whole numbers only.\n * onlyInteger: true,\n * // The reference value can be used to make sure that this value will always be on the chart. This is especially useful on bipolar charts where the bipolar center always needs to be part of the chart.\n * referenceValue: 5\n * };\n * ```\n *\n * @module Chartist.AutoScaleAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function AutoScaleAxis(axisUnit, data, chartRect, options) {\n // Usually we calculate highLow based on the data but this can be overriden by a highLow object in the options\n var highLow = options.highLow || Chartist.getHighLow(data, options, axisUnit.pos);\n this.bounds = Chartist.getBounds(chartRect[axisUnit.rectEnd] - chartRect[axisUnit.rectStart], highLow, options.scaleMinSpace || 20, options.onlyInteger);\n this.range = {\n min: this.bounds.min,\n max: this.bounds.max\n };\n\n Chartist.AutoScaleAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n this.bounds.values,\n options);\n }\n\n function projectValue(value) {\n return this.axisLength * (+Chartist.getMultiValue(value, this.units.pos) - this.bounds.min) / this.bounds.range;\n }\n\n Chartist.AutoScaleAxis = Chartist.Axis.extend({\n constructor: AutoScaleAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The fixed scale axis uses standard linear projection of values along an axis. It makes use of a divisor option to divide the range provided from the minimum and maximum value or the options high and low that will override the computed minimum and maximum.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // If high is specified then the axis will display values explicitly up to this value and the computed maximum from the data is ignored\n * high: 100,\n * // If low is specified then the axis will display values explicitly down to this value and the computed minimum from the data is ignored\n * low: 0,\n * // If specified then the value range determined from minimum to maximum (or low and high) will be divided by this number and ticks will be generated at those division points. The default divisor is 1.\n * divisor: 4,\n * // If ticks is explicitly set, then the axis will not compute the ticks with the divisor, but directly use the data in ticks to determine at what points on the axis a tick need to be generated.\n * ticks: [1, 10, 20, 30]\n * };\n * ```\n *\n * @module Chartist.FixedScaleAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function FixedScaleAxis(axisUnit, data, chartRect, options) {\n var highLow = options.highLow || Chartist.getHighLow(data, options, axisUnit.pos);\n this.divisor = options.divisor || 1;\n this.ticks = options.ticks || Chartist.times(this.divisor).map(function(value, index) {\n return highLow.low + (highLow.high - highLow.low) / this.divisor * index;\n }.bind(this));\n this.ticks.sort(function(a, b) {\n return a - b;\n });\n this.range = {\n min: highLow.low,\n max: highLow.high\n };\n\n Chartist.FixedScaleAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n this.ticks,\n options);\n\n this.stepLength = this.axisLength / this.divisor;\n }\n\n function projectValue(value) {\n return this.axisLength * (+Chartist.getMultiValue(value, this.units.pos) - this.range.min) / (this.range.max - this.range.min);\n }\n\n Chartist.FixedScaleAxis = Chartist.Axis.extend({\n constructor: FixedScaleAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The step axis for step based charts like bar chart or step based line charts. It uses a fixed amount of ticks that will be equally distributed across the whole axis length. The projection is done using the index of the data value rather than the value itself and therefore it's only useful for distribution purpose.\n * **Options**\n * The following options are used by this axis in addition to the default axis options outlined in the axis configuration of the chart default settings.\n * ```javascript\n * var options = {\n * // Ticks to be used to distribute across the axis length. As this axis type relies on the index of the value rather than the value, arbitrary data that can be converted to a string can be used as ticks.\n * ticks: ['One', 'Two', 'Three'],\n * // If set to true the full width will be used to distribute the values where the last value will be at the maximum of the axis length. If false the spaces between the ticks will be evenly distributed instead.\n * stretch: true\n * };\n * ```\n *\n * @module Chartist.StepAxis\n */\n/* global Chartist */\n(function (globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n function StepAxis(axisUnit, data, chartRect, options) {\n Chartist.StepAxis.super.constructor.call(this,\n axisUnit,\n chartRect,\n options.ticks,\n options);\n\n var calc = Math.max(1, options.ticks.length - (options.stretch ? 1 : 0));\n this.stepLength = this.axisLength / calc;\n }\n\n function projectValue(value, index) {\n return this.stepLength * index;\n }\n\n Chartist.StepAxis = Chartist.Axis.extend({\n constructor: StepAxis,\n projectValue: projectValue\n });\n\n}(this || global, Chartist));\n;/**\n * The Chartist line chart can be used to draw Line or Scatter charts. If used in the browser you can access the global `Chartist` namespace where you find the `Line` function as a main entry point.\n *\n * For examples on how to use the line chart please check the examples of the `Chartist.Line` method.\n *\n * @module Chartist.Line\n */\n/* global Chartist */\n(function(globalRoot, Chartist){\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in line charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Line\n */\n var defaultOptions = {\n // Options for X-Axis\n axisX: {\n // The offset of the labels to the chart area\n offset: 30,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'end',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // Set the axis type to be used to project values on this axis. If not defined, Chartist.StepAxis will be used for the X-Axis, where the ticks option will be set to the labels in the data and the stretch option will be set to the global fullWidth option. This type can be changed to any axis constructor available (e.g. Chartist.FixedScaleAxis), where all axis options should be present here.\n type: undefined\n },\n // Options for Y-Axis\n axisY: {\n // The offset of the labels to the chart area\n offset: 40,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'start',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // Set the axis type to be used to project values on this axis. If not defined, Chartist.AutoScaleAxis will be used for the Y-Axis, where the high and low options will be set to the global high and low options. This type can be changed to any axis constructor available (e.g. Chartist.FixedScaleAxis), where all axis options should be present here.\n type: undefined,\n // This value specifies the minimum height in pixel of the scale steps\n scaleMinSpace: 20,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // If the line should be drawn or not\n showLine: true,\n // If dots should be drawn or not\n showPoint: true,\n // If the line chart should draw an area\n showArea: false,\n // The base for the area chart that will be used to close the area shape (is normally 0)\n areaBase: 0,\n // Specify if the lines should be smoothed. This value can be true or false where true will result in smoothing using the default smoothing interpolation function Chartist.Interpolation.cardinal and false results in Chartist.Interpolation.none. You can also choose other smoothing / interpolation functions available in the Chartist.Interpolation module, or write your own interpolation function. Check the examples for a brief description.\n lineSmooth: true,\n // If the line chart should add a background fill to the .ct-grids group.\n showGridBackground: false,\n // Overriding the natural low of the chart allows you to zoom in or limit the charts lowest displayed value\n low: undefined,\n // Overriding the natural high of the chart allows you to zoom in or limit the charts highest displayed value\n high: undefined,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n // When set to true, the last grid line on the x-axis is not drawn and the chart elements will expand to the full available width of the chart. For the last label to be drawn correctly you might need to add chart padding or offset the last label with a draw event handler.\n fullWidth: false,\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // Override the class names that get used to generate the SVG structure of the chart\n classNames: {\n chart: 'ct-chart-line',\n label: 'ct-label',\n labelGroup: 'ct-labels',\n series: 'ct-series',\n line: 'ct-line',\n point: 'ct-point',\n area: 'ct-area',\n grid: 'ct-grid',\n gridGroup: 'ct-grids',\n gridBackground: 'ct-grid-background',\n vertical: 'ct-vertical',\n horizontal: 'ct-horizontal',\n start: 'ct-start',\n end: 'ct-end'\n }\n };\n\n /**\n * Creates a new chart\n *\n */\n function createChart(options) {\n var data = Chartist.normalizeData(this.data, options.reverseData, true);\n\n // Create new svg object\n this.svg = Chartist.createSvg(this.container, options.width, options.height, options.classNames.chart);\n // Create groups for labels, grid and series\n var gridGroup = this.svg.elem('g').addClass(options.classNames.gridGroup);\n var seriesGroup = this.svg.elem('g');\n var labelGroup = this.svg.elem('g').addClass(options.classNames.labelGroup);\n\n var chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n var axisX, axisY;\n\n if(options.axisX.type === undefined) {\n axisX = new Chartist.StepAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n ticks: data.normalized.labels,\n stretch: options.fullWidth\n }));\n } else {\n axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, options.axisX);\n }\n\n if(options.axisY.type === undefined) {\n axisY = new Chartist.AutoScaleAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n high: Chartist.isNumeric(options.high) ? options.high : options.axisY.high,\n low: Chartist.isNumeric(options.low) ? options.low : options.axisY.low\n }));\n } else {\n axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, options.axisY);\n }\n\n axisX.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n axisY.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n\n if (options.showGridBackground) {\n Chartist.createGridBackground(gridGroup, chartRect, options.classNames.gridBackground, this.eventEmitter);\n }\n\n // Draw the series\n data.raw.series.forEach(function(series, seriesIndex) {\n var seriesElement = seriesGroup.elem('g');\n\n // Write attributes to series group element. If series name or meta is undefined the attributes will not be written\n seriesElement.attr({\n 'ct:series-name': series.name,\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // Use series class from series data or if not set generate one\n seriesElement.addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex))\n ].join(' '));\n\n var pathCoordinates = [],\n pathData = [];\n\n data.normalized.series[seriesIndex].forEach(function(value, valueIndex) {\n var p = {\n x: chartRect.x1 + axisX.projectValue(value, valueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - axisY.projectValue(value, valueIndex, data.normalized.series[seriesIndex])\n };\n pathCoordinates.push(p.x, p.y);\n pathData.push({\n value: value,\n valueIndex: valueIndex,\n meta: Chartist.getMetaData(series, valueIndex)\n });\n }.bind(this));\n\n var seriesOptions = {\n lineSmooth: Chartist.getSeriesOption(series, options, 'lineSmooth'),\n showPoint: Chartist.getSeriesOption(series, options, 'showPoint'),\n showLine: Chartist.getSeriesOption(series, options, 'showLine'),\n showArea: Chartist.getSeriesOption(series, options, 'showArea'),\n areaBase: Chartist.getSeriesOption(series, options, 'areaBase')\n };\n\n var smoothing = typeof seriesOptions.lineSmooth === 'function' ?\n seriesOptions.lineSmooth : (seriesOptions.lineSmooth ? Chartist.Interpolation.monotoneCubic() : Chartist.Interpolation.none());\n // Interpolating path where pathData will be used to annotate each path element so we can trace back the original\n // index, value and meta data\n var path = smoothing(pathCoordinates, pathData);\n\n // If we should show points we need to create them now to avoid secondary loop\n // Points are drawn from the pathElements returned by the interpolation function\n // Small offset for Firefox to render squares correctly\n if (seriesOptions.showPoint) {\n\n path.pathElements.forEach(function(pathElement) {\n var point = seriesElement.elem('line', {\n x1: pathElement.x,\n y1: pathElement.y,\n x2: pathElement.x + 0.01,\n y2: pathElement.y\n }, options.classNames.point).attr({\n 'ct:value': [pathElement.data.value.x, pathElement.data.value.y].filter(Chartist.isNumeric).join(','),\n 'ct:meta': Chartist.serialize(pathElement.data.meta)\n });\n\n this.eventEmitter.emit('draw', {\n type: 'point',\n value: pathElement.data.value,\n index: pathElement.data.valueIndex,\n meta: pathElement.data.meta,\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n group: seriesElement,\n element: point,\n x: pathElement.x,\n y: pathElement.y\n });\n }.bind(this));\n }\n\n if(seriesOptions.showLine) {\n var line = seriesElement.elem('path', {\n d: path.stringify()\n }, options.classNames.line, true);\n\n this.eventEmitter.emit('draw', {\n type: 'line',\n values: data.normalized.series[seriesIndex],\n path: path.clone(),\n chartRect: chartRect,\n index: seriesIndex,\n series: series,\n seriesIndex: seriesIndex,\n seriesMeta: series.meta,\n axisX: axisX,\n axisY: axisY,\n group: seriesElement,\n element: line\n });\n }\n\n // Area currently only works with axes that support a range!\n if(seriesOptions.showArea && axisY.range) {\n // If areaBase is outside the chart area (< min or > max) we need to set it respectively so that\n // the area is not drawn outside the chart area.\n var areaBase = Math.max(Math.min(seriesOptions.areaBase, axisY.range.max), axisY.range.min);\n\n // We project the areaBase value into screen coordinates\n var areaBaseProjected = chartRect.y1 - axisY.projectValue(areaBase);\n\n // In order to form the area we'll first split the path by move commands so we can chunk it up into segments\n path.splitByCommand('M').filter(function onlySolidSegments(pathSegment) {\n // We filter only \"solid\" segments that contain more than one point. Otherwise there's no need for an area\n return pathSegment.pathElements.length > 1;\n }).map(function convertToArea(solidPathSegments) {\n // Receiving the filtered solid path segments we can now convert those segments into fill areas\n var firstElement = solidPathSegments.pathElements[0];\n var lastElement = solidPathSegments.pathElements[solidPathSegments.pathElements.length - 1];\n\n // Cloning the solid path segment with closing option and removing the first move command from the clone\n // We then insert a new move that should start at the area base and draw a straight line up or down\n // at the end of the path we add an additional straight line to the projected area base value\n // As the closing option is set our path will be automatically closed\n return solidPathSegments.clone(true)\n .position(0)\n .remove(1)\n .move(firstElement.x, areaBaseProjected)\n .line(firstElement.x, firstElement.y)\n .position(solidPathSegments.pathElements.length + 1)\n .line(lastElement.x, areaBaseProjected);\n\n }).forEach(function createArea(areaPath) {\n // For each of our newly created area paths, we'll now create path elements by stringifying our path objects\n // and adding the created DOM elements to the correct series group\n var area = seriesElement.elem('path', {\n d: areaPath.stringify()\n }, options.classNames.area, true);\n\n // Emit an event for each area that was drawn\n this.eventEmitter.emit('draw', {\n type: 'area',\n values: data.normalized.series[seriesIndex],\n path: areaPath.clone(),\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n chartRect: chartRect,\n index: seriesIndex,\n group: seriesElement,\n element: area\n });\n }.bind(this));\n }\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n bounds: axisY.bounds,\n chartRect: chartRect,\n axisX: axisX,\n axisY: axisY,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new line chart.\n *\n * @memberof Chartist.Line\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object that needs to consist of a labels and a series array\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object which exposes the API for the created chart\n *\n * @example\n * // Create a simple line chart\n * var data = {\n * // A labels array that can contain any sort of values\n * labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\n * // Our series array that contains series objects or in this case series data arrays\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // As options we currently only set a static size of 300x200 px\n * var options = {\n * width: '300px',\n * height: '200px'\n * };\n *\n * // In the global name space Chartist we call the Line function to initialize a line chart. As a first parameter we pass in a selector where we would like to get our chart created. Second parameter is the actual data object and as a third parameter we pass in our options\n * new Chartist.Line('.ct-chart', data, options);\n *\n * @example\n * // Use specific interpolation function with configuration from the Chartist.Interpolation module\n *\n * var chart = new Chartist.Line('.ct-chart', {\n * labels: [1, 2, 3, 4, 5],\n * series: [\n * [1, 1, 8, 1, 7]\n * ]\n * }, {\n * lineSmooth: Chartist.Interpolation.cardinal({\n * tension: 0.2\n * })\n * });\n *\n * @example\n * // Create a line chart with responsive options\n *\n * var data = {\n * // A labels array that can contain any sort of values\n * labels: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],\n * // Our series array that contains series objects or in this case series data arrays\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // In addition to the regular options we specify responsive option overrides that will override the default configutation based on the matching media queries.\n * var responsiveOptions = [\n * ['screen and (min-width: 641px) and (max-width: 1024px)', {\n * showPoint: false,\n * axisX: {\n * labelInterpolationFnc: function(value) {\n * // Will return Mon, Tue, Wed etc. on medium screens\n * return value.slice(0, 3);\n * }\n * }\n * }],\n * ['screen and (max-width: 640px)', {\n * showLine: false,\n * axisX: {\n * labelInterpolationFnc: function(value) {\n * // Will return M, T, W etc. on small screens\n * return value[0];\n * }\n * }\n * }]\n * ];\n *\n * new Chartist.Line('.ct-chart', data, null, responsiveOptions);\n *\n */\n function Line(query, data, options, responsiveOptions) {\n Chartist.Line.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating line chart type in Chartist namespace\n Chartist.Line = Chartist.Base.extend({\n constructor: Line,\n createChart: createChart\n });\n\n}(this || global, Chartist));\n;/**\n * The bar chart module of Chartist that can be used to draw unipolar or bipolar bar and grouped bar charts.\n *\n * @module Chartist.Bar\n */\n/* global Chartist */\n(function(globalRoot, Chartist){\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in bar charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Bar\n */\n var defaultOptions = {\n // Options for X-Axis\n axisX: {\n // The offset of the chart drawing area to the border of the container\n offset: 30,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'end',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // This value specifies the minimum width in pixel of the scale steps\n scaleMinSpace: 30,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Options for Y-Axis\n axisY: {\n // The offset of the chart drawing area to the border of the container\n offset: 40,\n // Position where labels are placed. Can be set to `start` or `end` where `start` is equivalent to left or top on vertical axis and `end` is equivalent to right or bottom on horizontal axis.\n position: 'start',\n // Allows you to correct label positioning on this axis by positive or negative x and y offset.\n labelOffset: {\n x: 0,\n y: 0\n },\n // If labels should be shown or not\n showLabel: true,\n // If the axis grid should be drawn or not\n showGrid: true,\n // Interpolation function that allows you to intercept the value from the axis label\n labelInterpolationFnc: Chartist.noop,\n // This value specifies the minimum height in pixel of the scale steps\n scaleMinSpace: 20,\n // Use only integer values (whole numbers) for the scale steps\n onlyInteger: false\n },\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // Overriding the natural high of the chart allows you to zoom in or limit the charts highest displayed value\n high: undefined,\n // Overriding the natural low of the chart allows you to zoom in or limit the charts lowest displayed value\n low: undefined,\n // Unless low/high are explicitly set, bar chart will be centered at zero by default. Set referenceValue to null to auto scale.\n referenceValue: 0,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n // Specify the distance in pixel of bars in a group\n seriesBarDistance: 15,\n // If set to true this property will cause the series bars to be stacked. Check the `stackMode` option for further stacking options.\n stackBars: false,\n // If set to 'overlap' this property will force the stacked bars to draw from the zero line.\n // If set to 'accumulate' this property will form a total for each series point. This will also influence the y-axis and the overall bounds of the chart. In stacked mode the seriesBarDistance property will have no effect.\n stackMode: 'accumulate',\n // Inverts the axes of the bar chart in order to draw a horizontal bar chart. Be aware that you also need to invert your axis settings as the Y Axis will now display the labels and the X Axis the values.\n horizontalBars: false,\n // If set to true then each bar will represent a series and the data array is expected to be a one dimensional array of data values rather than a series array of series. This is useful if the bar chart should represent a profile rather than some data over time.\n distributeSeries: false,\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // If the bar chart should add a background fill to the .ct-grids group.\n showGridBackground: false,\n // Override the class names that get used to generate the SVG structure of the chart\n classNames: {\n chart: 'ct-chart-bar',\n horizontalBars: 'ct-horizontal-bars',\n label: 'ct-label',\n labelGroup: 'ct-labels',\n series: 'ct-series',\n bar: 'ct-bar',\n grid: 'ct-grid',\n gridGroup: 'ct-grids',\n gridBackground: 'ct-grid-background',\n vertical: 'ct-vertical',\n horizontal: 'ct-horizontal',\n start: 'ct-start',\n end: 'ct-end'\n }\n };\n\n /**\n * Creates a new chart\n *\n */\n function createChart(options) {\n var data;\n var highLow;\n\n if(options.distributeSeries) {\n data = Chartist.normalizeData(this.data, options.reverseData, options.horizontalBars ? 'x' : 'y');\n data.normalized.series = data.normalized.series.map(function(value) {\n return [value];\n });\n } else {\n data = Chartist.normalizeData(this.data, options.reverseData, options.horizontalBars ? 'x' : 'y');\n }\n\n // Create new svg element\n this.svg = Chartist.createSvg(\n this.container,\n options.width,\n options.height,\n options.classNames.chart + (options.horizontalBars ? ' ' + options.classNames.horizontalBars : '')\n );\n\n // Drawing groups in correct order\n var gridGroup = this.svg.elem('g').addClass(options.classNames.gridGroup);\n var seriesGroup = this.svg.elem('g');\n var labelGroup = this.svg.elem('g').addClass(options.classNames.labelGroup);\n\n if(options.stackBars && data.normalized.series.length !== 0) {\n\n // If stacked bars we need to calculate the high low from stacked values from each series\n var serialSums = Chartist.serialMap(data.normalized.series, function serialSums() {\n return Array.prototype.slice.call(arguments).map(function(value) {\n return value;\n }).reduce(function(prev, curr) {\n return {\n x: prev.x + (curr && curr.x) || 0,\n y: prev.y + (curr && curr.y) || 0\n };\n }, {x: 0, y: 0});\n });\n\n highLow = Chartist.getHighLow([serialSums], options, options.horizontalBars ? 'x' : 'y');\n\n } else {\n\n highLow = Chartist.getHighLow(data.normalized.series, options, options.horizontalBars ? 'x' : 'y');\n }\n\n // Overrides of high / low from settings\n highLow.high = +options.high || (options.high === 0 ? 0 : highLow.high);\n highLow.low = +options.low || (options.low === 0 ? 0 : highLow.low);\n\n var chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n\n var valueAxis,\n labelAxisTicks,\n labelAxis,\n axisX,\n axisY;\n\n // We need to set step count based on some options combinations\n if(options.distributeSeries && options.stackBars) {\n // If distributed series are enabled and bars need to be stacked, we'll only have one bar and therefore should\n // use only the first label for the step axis\n labelAxisTicks = data.normalized.labels.slice(0, 1);\n } else {\n // If distributed series are enabled but stacked bars aren't, we should use the series labels\n // If we are drawing a regular bar chart with two dimensional series data, we just use the labels array\n // as the bars are normalized\n labelAxisTicks = data.normalized.labels;\n }\n\n // Set labelAxis and valueAxis based on the horizontalBars setting. This setting will flip the axes if necessary.\n if(options.horizontalBars) {\n if(options.axisX.type === undefined) {\n valueAxis = axisX = new Chartist.AutoScaleAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n highLow: highLow,\n referenceValue: 0\n }));\n } else {\n valueAxis = axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, Chartist.extend({}, options.axisX, {\n highLow: highLow,\n referenceValue: 0\n }));\n }\n\n if(options.axisY.type === undefined) {\n labelAxis = axisY = new Chartist.StepAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, {\n ticks: labelAxisTicks\n });\n } else {\n labelAxis = axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, options.axisY);\n }\n } else {\n if(options.axisX.type === undefined) {\n labelAxis = axisX = new Chartist.StepAxis(Chartist.Axis.units.x, data.normalized.series, chartRect, {\n ticks: labelAxisTicks\n });\n } else {\n labelAxis = axisX = options.axisX.type.call(Chartist, Chartist.Axis.units.x, data.normalized.series, chartRect, options.axisX);\n }\n\n if(options.axisY.type === undefined) {\n valueAxis = axisY = new Chartist.AutoScaleAxis(Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n highLow: highLow,\n referenceValue: 0\n }));\n } else {\n valueAxis = axisY = options.axisY.type.call(Chartist, Chartist.Axis.units.y, data.normalized.series, chartRect, Chartist.extend({}, options.axisY, {\n highLow: highLow,\n referenceValue: 0\n }));\n }\n }\n\n // Projected 0 point\n var zeroPoint = options.horizontalBars ? (chartRect.x1 + valueAxis.projectValue(0)) : (chartRect.y1 - valueAxis.projectValue(0));\n // Used to track the screen coordinates of stacked bars\n var stackedBarValues = [];\n\n labelAxis.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n valueAxis.createGridAndLabels(gridGroup, labelGroup, this.supportsForeignObject, options, this.eventEmitter);\n\n if (options.showGridBackground) {\n Chartist.createGridBackground(gridGroup, chartRect, options.classNames.gridBackground, this.eventEmitter);\n }\n\n // Draw the series\n data.raw.series.forEach(function(series, seriesIndex) {\n // Calculating bi-polar value of index for seriesOffset. For i = 0..4 biPol will be -1.5, -0.5, 0.5, 1.5 etc.\n var biPol = seriesIndex - (data.raw.series.length - 1) / 2;\n // Half of the period width between vertical grid lines used to position bars\n var periodHalfLength;\n // Current series SVG element\n var seriesElement;\n\n // We need to set periodHalfLength based on some options combinations\n if(options.distributeSeries && !options.stackBars) {\n // If distributed series are enabled but stacked bars aren't, we need to use the length of the normaizedData array\n // which is the series count and divide by 2\n periodHalfLength = labelAxis.axisLength / data.normalized.series.length / 2;\n } else if(options.distributeSeries && options.stackBars) {\n // If distributed series and stacked bars are enabled we'll only get one bar so we should just divide the axis\n // length by 2\n periodHalfLength = labelAxis.axisLength / 2;\n } else {\n // On regular bar charts we should just use the series length\n periodHalfLength = labelAxis.axisLength / data.normalized.series[seriesIndex].length / 2;\n }\n\n // Adding the series group to the series element\n seriesElement = seriesGroup.elem('g');\n\n // Write attributes to series group element. If series name or meta is undefined the attributes will not be written\n seriesElement.attr({\n 'ct:series-name': series.name,\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // Use series class from series data or if not set generate one\n seriesElement.addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(seriesIndex))\n ].join(' '));\n\n data.normalized.series[seriesIndex].forEach(function(value, valueIndex) {\n var projected,\n bar,\n previousStack,\n labelAxisValueIndex;\n\n // We need to set labelAxisValueIndex based on some options combinations\n if(options.distributeSeries && !options.stackBars) {\n // If distributed series are enabled but stacked bars aren't, we can use the seriesIndex for later projection\n // on the step axis for label positioning\n labelAxisValueIndex = seriesIndex;\n } else if(options.distributeSeries && options.stackBars) {\n // If distributed series and stacked bars are enabled, we will only get one bar and therefore always use\n // 0 for projection on the label step axis\n labelAxisValueIndex = 0;\n } else {\n // On regular bar charts we just use the value index to project on the label step axis\n labelAxisValueIndex = valueIndex;\n }\n\n // We need to transform coordinates differently based on the chart layout\n if(options.horizontalBars) {\n projected = {\n x: chartRect.x1 + valueAxis.projectValue(value && value.x ? value.x : 0, valueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - labelAxis.projectValue(value && value.y ? value.y : 0, labelAxisValueIndex, data.normalized.series[seriesIndex])\n };\n } else {\n projected = {\n x: chartRect.x1 + labelAxis.projectValue(value && value.x ? value.x : 0, labelAxisValueIndex, data.normalized.series[seriesIndex]),\n y: chartRect.y1 - valueAxis.projectValue(value && value.y ? value.y : 0, valueIndex, data.normalized.series[seriesIndex])\n }\n }\n\n // If the label axis is a step based axis we will offset the bar into the middle of between two steps using\n // the periodHalfLength value. Also we do arrange the different series so that they align up to each other using\n // the seriesBarDistance. If we don't have a step axis, the bar positions can be chosen freely so we should not\n // add any automated positioning.\n if(labelAxis instanceof Chartist.StepAxis) {\n // Offset to center bar between grid lines, but only if the step axis is not stretched\n if(!labelAxis.options.stretch) {\n projected[labelAxis.units.pos] += periodHalfLength * (options.horizontalBars ? -1 : 1);\n }\n // Using bi-polar offset for multiple series if no stacked bars or series distribution is used\n projected[labelAxis.units.pos] += (options.stackBars || options.distributeSeries) ? 0 : biPol * options.seriesBarDistance * (options.horizontalBars ? -1 : 1);\n }\n\n // Enter value in stacked bar values used to remember previous screen value for stacking up bars\n previousStack = stackedBarValues[valueIndex] || zeroPoint;\n stackedBarValues[valueIndex] = previousStack - (zeroPoint - projected[labelAxis.counterUnits.pos]);\n\n // Skip if value is undefined\n if(value === undefined) {\n return;\n }\n\n var positions = {};\n positions[labelAxis.units.pos + '1'] = projected[labelAxis.units.pos];\n positions[labelAxis.units.pos + '2'] = projected[labelAxis.units.pos];\n\n if(options.stackBars && (options.stackMode === 'accumulate' || !options.stackMode)) {\n // Stack mode: accumulate (default)\n // If bars are stacked we use the stackedBarValues reference and otherwise base all bars off the zero line\n // We want backwards compatibility, so the expected fallback without the 'stackMode' option\n // to be the original behaviour (accumulate)\n positions[labelAxis.counterUnits.pos + '1'] = previousStack;\n positions[labelAxis.counterUnits.pos + '2'] = stackedBarValues[valueIndex];\n } else {\n // Draw from the zero line normally\n // This is also the same code for Stack mode: overlap\n positions[labelAxis.counterUnits.pos + '1'] = zeroPoint;\n positions[labelAxis.counterUnits.pos + '2'] = projected[labelAxis.counterUnits.pos];\n }\n\n // Limit x and y so that they are within the chart rect\n positions.x1 = Math.min(Math.max(positions.x1, chartRect.x1), chartRect.x2);\n positions.x2 = Math.min(Math.max(positions.x2, chartRect.x1), chartRect.x2);\n positions.y1 = Math.min(Math.max(positions.y1, chartRect.y2), chartRect.y1);\n positions.y2 = Math.min(Math.max(positions.y2, chartRect.y2), chartRect.y1);\n\n var metaData = Chartist.getMetaData(series, valueIndex);\n\n // Create bar element\n bar = seriesElement.elem('line', positions, options.classNames.bar).attr({\n 'ct:value': [value.x, value.y].filter(Chartist.isNumeric).join(','),\n 'ct:meta': Chartist.serialize(metaData)\n });\n\n this.eventEmitter.emit('draw', Chartist.extend({\n type: 'bar',\n value: value,\n index: valueIndex,\n meta: metaData,\n series: series,\n seriesIndex: seriesIndex,\n axisX: axisX,\n axisY: axisY,\n chartRect: chartRect,\n group: seriesElement,\n element: bar\n }, positions));\n }.bind(this));\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n bounds: valueAxis.bounds,\n chartRect: chartRect,\n axisX: axisX,\n axisY: axisY,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new bar chart and returns API object that you can use for later changes.\n *\n * @memberof Chartist.Bar\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object that needs to consist of a labels and a series array\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object which exposes the API for the created chart\n *\n * @example\n * // Create a simple bar chart\n * var data = {\n * labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'],\n * series: [\n * [5, 2, 4, 2, 0]\n * ]\n * };\n *\n * // In the global name space Chartist we call the Bar function to initialize a bar chart. As a first parameter we pass in a selector where we would like to get our chart created and as a second parameter we pass our data object.\n * new Chartist.Bar('.ct-chart', data);\n *\n * @example\n * // This example creates a bipolar grouped bar chart where the boundaries are limitted to -10 and 10\n * new Chartist.Bar('.ct-chart', {\n * labels: [1, 2, 3, 4, 5, 6, 7],\n * series: [\n * [1, 3, 2, -5, -3, 1, -6],\n * [-5, -2, -4, -1, 2, -3, 1]\n * ]\n * }, {\n * seriesBarDistance: 12,\n * low: -10,\n * high: 10\n * });\n *\n */\n function Bar(query, data, options, responsiveOptions) {\n Chartist.Bar.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating bar chart type in Chartist namespace\n Chartist.Bar = Chartist.Base.extend({\n constructor: Bar,\n createChart: createChart\n });\n\n}(this || global, Chartist));\n;/**\n * The pie chart module of Chartist that can be used to draw pie, donut or gauge charts\n *\n * @module Chartist.Pie\n */\n/* global Chartist */\n(function(globalRoot, Chartist) {\n 'use strict';\n\n var window = globalRoot.window;\n var document = globalRoot.document;\n\n /**\n * Default options in line charts. Expand the code view to see a detailed list of options with comments.\n *\n * @memberof Chartist.Pie\n */\n var defaultOptions = {\n // Specify a fixed width for the chart as a string (i.e. '100px' or '50%')\n width: undefined,\n // Specify a fixed height for the chart as a string (i.e. '100px' or '50%')\n height: undefined,\n // Padding of the chart drawing area to the container element and labels as a number or padding object {top: 5, right: 5, bottom: 5, left: 5}\n chartPadding: 5,\n // Override the class names that are used to generate the SVG structure of the chart\n classNames: {\n chartPie: 'ct-chart-pie',\n chartDonut: 'ct-chart-donut',\n series: 'ct-series',\n slicePie: 'ct-slice-pie',\n sliceDonut: 'ct-slice-donut',\n sliceDonutSolid: 'ct-slice-donut-solid',\n label: 'ct-label'\n },\n // The start angle of the pie chart in degrees where 0 points north. A higher value offsets the start angle clockwise.\n startAngle: 0,\n // An optional total you can specify. By specifying a total value, the sum of the values in the series must be this total in order to draw a full pie. You can use this parameter to draw only parts of a pie or gauge charts.\n total: undefined,\n // If specified the donut CSS classes will be used and strokes will be drawn instead of pie slices.\n donut: false,\n // If specified the donut segments will be drawn as shapes instead of strokes.\n donutSolid: false,\n // Specify the donut stroke width, currently done in javascript for convenience. May move to CSS styles in the future.\n // This option can be set as number or string to specify a relative width (i.e. 100 or '30%').\n donutWidth: 60,\n // If a label should be shown or not\n showLabel: true,\n // Label position offset from the standard position which is half distance of the radius. This value can be either positive or negative. Positive values will position the label away from the center.\n labelOffset: 0,\n // This option can be set to 'inside', 'outside' or 'center'. Positioned with 'inside' the labels will be placed on half the distance of the radius to the border of the Pie by respecting the 'labelOffset'. The 'outside' option will place the labels at the border of the pie and 'center' will place the labels in the absolute center point of the chart. The 'center' option only makes sense in conjunction with the 'labelOffset' option.\n labelPosition: 'inside',\n // An interpolation function for the label value\n labelInterpolationFnc: Chartist.noop,\n // Label direction can be 'neutral', 'explode' or 'implode'. The labels anchor will be positioned based on those settings as well as the fact if the labels are on the right or left side of the center of the chart. Usually explode is useful when labels are positioned far away from the center.\n labelDirection: 'neutral',\n // If true the whole data is reversed including labels, the series order as well as the whole series data arrays.\n reverseData: false,\n // If true empty values will be ignored to avoid drawing unncessary slices and labels\n ignoreEmptyValues: false\n };\n\n /**\n * Determines SVG anchor position based on direction and center parameter\n *\n * @param center\n * @param label\n * @param direction\n * @return {string}\n */\n function determineAnchorPosition(center, label, direction) {\n var toTheRight = label.x > center.x;\n\n if(toTheRight && direction === 'explode' ||\n !toTheRight && direction === 'implode') {\n return 'start';\n } else if(toTheRight && direction === 'implode' ||\n !toTheRight && direction === 'explode') {\n return 'end';\n } else {\n return 'middle';\n }\n }\n\n /**\n * Creates the pie chart\n *\n * @param options\n */\n function createChart(options) {\n var data = Chartist.normalizeData(this.data);\n var seriesGroups = [],\n labelsGroup,\n chartRect,\n radius,\n labelRadius,\n totalDataSum,\n startAngle = options.startAngle;\n\n // Create SVG.js draw\n this.svg = Chartist.createSvg(this.container, options.width, options.height,options.donut ? options.classNames.chartDonut : options.classNames.chartPie);\n // Calculate charting rect\n chartRect = Chartist.createChartRect(this.svg, options, defaultOptions.padding);\n // Get biggest circle radius possible within chartRect\n radius = Math.min(chartRect.width() / 2, chartRect.height() / 2);\n // Calculate total of all series to get reference value or use total reference from optional options\n totalDataSum = options.total || data.normalized.series.reduce(function(previousValue, currentValue) {\n return previousValue + currentValue;\n }, 0);\n\n var donutWidth = Chartist.quantity(options.donutWidth);\n if (donutWidth.unit === '%') {\n donutWidth.value *= radius / 100;\n }\n\n // If this is a donut chart we need to adjust our radius to enable strokes to be drawn inside\n // Unfortunately this is not possible with the current SVG Spec\n // See this proposal for more details: http://lists.w3.org/Archives/Public/www-svg/2003Oct/0000.html\n radius -= options.donut && !options.donutSolid ? donutWidth.value / 2 : 0;\n\n // If labelPosition is set to `outside` or a donut chart is drawn then the label position is at the radius,\n // if regular pie chart it's half of the radius\n if(options.labelPosition === 'outside' || options.donut && !options.donutSolid) {\n labelRadius = radius;\n } else if(options.labelPosition === 'center') {\n // If labelPosition is center we start with 0 and will later wait for the labelOffset\n labelRadius = 0;\n } else if(options.donutSolid) {\n labelRadius = radius - donutWidth.value / 2;\n } else {\n // Default option is 'inside' where we use half the radius so the label will be placed in the center of the pie\n // slice\n labelRadius = radius / 2;\n }\n // Add the offset to the labelRadius where a negative offset means closed to the center of the chart\n labelRadius += options.labelOffset;\n\n // Calculate end angle based on total sum and current data value and offset with padding\n var center = {\n x: chartRect.x1 + chartRect.width() / 2,\n y: chartRect.y2 + chartRect.height() / 2\n };\n\n // Check if there is only one non-zero value in the series array.\n var hasSingleValInSeries = data.raw.series.filter(function(val) {\n return val.hasOwnProperty('value') ? val.value !== 0 : val !== 0;\n }).length === 1;\n\n // Creating the series groups\n data.raw.series.forEach(function(series, index) {\n seriesGroups[index] = this.svg.elem('g', null, null);\n }.bind(this));\n //if we need to show labels we create the label group now\n if(options.showLabel) {\n labelsGroup = this.svg.elem('g', null, null);\n }\n\n // Draw the series\n // initialize series groups\n data.raw.series.forEach(function(series, index) {\n // If current value is zero and we are ignoring empty values then skip to next value\n if (data.normalized.series[index] === 0 && options.ignoreEmptyValues) return;\n\n // If the series is an object and contains a name or meta data we add a custom attribute\n seriesGroups[index].attr({\n 'ct:series-name': series.name\n });\n\n // Use series class from series data or if not set generate one\n seriesGroups[index].addClass([\n options.classNames.series,\n (series.className || options.classNames.series + '-' + Chartist.alphaNumerate(index))\n ].join(' '));\n\n // If the whole dataset is 0 endAngle should be zero. Can't divide by 0.\n var endAngle = (totalDataSum > 0 ? startAngle + data.normalized.series[index] / totalDataSum * 360 : 0);\n\n // Use slight offset so there are no transparent hairline issues\n var overlappigStartAngle = Math.max(0, startAngle - (index === 0 || hasSingleValInSeries ? 0 : 0.2));\n\n // If we need to draw the arc for all 360 degrees we need to add a hack where we close the circle\n // with Z and use 359.99 degrees\n if(endAngle - overlappigStartAngle >= 359.99) {\n endAngle = overlappigStartAngle + 359.99;\n }\n\n var start = Chartist.polarToCartesian(center.x, center.y, radius, overlappigStartAngle),\n end = Chartist.polarToCartesian(center.x, center.y, radius, endAngle);\n\n var innerStart,\n innerEnd,\n donutSolidRadius;\n\n // Create a new path element for the pie chart. If this isn't a donut chart we should close the path for a correct stroke\n var path = new Chartist.Svg.Path(!options.donut || options.donutSolid)\n .move(end.x, end.y)\n .arc(radius, radius, 0, endAngle - startAngle > 180, 0, start.x, start.y);\n\n // If regular pie chart (no donut) we add a line to the center of the circle for completing the pie\n if(!options.donut) {\n path.line(center.x, center.y);\n } else if (options.donutSolid) {\n donutSolidRadius = radius - donutWidth.value;\n innerStart = Chartist.polarToCartesian(center.x, center.y, donutSolidRadius, startAngle - (index === 0 || hasSingleValInSeries ? 0 : 0.2));\n innerEnd = Chartist.polarToCartesian(center.x, center.y, donutSolidRadius, endAngle);\n path.line(innerStart.x, innerStart.y);\n path.arc(donutSolidRadius, donutSolidRadius, 0, endAngle - startAngle > 180, 1, innerEnd.x, innerEnd.y);\n }\n\n // Create the SVG path\n // If this is a donut chart we add the donut class, otherwise just a regular slice\n var pathClassName = options.classNames.slicePie;\n if (options.donut) {\n pathClassName = options.classNames.sliceDonut;\n if (options.donutSolid) {\n pathClassName = options.classNames.sliceDonutSolid;\n }\n }\n var pathElement = seriesGroups[index].elem('path', {\n d: path.stringify()\n }, pathClassName);\n\n // Adding the pie series value to the path\n pathElement.attr({\n 'ct:value': data.normalized.series[index],\n 'ct:meta': Chartist.serialize(series.meta)\n });\n\n // If this is a donut, we add the stroke-width as style attribute\n if(options.donut && !options.donutSolid) {\n pathElement._node.style.strokeWidth = donutWidth.value + 'px';\n }\n\n // Fire off draw event\n this.eventEmitter.emit('draw', {\n type: 'slice',\n value: data.normalized.series[index],\n totalDataSum: totalDataSum,\n index: index,\n meta: series.meta,\n series: series,\n group: seriesGroups[index],\n element: pathElement,\n path: path.clone(),\n center: center,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n // If we need to show labels we need to add the label for this slice now\n if(options.showLabel) {\n var labelPosition;\n if(data.raw.series.length === 1) {\n // If we have only 1 series, we can position the label in the center of the pie\n labelPosition = {\n x: center.x,\n y: center.y\n };\n } else {\n // Position at the labelRadius distance from center and between start and end angle\n labelPosition = Chartist.polarToCartesian(\n center.x,\n center.y,\n labelRadius,\n startAngle + (endAngle - startAngle) / 2\n );\n }\n\n var rawValue;\n if(data.normalized.labels && !Chartist.isFalseyButZero(data.normalized.labels[index])) {\n rawValue = data.normalized.labels[index];\n } else {\n rawValue = data.normalized.series[index];\n }\n\n var interpolatedValue = options.labelInterpolationFnc(rawValue, index);\n\n if(interpolatedValue || interpolatedValue === 0) {\n var labelElement = labelsGroup.elem('text', {\n dx: labelPosition.x,\n dy: labelPosition.y,\n 'text-anchor': determineAnchorPosition(center, labelPosition, options.labelDirection)\n }, options.classNames.label).text('' + interpolatedValue);\n\n // Fire off draw event\n this.eventEmitter.emit('draw', {\n type: 'label',\n index: index,\n group: labelsGroup,\n element: labelElement,\n text: '' + interpolatedValue,\n x: labelPosition.x,\n y: labelPosition.y\n });\n }\n }\n\n // Set next startAngle to current endAngle.\n // (except for last slice)\n startAngle = endAngle;\n }.bind(this));\n\n this.eventEmitter.emit('created', {\n chartRect: chartRect,\n svg: this.svg,\n options: options\n });\n }\n\n /**\n * This method creates a new pie chart and returns an object that can be used to redraw the chart.\n *\n * @memberof Chartist.Pie\n * @param {String|Node} query A selector query string or directly a DOM element\n * @param {Object} data The data object in the pie chart needs to have a series property with a one dimensional data array. The values will be normalized against each other and don't necessarily need to be in percentage. The series property can also be an array of value objects that contain a value property and a className property to override the CSS class name for the series group.\n * @param {Object} [options] The options object with options that override the default options. Check the examples for a detailed list.\n * @param {Array} [responsiveOptions] Specify an array of responsive option arrays which are a media query and options object pair => [[mediaQueryString, optionsObject],[more...]]\n * @return {Object} An object with a version and an update method to manually redraw the chart\n *\n * @example\n * // Simple pie chart example with four series\n * new Chartist.Pie('.ct-chart', {\n * series: [10, 2, 4, 3]\n * });\n *\n * @example\n * // Drawing a donut chart\n * new Chartist.Pie('.ct-chart', {\n * series: [10, 2, 4, 3]\n * }, {\n * donut: true\n * });\n *\n * @example\n * // Using donut, startAngle and total to draw a gauge chart\n * new Chartist.Pie('.ct-chart', {\n * series: [20, 10, 30, 40]\n * }, {\n * donut: true,\n * donutWidth: 20,\n * startAngle: 270,\n * total: 200\n * });\n *\n * @example\n * // Drawing a pie chart with padding and labels that are outside the pie\n * new Chartist.Pie('.ct-chart', {\n * series: [20, 10, 30, 40]\n * }, {\n * chartPadding: 30,\n * labelOffset: 50,\n * labelDirection: 'explode'\n * });\n *\n * @example\n * // Overriding the class names for individual series as well as a name and meta data.\n * // The name will be written as ct:series-name attribute and the meta data will be serialized and written\n * // to a ct:meta attribute.\n * new Chartist.Pie('.ct-chart', {\n * series: [{\n * value: 20,\n * name: 'Series 1',\n * className: 'my-custom-class-one',\n * meta: 'Meta One'\n * }, {\n * value: 10,\n * name: 'Series 2',\n * className: 'my-custom-class-two',\n * meta: 'Meta Two'\n * }, {\n * value: 70,\n * name: 'Series 3',\n * className: 'my-custom-class-three',\n * meta: 'Meta Three'\n * }]\n * });\n */\n function Pie(query, data, options, responsiveOptions) {\n Chartist.Pie.super.constructor.call(this,\n query,\n data,\n defaultOptions,\n Chartist.extend({}, defaultOptions, options),\n responsiveOptions);\n }\n\n // Creating pie chart type in Chartist namespace\n Chartist.Pie = Chartist.Base.extend({\n constructor: Pie,\n createChart: createChart,\n determineAnchorPosition: determineAnchorPosition\n });\n\n}(this || global, Chartist));\n\nreturn Chartist;\n\n}));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://tooltipHandler/./node_modules/chartist/dist/chartist.js?"); + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack://tooltipHandler/(webpack)/buildin/global.js?"); + +/***/ }), + +/***/ "./src/tooltipHandler.js": +/*!*******************************!*\ + !*** ./src/tooltipHandler.js ***! + \*******************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TooltipHandler; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Chartist = __webpack_require__(/*! chartist */ \"./node_modules/chartist/dist/chartist.js\");\n\nvar TooltipHandler = function () {\n function TooltipHandler(mxcell) {\n _classCallCheck(this, TooltipHandler);\n\n this.defaultColor = '#8c8980';\n this.timeFormat = 'YYYY-MM-DD HH:mm:ss';\n this.mxcell = mxcell;\n this.checked = false;\n this.metrics = [];\n this.lineOptions = {\n showPoint: false,\n showLine: true,\n showArea: true,\n fullWidth: true,\n showLabel: false,\n axisX: {\n showGrid: false,\n showLabel: false,\n offset: 0\n },\n axisY: {\n showGrid: false,\n showLabel: false,\n offset: 0\n },\n chartPadding: 0\n };\n }\n\n _createClass(TooltipHandler, [{\n key: \"isChecked\",\n value: function isChecked() {\n return this.checked;\n }\n }, {\n key: \"addMetric\",\n value: function addMetric(name, label, value, color, direction) {\n var metric = this.findTooltipValue(name);\n this.checked = true;\n var found = metric != null ? true : false;\n\n if (!found) {\n metric = {\n graphOptions: {}\n };\n }\n\n metric.name = name;\n metric.label = label;\n metric.value = value;\n metric.color = color != null ? color : this.defaultColor;\n metric.direction = direction;\n if (!found) this.metrics.push(metric);\n }\n }, {\n key: \"addGraph\",\n value: function addGraph(name, type, size, serie) {\n var metric = this.findTooltipValue(name);\n var found = metric != null ? true : false;\n\n if (!found) {\n metric = {\n graphOptions: {}\n };\n }\n\n metric.name = name;\n metric.graph = true;\n metric.graphOptions.type = type;\n metric.graphOptions.size = size;\n metric.graphOptions.serie = serie;\n if (!found) this.metrics.push(metric);\n }\n }, {\n key: \"updateDate\",\n value: function updateDate() {\n var current_datetime = new Date();\n this.lastChange = current_datetime.getFullYear() + '-' + (current_datetime.getMonth() + 1) + '-' + current_datetime.getDate() + ' ' + current_datetime.getHours() + ':' + current_datetime.getMinutes() + ':' + current_datetime.getSeconds();\n }\n }, {\n key: \"findTooltipValue\",\n value: function findTooltipValue(name) {\n for (var index = 0; index < this.metrics.length; index += 1) {\n var metric = this.metrics[index];\n if (metric.name === name) return metric;\n }\n\n return null;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n if (this.mxcell.GF_tooltipHandler) delete this.mxcell.GF_tooltipHandler;\n }\n }, {\n key: \"getTooltipDiv\",\n value: function getTooltipDiv(parentDiv) {\n if (!this.checked) return null;\n this.div = document.createElement('div');\n var div = this.div;\n div.id = this.mxcell.mxObjectId + '_GLOBAL';\n if (parentDiv != undefined) parentDiv.appendChild(div);\n\n if (this.metrics.length > 0) {\n this.getDateDiv(div);\n var metricsDiv = document.createElement('div');\n div.appendChild(metricsDiv);\n\n for (var index = 0; index < this.metrics.length; index++) {\n var metric = this.metrics[index];\n\n if (metric.div) {\n metricsDiv.appendChild(metric.div);\n return metric.div;\n }\n\n var metricDiv = document.createElement('div');\n metricDiv.className = 'tooltip-metric';\n metric.div = metricsDiv;\n metricsDiv.appendChild(metricDiv);\n if (metric.direction != null && metric.direction === 'h') metricDiv.style = 'display:inline-block;*display:inline;*zoom:1';\n this.getMetricDiv(metric, metricDiv);\n this.getChartDiv(metric, metricDiv);\n }\n }\n\n return div;\n }\n }, {\n key: \"getDateDiv\",\n value: function getDateDiv(parentDiv) {\n var div = document.createElement('div');\n div.id = this.mxcell.mxObjectId + '_DATE';\n if (parentDiv != undefined) parentDiv.appendChild(div);\n div.className = 'graph-tooltip-time tooltip-date';\n div.innerHTML = \"\".concat(this.lastChange);\n return div;\n }\n }, {\n key: \"getMetricDiv\",\n value: function getMetricDiv(metric, parentDiv) {\n u.log(1, \"TooltipHandler[\".concat(this.mxcell.mxObjectId, \"].getMetricDiv()\"));\n u.log(0, \"TooltipHandler[\".concat(this.mxcell.mxObjectId, \"].getMetricDiv() metric\"), metric);\n var div = document.createElement('div');\n div.id = this.mxcell.mxObjectId + '_METRIC_' + metric.name;\n var string = '';\n if (parentDiv != undefined) parentDiv.appendChild(div);\n\n if (metric !== undefined) {\n string += \"\".concat(metric.label, \" : \");\n string += \"\").concat(metric.value, \"\");\n }\n\n div.innerHTML = string;\n return div;\n }\n }, {\n key: \"getChartDiv\",\n value: function getChartDiv(metric, parentDiv) {\n var div = document.createElement('div');\n div.className = 'tooltip-graph';\n if (parentDiv != undefined) parentDiv.appendChild(div);\n\n if (metric.graph) {\n if (metric.graphOptions.type === 'line') this.getLineChartDiv(metric, div);\n }\n\n return div;\n }\n }, {\n key: \"getLineChartDiv\",\n value: function getLineChartDiv(metric, parentDiv) {\n var serie = metric.graphOptions.serie;\n var coor = TooltipHandler.array2Coor(serie.flotpairs);\n var div = document.createElement('div');\n if (parentDiv != undefined) parentDiv.appendChild(div);\n var color = metric.color;\n div.className = 'ct-chart ct-golden-section';\n if (metric.graphOptions.size != null) div.style = \"width:\".concat(metric.graphOptions.size, \";\");\n var data = {\n series: [coor]\n };\n var chart = new Chartist.Line(div, data, this.lineOptions);\n metric.graphOptions.chart = chart;\n chart.on('draw', function (data) {\n u.log(0, 'Chartis.on() data ', data);\n\n if (data.type === 'line' || data.type === 'area') {\n if (data.type === 'line') data.element.attr({\n style: \"stroke: \".concat(color)\n });\n if (data.type === 'area') data.element.attr({\n style: \"fill: \".concat(color)\n });\n data.element.animate({\n d: {\n begin: 1000 * data.index,\n dur: 1000,\n from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),\n to: data.path.clone().stringify(),\n easing: Chartist.Svg.Easing.easeOutQuint\n }\n });\n }\n });\n return div;\n }\n }], [{\n key: \"array2Coor\",\n value: function array2Coor(arr) {\n var result = [];\n\n for (var index = 0; index < arr.length; index++) {\n result.push({\n x: arr[index][0],\n y: arr[index][1]\n });\n }\n\n return result;\n }\n }]);\n\n return TooltipHandler;\n}();\n\n\n\n//# sourceURL=webpack://tooltipHandler/./src/tooltipHandler.js?"); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/dist/utils.js b/data/plugins/grafana-flowcharting/dist/utils.js new file mode 100644 index 0000000000000..f57cc231fc734 --- /dev/null +++ b/data/plugins/grafana-flowcharting/dist/utils.js @@ -0,0 +1,314 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["utils"] = factory(); + else + root["utils"] = factory(); +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/utils.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/pako/index.js": +/*!************************************!*\ + !*** ./node_modules/pako/index.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("// Top level file is just a mixin of submodules & constants\n\n\nvar assign = __webpack_require__(/*! ./lib/utils/common */ \"./node_modules/pako/lib/utils/common.js\").assign;\n\nvar deflate = __webpack_require__(/*! ./lib/deflate */ \"./node_modules/pako/lib/deflate.js\");\nvar inflate = __webpack_require__(/*! ./lib/inflate */ \"./node_modules/pako/lib/inflate.js\");\nvar constants = __webpack_require__(/*! ./lib/zlib/constants */ \"./node_modules/pako/lib/zlib/constants.js\");\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/index.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/deflate.js": +/*!******************************************!*\ + !*** ./node_modules/pako/lib/deflate.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n\nvar zlib_deflate = __webpack_require__(/*! ./zlib/deflate */ \"./node_modules/pako/lib/zlib/deflate.js\");\nvar utils = __webpack_require__(/*! ./utils/common */ \"./node_modules/pako/lib/utils/common.js\");\nvar strings = __webpack_require__(/*! ./utils/strings */ \"./node_modules/pako/lib/utils/strings.js\");\nvar msg = __webpack_require__(/*! ./zlib/messages */ \"./node_modules/pako/lib/zlib/messages.js\");\nvar ZStream = __webpack_require__(/*! ./zlib/zstream */ \"./node_modules/pako/lib/zlib/zstream.js\");\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/deflate.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/inflate.js": +/*!******************************************!*\ + !*** ./node_modules/pako/lib/inflate.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n\nvar zlib_inflate = __webpack_require__(/*! ./zlib/inflate */ \"./node_modules/pako/lib/zlib/inflate.js\");\nvar utils = __webpack_require__(/*! ./utils/common */ \"./node_modules/pako/lib/utils/common.js\");\nvar strings = __webpack_require__(/*! ./utils/strings */ \"./node_modules/pako/lib/utils/strings.js\");\nvar c = __webpack_require__(/*! ./zlib/constants */ \"./node_modules/pako/lib/zlib/constants.js\");\nvar msg = __webpack_require__(/*! ./zlib/messages */ \"./node_modules/pako/lib/zlib/messages.js\");\nvar ZStream = __webpack_require__(/*! ./zlib/zstream */ \"./node_modules/pako/lib/zlib/zstream.js\");\nvar GZheader = __webpack_require__(/*! ./zlib/gzheader */ \"./node_modules/pako/lib/zlib/gzheader.js\");\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/inflate.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/utils/common.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/utils/common.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/utils/common.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/utils/strings.js": +/*!************************************************!*\ + !*** ./node_modules/pako/lib/utils/strings.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("// String encode/decode helpers\n\n\n\nvar utils = __webpack_require__(/*! ./common */ \"./node_modules/pako/lib/utils/common.js\");\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/utils/strings.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/adler32.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/adler32.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/adler32.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/constants.js": +/*!*************************************************!*\ + !*** ./node_modules/pako/lib/zlib/constants.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/constants.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/crc32.js": +/*!*********************************************!*\ + !*** ./node_modules/pako/lib/zlib/crc32.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/crc32.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/deflate.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/deflate.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(/*! ../utils/common */ \"./node_modules/pako/lib/utils/common.js\");\nvar trees = __webpack_require__(/*! ./trees */ \"./node_modules/pako/lib/zlib/trees.js\");\nvar adler32 = __webpack_require__(/*! ./adler32 */ \"./node_modules/pako/lib/zlib/adler32.js\");\nvar crc32 = __webpack_require__(/*! ./crc32 */ \"./node_modules/pako/lib/zlib/crc32.js\");\nvar msg = __webpack_require__(/*! ./messages */ \"./node_modules/pako/lib/zlib/messages.js\");\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/deflate.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/gzheader.js": +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/gzheader.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/gzheader.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/inffast.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/inffast.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/inffast.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/inflate.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/inflate.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(/*! ../utils/common */ \"./node_modules/pako/lib/utils/common.js\");\nvar adler32 = __webpack_require__(/*! ./adler32 */ \"./node_modules/pako/lib/zlib/adler32.js\");\nvar crc32 = __webpack_require__(/*! ./crc32 */ \"./node_modules/pako/lib/zlib/crc32.js\");\nvar inflate_fast = __webpack_require__(/*! ./inffast */ \"./node_modules/pako/lib/zlib/inffast.js\");\nvar inflate_table = __webpack_require__(/*! ./inftrees */ \"./node_modules/pako/lib/zlib/inftrees.js\");\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/inflate.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/inftrees.js": +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/inftrees.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = __webpack_require__(/*! ../utils/common */ \"./node_modules/pako/lib/utils/common.js\");\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/inftrees.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/messages.js": +/*!************************************************!*\ + !*** ./node_modules/pako/lib/zlib/messages.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/messages.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/trees.js": +/*!*********************************************!*\ + !*** ./node_modules/pako/lib/zlib/trees.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = __webpack_require__(/*! ../utils/common */ \"./node_modules/pako/lib/utils/common.js\");\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/trees.js?"); + +/***/ }), + +/***/ "./node_modules/pako/lib/zlib/zstream.js": +/*!***********************************************!*\ + !*** ./node_modules/pako/lib/zlib/zstream.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n\n\n//# sourceURL=webpack://utils/./node_modules/pako/lib/zlib/zstream.js?"); + +/***/ }), + +/***/ "./node_modules/vkbeautify/index.js": +/*!******************************************!*\ + !*** ./node_modules/vkbeautify/index.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("/**\r\n* vkBeautify - javascript plugin to pretty-print or minify text in XML, JSON, CSS and SQL formats.\r\n*\r\n* Copyright (c) 2012 Vadim Kiryukhin\r\n* vkiryukhin @ gmail.com\r\n* http://www.eslinstructor.net/vkbeautify/\r\n*\r\n* Dual licensed under the MIT and GPL licenses:\r\n* http://www.opensource.org/licenses/mit-license.php\r\n* http://www.gnu.org/licenses/gpl.html\r\n*\r\n* Pretty print\r\n*\r\n* vkbeautify.xml(text [,indent_pattern]);\r\n* vkbeautify.json(text [,indent_pattern]);\r\n* vkbeautify.css(text [,indent_pattern]);\r\n* vkbeautify.sql(text [,indent_pattern]);\r\n*\r\n* @text - String; text to beatufy;\r\n* @indent_pattern - Integer | String;\r\n* Integer: number of white spaces;\r\n* String: character string to visualize indentation ( can also be a set of white spaces )\r\n* Minify\r\n*\r\n* vkbeautify.xmlmin(text [,preserve_comments]);\r\n* vkbeautify.jsonmin(text);\r\n* vkbeautify.cssmin(text [,preserve_comments]);\r\n* vkbeautify.sqlmin(text);\r\n*\r\n* @text - String; text to minify;\r\n* @preserve_comments - Bool; [optional];\r\n* Set this flag to true to prevent removing comments from @text ( minxml and mincss functions only. )\r\n*\r\n* Examples:\r\n* vkbeautify.xml(text); // pretty print XML\r\n* vkbeautify.json(text, 4 ); // pretty print JSON\r\n* vkbeautify.css(text, '. . . .'); // pretty print CSS\r\n* vkbeautify.sql(text, '----'); // pretty print SQL\r\n*\r\n* vkbeautify.xmlmin(text, true);// minify XML, preserve comments\r\n* vkbeautify.jsonmin(text);// minify JSON\r\n* vkbeautify.cssmin(text);// minify CSS, remove comments ( default )\r\n* vkbeautify.sqlmin(text);// minify SQL\r\n*\r\n*/\r\nfunction createShiftArr(step) {\r\n\r\n\tvar space = ' ';\r\n\r\n\tif ( isNaN(parseInt(step)) ) { // argument is string\r\n\t\tspace = step;\r\n\t} else { // argument is integer\r\n\t\tswitch(step) {\r\n\t\t\tcase 1: space = ' '; break;\r\n\t\t\tcase 2: space = ' '; break;\r\n\t\t\tcase 3: space = ' '; break;\r\n\t\t\tcase 4: space = ' '; break;\r\n\t\t\tcase 5: space = ' '; break;\r\n\t\t\tcase 6: space = ' '; break;\r\n\t\t\tcase 7: space = ' '; break;\r\n\t\t\tcase 8: space = ' '; break;\r\n\t\t\tcase 9: space = ' '; break;\r\n\t\t\tcase 10: space = ' '; break;\r\n\t\t\tcase 11: space = ' '; break;\r\n\t\t\tcase 12: space = ' '; break;\r\n\t\t}\r\n\t}\r\n\r\n\tvar shift = ['\\n']; // array of shifts\r\n\tfor(var ix=0;ix<100;ix++) {\r\n\t\tshift.push(shift[ix]+space);\r\n\t}\r\n\treturn shift;\r\n}\r\n\r\nfunction vkbeautify(){\r\n\tthis.step = ' '; // 4 spaces\r\n\tthis.shift = createShiftArr(this.step);\r\n};\r\n\r\nvkbeautify.prototype.xml = function(text,step) {\r\n\r\n\tvar ar = text.replace(/>\\s{0,}<\")\r\n\t\t\t\t .replace(/ or -1) {\r\n\t\t\t\tstr += shift[deep]+ar[ix];\r\n\t\t\t\tinComment = true;\r\n\t\t\t\t// end comment or //\r\n\t\t\t\tif(ar[ix].search(/-->/) > -1 || ar[ix].search(/\\]>/) > -1 || ar[ix].search(/!DOCTYPE/) > -1 ) {\r\n\t\t\t\t\tinComment = false;\r\n\t\t\t\t}\r\n\t\t\t} else\r\n\t\t\t// end comment or //\r\n\t\t\tif(ar[ix].search(/-->/) > -1 || ar[ix].search(/\\]>/) > -1) {\r\n\t\t\t\tstr += ar[ix];\r\n\t\t\t\tinComment = false;\r\n\t\t\t} else\r\n\t\t\t// //\r\n\t\t\tif( /^<\\w/.exec(ar[ix-1]) && /^<\\/\\w/.exec(ar[ix]) &&\r\n\t\t\t\t/^<[\\w:\\-\\.\\,]+/.exec(ar[ix-1]) == /^<\\/[\\w:\\-\\.\\,]+/.exec(ar[ix])[0].replace('/','')) {\r\n\t\t\t\tstr += ar[ix];\r\n\t\t\t\tif(!inComment) deep--;\r\n\t\t\t} else\r\n\t\t\t // //\r\n\t\t\tif(ar[ix].search(/<\\w/) > -1 && ar[ix].search(/<\\//) == -1 && ar[ix].search(/\\/>/) == -1 ) {\r\n\t\t\t\tstr = !inComment ? str += shift[deep++]+ar[ix] : str += ar[ix];\r\n\t\t\t} else\r\n\t\t\t // ... //\r\n\t\t\tif(ar[ix].search(/<\\w/) > -1 && ar[ix].search(/<\\//) > -1) {\r\n\t\t\t\tstr = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];\r\n\t\t\t} else\r\n\t\t\t// //\r\n\t\t\tif(ar[ix].search(/<\\//) > -1) {\r\n\t\t\t\tstr = !inComment ? str += shift[--deep]+ar[ix] : str += ar[ix];\r\n\t\t\t} else\r\n\t\t\t// //\r\n\t\t\tif(ar[ix].search(/\\/>/) > -1 ) {\r\n\t\t\t\tstr = !inComment ? str += shift[deep]+ar[ix] : str += ar[ix];\r\n\t\t\t} else\r\n\t\t\t// //\r\n\t\t\tif(ar[ix].search(/<\\?/) > -1) {\r\n\t\t\t\tstr += shift[deep]+ar[ix];\r\n\t\t\t} else\r\n\t\t\t// xmlns //\r\n\t\t\tif( ar[ix].search(/xmlns\\:/) > -1 || ar[ix].search(/xmlns\\=/) > -1) {\r\n\t\t\t\tstr += shift[deep]+ar[ix];\r\n\t\t\t}\r\n\r\n\t\t\telse {\r\n\t\t\t\tstr += ar[ix];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\treturn (str[0] == '\\n') ? str.slice(1) : str;\r\n}\r\n\r\nvkbeautify.prototype.json = function(text,step) {\r\n\r\n\tvar step = step ? step : this.step;\r\n\r\n\tif (typeof JSON === 'undefined' ) return text;\r\n\r\n\tif ( typeof text === \"string\" ) return JSON.stringify(JSON.parse(text), null, step);\r\n\tif ( typeof text === \"object\" ) return JSON.stringify(text, null, step);\r\n\r\n\treturn text; // text is not string nor object\r\n}\r\n\r\nvkbeautify.prototype.css = function(text, step) {\r\n\r\n\tvar ar = text.replace(/\\s{1,}/g,' ')\r\n\t\t\t\t.replace(/\\{/g,\"{~::~\")\r\n\t\t\t\t.replace(/\\}/g,\"~::~}~::~\")\r\n\t\t\t\t.replace(/\\;/g,\";~::~\")\r\n\t\t\t\t.replace(/\\/\\*/g,\"~::~/*\")\r\n\t\t\t\t.replace(/\\*\\//g,\"*/~::~\")\r\n\t\t\t\t.replace(/~::~\\s{0,}~::~/g,\"~::~\")\r\n\t\t\t\t.split('~::~'),\r\n\t\tlen = ar.length,\r\n\t\tdeep = 0,\r\n\t\tstr = '',\r\n\t\tix = 0,\r\n\t\tshift = step ? createShiftArr(step) : this.shift;\r\n\r\n\t\tfor(ix=0;ix/g,\"\")\r\n\t\t\t\t\t\t\t\t\t .replace(/[ \\r\\n\\t]{1,}xmlns/g, ' xmlns');\r\n\treturn str.replace(/>\\s{0,}<\");\r\n}\r\n\r\nvkbeautify.prototype.jsonmin = function(text) {\r\n\r\n\tif (typeof JSON === 'undefined' ) return text;\r\n\r\n\treturn JSON.stringify(JSON.parse(text), null, 0);\r\n\r\n}\r\n\r\nvkbeautify.prototype.cssmin = function(text, preserveComments) {\r\n\r\n\tvar str = preserveComments ? text\r\n\t\t\t\t\t\t\t : text.replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\//g,\"\") ;\r\n\r\n\treturn str.replace(/\\s{1,}/g,' ')\r\n\t\t\t .replace(/\\{\\s{1,}/g,\"{\")\r\n\t\t\t .replace(/\\}\\s{1,}/g,\"}\")\r\n\t\t\t .replace(/\\;\\s{1,}/g,\";\")\r\n\t\t\t .replace(/\\/\\*\\s{1,}/g,\"/*\")\r\n\t\t\t .replace(/\\*\\/\\s{1,}/g,\"*/\");\r\n}\r\n\r\nvkbeautify.prototype.sqlmin = function(text) {\r\n\treturn text.replace(/\\s{1,}/g,\" \").replace(/\\s{1,}\\(/,\"(\").replace(/\\s{1,}\\)/,\")\");\r\n}\r\n\r\nmodule.exports = new vkbeautify();\r\n\n\n//# sourceURL=webpack://utils/./node_modules/vkbeautify/index.js?"); + +/***/ }), + +/***/ "./src/utils.js": +/*!**********************!*\ + !*** ./src/utils.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var pako = __webpack_require__(/*! pako */ \"./node_modules/pako/index.js\");\n\nvar vkbeautify = __webpack_require__(/*! vkbeautify */ \"./node_modules/vkbeautify/index.js\");\n\nmodule.exports = {\n stringToBytes: function stringToBytes(str) {\n var arr = new Array(str.length);\n\n for (var i = 0; i < str.length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return arr;\n },\n bytesToString: function bytesToString(arr) {\n var str = '';\n\n for (var i = 0; i < arr.length; i += 1) {\n str += String.fromCharCode(arr[i]);\n }\n\n return str;\n },\n encode: function encode(data, _encode, deflate, base64) {\n var result = data;\n\n if (_encode) {\n try {\n result = encodeURIComponent(result);\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n if (deflate && result.length > 0) {\n try {\n result = this.bytesToString(pako.deflateRaw(result));\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n if (base64) {\n try {\n result = btoa(result);\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n return result;\n },\n removeLinebreaks: function removeLinebreaks(data) {\n return data.replace(/(\\r\\n|\\n|\\r)/gm, '');\n },\n isencoded: function isencoded(data) {\n try {\n var node = this.parseXml(data).documentElement;\n\n if (node != null && node.nodeName == 'mxfile') {\n var diagrams = node.getElementsByTagName('diagram');\n\n if (diagrams.length > 0) {\n return true;\n }\n } else return data.indexOf('mxGraphModel') == -1;\n } catch (error) {\n return true;\n }\n\n return false;\n },\n decode: function decode(data, encode, deflate, base64) {\n try {\n var node = this.parseXml(data).documentElement;\n\n if (node != null && node.nodeName == 'mxfile') {\n var diagrams = node.getElementsByTagName('diagram');\n\n if (diagrams.length > 0) {\n data = this.getTextContent(diagrams[0]);\n }\n }\n } catch (e) {}\n\n if (base64) {\n try {\n data = atob(data);\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n if (deflate && data.length > 0) {\n try {\n data = this.bytesToString(pako.inflateRaw(data));\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n if (encode) {\n try {\n data = decodeURIComponent(data);\n } catch (e) {\n console.error(e);\n return;\n }\n }\n\n return data;\n },\n parseXml: function parseXml(xml) {\n if (window.DOMParser) {\n var parser = new DOMParser();\n return parser.parseFromString(xml, 'text/xml');\n }\n\n var result = this.createXmlDocument();\n result.async = 'false';\n result.loadXML(xml);\n return result;\n },\n createXmlDocument: function createXmlDocument() {\n var doc = null;\n\n if (document.implementation && document.implementation.createDocument) {\n doc = document.implementation.createDocument('', '', null);\n } else if (window.ActiveXObject) {\n doc = new ActiveXObject('Microsoft.XMLDOM');\n }\n\n return doc;\n },\n decodeFromUri: function decodeFromUri(data) {\n try {\n data = decodeURIComponent(data);\n } catch (e) {\n console.error(e);\n return;\n }\n\n return data;\n },\n getTextContent: function getTextContent(node) {\n return node != null ? node[node.textContent === undefined ? 'text' : 'textContent'] : '';\n },\n normalizeXml: function normalizeXml(data) {\n try {\n var str = data;\n str = str.replace(/>\\s*/g, '>');\n str = str.replace(/\\s*= GF_PLUGIN.logLevel) {\n if (level === 0) {\n console.debug(\"DEBUG : \".concat(title), obj);\n return;\n }\n\n if (level === 1) {\n console.info(\" INFO : \".concat(title), obj);\n return;\n }\n\n if (level === 2) {\n console.warn(\" WARN : \".concat(title), obj);\n return;\n }\n\n if (level === 3) {\n console.error(\"ERROR : \".concat(title), obj);\n }\n }\n }\n }\n};\n\n//# sourceURL=webpack://utils/./src/utils.js?"); + +/***/ }) + +/******/ }); +}); \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/jest.config.js b/data/plugins/grafana-flowcharting/jest.config.js new file mode 100644 index 0000000000000..c82925d870ed6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/jest.config.js @@ -0,0 +1,20 @@ +module.exports = { + verbose: true, + roots: ['./spec'], + moduleDirectories: ['node_modules', 'public', 'src'], + modulePaths: ['./node_modules', './public', './src'], + globalSetup: '/spec/globalSetup.js', + globalTeardown: '/spec/globalTeardown.js', + setupFiles: ['/spec/setup-jest.js'], + transform: { + '^.+\\.jsx?$': 'babel-jest', + '^.+\\.tsx?$': 'ts-jest', + }, + moduleNameMapper: { + underscore$: 'lodash', + }, + // transformIgnorePatterns: ['./public/.*', './node_modules/.*', './dist/.*'], + testRegex: '(\\.|/)(test)\\.(jsx?|tsx?)$', + transformIgnorePatterns: ['/node_modules/(?!vue-awesome)'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], +}; diff --git a/data/plugins/grafana-flowcharting/lws.config.js b/data/plugins/grafana-flowcharting/lws.config.js new file mode 100644 index 0000000000000..93dca2798d38e --- /dev/null +++ b/data/plugins/grafana-flowcharting/lws.config.js @@ -0,0 +1,3 @@ +module.exports = { + port: 80 +} \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/package-lock.json b/data/plugins/grafana-flowcharting/package-lock.json new file mode 100644 index 0000000000000..12c9f698ed3da --- /dev/null +++ b/data/plugins/grafana-flowcharting/package-lock.json @@ -0,0 +1,14490 @@ +{ + "name": "flowcharting", + "version": "0.4.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular/common": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.2.15.tgz", + "integrity": "sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.2.15.tgz", + "integrity": "sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/core": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.15.tgz", + "integrity": "sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.2.15.tgz", + "integrity": "sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "7.2.15", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz", + "integrity": "sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/cli": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz", + "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==", + "dev": true, + "requires": { + "chokidar": "^2.0.3", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "output-file-sync": "^2.0.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.0.tgz", + "integrity": "sha512-Dzl7U0/T69DFOTwqz/FJdnOSWS57NpjNfCwMKHABr589Lg8uX1RrlBIJ7L5Dubt/xkLsx0xH5EBFzlBVes1ayA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz", + "integrity": "sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", + "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.0.tgz", + "integrity": "sha512-2K8NohdOT7P6Vyp23QH4w2IleP8yG3UJsbRKwA4YP6H8fErcLkFuuEEqbF2/BYBKSNci/FWJiqm6R3VhM/QHgw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0" + } + }, + "@babel/helper-define-map": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", + "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.0", + "lodash": "^4.17.11" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", + "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", + "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.10" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", + "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.2.tgz", + "integrity": "sha512-gQR1eQeroDzFBikhrCccm5Gs2xBjZ57DNjGbqTaHo911IpmSxflOQWMAHPw/TXk8L3isv7s9lYzUkexOeTQUYg==", + "dev": true, + "requires": { + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.0.tgz", + "integrity": "sha512-t2ECPNOXsIeK1JxJNKmgbzQtoG27KIlVE61vTqX0DKR9E9sZlVVxWUtEW9D5FlZ8b8j7SBNCHY47GgPKCKlpPg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.4.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz", + "integrity": "sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-decorators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.0.tgz", + "integrity": "sha512-uTNi8pPYyUH2eWHyYWWSYJKwKg34hhgl4/dbejEjL+64OhbHjTX7wEVWMQl82tEmdDsGeu77+s8HHLS627h6OQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", + "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz", + "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", + "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", + "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", + "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", + "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.0.tgz", + "integrity": "sha512-XGg1Mhbw4LDmrO9rSTNe+uI79tQPdGs0YASlxgweYRLZqo/EQktjaOV4tchL/UZbM0F+/94uOipmdNGoaGOEYg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.0.tgz", + "integrity": "sha512-HySkoatyYTY3ZwLI8GGvkRWCFrjAGXUHur5sMecmCIdIharnlcWWivOqDJI76vvmVZfzwb6G08NREsrY96RhGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", + "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz", + "integrity": "sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.0.tgz", + "integrity": "sha512-vWdfCEYLlYSxbsKj5lGtzA49K3KANtb8qCPQ1em07txJzsBwY+cKJzBHizj5fl3CCx7vt+WPdgDLTHmydkbQSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", + "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.0.tgz", + "integrity": "sha512-iWKAooAkipG7g1IY0eah7SumzfnIT3WNhT4uYB2kIsvHnNSB6MDYVa5qyICSwaTBDBY2c4SnJ3JtEa6ltJd6Jw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", + "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", + "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", + "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.0.tgz", + "integrity": "sha512-Xqv6d1X+doyiuCGDoVJFtlZx0onAX0tnc3dY8w71pv/O0dODAbusVv2Ale3cGOwfiyi895ivOBhYa9DhAM8dUA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz", + "integrity": "sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", + "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", + "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", + "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz", + "integrity": "sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.0.tgz", + "integrity": "sha512-SZ+CgL4F0wm4npojPU6swo/cK4FcbLgxLd4cWpHaNXY/NJ2dpahODCqBbAwb2rDmVszVb3SSjnk9/vik3AYdBw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz", + "integrity": "sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.0.tgz", + "integrity": "sha512-U7/+zKnRZg04ggM/Bm+xmu2B/PrwyDQTT/V89FXWYWNMxBDwSx56u6jtk9SEbfLFbZaEI72L+5LPvQjeZgFCrQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.2.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", + "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.2.tgz", + "integrity": "sha512-OEz6VOZaI9LW08CWVS3d9g/0jZA6YCn1gsKIy/fut7yZCJti5Lm1/Hi+uo/U+ODm7g4I6gULrCP+/+laT8xAsA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.0", + "@babel/plugin-transform-classes": "^7.4.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.0", + "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", + "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.0", + "@babel/plugin-transform-regenerator": "^7.4.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "@babel/types": "^7.4.0", + "browserslist": "^4.4.2", + "core-js-compat": "^3.0.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/preset-react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" + } + }, + "@babel/preset-typescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz", + "integrity": "sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.1.0" + } + }, + "@babel/runtime": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", + "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/traverse": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@jest/console": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.3.0.tgz", + "integrity": "sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "@types/node": "*", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.5.0.tgz", + "integrity": "sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ==", + "dev": true, + "requires": { + "@jest/console": "^24.3.0", + "@jest/reporters": "^24.5.0", + "@jest/test-result": "^24.5.0", + "@jest/transform": "^24.5.0", + "@jest/types": "^24.5.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.5.0", + "jest-config": "^24.5.0", + "jest-haste-map": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.5.0", + "jest-runner": "^24.5.0", + "jest-runtime": "^24.5.0", + "jest-snapshot": "^24.5.0", + "jest-util": "^24.5.0", + "jest-validate": "^24.5.0", + "jest-watcher": "^24.5.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "@jest/environment": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.5.0.tgz", + "integrity": "sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.5.0", + "@jest/transform": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/node": "*", + "jest-mock": "^24.5.0" + } + }, + "@jest/fake-timers": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.5.0.tgz", + "integrity": "sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "@types/node": "*", + "jest-message-util": "^24.5.0", + "jest-mock": "^24.5.0" + } + }, + "@jest/reporters": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.5.0.tgz", + "integrity": "sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q==", + "dev": true, + "requires": { + "@jest/environment": "^24.5.0", + "@jest/test-result": "^24.5.0", + "@jest/transform": "^24.5.0", + "@jest/types": "^24.5.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-api": "^2.1.1", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-source-maps": "^3.0.1", + "jest-haste-map": "^24.5.0", + "jest-resolve": "^24.5.0", + "jest-runtime": "^24.5.0", + "jest-util": "^24.5.0", + "jest-worker": "^24.4.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + } + }, + "@jest/source-map": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", + "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.5.0.tgz", + "integrity": "sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A==", + "dev": true, + "requires": { + "@jest/console": "^24.3.0", + "@jest/types": "^24.5.0", + "@types/istanbul-lib-coverage": "^1.1.0" + } + }, + "@jest/test-sequencer": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", + "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", + "dev": true, + "requires": { + "@jest/test-result": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0" + }, + "dependencies": { + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/environment": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/fake-timers": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/test-result": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/transform": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.8.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.8.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "babel-jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", + "dev": true, + "requires": { + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "expect": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0" + } + }, + "jest-config": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.8.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-each": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-environment-jsdom": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" + } + }, + "jest-get-type": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", + "dev": true + }, + "jest-jasmine2": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.8.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", + "dev": true, + "requires": { + "pretty-format": "^24.8.0" + } + }, + "jest-matcher-utils": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-message-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0" + } + }, + "jest-runner": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" + } + }, + "jest-snapshot": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.8.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "leven": "^2.1.0", + "pretty-format": "^24.8.0" + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + } + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pretty-format": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "@jest/transform": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.5.0.tgz", + "integrity": "sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.5.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.5.0", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.5.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.5.0.tgz", + "integrity": "sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^1.1.0", + "@types/yargs": "^12.0.9" + } + }, + "@types/babel__core": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.0.tgz", + "integrity": "sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz", + "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/istanbul-lib-coverage": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz", + "integrity": "sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", + "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, + "@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.10.tgz", + "integrity": "sha512-WsVzTPshvCSbHThUduGGxbmnwcpkgSctHGHTqzWyFg4lYAuV5qXlyFPOsP3OWqCINfmg/8VXP+zJaa4OxEsBQQ==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular/-/angular-1.7.8.tgz", + "integrity": "sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg==", + "dev": true + }, + "angular-mock": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/angular-mock/-/angular-mock-1.0.0.tgz", + "integrity": "sha1-Z0MYSb8K3SJbHUngp3Flmks2C6U=", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + } + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", + "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz", + "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.5.0.tgz", + "integrity": "sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g==", + "dev": true, + "requires": { + "@jest/transform": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.3.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz", + "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz", + "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.0.0", + "test-exclude": "^5.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz", + "integrity": "sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz", + "integrity": "sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.5", + "resolve": "^1.8.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-do-expressions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", + "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-function-bind": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", + "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-do-expressions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", + "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", + "dev": true, + "requires": { + "babel-plugin-syntax-do-expressions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-function-bind": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", + "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", + "dev": true, + "requires": { + "babel-plugin-syntax-function-bind": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + } + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-jest": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz", + "integrity": "sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.3.0" + } + }, + "babel-preset-react-app": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-7.0.2.tgz", + "integrity": "sha512-mwCk/u2wuiO8qQqblN5PlDa44taY0acq7hw6W+a70W522P7a9mIcdggL1fe5/LgAT7tqCq46q9wwhqaMoYKslQ==", + "dev": true, + "requires": { + "@babel/core": "7.2.2", + "@babel/plugin-proposal-class-properties": "7.3.0", + "@babel/plugin-proposal-decorators": "7.3.0", + "@babel/plugin-proposal-object-rest-spread": "7.3.2", + "@babel/plugin-syntax-dynamic-import": "7.2.0", + "@babel/plugin-transform-classes": "7.2.2", + "@babel/plugin-transform-destructuring": "7.3.2", + "@babel/plugin-transform-flow-strip-types": "7.2.3", + "@babel/plugin-transform-react-constant-elements": "7.2.0", + "@babel/plugin-transform-react-display-name": "7.2.0", + "@babel/plugin-transform-runtime": "7.2.0", + "@babel/preset-env": "7.3.1", + "@babel/preset-react": "7.0.0", + "@babel/preset-typescript": "7.1.0", + "@babel/runtime": "7.3.1", + "babel-loader": "8.0.5", + "babel-plugin-dynamic-import-node": "2.2.0", + "babel-plugin-macros": "2.5.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/core": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz", + "integrity": "sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz", + "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.1.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", + "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/preset-env": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", + "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.2.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.2.0", + "@babel/plugin-transform-classes": "^7.2.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.2.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "babel-preset-stage-0": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", + "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", + "dev": true, + "requires": { + "babel-plugin-transform-do-expressions": "^6.22.0", + "babel-plugin-transform-function-bind": "^6.22.0", + "babel-preset-stage-1": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz", + "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "dev": true, + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.2.tgz", + "integrity": "sha512-zmJVLiKLrzko0iszd/V4SsjTaomFeoVzQGYYOYgRgsbh7WNh95RgDB0CmBdFWYs/3MyFSt69NypjL/h3iaddKQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000951", + "electron-to-chromium": "^1.3.116", + "node-releases": "^1.1.11" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30000951", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000951.tgz", + "integrity": "sha512-eRhP+nQ6YUkIcNQ6hnvdhMkdc7n3zadog0KXNRxAZTT2kHjUb1yGn71OrPhSn8MOvlX97g5CR97kGVj8fMsXWg==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", + "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "dev": true, + "requires": { + "css-select": "~1.2.0", + "dom-serializer": "~0.1.0", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", + "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0.tgz", + "integrity": "sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.0.tgz", + "integrity": "sha512-W/Ppz34uUme3LmXWjMgFlYyGnbo1hd9JvA0LNQ4EmieqVjg2GPYbj3H6tcdP2QGPGWdRKUqZVbVKLNIFVs/HiA==", + "dev": true, + "requires": { + "browserslist": "^4.5.1", + "core-js": "3.0.0", + "core-js-pure": "3.0.0", + "semver": "^5.6.0" + } + }, + "core-js-pure": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.0.tgz", + "integrity": "sha512-yPiS3fQd842RZDgo/TAKGgS0f3p2nxssF1H65DIZvZv0Od5CygP8puHXn3IQiM/39VAvgCbdaMQpresrbGgt9g==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.1.0.tgz", + "integrity": "sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "lodash.get": "^4.4.2", + "parse-json": "^4.0.0" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + }, + "dependencies": { + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + } + } + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.2.9.tgz", + "integrity": "sha1-vWf5bAfvtjA7f+lMHpefiEeOCjk=", + "dev": true, + "requires": { + "lru-cache": "^2.5.0" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "csproj2ts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/csproj2ts/-/csproj2ts-1.1.0.tgz", + "integrity": "sha512-sk0RTT51t4lUNQ7UfZrqjQx7q4g0m3iwNA6mvyh7gLsgQYvwKzfdyoAgicC9GqJvkoIkU0UmndV9c7VZ8pJ45Q==", + "dev": true, + "requires": { + "es6-promise": "^4.1.1", + "lodash": "^4.17.4", + "semver": "^5.4.1", + "xml2js": "^0.4.19" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + } + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "dev": true + }, + "cssstyle": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", + "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "dev": true + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "optional": true + }, + "deep-for-each": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/deep-for-each/-/deep-for-each-2.0.3.tgz", + "integrity": "sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A==", + "dev": true, + "requires": { + "lodash.isplainobject": "^4.0.6" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-libc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz", + "integrity": "sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=", + "dev": true, + "optional": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "diff-sequences": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", + "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.119", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.119.tgz", + "integrity": "sha512-3mtqcAWa4HgG+Djh/oNXlPH0cOH6MmtwxN1nHSaReb9P0Vn51qYPqYwLeoSuAX9loU1wrOBhFbiX3CkeIxPfgg==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "enzyme": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.9.0.tgz", + "integrity": "sha512-JqxI2BRFHbmiP7/UFqvsjxTirWoM1HfeaJrmVSZ9a1EADKkZgdPcAuISPMpoUiHlac9J4dYt81MC5BBIrbJGMg==", + "dev": true, + "requires": { + "array.prototype.flat": "^1.2.1", + "cheerio": "^1.0.0-rc.2", + "function.prototype.name": "^1.1.0", + "has": "^1.0.3", + "html-element-map": "^1.0.0", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.4", + "is-number-object": "^1.0.3", + "is-regex": "^1.0.4", + "is-string": "^1.0.4", + "is-subset": "^0.1.1", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.6.0", + "object-is": "^1.0.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4", + "object.values": "^1.0.4", + "raf": "^3.4.0", + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.1.2" + } + }, + "enzyme-adapter-react-16": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.11.2.tgz", + "integrity": "sha512-2ruTTCPRb0lPuw/vKTXGVZVBZqh83MNDnakMhzxhpJcIbneEwNy2Cv0KvL97pl57/GOazJHflWNLjwWhex5AAA==", + "dev": true, + "requires": { + "enzyme-adapter-utils": "^1.10.1", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "react-is": "^16.8.4", + "react-test-renderer": "^16.0.0-0", + "semver": "^5.6.0" + } + }, + "enzyme-adapter-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.1.tgz", + "integrity": "sha512-oasinhhLoBuZsIkTe8mx0HiudtfErUtG0Ooe1FOplu/t4c9rOmyG5gtrBASK6u4whHIRWvv0cbZMElzNTR21SA==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.2", + "semver": "^5.6.0" + } + }, + "enzyme-to-json": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz", + "integrity": "sha512-DmH1wJ68HyPqKSYXdQqB33ZotwfUhwQZW3IGXaNXgR69Iodaoj8TF/D9RjLdz4pEhGq2Tx2zwNUIjBuqoZeTgA==", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-0.1.2.tgz", + "integrity": "sha1-8RLCn+paCZhTn8tqL9IUQ9KPBfc=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-config-airbnb": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.0.tgz", + "integrity": "sha512-R9jw28hFfEQnpPau01NO5K/JWMGLi6aymiF6RsnMURjTk+MqZKllCqGK/0tOvHkPi/NWSSOU2Ced/GX++YxLnw==", + "dev": true, + "requires": { + "eslint-config-airbnb-base": "^13.1.0", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4" + } + }, + "eslint-config-airbnb-base": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", + "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "requires": { + "eslint-restricted-globals": "^0.1.1", + "object.assign": "^4.1.0", + "object.entries": "^1.0.4" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", + "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz", + "integrity": "sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.1.tgz", + "integrity": "sha512-JsxNKqa3TwmPypeXNnI75FntkUktGzI1wSa1LgNZdSOMI+B4sxnr1lSF8m8lPiz4mKiC+14ysZQM4scewUrP7A==", + "dev": true, + "requires": { + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.1", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^6.5.1", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1" + } + }, + "eslint-plugin-react": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.0.tgz", + "integrity": "sha512-SJOh2p3Mr1nbp/Nd5odTuSn2rvaMvO5DaOpuAGc9Sc+Gcxqkyffb1mqQGIKB9tWQJlvrfsrzWnMJexZJ7YRDUw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", + "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-template": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz", + "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==", + "dev": true, + "optional": true + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.5.0.tgz", + "integrity": "sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.3.0", + "jest-matcher-utils": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-regex-util": "^24.3.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", + "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flopmang": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flopmang/-/flopmang-1.0.0.tgz", + "integrity": "sha512-WQsI7/o5g8NC/VCKbAJQcxSm77k1hd5beC0qikWOvz9iDqwKiwB0xfSGIgAOpHck00enCiJKUrzsGN775FQzdw==", + "requires": { + "underscore": "^1.9.1", + "underscore.string": "^3.3.5" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz", + "integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "is-callable": "^1.1.3" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "dev": true + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "grunt-babel": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/grunt-babel/-/grunt-babel-8.0.0.tgz", + "integrity": "sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ==", + "dev": true + }, + "grunt-cli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", + "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", + "dev": true, + "requires": { + "grunt-known-options": "~1.1.0", + "interpret": "~1.1.0", + "liftoff": "~2.5.0", + "nopt": "~4.0.1", + "v8flags": "~3.1.1" + } + }, + "grunt-contrib-clean": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz", + "integrity": "sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "rimraf": "^2.6.2" + } + }, + "grunt-contrib-compress": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.3.tgz", + "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=", + "dev": true, + "requires": { + "archiver": "^1.3.0", + "chalk": "^1.1.1", + "iltorb": "^1.0.13", + "lodash": "^4.7.0", + "pretty-bytes": "^4.0.2", + "stream-buffers": "^2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", + "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-copy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz", + "integrity": "sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM=", + "dev": true, + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-sass": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-sass/-/grunt-contrib-sass-1.0.0.tgz", + "integrity": "sha1-gGg4JRy8DhqU1k1RXN00z2dNcBs=", + "dev": true, + "requires": { + "async": "^0.9.0", + "chalk": "^1.0.0", + "cross-spawn": "^0.2.3", + "dargs": "^4.0.0", + "which": "^1.0.5" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "grunt-contrib-uglify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.1.tgz", + "integrity": "sha512-dwf8/+4uW1+7pH72WButOEnzErPGmtUvc8p08B0eQS/6ON0WdeQu0+WFeafaPTbbY1GqtS25lsHWaDeiTQNWPg==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "maxmin": "^2.1.0", + "uglify-js": "^3.5.0", + "uri-path": "^1.0.0" + } + }, + "grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "dev": true, + "requires": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + } + }, + "grunt-git": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/grunt-git/-/grunt-git-1.0.14.tgz", + "integrity": "sha512-cjavNWMysd7qnNMfGArtSdRRbtCUkvDoY/IM0MRcQJCGEEr7B/Onbz53ke7uM/EZroXEOMWtdc647m8TnevoaQ==", + "requires": { + "flopmang": "^1.0.0" + } + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", + "dev": true + }, + "grunt-sass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.0.2.tgz", + "integrity": "sha512-Ogq4cWqBre71gZIkgxIxevgzZHSIIsrKu/5yvPDl4Mvib0A4TRTJEQUdpQ0YV1iai0DPjayz02vDJE6KUVHQ2w==", + "dev": true + }, + "grunt-ts": { + "version": "6.0.0-beta.22", + "resolved": "https://registry.npmjs.org/grunt-ts/-/grunt-ts-6.0.0-beta.22.tgz", + "integrity": "sha512-g9e+ZImQ7W38dfpwhp0+GUltXWidy3YGPfIA/IyGL5HMv6wmVmMMoSgscI5swhs2HSPf8yAvXAAJbwrouijoRg==", + "dev": true, + "requires": { + "chokidar": "^2.0.4", + "csproj2ts": "^1.1.0", + "detect-indent": "^4.0.0", + "detect-newline": "^2.1.0", + "es6-promise": "~0.1.1", + "jsmin2": "^1.2.1", + "lodash": "~4.17.10", + "ncp": "0.5.1", + "rimraf": "2.2.6", + "semver": "^5.3.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.6.tgz", + "integrity": "sha1-xZWXVpsU2VatKcrMQr3d9fDqT0w=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "grunt-webpack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/grunt-webpack/-/grunt-webpack-3.1.3.tgz", + "integrity": "sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ==", + "dev": true, + "requires": { + "deep-for-each": "^2.0.2", + "lodash": "^4.7.0" + } + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "^0.1.1" + } + }, + "handlebars": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz", + "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "html-element-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.0.0.tgz", + "integrity": "sha512-/SP6aOiM5Ai9zALvCxDubIeez0LvG3qP7R9GcRDnJEP/HBmv0A8A9K0o8+HFudcFt46+i921ANjzKsjPjb7Enw==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "iltorb": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz", + "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^0.2.0", + "nan": "^2.6.2", + "node-gyp": "^3.6.2", + "prebuild-install": "^2.3.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-boolean-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", + "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-generator-fn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz", + "integrity": "sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==", + "dev": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", + "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", + "dev": true + }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.1.tgz", + "integrity": "sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.1", + "js-yaml": "^3.12.0", + "make-dir": "^1.3.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", + "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", + "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.3", + "semver": "^5.5.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", + "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "supports-color": "^6.0.0" + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", + "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", + "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "dev": true, + "requires": { + "handlebars": "^4.1.0" + } + }, + "jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.8.0" + }, + "dependencies": { + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", + "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.8.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "jest-watcher": "^24.8.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" + } + }, + "@jest/environment": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/fake-timers": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/reporters": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", + "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.1.1", + "jest-haste-map": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + } + }, + "@jest/test-result": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/transform": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.8.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.8.0", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + } + }, + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "babel-jest": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", + "dev": true, + "requires": { + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "expect": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-regex-util": "^24.3.0" + } + }, + "jest-changed-files": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", + "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-cli": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", + "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", + "dev": true, + "requires": { + "@jest/core": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" + } + }, + "jest-config": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.8.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-each": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-environment-jsdom": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", + "dev": true, + "requires": { + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" + } + }, + "jest-get-type": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", + "dev": true + }, + "jest-jasmine2": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.8.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", + "dev": true, + "requires": { + "pretty-format": "^24.8.0" + } + }, + "jest-matcher-utils": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" + } + }, + "jest-message-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", + "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.8.0" + } + }, + "jest-runner": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" + } + }, + "jest-snapshot": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.8.0", + "chalk": "^2.0.1", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.8.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.8.0", + "leven": "^2.1.0", + "pretty-format": "^24.8.0" + } + }, + "jest-watcher": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", + "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/yargs": "^12.0.9", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.8.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + } + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "pretty-format": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.5.0.tgz", + "integrity": "sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-cli": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.5.0.tgz", + "integrity": "sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g==", + "dev": true, + "requires": { + "@jest/core": "^24.5.0", + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.5.0", + "jest-util": "^24.5.0", + "jest-validate": "^24.5.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" + } + }, + "jest-config": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.5.0.tgz", + "integrity": "sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.5.0", + "babel-jest": "^24.5.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.5.0", + "jest-environment-node": "^24.5.0", + "jest-get-type": "^24.3.0", + "jest-jasmine2": "^24.5.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.5.0", + "jest-util": "^24.5.0", + "jest-validate": "^24.5.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.5.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.5.0.tgz", + "integrity": "sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.5.0" + } + }, + "jest-docblock": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", + "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-dom": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jest-dom/-/jest-dom-3.5.0.tgz", + "integrity": "sha512-xHnP3Qo/29oLAo2iixaZsoDrm3XKSVrMH5Wf2ZEiLychJQBTNzOeVMPxrCygCgJiyQMbnymXltme8bPzuiGOIA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "css": "^2.2.3", + "css.escape": "^1.5.1", + "jest-diff": "^24.0.0", + "jest-matcher-utils": "^24.0.0", + "lodash": "^4.17.11", + "pretty-format": "^24.0.0", + "redent": "^2.0.0" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + } + } + }, + "jest-each": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.5.0.tgz", + "integrity": "sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.3.0", + "jest-util": "^24.5.0", + "pretty-format": "^24.5.0" + } + }, + "jest-environment-jsdom": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz", + "integrity": "sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ==", + "dev": true, + "requires": { + "@jest/environment": "^24.5.0", + "@jest/fake-timers": "^24.5.0", + "@jest/types": "^24.5.0", + "jest-mock": "^24.5.0", + "jest-util": "^24.5.0", + "jsdom": "^11.5.1" + }, + "dependencies": { + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-jsdom-thirteen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-thirteen/-/jest-environment-jsdom-thirteen-1.0.1.tgz", + "integrity": "sha512-Zi7OuKF7HMLlBvomitd5eKp5Ykc4Wvw0d+i+cpbCaE+7kmvL24SO4ssDmKrT++aANXR4T8+pmoJIlav5gr2peQ==", + "dev": true, + "requires": { + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^13.0.0" + } + }, + "jest-environment-node": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.5.0.tgz", + "integrity": "sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw==", + "dev": true, + "requires": { + "@jest/environment": "^24.5.0", + "@jest/fake-timers": "^24.5.0", + "@jest/types": "^24.5.0", + "jest-mock": "^24.5.0", + "jest-util": "^24.5.0" + } + }, + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", + "dev": true + }, + "jest-haste-map": { + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.1.tgz", + "integrity": "sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.4.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "dev": true, + "requires": { + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/fake-timers": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" + } + }, + "@jest/test-result": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "jest-message-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0" + } + }, + "jest-util": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-worker": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + } + } + } + }, + "jest-jasmine2": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz", + "integrity": "sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.5.0", + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.5.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.5.0", + "jest-matcher-utils": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-runtime": "^24.5.0", + "jest-snapshot": "^24.5.0", + "jest-util": "^24.5.0", + "pretty-format": "^24.5.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz", + "integrity": "sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ==", + "dev": true, + "requires": { + "pretty-format": "^24.5.0" + } + }, + "jest-matcher-utils": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz", + "integrity": "sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.5.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.5.0" + } + }, + "jest-message-util": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", + "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.5.0.tgz", + "integrity": "sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0" + } + }, + "jest-nock": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/jest-nock/-/jest-nock-0.1.7.tgz", + "integrity": "sha512-PDomjUeI2XGLycXOnXvQ3i0D8UDcXnjEjgoCtYYB3IO2RwArKd0xXfLw6T32E484e90ca+OekwhN7F/rMSSCHQ==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-preset-angular": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-7.0.1.tgz", + "integrity": "sha512-/vEGBz3GlbMgwtVPNBDpPEVrbpcfufN7v4UyVbuvVXjVj72lQXlHw6k5I6niMx1JBD2UPTuAv4nCjN8xFPfO0A==", + "dev": true, + "requires": { + "jest-environment-jsdom-thirteen": "^1.0.0", + "ts-jest": "^24.0.0" + } + }, + "jest-regex-util": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", + "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "dev": true + }, + "jest-resolve": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", + "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + } + } + }, + "jest-resolve-dependencies": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz", + "integrity": "sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.5.0" + } + }, + "jest-runner": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.5.0.tgz", + "integrity": "sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA==", + "dev": true, + "requires": { + "@jest/console": "^24.3.0", + "@jest/environment": "^24.5.0", + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.5.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.5.0", + "jest-jasmine2": "^24.5.0", + "jest-leak-detector": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-resolve": "^24.5.0", + "jest-runtime": "^24.5.0", + "jest-util": "^24.5.0", + "jest-worker": "^24.4.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.5.0.tgz", + "integrity": "sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw==", + "dev": true, + "requires": { + "@jest/console": "^24.3.0", + "@jest/environment": "^24.5.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/yargs": "^12.0.2", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.5.0", + "jest-haste-map": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-mock": "^24.5.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.5.0", + "jest-snapshot": "^24.5.0", + "jest-util": "^24.5.0", + "jest-validate": "^24.5.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" + } + }, + "jest-serializer": { + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", + "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", + "dev": true + }, + "jest-snapshot": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.5.0.tgz", + "integrity": "sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.5.0", + "chalk": "^2.0.1", + "expect": "^24.5.0", + "jest-diff": "^24.5.0", + "jest-matcher-utils": "^24.5.0", + "jest-message-util": "^24.5.0", + "jest-resolve": "^24.5.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.5.0", + "semver": "^5.5.0" + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "jest-util": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.5.0.tgz", + "integrity": "sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q==", + "dev": true, + "requires": { + "@jest/console": "^24.3.0", + "@jest/fake-timers": "^24.5.0", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/node": "*", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + } + }, + "jest-validate": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.5.0.tgz", + "integrity": "sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "camelcase": "^5.0.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.3.0", + "leven": "^2.1.0", + "pretty-format": "^24.5.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.0.tgz", + "integrity": "sha512-Y05ICatFYPAfykDIB7VdwSJ0LUl1yq/BwO2OpyGGLjiRe1fgzTwVypPiWnzkGFOVFHXrCXUNBl86bpjBhZWSJg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.5.0.tgz", + "integrity": "sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA==", + "dev": true, + "requires": { + "@jest/test-result": "^24.5.0", + "@jest/types": "^24.5.0", + "@types/node": "*", + "@types/yargs": "^12.0.9", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.5.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.4.0.tgz", + "integrity": "sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + } + }, + "jquery": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", + "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==", + "dev": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-13.2.0.tgz", + "integrity": "sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.0.9", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.5", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "jsmin2": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jsmin2/-/jsmin2-1.2.1.tgz", + "integrity": "sha1-iPvi+/dfCpH2YCD9mBzWk/S/5X4=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz", + "integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", + "dev": true + }, + "load-grunt-tasks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-4.0.0.tgz", + "integrity": "sha512-w5JYPHpZgMxu9XFR9N9MEzyX8E0mLhQkwQ1qVP4mb3gmuomw8Ww8J49NHMbXqyQliq2LUCqdU7/wW96IVuPCKw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "multimatch": "^2.0.0", + "pkg-up": "^2.0.0", + "resolve-pkg": "^1.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "maxmin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^3.0.0", + "pretty-bytes": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "pretty-bytes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + }, + "mime-types": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, + "requires": { + "mime-db": "~1.38.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "optional": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "dev": true + }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mxgraph": { + "version": "3.9.12", + "resolved": "https://registry.npmjs.org/mxgraph/-/mxgraph-3.9.12.tgz", + "integrity": "sha512-fm15Ro1bc/d3T/qvrkOIPjdAgyaKuaE6+olMpu9QZOm3aHWimu+W+dGAusW8VGVmaF4VYII11a5sVNdLekRoEw==", + "dev": true + }, + "nan": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.1.tgz", + "integrity": "sha512-I6YB/YEuDeUZMmhscXKxGgZlFnhsn5y0hgOZBadkzfTRrZBtJDZeg6eQf7PYMIEclwmorTKK8GztsyOUSVBREA==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.5.1.tgz", + "integrity": "sha1-dDmFMW49tFkoG1hxaehFc1oFQ58=", + "dev": true + }, + "nearley": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "moo": "^0.4.3", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "nock": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/nock/-/nock-10.0.6.tgz", + "integrity": "sha512-b47OWj1qf/LqSQYnmokNWM8D88KvUl2y7jT0567NB3ZBAZFz2bWp2PC81Xn7u8F2/vJxzkzNZybnemeFa7AZ2w==", + "dev": true, + "requires": { + "chai": "^4.1.2", + "debug": "^4.1.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.5", + "mkdirp": "^0.5.0", + "propagate": "^1.0.0", + "qs": "^6.5.1", + "semver": "^5.5.0" + } + }, + "node": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/node/-/node-11.12.0.tgz", + "integrity": "sha512-um2HVV67QzgmYnfrT6XszwwUT7S/i5nzIls68jEYOfVFJye+0ta2leda2ZWYUHzAajbUYyMp312v+1yYh0Jixw==", + "dev": true, + "requires": { + "node-bin-setup": "^1.0.0" + } + }, + "node-abi": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.7.1.tgz", + "integrity": "sha512-OV8Bq1OrPh6z+Y4dqwo05HqrRL9YNF7QVMRfq1/pguwKLG+q9UB/Lk0x5qXjO23JjJg+/jqCHSTaG1P3tfKfuw==", + "dev": true, + "optional": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-bin-setup": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.0.6.tgz", + "integrity": "sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", + "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.11.tgz", + "integrity": "sha512-8v1j5KfP+s5WOTa1spNUAOfreajQPN12JXbRR0oDE+YrJBQCXBnNqUDj27EKpPLOoSiU3tKi3xGPB+JaOdUEQQ==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true, + "optional": true + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz", + "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "output-file-sync": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", + "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prebuild-install": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz", + "integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "node-abi": "^2.2.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.1.6", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-format": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.5.0.tgz", + "integrity": "sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==", + "dev": true, + "requires": { + "@jest/types": "^24.5.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", + "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", + "dev": true, + "requires": { + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "propagate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", + "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=", + "dev": true + }, + "randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "dev": true, + "requires": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "dev": true, + "requires": { + "bytes": "1", + "string_decoder": "0.10" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "react": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + }, + "dependencies": { + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-dom": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.6" + }, + "dependencies": { + "scheduler": { + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, + "react-is": { + "version": "16.8.5", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.5.tgz", + "integrity": "sha512-sudt2uq5P/2TznPV4Wtdi+Lnq3yaYW8LfvPKLM9BKD8jJNBkxMVyB0C9/GmVhLw7Jbdmndk/73n7XQGeN9A3QQ==", + "dev": true + }, + "react-test-renderer": { + "version": "16.8.5", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.5.tgz", + "integrity": "sha512-/pFpHYQH4f35OqOae/DgOCXJDxBqD3K3akVfDhLgR0qYHoHjnICI/XS9QDwIhbrOFHWL7okVW9kKMaHuKvt2ng==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.5", + "scheduler": "^0.13.5" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", + "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-pkg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-1.0.0.tgz", + "integrity": "sha1-4ZoV54rKLhJEYdySsuOUPvk0lNk=", + "dev": true, + "requires": { + "resolve-from": "^2.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "dev": true + } + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rst-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz", + "integrity": "sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=", + "dev": true, + "requires": { + "lodash.flattendeep": "^4.4.0", + "nearley": "^2.7.10" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sanitizer": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/sanitizer/-/sanitizer-0.1.3.tgz", + "integrity": "sha1-1PCvdHXZp7ryqeWmEXGLqheKOeE=", + "dev": true + }, + "sass": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.17.3.tgz", + "integrity": "sha512-S4vJawbrNUxJUBiHLXPYUKZCoO6cvq3/3ZFBV66a+PafTxcDEFJB+FHLDFl0P+rUfha/703ajEXMuGTYhJESkQ==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + } + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "dev": true, + "requires": { + "xmlchars": "^1.3.1" + } + }, + "scheduler": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.5.tgz", + "integrity": "sha512-K98vjkQX9OIt/riLhp6F+XtDPtMQhqNcf045vsh+pcuvHq+PHy1xCrH3pq1P40m6yR46lpVvVhKdEOtnimuUJw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + } + } + }, + "serialize-javascript": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "dev": true + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true, + "optional": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "sisteransi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", + "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", + "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "dev": true + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", + "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", + "dev": true, + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, + "terser-webpack-plugin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz", + "integrity": "sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.16.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + } + }, + "test-exclude": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", + "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "dev": true, + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-jest": { + "version": "24.0.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", + "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.3.4000", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.4000.tgz", + "integrity": "sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==", + "dev": true + }, + "uglify-js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.2.tgz", + "integrity": "sha512-imog1WIsi9Yb56yRt5TfYVxGmnWs3WSGU73ieSOlMVFwhJCA9W8fqFFMMj4kgDqiS/80LGdsYnWL7O9UcjEBlg==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + } + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8flags": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", + "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vkbeautify": { + "version": "0.99.3", + "resolved": "https://registry.npmjs.org/vkbeautify/-/vkbeautify-0.99.3.tgz", + "integrity": "sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q==", + "dev": true + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz", + "integrity": "sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.29.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.6.tgz", + "integrity": "sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.0.tgz", + "integrity": "sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.0.tgz", + "integrity": "sha512-Y05ICatFYPAfykDIB7VdwSJ0LUl1yq/BwO2OpyGGLjiRe1fgzTwVypPiWnzkGFOVFHXrCXUNBl86bpjBhZWSJg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + } + }, + "zone.js": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.9.1.tgz", + "integrity": "sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==", + "dev": true + } + } +} diff --git a/data/plugins/grafana-flowcharting/package.json b/data/plugins/grafana-flowcharting/package.json new file mode 100644 index 0000000000000..6197db80c9166 --- /dev/null +++ b/data/plugins/grafana-flowcharting/package.json @@ -0,0 +1,98 @@ +{ + "name": "flowcharting", + "private": true, + "version": "0.4.0", + "description": "flow charting plugin for Grafana", + "main": "src/module.js", + "scripts": { + "test": "jest --config jest.config.js", + "build": "grunt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/algenty/grafana-flowcharting" + }, + "author": "Arnaud GENTY", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/algenty/grafana-flowcharting/issues" + }, + "homepage": "https://github.com/algenty/grafana-flowcharting", + "jest": { + "testEnvironment": "node" + }, + "devDependencies": { + "@angular/common": "^7.2.12", + "@angular/compiler": "^7.2.12", + "@angular/core": "^7.2.12", + "@angular/platform-browser": "^7.2.12", + "@angular/platform-browser-dynamic": "^7.2.12", + "@babel/cli": "^7.2.3", + "@babel/core": "^7.2.2", + "@babel/plugin-proposal-class-properties": "^7.3.4", + "@babel/preset-env": "^7.3.1", + "@types/jest": "^24.0.11", + "angular": "^1.7.8", + "angular-mock": "^1.0.0", + "babel-core": "^6.26.3", + "babel-jest": "^24.5.0", + "babel-loader": "^8.0.5", + "babel-polyfill": "^6.26.0", + "babel-preset-es2015": "^6.24.1", + "babel-preset-react-app": "^7.0.2", + "babel-preset-stage-0": "^6.24.1", + "chartist": "^0.11.4", + "enzyme": "^3.9.0", + "enzyme-adapter-react-16": "^1.11.2", + "enzyme-to-json": "^3.3.5", + "eslint": "^5.16.0", + "eslint-config-airbnb": "^17.1.0", + "eslint-plugin-import": "^2.17.1", + "eslint-plugin-jsx-a11y": "^6.1.1", + "eslint-plugin-react": "^7.11.0", + "express": "^4.16.4", + "grunt": "^1.0.4", + "grunt-babel": "^8.0.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-clean": "~2.0.0", + "grunt-contrib-compress": "^1.4.3", + "grunt-contrib-concat": "^1.0.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-sass": "^1.0.0", + "grunt-contrib-uglify": "~4.0.0", + "grunt-contrib-watch": "^1.1.0", + "grunt-git": "^1.0.14", + "grunt-sass": "^3.0.2", + "grunt-ts": "^6.0.0-beta.22", + "grunt-webpack": "^3.1.3", + "jest": "^24.5.0", + "jest-cli": "^24.5.0", + "jest-dom": "^3.1.3", + "jest-haste-map": "^24.7.1", + "jest-mock": "^24.5.0", + "jest-nock": "^0.1.7", + "jest-preset-angular": "^7.0.1", + "jest-resolve": "^24.7.1", + "jest-transform-stub": "^2.0.0", + "jquery": "^3.4.1", + "load-grunt-tasks": "~4.0.0", + "lodash": "^4.17.11", + "moment": "^2.24.0", + "mxgraph": "^4.0.4", + "node": "^11.9.0", + "node-sass": "^4.11.0", + "pako": "^1.0.10", + "prettier": "^1.17.0", + "react": "^16.8.6", + "react-dom": "^16.8.6", + "sanitizer": "^0.1.3", + "sass": "^1.0.0-beta.3", + "ts-jest": "^24.0.1", + "typescript": "^3.3.4000", + "vkbeautify": "^0.99.3", + "webpack": "^4.29.1" + }, + "dependencies": { + "eslint-config-airbnb-base": "^13.1.0" + } +} diff --git a/data/plugins/grafana-flowcharting/src/Graph.js b/data/plugins/grafana-flowcharting/src/Graph.js new file mode 100644 index 0000000000000..6b11dc5362049 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/Graph.js @@ -0,0 +1,7336 @@ +/** + * Copyright (c) 2006-2012, JGraph Ltd + */ +// Workaround for allowing target="_blank" in HTML sanitizer +// see https://code.google.com/p/google-caja/issues/detail?can=2&q=&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary&groupby=&sort=&id=1296 + +module.exports = function (urlParams) { + if (typeof html4 !== 'undefined') { + html4.ATTRIBS["a::target"] = 0; + html4.ATTRIBS["source::src"] = 0; + html4.ATTRIBS["video::src"] = 0; + // Would be nice for tooltips but probably a security risk... + //html4.ATTRIBS["video::autoplay"] = 0; + //html4.ATTRIBS["video::autobuffer"] = 0; + } + + /** + * Sets global constants. + */ + // Changes default colors + mxConstants.SHADOW_OPACITY = 0.25; + mxConstants.SHADOWCOLOR = '#000000'; + mxConstants.VML_SHADOWCOLOR = '#d0d0d0'; + mxGraph.prototype.pageBreakColor = '#c0c0c0'; + mxGraph.prototype.pageScale = 1; + + // Letter page format is default in US, Canada and Mexico + (function () { + try { + if (navigator != null && navigator.language != null) { + var lang = navigator.language.toLowerCase(); + mxGraph.prototype.pageFormat = (lang === 'en-us' || lang === 'en-ca' || lang === 'es-mx') ? + mxConstants.PAGE_FORMAT_LETTER_PORTRAIT : mxConstants.PAGE_FORMAT_A4_PORTRAIT; + } + } + catch (e) { + // ignore + } + })(); + + // Matches label positions of mxGraph 1.x + mxText.prototype.baseSpacingTop = 5; + mxText.prototype.baseSpacingBottom = 1; + + // Keeps edges between relative child cells inside parent + mxGraphModel.prototype.ignoreRelativeEdgeParent = false; + + // Defines grid properties + mxGraphView.prototype.gridImage = (mxClient.IS_SVG) ? 'data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=' : + IMAGE_PATH + '/grid.gif'; + mxGraphView.prototype.gridSteps = 4; + mxGraphView.prototype.minGridSize = 4; + + // UrlParams is null in embed mode + mxGraphView.prototype.gridColor = '#e0e0e0'; + + // Alternative text for unsupported foreignObjects + mxSvgCanvas2D.prototype.foAltText = '[Not supported by viewer]'; + + // Hook for custom constraints + mxShape.prototype.getConstraints = function (style) { + return null; + }; + + /** + * Constructs a new graph instance. Note that the constructor does not take a + * container because the graph instance is needed for creating the UI, which + * in turn will create the container for the graph. Hence, the container is + * assigned later in EditorUi. + */ + /** + * Defines graph class. + */ + var Graph = function (container, model, renderHint, stylesheet, themes) { + mxGraph.call(this, container, model, renderHint, stylesheet); + + this.themes = themes || this.defaultThemes; + this.currentEdgeStyle = mxUtils.clone(this.defaultEdgeStyle); + this.currentVertexStyle = mxUtils.clone(this.defaultVertexStyle); + + // Sets the base domain URL and domain path URL for relative links. + var b = this.baseUrl; + var p = b.indexOf('//'); + this.domainUrl = ''; + this.domainPathUrl = ''; + + if (p > 0) { + var d = b.indexOf('/', p + 2); + + if (d > 0) { + this.domainUrl = b.substring(0, d); + } + + d = b.lastIndexOf('/'); + + if (d > 0) { + this.domainPathUrl = b.substring(0, d + 1); + } + } + + // Adds support for HTML labels via style. Note: Currently, only the Java + // backend supports HTML labels but CSS support is limited to the following: + // http://docs.oracle.com/javase/6/docs/api/index.html?javax/swing/text/html/CSS.html + // TODO: Wrap should not affect isHtmlLabel output (should be handled later) + this.isHtmlLabel = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return style['html'] == '1' || style[mxConstants.STYLE_WHITE_SPACE] == 'wrap'; + }; + + // Implements a listener for hover and click handling on edges + if (this.edgeMode) { + var start = { + point: null, + event: null, + state: null, + handle: null, + selected: false + }; + + // Uses this event to process mouseDown to check the selection state before it is changed + this.addListener(mxEvent.FIRE_MOUSE_EVENT, mxUtils.bind(this, function (sender, evt) { + if (evt.getProperty('eventName') == 'mouseDown' && this.isEnabled()) { + var me = evt.getProperty('event'); + + if (!mxEvent.isControlDown(me.getEvent()) && !mxEvent.isShiftDown(me.getEvent())) { + var state = me.getState(); + + if (state != null) { + // Checks if state was removed in call to stopEditing above + if (this.model.isEdge(state.cell)) { + start.point = new mxPoint(me.getGraphX(), me.getGraphY()); + start.selected = this.isCellSelected(state.cell); + start.state = state; + start.event = me; + + if (state.text != null && state.text.boundingBox != null && + mxUtils.contains(state.text.boundingBox, me.getGraphX(), me.getGraphY())) { + start.handle = mxEvent.LABEL_HANDLE; + } + else { + var handler = this.selectionCellsHandler.getHandler(state.cell); + + if (handler != null && handler.bends != null && handler.bends.length > 0) { + start.handle = handler.getHandleForEvent(me); + } + } + } + } + } + } + })); + + var mouseDown = null; + + this.addMouseListener( + { + mouseDown: function (sender, me) { }, + mouseMove: mxUtils.bind(this, function (sender, me) { + // Checks if any other handler is active + var handlerMap = this.selectionCellsHandler.handlers.map; + for (var key in handlerMap) { + if (handlerMap[key].index != null) { + return; + } + } + + if (this.isEnabled() && !this.panningHandler.isActive() && !mxEvent.isControlDown(me.getEvent()) && + !mxEvent.isShiftDown(me.getEvent()) && !mxEvent.isAltDown(me.getEvent())) { + var tol = this.tolerance; + + if (start.point != null && start.state != null && start.event != null) { + var state = start.state; + + if (Math.abs(start.point.x - me.getGraphX()) > tol || + Math.abs(start.point.y - me.getGraphY()) > tol) { + // Lazy selection for edges inside groups + if (!this.isCellSelected(state.cell)) { + this.setSelectionCell(state.cell); + } + + var handler = this.selectionCellsHandler.getHandler(state.cell); + + if (handler != null && handler.bends != null && handler.bends.length > 0) { + var handle = handler.getHandleForEvent(start.event); + var edgeStyle = this.view.getEdgeStyle(state); + var entity = edgeStyle == mxEdgeStyle.EntityRelation; + + // Handles special case where label was clicked on unselected edge in which + // case the label will be moved regardless of the handle that is returned + if (!start.selected && start.handle == mxEvent.LABEL_HANDLE) { + handle = start.handle; + } + + if (!entity || handle == 0 || handle == handler.bends.length - 1 || handle == mxEvent.LABEL_HANDLE) { + // Source or target handle or connected for direct handle access or orthogonal line + // with just two points where the central handle is moved regardless of mouse position + if (handle == mxEvent.LABEL_HANDLE || handle == 0 || state.visibleSourceState != null || + handle == handler.bends.length - 1 || state.visibleTargetState != null) { + if (!entity && handle != mxEvent.LABEL_HANDLE) { + var pts = state.absolutePoints; + + // Default case where handles are at corner points handles + // drag of corner as drag of existing point + if (pts != null && ((edgeStyle == null && handle == null) || + edgeStyle == mxEdgeStyle.OrthConnector)) { + // Does not use handles if they were not initially visible + handle = start.handle; + + if (handle == null) { + var box = new mxRectangle(start.point.x, start.point.y); + box.grow(mxEdgeHandler.prototype.handleImage.width / 2); + + if (mxUtils.contains(box, pts[0].x, pts[0].y)) { + // Moves source terminal handle + handle = 0; + } + else if (mxUtils.contains(box, pts[pts.length - 1].x, pts[pts.length - 1].y)) { + // Moves target terminal handle + handle = handler.bends.length - 1; + } + else { + // Checks if edge has no bends + var nobends = edgeStyle != null && (pts.length == 2 || (pts.length == 3 && + ((Math.round(pts[0].x - pts[1].x) == 0 && Math.round(pts[1].x - pts[2].x) == 0) || + (Math.round(pts[0].y - pts[1].y) == 0 && Math.round(pts[1].y - pts[2].y) == 0)))); + + if (nobends) { + // Moves central handle for straight orthogonal edges + handle = 2; + } + else { + // Finds and moves vertical or horizontal segment + handle = mxUtils.findNearestSegment(state, start.point.x, start.point.y); + + // Converts segment to virtual handle index + if (edgeStyle == null) { + handle = mxEvent.VIRTUAL_HANDLE - handle; + } + // Maps segment to handle + else { + handle += 1; + } + } + } + } + } + + // Creates a new waypoint and starts moving it + if (handle == null) { + handle = mxEvent.VIRTUAL_HANDLE; + } + } + + handler.start(me.getGraphX(), me.getGraphX(), handle); + start.state = null; + start.event = null; + start.point = null; + start.handle = null; + start.selected = false; + me.consume(); + + // Removes preview rectangle in graph handler + this.graphHandler.reset(); + } + } + else if (entity && (state.visibleSourceState != null || state.visibleTargetState != null)) { + // Disables moves on entity to make it consistent + this.graphHandler.reset(); + me.consume(); + } + } + } + } + else { + // Updates cursor for unselected edges under the mouse + var state = me.getState(); + + if (state != null) { + // Checks if state was removed in call to stopEditing above + if (this.model.isEdge(state.cell)) { + var cursor = null; + var pts = state.absolutePoints; + + if (pts != null) { + var box = new mxRectangle(me.getGraphX(), me.getGraphY()); + box.grow(mxEdgeHandler.prototype.handleImage.width / 2); + + if (state.text != null && state.text.boundingBox != null && + mxUtils.contains(state.text.boundingBox, me.getGraphX(), me.getGraphY())) { + cursor = 'move'; + } + else if (mxUtils.contains(box, pts[0].x, pts[0].y) || + mxUtils.contains(box, pts[pts.length - 1].x, pts[pts.length - 1].y)) { + cursor = 'pointer'; + } + else if (state.visibleSourceState != null || state.visibleTargetState != null) { + // Moving is not allowed for entity relation but still indicate hover state + var tmp = this.view.getEdgeStyle(state); + cursor = 'crosshair'; + + if (tmp != mxEdgeStyle.EntityRelation && this.isOrthogonal(state)) { + var idx = mxUtils.findNearestSegment(state, me.getGraphX(), me.getGraphY()); + + if (idx < pts.length - 1 && idx >= 0) { + cursor = (Math.round(pts[idx].x - pts[idx + 1].x) == 0) ? + 'col-resize' : 'row-resize'; + } + } + } + } + + if (cursor != null) { + state.setCursor(cursor); + } + } + } + } + } + }), + mouseUp: mxUtils.bind(this, function (sender, me) { + start.state = null; + start.event = null; + start.point = null; + start.handle = null; + }) + }); + } + + // HTML entities are displayed as plain text in wrapped plain text labels + this.cellRenderer.getLabelValue = function (state) { + var result = mxCellRenderer.prototype.getLabelValue.apply(this, arguments); + + if (state.view.graph.isHtmlLabel(state.cell)) { + if (state.style['html'] != 1) { + result = mxUtils.htmlEntities(result, false); + } + else { + result = state.view.graph.sanitizeHtml(result); + } + } + + return result; + }; + + // All code below not available and not needed in embed mode + if (typeof mxVertexHandler !== 'undefined') { + this.setConnectable(true); + this.setDropEnabled(true); + this.setPanning(true); + this.setTooltips(true); + this.setAllowLoops(true); + this.allowAutoPanning = true; + this.resetEdgesOnConnect = false; + this.constrainChildren = false; + this.constrainRelativeChildren = true; + + // Do not scroll after moving cells + this.graphHandler.scrollOnMove = false; + this.graphHandler.scaleGrid = true; + + // Disables cloning of connection sources by default + this.connectionHandler.setCreateTarget(false); + this.connectionHandler.insertBeforeSource = true; + + // Disables built-in connection starts + this.connectionHandler.isValidSource = function (cell, me) { + return false; + }; + + // Sets the style to be used when an elbow edge is double clicked + this.alternateEdgeStyle = 'vertical'; + if (stylesheet == null) { + this.loadStylesheet(); + } + + // Adds page centers to the guides for moving cells + var graphHandlerGetGuideStates = this.graphHandler.getGuideStates; + this.graphHandler.getGuideStates = function () { + var result = graphHandlerGetGuideStates.apply(this, arguments); + + // Create virtual cell state for page centers + if (this.graph.pageVisible) { + var guides = []; + + var pf = this.graph.pageFormat; + var ps = this.graph.pageScale; + var pw = pf.width * ps; + var ph = pf.height * ps; + var t = this.graph.view.translate; + var s = this.graph.view.scale; + + var layout = this.graph.getPageLayout(); + + for (var i = 0; i < layout.width; i++) { + guides.push(new mxRectangle(((layout.x + i) * pw + t.x) * s, + (layout.y * ph + t.y) * s, pw * s, ph * s)); + } + + for (var j = 0; j < layout.height; j++) { + guides.push(new mxRectangle((layout.x * pw + t.x) * s, + ((layout.y + j) * ph + t.y) * s, pw * s, ph * s)); + } + + // Page center guides have predence over normal guides + result = guides.concat(result); + } + + return result; + }; + + // Overrides zIndex for dragElement + mxDragSource.prototype.dragElementZIndex = mxPopupMenu.prototype.zIndex; + + // Overrides color for virtual guides for page centers + mxGuide.prototype.getGuideColor = function (state, horizontal) { + return (state.cell == null) ? '#ffa500' /* orange */ : mxConstants.GUIDE_COLOR; + }; + + // Changes color of move preview for black backgrounds + this.graphHandler.createPreviewShape = function (bounds) { + this.previewColor = (this.graph.background == '#000000') ? '#ffffff' : mxGraphHandler.prototype.previewColor; + + return mxGraphHandler.prototype.createPreviewShape.apply(this, arguments); + }; + + // Handles parts of cells by checking if part=1 is in the style and returning the parent + // if the parent is not already in the list of cells. container style is used to disable + // step into swimlanes and dropTarget style is used to disable acting as a drop target. + // LATER: Handle recursive parts + this.graphHandler.getCells = function (initialCell) { + var cells = mxGraphHandler.prototype.getCells.apply(this, arguments); + var newCells = []; + + for (var i = 0; i < cells.length; i++) { + var state = this.graph.view.getState(cells[i]); + var style = (state != null) ? state.style : this.graph.getCellStyle(cells[i]); + + if (mxUtils.getValue(style, 'part', '0') == '1') { + var parent = this.graph.model.getParent(cells[i]); + + if (this.graph.model.isVertex(parent) && mxUtils.indexOf(cells, parent) < 0) { + newCells.push(parent); + } + } + else { + newCells.push(cells[i]); + } + } + + return newCells; + }; + + // Handles parts of cells when cloning the source for new connections + this.connectionHandler.createTargetVertex = function (evt, source) { + var state = this.graph.view.getState(source); + var style = (state != null) ? state.style : this.graph.getCellStyle(source); + + if (mxUtils.getValue(style, 'part', false)) { + var parent = this.graph.model.getParent(source); + + if (this.graph.model.isVertex(parent)) { + source = parent; + } + } + + return mxConnectionHandler.prototype.createTargetVertex.apply(this, arguments); + }; + + var rubberband = new mxRubberband(this); + + this.getRubberband = function () { + return rubberband; + }; + + // Timer-based activation of outline connect in connection handler + var startTime = new Date().getTime(); + var timeOnTarget = 0; + + var connectionHandlerMouseMove = this.connectionHandler.mouseMove; + + this.connectionHandler.mouseMove = function () { + var prev = this.currentState; + connectionHandlerMouseMove.apply(this, arguments); + + if (prev != this.currentState) { + startTime = new Date().getTime(); + timeOnTarget = 0; + } + else { + timeOnTarget = new Date().getTime() - startTime; + } + }; + + // Activates outline connect after 1500ms with touch event or if alt is pressed inside the shape + // outlineConnect=0 is a custom style that means do not connect to strokes inside the shape, + // or in other words, connect to the shape's perimeter if the highlight is under the mouse + // (the name is because the highlight, including all strokes, is called outline in the code) + var connectionHandleIsOutlineConnectEvent = this.connectionHandler.isOutlineConnectEvent; + + this.connectionHandler.isOutlineConnectEvent = function (me) { + return (this.currentState != null && me.getState() == this.currentState && timeOnTarget > 2000) || + ((this.currentState == null || mxUtils.getValue(this.currentState.style, 'outlineConnect', '1') != '0') && + connectionHandleIsOutlineConnectEvent.apply(this, arguments)); + }; + + // Adds shift+click to toggle selection state + var isToggleEvent = this.isToggleEvent; + this.isToggleEvent = function (evt) { + return isToggleEvent.apply(this, arguments) || mxEvent.isShiftDown(evt); + }; + + // Workaround for Firefox where first mouse down is received + // after tap and hold if scrollbars are visible, which means + // start rubberband immediately if no cell is under mouse. + var isForceRubberBandEvent = rubberband.isForceRubberbandEvent; + rubberband.isForceRubberbandEvent = function (me) { + return isForceRubberBandEvent.apply(this, arguments) || + (mxUtils.hasScrollbars(this.graph.container) && mxClient.IS_FF && + mxClient.IS_WIN && me.getState() == null && mxEvent.isTouchEvent(me.getEvent())); + }; + + // Shows hand cursor while panning + var prevCursor = null; + + this.panningHandler.addListener(mxEvent.PAN_START, mxUtils.bind(this, function () { + if (this.isEnabled()) { + prevCursor = this.container.style.cursor; + this.container.style.cursor = 'move'; + } + })); + + this.panningHandler.addListener(mxEvent.PAN_END, mxUtils.bind(this, function () { + if (this.isEnabled()) { + this.container.style.cursor = prevCursor; + } + })); + + this.popupMenuHandler.autoExpand = true; + + this.popupMenuHandler.isSelectOnPopup = function (me) { + return mxEvent.isMouseEvent(me.getEvent()); + }; + + // Handles links if graph is read-only or cell is locked + var click = this.click; + this.click = function (me) { + var locked = me.state == null && me.sourceState != null && this.isCellLocked(me.sourceState.cell); + + if ((!this.isEnabled() || locked) && !me.isConsumed()) { + var cell = (locked) ? me.sourceState.cell : me.getCell(); + + if (cell != null) { + var link = this.getLinkForCell(cell); + + if (link != null) { + if (this.isCustomLink(link)) { + this.customLinkClicked(link); + } + else { + this.openLink(link); + } + } + } + } + else { + return click.apply(this, arguments); + } + }; + + // Redirects tooltips for locked cells + this.tooltipHandler.getStateForEvent = function (me) { + return me.sourceState; + }; + + // Redirects cursor for locked cells + var getCursorForMouseEvent = this.getCursorForMouseEvent; + this.getCursorForMouseEvent = function (me) { + var locked = me.state == null && me.sourceState != null && this.isCellLocked(me.sourceState.cell); + + return this.getCursorForCell((locked) ? me.sourceState.cell : me.getCell()); + }; + + // Shows pointer cursor for clickable cells with links + // ie. if the graph is disabled and cells cannot be selected + var getCursorForCell = this.getCursorForCell; + this.getCursorForCell = function (cell) { + if (!this.isEnabled() || this.isCellLocked(cell)) { + var link = this.getLinkForCell(cell); + + if (link != null) { + return 'pointer'; + } + else if (this.isCellLocked(cell)) { + return 'default'; + } + } + + return getCursorForCell.apply(this, arguments); + }; + + // Changes rubberband selection to be recursive + this.selectRegion = function (rect, evt) { + var cells = this.getAllCells(rect.x, rect.y, rect.width, rect.height); + this.selectCellsForEvent(cells, evt); + + return cells; + }; + + // Recursive implementation for rubberband selection + this.getAllCells = function (x, y, width, height, parent, result) { + result = (result != null) ? result : []; + + if (width > 0 || height > 0) { + var model = this.getModel(); + var right = x + width; + var bottom = y + height; + + if (parent == null) { + parent = this.getCurrentRoot(); + + if (parent == null) { + parent = model.getRoot(); + } + } + + if (parent != null) { + var childCount = model.getChildCount(parent); + + for (var i = 0; i < childCount; i++) { + var cell = model.getChildAt(parent, i); + var state = this.view.getState(cell); + + if (state != null && this.isCellVisible(cell) && mxUtils.getValue(state.style, 'locked', '0') != '1') { + var deg = mxUtils.getValue(state.style, mxConstants.STYLE_ROTATION) || 0; + var box = state; + + if (deg != 0) { + box = mxUtils.getBoundingBox(box, deg); + } + + if ((model.isEdge(cell) || model.isVertex(cell)) && + box.x >= x && box.y + box.height <= bottom && + box.y >= y && box.x + box.width <= right) { + result.push(cell); + } + + this.getAllCells(x, y, width, height, cell, result); + } + } + } + } + + return result; + }; + + // Never removes cells from parents that are being moved + var graphHandlerShouldRemoveCellsFromParent = this.graphHandler.shouldRemoveCellsFromParent; + this.graphHandler.shouldRemoveCellsFromParent = function (parent, cells, evt) { + if (this.graph.isCellSelected(parent)) { + return false; + } + + return graphHandlerShouldRemoveCellsFromParent.apply(this, arguments); + }; + + // Unlocks all cells + this.isCellLocked = function (cell) { + var pState = this.view.getState(cell); + + while (pState != null) { + if (mxUtils.getValue(pState.style, 'locked', '0') == '1') { + return true; + } + + pState = this.view.getState(this.model.getParent(pState.cell)); + } + + return false; + }; + + var tapAndHoldSelection = null; + + // Uses this event to process mouseDown to check the selection state before it is changed + this.addListener(mxEvent.FIRE_MOUSE_EVENT, mxUtils.bind(this, function (sender, evt) { + if (evt.getProperty('eventName') == 'mouseDown') { + var me = evt.getProperty('event'); + var state = me.getState(); + + if (state != null && !this.isSelectionEmpty() && !this.isCellSelected(state.cell)) { + tapAndHoldSelection = this.getSelectionCells(); + } + else { + tapAndHoldSelection = null; + } + } + })); + + // Tap and hold on background starts rubberband for multiple selected + // cells the cell associated with the event is deselected + this.addListener(mxEvent.TAP_AND_HOLD, mxUtils.bind(this, function (sender, evt) { + if (!mxEvent.isMultiTouchEvent(evt)) { + var me = evt.getProperty('event'); + var cell = evt.getProperty('cell'); + + if (cell == null) { + var pt = mxUtils.convertPoint(this.container, + mxEvent.getClientX(me), mxEvent.getClientY(me)); + rubberband.start(pt.x, pt.y); + } + else if (tapAndHoldSelection != null) { + this.addSelectionCells(tapAndHoldSelection); + } + else if (this.getSelectionCount() > 1 && this.isCellSelected(cell)) { + this.removeSelectionCell(cell); + } + + // Blocks further processing of the event + tapAndHoldSelection = null; + evt.consume(); + } + })); + + // On connect the target is selected and we clone the cell of the preview edge for insert + this.connectionHandler.selectCells = function (edge, target) { + this.graph.setSelectionCell(target || edge); + }; + + // Shows connection points only if cell not selected + this.connectionHandler.constraintHandler.isStateIgnored = function (state, source) { + return source && state.view.graph.isCellSelected(state.cell); + }; + + // Updates constraint handler if the selection changes + this.selectionModel.addListener(mxEvent.CHANGE, mxUtils.bind(this, function () { + var ch = this.connectionHandler.constraintHandler; + + if (ch.currentFocus != null && ch.isStateIgnored(ch.currentFocus, true)) { + ch.currentFocus = null; + ch.constraints = null; + ch.destroyIcons(); + } + + ch.destroyFocusHighlight(); + })); + + // Initializes touch interface + if (Graph.touchStyle) { + this.initTouch(); + } + + /** + * Adds locking + */ + var graphUpdateMouseEvent = this.updateMouseEvent; + this.updateMouseEvent = function (me) { + me = graphUpdateMouseEvent.apply(this, arguments); + + if (me.state != null && this.isCellLocked(me.getCell())) { + me.state = null; + } + + return me; + }; + } + + //Create a unique offset object for each graph instance. + this.currentTranslate = new mxPoint(0, 0); + }; + + /** + * Specifies if the touch UI should be used (cannot detect touch in FF so always on for Windows/Linux) + */ + Graph.touchStyle = mxClient.IS_TOUCH || (mxClient.IS_FF && mxClient.IS_WIN) || navigator.maxTouchPoints > 0 || + navigator.msMaxTouchPoints > 0 || window.urlParams == null || urlParams['touch'] == '1'; + + /** + * Shortcut for capability check. + */ + Graph.fileSupport = window.File != null && window.FileReader != null && window.FileList != null && + (window.urlParams == null || urlParams['filesupport'] != '0'); + + /** + * Default size for line jumps. + */ + Graph.lineJumpsEnabled = true; + + /** + * Default size for line jumps. + */ + Graph.defaultJumpSize = 6; + + /** + * Helper function (requires atob). + */ + Graph.createSvgImage = function (w, h, data) { + var tmp = unescape(encodeURIComponent( + '' + + '' + data + '')); + + return new mxImage('data:image/svg+xml;base64,' + ((window.btoa) ? btoa(tmp) : Base64.encode(tmp, true)), w, h) + }; + + /** + * Graph inherits from mxGraph. + */ + mxUtils.extend(Graph, mxGraph); + + /** + * Allows all values in fit. + */ + Graph.prototype.minFitScale = null; + + /** + * Allows all values in fit. + */ + Graph.prototype.maxFitScale = null; + + /** + * Sets the policy for links. Possible values are "self" to replace any framesets, + * "blank" to load the URL in and "auto" (default). + */ + Graph.prototype.linkPolicy = (urlParams['target'] == 'frame') ? 'blank' : (urlParams['target'] || 'auto'); + + /** + * Target for links that open in a new window. Default is _blank. + */ + Graph.prototype.linkTarget = (urlParams['target'] == 'frame') ? '_self' : '_blank'; + + /** + * Value to the rel attribute of links. Default is 'nofollow noopener noreferrer'. + * NOTE: There are security implications when this is changed and if noopener is removed, + * then must be overridden to allow for the opener to be set by default. + */ + Graph.prototype.linkRelation = 'nofollow noopener noreferrer'; + + /** + * Scrollbars are enabled on non-touch devices (not including Firefox because touch events + * cannot be detected in Firefox, see above). + */ + Graph.prototype.defaultScrollbars = !mxClient.IS_IOS; + + /** + * Specifies if the page should be visible for new files. Default is true. + */ + Graph.prototype.defaultPageVisible = true; + + /** + * Specifies if the app should run in chromeless mode. Default is false. + * This default is only used if the contructor argument is null. + */ + Graph.prototype.lightbox = false; + + /** + * + */ + Graph.prototype.defaultPageBackgroundColor = '#ffffff'; + + /** + * + */ + Graph.prototype.defaultPageBorderColor = '#ffffff'; + + /** + * Specifies the size of the size for "tiles" to be used for a graph with + * scrollbars but no visible background page. A good value is large + * enough to reduce the number of repaints that is caused for auto- + * translation, which depends on this value, and small enough to give + * a small empty buffer around the graph. Default is 400x400. + */ + Graph.prototype.scrollTileSize = new mxRectangle(0, 0, 400, 400); + + /** + * Overrides the background color and paints a transparent background. + */ + Graph.prototype.transparentBackground = true; + + /** + * Sets the default target for all links in cells. + */ + Graph.prototype.defaultEdgeLength = 80; + + /** + * Disables move of bends/segments without selecting. + */ + Graph.prototype.edgeMode = false; + + /** + * Allows all values in fit. + */ + Graph.prototype.connectionArrowsEnabled = true; + + /** + * Specifies the regular expression for matching placeholders. + */ + Graph.prototype.placeholderPattern = new RegExp('%(date\{.*\}|[^%^\{^\}]+)%', 'g'); + + /** + * Specifies the regular expression for matching placeholders. + */ + Graph.prototype.absoluteUrlPattern = new RegExp('^(?:[a-z]+:)?//', 'i'); + + /** + * Specifies the default name for the theme. Default is 'default'. + */ + Graph.prototype.defaultThemeName = 'default'; + + /** + * Specifies the default name for the theme. Default is 'default'. + */ + Graph.prototype.defaultThemes = {}; + + /** + * Base URL for relative links. + */ + Graph.prototype.baseUrl = (urlParams['base'] != null) ? + decodeURIComponent(urlParams['base']) : + (((window != window.top) ? document.referrer : + document.location.toString()).split('#')[0]); + + /** + * Specifies if the label should be edited after an insert. + */ + Graph.prototype.editAfterInsert = false; + + /** + * Defines the built-in properties to be ignored in tooltips. + */ + Graph.prototype.builtInProperties = ['label', 'tooltip', 'placeholders', 'placeholder']; + + /** + * Installs child layout styles. + */ + Graph.prototype.init = function (container) { + mxGraph.prototype.init.apply(this, arguments); + + // Intercepts links with no target attribute and opens in new window + this.cellRenderer.initializeLabel = function (state, shape) { + mxCellRenderer.prototype.initializeLabel.apply(this, arguments); + + // Checks tolerance for clicks on links + var tol = state.view.graph.tolerance; + var handleClick = true; + var first = null; + + var down = mxUtils.bind(this, function (evt) { + handleClick = true; + first = new mxPoint(mxEvent.getClientX(evt), mxEvent.getClientY(evt)); + }); + + var move = mxUtils.bind(this, function (evt) { + handleClick = handleClick && first != null && + Math.abs(first.x - mxEvent.getClientX(evt)) < tol && + Math.abs(first.y - mxEvent.getClientY(evt)) < tol; + }); + + var up = mxUtils.bind(this, function (evt) { + if (handleClick) { + var elt = mxEvent.getSource(evt) + + while (elt != null && elt != shape.node) { + if (elt.nodeName.toLowerCase() == 'a') { + state.view.graph.labelLinkClicked(state, elt, evt); + break; + } + + elt = elt.parentNode; + } + } + }); + + mxEvent.addGestureListeners(shape.node, down, move, up); + mxEvent.addListener(shape.node, 'click', function (evt) { + mxEvent.consume(evt); + }); + }; + + this.initLayoutManager(); + }; + + /** + * Implements zoom and offset via CSS transforms. This is currently only used + * in read-only as there are fewer issues with the mxCellState not being scaled + * and translated. + * + * KNOWN ISSUES TO FIX: + * - Apply CSS transforms to HTML labels in IE11 + */ + (function () { + /** + * Uses CSS transforms for scale and translate. + */ + Graph.prototype.useCssTransforms = false; + + /** + * Contains the scale. + */ + Graph.prototype.currentScale = 1; + + /** + * Contains the offset. + */ + Graph.prototype.currentTranslate = new mxPoint(0, 0); + + /** + * Only foreignObject supported for now (no IE11). + */ + Graph.prototype.isCssTransformsSupported = function () { + return this.dialect == mxConstants.DIALECT_SVG && !mxClient.NO_FO; + }; + + /** + * Function: getCellAt + * + * Needs to modify original method for recursive call. + */ + Graph.prototype.getCellAt = function (x, y, parent, vertices, edges, ignoreFn) { + if (this.useCssTransforms) { + x = x / this.currentScale - this.currentTranslate.x; + y = y / this.currentScale - this.currentTranslate.y; + } + + return this.getScaledCellAt.apply(this, arguments); + }; + + /** + * Function: getScaledCellAt + * + * Overridden for recursion. + */ + Graph.prototype.getScaledCellAt = function (x, y, parent, vertices, edges, ignoreFn) { + vertices = (vertices != null) ? vertices : true; + edges = (edges != null) ? edges : true; + + if (parent == null) { + parent = this.getCurrentRoot(); + + if (parent == null) { + parent = this.getModel().getRoot(); + } + } + + if (parent != null) { + var childCount = this.model.getChildCount(parent); + + for (var i = childCount - 1; i >= 0; i--) { + var cell = this.model.getChildAt(parent, i); + var result = this.getScaledCellAt(x, y, cell, vertices, edges, ignoreFn); + + if (result != null) { + return result; + } + else if (this.isCellVisible(cell) && (edges && this.model.isEdge(cell) || + vertices && this.model.isVertex(cell))) { + var state = this.view.getState(cell); + + if (state != null && (ignoreFn == null || !ignoreFn(state, x, y)) && + this.intersects(state, x, y)) { + return cell; + } + } + } + } + + return null; + }; + + + /** + * Function: repaint + * + * Updates the highlight after a change of the model or view. + */ + mxCellHighlight.prototype.getStrokeWidth = function (state) { + var s = this.strokeWidth; + + if (this.graph.useCssTransforms) { + s /= this.graph.currentScale; + } + + return s; + }; + + /** + * Function: getGraphBounds + * + * Overrides getGraphBounds to use bounding box from SVG. + */ + mxGraphView.prototype.getGraphBounds = function () { + var b = this.graphBounds; + + if (this.graph.useCssTransforms) { + var t = this.graph.currentTranslate; + var s = this.graph.currentScale; + + b = new mxRectangle( + (b.x + t.x) * s, (b.y + t.y) * s, + b.width * s, b.height * s); + } + + return b; + }; + + /** + * Function: viewStateChanged + * + * Overrides to bypass full cell tree validation. + * TODO: Check if this improves performance + */ + mxGraphView.prototype.viewStateChanged = function () { + if (this.graph.useCssTransforms) { + this.validate(); + this.graph.sizeDidChange(); + } + else { + this.revalidate(); + this.graph.sizeDidChange(); + } + }; + + /** + * Function: validate + * + * Overrides validate to normalize validation view state and pass + * current state to CSS transform. + */ + var graphViewValidate = mxGraphView.prototype.validate; + + mxGraphView.prototype.validate = function (cell) { + if (this.graph.useCssTransforms) { + this.graph.currentScale = this.scale; + this.graph.currentTranslate.x = this.translate.x; + this.graph.currentTranslate.y = this.translate.y; + + this.scale = 1; + this.translate.x = 0; + this.translate.y = 0; + } + + graphViewValidate.apply(this, arguments); + + if (this.graph.useCssTransforms) { + this.graph.updateCssTransform(); + + this.scale = this.graph.currentScale; + this.translate.x = this.graph.currentTranslate.x; + this.translate.y = this.graph.currentTranslate.y; + } + }; + + /** + * Function: updateCssTransform + * + * Zooms out of the graph by . + */ + Graph.prototype.updateCssTransform = function () { + var temp = this.view.getDrawPane(); + + if (temp != null) { + var g = temp.parentNode; + + if (!this.useCssTransforms) { + g.removeAttribute('transformOrigin'); + g.removeAttribute('transform'); + } + else { + var prev = g.getAttribute('transform'); + g.setAttribute('transformOrigin', '0 0'); + g.setAttribute('transform', 'scale(' + this.currentScale + ',' + this.currentScale + ')' + + 'translate(' + this.currentTranslate.x + ',' + this.currentTranslate.y + ')'); + + // Applies workarounds only if translate has changed + if (prev != g.getAttribute('transform')) { + try { + // Applies transform to labels outside of the SVG DOM + // Excluded via isCssTransformsSupported + // if (mxClient.NO_FO) + // { + // var transform = 'scale(' + this.currentScale + ')' + 'translate(' + + // this.currentTranslate.x + 'px,' + this.currentTranslate.y + 'px)'; + // + // this.view.states.visit(mxUtils.bind(this, function(cell, state) + // { + // if (state.text != null && state.text.node != null) + // { + // // Stores initial CSS transform that is used for the label alignment + // if (state.text.originalTransform == null) + // { + // state.text.originalTransform = state.text.node.style.transform; + // } + // + // state.text.node.style.transform = transform + state.text.originalTransform; + // } + // })); + // } + // Workaround for https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4320441/ + if (mxClient.IS_EDGE) { + // Recommended workaround is to do this on all + // foreignObjects, but this seems to be faster + var val = g.style.display; + g.style.display = 'none'; + g.getBBox(); + g.style.display = val; + } + } + catch (e) { + // ignore + } + } + } + } + }; + + var graphViewValidateBackgroundPage = mxGraphView.prototype.validateBackgroundPage; + + mxGraphView.prototype.validateBackgroundPage = function () { + var useCssTranforms = this.graph.useCssTransforms, scale = this.scale, + translate = this.translate; + + if (useCssTranforms) { + this.scale = this.graph.currentScale; + this.translate = this.graph.currentTranslate; + } + + graphViewValidateBackgroundPage.apply(this, arguments); + + if (useCssTranforms) { + this.scale = scale; + this.translate = translate; + } + }; + + var graphUpdatePageBreaks = mxGraph.prototype.updatePageBreaks; + + mxGraph.prototype.updatePageBreaks = function (visible, width, height) { + var useCssTranforms = this.useCssTransforms, scale = this.view.scale, + translate = this.view.translate; + + if (useCssTranforms) { + this.view.scale = 1; + this.view.translate = new mxPoint(0, 0); + this.useCssTransforms = false; + } + + graphUpdatePageBreaks.apply(this, arguments); + + if (useCssTranforms) { + this.view.scale = scale; + this.view.translate = translate; + this.useCssTransforms = true; + } + }; + + })(); + + /** + * Sets the XML node for the current diagram. + */ + Graph.prototype.isLightboxView = function () { + return this.lightbox; + }; + + /** + * Installs automatic layout via styles + */ + Graph.prototype.labelLinkClicked = function (state, elt, evt) { + var href = elt.getAttribute('href'); + + if (href != null && !this.isCustomLink(href) && (mxEvent.isLeftMouseButton(evt) && + !mxEvent.isPopupTrigger(evt)) || mxEvent.isTouchEvent(evt)) { + if (!this.isEnabled() || this.isCellLocked(state.cell)) { + var target = this.isBlankLink(href) ? this.linkTarget : '_top'; + this.openLink(this.getAbsoluteUrl(href), target); + } + + mxEvent.consume(evt); + } + }; + + /** + * Returns the size of the page format scaled with the page size. + */ + Graph.prototype.openLink = function (href, target, allowOpener) { + var result = window; + + // Workaround for blocking in same iframe + if (target == '_self' && window != window.top) { + window.location.href = href; + } + else { + // Avoids page reload for anchors (workaround for IE but used everywhere) + if (href.substring(0, this.baseUrl.length) == this.baseUrl && + href.charAt(this.baseUrl.length) == '#' && + target == '_top' && window == window.top) { + var hash = href.split('#')[1]; + + // Forces navigation if on same hash + if (window.location.hash == '#' + hash) { + window.location.hash = ''; + } + + window.location.hash = hash; + } + else { + result = window.open(href, target); + + if (result != null && !allowOpener) { + result.opener = null; + } + } + } + + return result; + }; + + /** + * Adds support for page links. + */ + Graph.prototype.getLinkTitle = function (href) { + return href.substring(href.lastIndexOf('/') + 1); + }; + + /** + * Adds support for page links. + */ + Graph.prototype.isCustomLink = function (href) { + return href.substring(0, 5) == 'data:'; + }; + + /** + * Adds support for page links. + */ + Graph.prototype.customLinkClicked = function (link) { + return false; + }; + + /** + * Returns true if the fiven href references an external protocol that + * should never open in a new window. Default returns true for mailto. + */ + Graph.prototype.isExternalProtocol = function (href) { + return href.substring(0, 7) === 'mailto:'; + }; + + /** + * Hook for links to open in same window. Default returns true for anchors, + * links to same domain or if target == 'self' in the config. + */ + Graph.prototype.isBlankLink = function (href) { + return !this.isExternalProtocol(href) && + (this.linkPolicy === 'blank' || + (this.linkPolicy !== 'self' && + !this.isRelativeUrl(href) && + href.substring(0, this.domainUrl.length) !== this.domainUrl)); + }; + + /** + * + */ + Graph.prototype.isRelativeUrl = function (url) { + return url != null && !this.absoluteUrlPattern.test(url) && + url.substring(0, 5) !== 'data:' && + !this.isExternalProtocol(url); + }; + + /** + * Installs automatic layout via styles + */ + Graph.prototype.initLayoutManager = function () { + this.layoutManager = new mxLayoutManager(this); + + this.layoutManager.getLayout = function (cell) { + var state = this.graph.view.getState(cell); + var style = (state != null) ? state.style : this.graph.getCellStyle(cell); + + if (style != null) { + if (style['childLayout'] == 'stackLayout') { + var stackLayout = new mxStackLayout(this.graph, true); + stackLayout.resizeParentMax = mxUtils.getValue(style, 'resizeParentMax', '1') == '1'; + stackLayout.horizontal = mxUtils.getValue(style, 'horizontalStack', '1') == '1'; + stackLayout.resizeParent = mxUtils.getValue(style, 'resizeParent', '1') == '1'; + stackLayout.resizeLast = mxUtils.getValue(style, 'resizeLast', '0') == '1'; + stackLayout.spacing = style['stackSpacing'] || stackLayout.spacing; + stackLayout.border = style['stackBorder'] || stackLayout.border; + stackLayout.marginLeft = style['marginLeft'] || 0; + stackLayout.marginRight = style['marginRight'] || 0; + stackLayout.marginTop = style['marginTop'] || 0; + stackLayout.marginBottom = style['marginBottom'] || 0; + stackLayout.fill = true; + + return stackLayout; + } + else if (style['childLayout'] == 'treeLayout') { + var treeLayout = new mxCompactTreeLayout(this.graph); + treeLayout.horizontal = mxUtils.getValue(style, 'horizontalTree', '1') == '1'; + treeLayout.resizeParent = mxUtils.getValue(style, 'resizeParent', '1') == '1'; + treeLayout.groupPadding = mxUtils.getValue(style, 'parentPadding', 20); + treeLayout.levelDistance = mxUtils.getValue(style, 'treeLevelDistance', 30); + treeLayout.maintainParentLocation = true; + treeLayout.edgeRouting = false; + treeLayout.resetEdges = false; + + return treeLayout; + } + else if (style['childLayout'] == 'flowLayout') { + var flowLayout = new mxHierarchicalLayout(this.graph, mxUtils.getValue(style, + 'flowOrientation', mxConstants.DIRECTION_EAST)); + flowLayout.resizeParent = mxUtils.getValue(style, 'resizeParent', '1') == '1'; + flowLayout.parentBorder = mxUtils.getValue(style, 'parentPadding', 20); + flowLayout.maintainParentLocation = true; + + // Special undocumented styles for changing the hierarchical + flowLayout.intraCellSpacing = mxUtils.getValue(style, 'intraCellSpacing', mxHierarchicalLayout.prototype.intraCellSpacing); + flowLayout.interRankCellSpacing = mxUtils.getValue(style, 'interRankCellSpacing', mxHierarchicalLayout.prototype.interRankCellSpacing); + flowLayout.interHierarchySpacing = mxUtils.getValue(style, 'interHierarchySpacing', mxHierarchicalLayout.prototype.interHierarchySpacing); + flowLayout.parallelEdgeSpacing = mxUtils.getValue(style, 'parallelEdgeSpacing', mxHierarchicalLayout.prototype.parallelEdgeSpacing); + + return flowLayout; + } + } + + return null; + }; + }; + + /** + * Returns the size of the page format scaled with the page size. + */ + Graph.prototype.getPageSize = function () { + return (this.pageVisible) ? new mxRectangle(0, 0, this.pageFormat.width * this.pageScale, + this.pageFormat.height * this.pageScale) : this.scrollTileSize; + }; + + /** + * Returns a rectangle describing the position and count of the + * background pages, where x and y are the position of the top, + * left page and width and height are the vertical and horizontal + * page count. + */ + Graph.prototype.getPageLayout = function () { + var size = this.getPageSize(); + var bounds = this.getGraphBounds(); + + if (bounds.width == 0 || bounds.height == 0) { + return new mxRectangle(0, 0, 1, 1); + } + else { + // Computes untransformed graph bounds + var x = Math.ceil(bounds.x / this.view.scale - this.view.translate.x); + var y = Math.ceil(bounds.y / this.view.scale - this.view.translate.y); + var w = Math.floor(bounds.width / this.view.scale); + var h = Math.floor(bounds.height / this.view.scale); + + var x0 = Math.floor(x / size.width); + var y0 = Math.floor(y / size.height); + var w0 = Math.ceil((x + w) / size.width) - x0; + var h0 = Math.ceil((y + h) / size.height) - y0; + + return new mxRectangle(x0, y0, w0, h0); + } + }; + + /** + * Sanitizes the given HTML markup. + */ + Graph.prototype.sanitizeHtml = function (value, editing) { + // Uses https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer + // NOTE: Original minimized sanitizer was modified to support + // data URIs for images, mailto and special data:-links. + // LATER: Add MathML to whitelisted tags + function urlX(link) { + if (link != null && link.toString().toLowerCase().substring(0, 11) !== 'javascript:') { + return link; + } + + return null; + }; + function idX(id) { return id }; + + return html_sanitize(value, urlX, idX); + }; + + /** + * Revalidates all cells with placeholders in the current graph model. + */ + Graph.prototype.updatePlaceholders = function () { + var model = this.model; + var validate = false; + + for (var key in this.model.cells) { + var cell = this.model.cells[key]; + + if (this.isReplacePlaceholders(cell)) { + this.view.invalidate(cell, false, false); + validate = true; + } + } + + if (validate) { + this.view.validate(); + } + }; + + /** + * Adds support for placeholders in labels. + */ + Graph.prototype.isReplacePlaceholders = function (cell) { + return cell.value != null && typeof (cell.value) == 'object' && + cell.value.getAttribute('placeholders') == '1'; + }; + + /** + * Returns true if the given mouse wheel event should be used for zooming. This + * is invoked if no dialogs are showing and returns true with Alt or Control + * (except macOS) is pressed. + */ + Graph.prototype.isZoomWheelEvent = function (evt) { + return mxEvent.isAltDown(evt) || (mxEvent.isMetaDown(evt) && mxClient.IS_MAC) || + (mxEvent.isControlDown(evt) && !mxClient.IS_MAC); + }; + + /** + * Adds Alt+click to select cells behind cells. + */ + Graph.prototype.isTransparentClickEvent = function (evt) { + return mxEvent.isAltDown(evt); + }; + + /** + * Adds ctrl+shift+connect to disable connections. + */ + Graph.prototype.isIgnoreTerminalEvent = function (evt) { + return mxEvent.isShiftDown(evt) && mxEvent.isControlDown(evt); + }; + + /** + * Adds support for placeholders in labels. + */ + Graph.prototype.isSplitTarget = function (target, cells, evt) { + return !this.model.isEdge(cells[0]) && + !mxEvent.isAltDown(evt) && !mxEvent.isShiftDown(evt) && + mxGraph.prototype.isSplitTarget.apply(this, arguments); + }; + + /** + * Adds support for placeholders in labels. + */ + Graph.prototype.getLabel = function (cell) { + var result = mxGraph.prototype.getLabel.apply(this, arguments); + + if (result != null && this.isReplacePlaceholders(cell) && cell.getAttribute('placeholder') == null) { + result = this.replacePlaceholders(cell, result); + } + + return result; + }; + + /** + * Adds labelMovable style. + */ + Graph.prototype.isLabelMovable = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return !this.isCellLocked(cell) && + ((this.model.isEdge(cell) && this.edgeLabelsMovable) || + (this.model.isVertex(cell) && (this.vertexLabelsMovable || + mxUtils.getValue(style, 'labelMovable', '0') == '1'))); + }; + + /** + * Adds event if grid size is changed. + */ + Graph.prototype.setGridSize = function (value) { + this.gridSize = value; + this.fireEvent(new mxEventObject('gridSizeChanged')); + }; + + /** + * Private helper method. + */ + Graph.prototype.getGlobalVariable = function (name) { + var val = null; + + if (name == 'date') { + val = new Date().toLocaleDateString(); + } + else if (name == 'time') { + val = new Date().toLocaleTimeString(); + } + else if (name == 'timestamp') { + val = new Date().toLocaleString(); + } + else if (name.substring(0, 5) == 'date{') { + var fmt = name.substring(5, name.length - 1); + val = this.formatDate(new Date(), fmt); + } + + return val; + }; + + /** + * Formats a date, see http://blog.stevenlevithan.com/archives/date-time-format + */ + Graph.prototype.formatDate = function (date, mask, utc) { + // LATER: Cache regexs + if (this.dateFormatCache == null) { + this.dateFormatCache = { + i18n: { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ] + }, + + masks: { + "default": "ddd mmm dd yyyy HH:MM:ss", + shortDate: "m/d/yy", + mediumDate: "mmm d, yyyy", + longDate: "mmmm d, yyyy", + fullDate: "dddd, mmmm d, yyyy", + shortTime: "h:MM TT", + mediumTime: "h:MM:ss TT", + longTime: "h:MM:ss TT Z", + isoDate: "yyyy-mm-dd", + isoTime: "HH:MM:ss", + isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", + isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" + } + }; + } + + var dF = this.dateFormatCache; + var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, + timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, + timezoneClip = /[^-+\dA-Z]/g, + pad = function (val, len) { + val = String(val); + len = len || 2; + while (val.length < len) val = "0" + val; + return val; + }; + + // You can't provide utc if you skip other args (use the "UTC:" mask prefix) + if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { + mask = date; + date = undefined; + } + + // Passing date through Date applies Date.parse, if necessary + date = date ? new Date(date) : new Date; + if (isNaN(date)) throw SyntaxError("invalid date"); + + mask = String(dF.masks[mask] || mask || dF.masks["default"]); + + // Allow setting the utc argument via the mask + if (mask.slice(0, 4) == "UTC:") { + mask = mask.slice(4); + utc = true; + } + + var _ = utc ? "getUTC" : "get", + d = date[_ + "Date"](), + D = date[_ + "Day"](), + m = date[_ + "Month"](), + y = date[_ + "FullYear"](), + H = date[_ + "Hours"](), + M = date[_ + "Minutes"](), + s = date[_ + "Seconds"](), + L = date[_ + "Milliseconds"](), + o = utc ? 0 : date.getTimezoneOffset(), + flags = { + d: d, + dd: pad(d), + ddd: dF.i18n.dayNames[D], + dddd: dF.i18n.dayNames[D + 7], + m: m + 1, + mm: pad(m + 1), + mmm: dF.i18n.monthNames[m], + mmmm: dF.i18n.monthNames[m + 12], + yy: String(y).slice(2), + yyyy: y, + h: H % 12 || 12, + hh: pad(H % 12 || 12), + H: H, + HH: pad(H), + M: M, + MM: pad(M), + s: s, + ss: pad(s), + l: pad(L, 3), + L: pad(L > 99 ? Math.round(L / 10) : L), + t: H < 12 ? "a" : "p", + tt: H < 12 ? "am" : "pm", + T: H < 12 ? "A" : "P", + TT: H < 12 ? "AM" : "PM", + Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), + o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] + }; + + return mask.replace(token, function ($0) { + return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); + }); + }; + + /** + * + */ + Graph.prototype.createLayersDialog = function () { + var div = document.createElement('div'); + div.style.position = 'absolute'; + + var model = this.getModel(); + var childCount = model.getChildCount(model.root); + + for (var i = 0; i < childCount; i++) { + (mxUtils.bind(this, function (layer) { + var span = document.createElement('div'); + span.style.overflow = 'hidden'; + span.style.textOverflow = 'ellipsis'; + span.style.padding = '2px'; + span.style.whiteSpace = 'nowrap'; + + var cb = document.createElement('input'); + cb.style.display = 'inline-block'; + cb.setAttribute('type', 'checkbox'); + + if (model.isVisible(layer)) { + cb.setAttribute('checked', 'checked'); + cb.defaultChecked = true; + } + + span.appendChild(cb); + + var title = this.convertValueToString(layer) || (mxResources.get('background') || 'Background'); + span.setAttribute('title', title); + mxUtils.write(span, title); + div.appendChild(span); + + mxEvent.addListener(cb, 'click', function () { + if (cb.getAttribute('checked') != null) { + cb.removeAttribute('checked'); + } + else { + cb.setAttribute('checked', 'checked'); + } + + model.setVisible(layer, cb.checked); + }); + })(model.getChildAt(model.root, i))); + } + + return div; + }; + + /** + * Private helper method. + */ + Graph.prototype.replacePlaceholders = function (cell, str) { + var result = []; + + if (str != null) { + var last = 0; + + while (match = this.placeholderPattern.exec(str)) { + var val = match[0]; + + if (val.length > 2 && val != '%label%' && val != '%tooltip%') { + var tmp = null; + + if (match.index > last && str.charAt(match.index - 1) == '%') { + tmp = val.substring(1); + } + else { + var name = val.substring(1, val.length - 1); + + // Workaround for invalid char for getting attribute in older versions of IE + if (name.indexOf('{') < 0) { + var current = cell; + + while (tmp == null && current != null) { + if (current.value != null && typeof (current.value) == 'object') { + tmp = (current.hasAttribute(name)) ? ((current.getAttribute(name) != null) ? + current.getAttribute(name) : '') : null; + } + + current = this.model.getParent(current); + } + } + + if (tmp == null) { + tmp = this.getGlobalVariable(name); + } + } + + result.push(str.substring(last, match.index) + ((tmp != null) ? tmp : val)); + last = match.index + val.length; + } + } + + result.push(str.substring(last)); + } + + return result.join(''); + }; + + /** + * Resolves the given cells in the model and selects them. + */ + Graph.prototype.restoreSelection = function (cells) { + if (cells != null && cells.length > 0) { + var temp = []; + + for (var i = 0; i < cells.length; i++) { + var newCell = this.model.getCell(cells[i].id); + + if (newCell != null) { + temp.push(newCell); + } + } + + this.setSelectionCells(temp); + } + else { + this.clearSelection(); + } + }; + + /** + * Selects cells for connect vertex return value. + */ + Graph.prototype.selectCellsForConnectVertex = function (cells, evt, hoverIcons) { + // Selects only target vertex if one exists + if (cells.length == 2 && this.model.isVertex(cells[1])) { + this.setSelectionCell(cells[1]); + + if (hoverIcons != null) { + // Adds hover icons to new target vertex for touch devices + if (mxEvent.isTouchEvent(evt)) { + hoverIcons.update(hoverIcons.getState(this.view.getState(cells[1]))); + } + else { + // Hides hover icons after click with mouse + hoverIcons.reset(); + } + } + + this.scrollCellToVisible(cells[1]); + } + else { + this.setSelectionCells(cells); + } + }; + + /** + * Adds a connection to the given vertex. + */ + Graph.prototype.connectVertex = function (source, direction, length, evt, forceClone, ignoreCellAt) { + ignoreCellAt = (ignoreCellAt) ? ignoreCellAt : false; + + var pt = (source.geometry.relative && source.parent.geometry != null) ? + new mxPoint(source.parent.geometry.width * source.geometry.x, source.parent.geometry.height * source.geometry.y) : + new mxPoint(source.geometry.x, source.geometry.y); + + if (direction == mxConstants.DIRECTION_NORTH) { + pt.x += source.geometry.width / 2; + pt.y -= length; + } + else if (direction == mxConstants.DIRECTION_SOUTH) { + pt.x += source.geometry.width / 2; + pt.y += source.geometry.height + length; + } + else if (direction == mxConstants.DIRECTION_WEST) { + pt.x -= length; + pt.y += source.geometry.height / 2; + } + else { + pt.x += source.geometry.width + length; + pt.y += source.geometry.height / 2; + } + + var parentState = this.view.getState(this.model.getParent(source)); + var s = this.view.scale; + var t = this.view.translate; + var dx = t.x * s; + var dy = t.y * s; + + if (this.model.isVertex(parentState.cell)) { + dx = parentState.x; + dy = parentState.y; + } + + // Workaround for relative child cells + if (this.model.isVertex(source.parent) && source.geometry.relative) { + pt.x += source.parent.geometry.x; + pt.y += source.parent.geometry.y; + } + + // Checks actual end point of edge for target cell + var target = (ignoreCellAt || (mxEvent.isControlDown(evt) && !forceClone)) ? + null : this.getCellAt(dx + pt.x * s, dy + pt.y * s); + + if (this.model.isAncestor(target, source)) { + target = null; + } + + // Checks if target or ancestor is locked + var temp = target; + + while (temp != null) { + if (this.isCellLocked(temp)) { + target = null; + break; + } + + temp = this.model.getParent(temp); + } + + // Checks if source and target intersect + if (target != null) { + var sourceState = this.view.getState(source); + var targetState = this.view.getState(target); + + if (sourceState != null && targetState != null && mxUtils.intersects(sourceState, targetState)) { + target = null; + } + } + + var duplicate = !mxEvent.isShiftDown(evt) || forceClone; + + if (duplicate) { + if (direction == mxConstants.DIRECTION_NORTH) { + pt.y -= source.geometry.height / 2; + } + else if (direction == mxConstants.DIRECTION_SOUTH) { + pt.y += source.geometry.height / 2; + } + else if (direction == mxConstants.DIRECTION_WEST) { + pt.x -= source.geometry.width / 2; + } + else { + pt.x += source.geometry.width / 2; + } + } + + // Uses connectable parent vertex if one exists + if (target != null && !this.isCellConnectable(target)) { + var parent = this.getModel().getParent(target); + + if (this.getModel().isVertex(parent) && this.isCellConnectable(parent)) { + target = parent; + } + } + + if (target == source || this.model.isEdge(target) || !this.isCellConnectable(target)) { + target = null; + } + + var result = []; + + this.model.beginUpdate(); + try { + var realTarget = target; + + if (realTarget == null && duplicate) { + // Handles relative children + var cellToClone = source; + var geo = this.getCellGeometry(source); + + while (geo != null && geo.relative) { + cellToClone = this.getModel().getParent(cellToClone); + geo = this.getCellGeometry(cellToClone); + } + + // Handle consistuents for cloning + var state = this.view.getState(cellToClone); + var style = (state != null) ? state.style : this.getCellStyle(cellToClone); + + if (mxUtils.getValue(style, 'part', false)) { + var tmpParent = this.model.getParent(cellToClone); + + if (this.model.isVertex(tmpParent)) { + cellToClone = tmpParent; + } + } + + realTarget = this.duplicateCells([cellToClone], false)[0]; + + var geo = this.getCellGeometry(realTarget); + + if (geo != null) { + geo.x = pt.x - geo.width / 2; + geo.y = pt.y - geo.height / 2; + } + } + + // Never connects children in stack layouts + var layout = null; + + if (this.layoutManager != null) { + layout = this.layoutManager.getLayout(this.model.getParent(source)); + } + + var edge = ((mxEvent.isControlDown(evt) && duplicate) || (target == null && layout != null && layout.constructor == mxStackLayout)) ? null : + this.insertEdge(this.model.getParent(source), null, '', source, realTarget, this.createCurrentEdgeStyle()); + + // Inserts edge before source + if (edge != null && this.connectionHandler.insertBeforeSource) { + var index = null; + var tmp = source; + + while (tmp.parent != null && tmp.geometry != null && + tmp.geometry.relative && tmp.parent != edge.parent) { + tmp = this.model.getParent(tmp); + } + + if (tmp != null && tmp.parent != null && tmp.parent == edge.parent) { + var index = tmp.parent.getIndex(tmp); + this.model.add(tmp.parent, edge, index); + } + } + + // Special case: Click on west icon puts clone before cell + if (target == null && realTarget != null && layout != null && source.parent != null && + layout.constructor == mxStackLayout && direction == mxConstants.DIRECTION_WEST) { + var index = source.parent.getIndex(source); + this.model.add(source.parent, realTarget, index); + } + + if (edge != null) { + result.push(edge); + } + + if (target == null && realTarget != null) { + result.push(realTarget); + } + + if (realTarget == null && edge != null) { + edge.geometry.setTerminalPoint(pt, false); + } + + if (edge != null) { + this.fireEvent(new mxEventObject('cellsInserted', 'cells', [edge])); + } + } + finally { + this.model.endUpdate(); + } + + return result; + }; + + /** + * Returns all labels in the diagram as a string. + */ + Graph.prototype.getIndexableText = function () { + var tmp = document.createElement('div'); + var labels = []; + var label = ''; + + for (var key in this.model.cells) { + var cell = this.model.cells[key]; + + if (this.model.isVertex(cell) || this.model.isEdge(cell)) { + if (this.isHtmlLabel(cell)) { + tmp.innerHTML = this.getLabel(cell); + label = mxUtils.extractTextWithWhitespace([tmp]); + } + else { + label = this.getLabel(cell); + } + + label = mxUtils.trim(label.replace(/[\x00-\x1F\x7F-\x9F]|\s+/g, ' ')); + + if (label.length > 0) { + labels.push(label); + } + } + } + + return labels.join(' '); + }; + + /** + * Returns the label for the given cell. + */ + Graph.prototype.convertValueToString = function (cell) { + if (cell.value != null && typeof (cell.value) == 'object') { + if (this.isReplacePlaceholders(cell) && cell.getAttribute('placeholder') != null) { + var name = cell.getAttribute('placeholder'); + var current = cell; + var result = null; + + while (result == null && current != null) { + if (current.value != null && typeof (current.value) == 'object') { + result = (current.hasAttribute(name)) ? ((current.getAttribute(name) != null) ? + current.getAttribute(name) : '') : null; + } + + current = this.model.getParent(current); + } + + return result || ''; + } + else { + return cell.value.getAttribute('label') || ''; + } + } + + return mxGraph.prototype.convertValueToString.apply(this, arguments); + }; + + /** + * Returns the link for the given cell. + */ + Graph.prototype.getLinksForState = function (state) { + if (state != null && state.text != null && state.text.node != null) { + return state.text.node.getElementsByTagName('a'); + } + + return null; + }; + + /** + * Returns the link for the given cell. + */ + Graph.prototype.getLinkForCell = function (cell) { + if (cell.value != null && typeof (cell.value) == 'object') { + var link = cell.value.getAttribute('link'); + + // Removes links with leading javascript: protocol + // TODO: Check more possible attack vectors + if (link != null && link.toLowerCase().substring(0, 11) === 'javascript:') { + link = link.substring(11); + } + + return link; + } + + return null; + }; + + /** + * Overrides label orientation for collapsed swimlanes inside stack. + */ + Graph.prototype.getCellStyle = function (cell) { + var style = mxGraph.prototype.getCellStyle.apply(this, arguments); + + if (cell != null && this.layoutManager != null) { + var parent = this.model.getParent(cell); + + if (this.model.isVertex(parent) && this.isCellCollapsed(cell)) { + var layout = this.layoutManager.getLayout(parent); + + if (layout != null && layout.constructor == mxStackLayout) { + style[mxConstants.STYLE_HORIZONTAL] = !layout.horizontal; + } + } + } + + return style; + }; + + /** + * Disables alternate width persistence for stack layout parents + */ + Graph.prototype.updateAlternateBounds = function (cell, geo, willCollapse) { + if (cell != null && geo != null && this.layoutManager != null && geo.alternateBounds != null) { + var layout = this.layoutManager.getLayout(this.model.getParent(cell)); + + if (layout != null && layout.constructor == mxStackLayout) { + if (layout.horizontal) { + geo.alternateBounds.height = 0; + } + else { + geo.alternateBounds.width = 0; + } + } + } + + mxGraph.prototype.updateAlternateBounds.apply(this, arguments); + }; + + /** + * Adds Shift+collapse/expand and size management for folding inside stack + */ + Graph.prototype.isMoveCellsEvent = function (evt) { + return mxEvent.isShiftDown(evt); + }; + + /** + * Adds Shift+collapse/expand and size management for folding inside stack + */ + Graph.prototype.foldCells = function (collapse, recurse, cells, checkFoldable, evt) { + recurse = (recurse != null) ? recurse : false; + + if (cells == null) { + cells = this.getFoldableCells(this.getSelectionCells(), collapse); + } + + if (cells != null) { + this.model.beginUpdate(); + + try { + mxGraph.prototype.foldCells.apply(this, arguments); + + // Resizes all parent stacks if alt is not pressed + if (this.layoutManager != null) { + for (var i = 0; i < cells.length; i++) { + var state = this.view.getState(cells[i]); + var geo = this.getCellGeometry(cells[i]); + + if (state != null && geo != null) { + var dx = Math.round(geo.width - state.width / this.view.scale); + var dy = Math.round(geo.height - state.height / this.view.scale); + + if (dy != 0 || dx != 0) { + var parent = this.model.getParent(cells[i]); + var layout = this.layoutManager.getLayout(parent); + + if (layout == null) { + // Moves cells to the right and down after collapse/expand + if (evt != null && this.isMoveCellsEvent(evt)) { + this.moveSiblings(state, parent, dx, dy); + } + } + else if ((evt == null || !mxEvent.isAltDown(evt)) && layout.constructor == mxStackLayout && !layout.resizeLast) { + this.resizeParentStacks(parent, layout, dx, dy); + } + } + } + } + } + } + finally { + this.model.endUpdate(); + } + + // Selects cells after folding + if (this.isEnabled()) { + this.setSelectionCells(cells); + } + } + }; + + /** + * Overrides label orientation for collapsed swimlanes inside stack. + */ + Graph.prototype.moveSiblings = function (state, parent, dx, dy) { + this.model.beginUpdate(); + try { + var cells = this.getCellsBeyond(state.x, state.y, parent, true, true); + + for (var i = 0; i < cells.length; i++) { + if (cells[i] != state.cell) { + var tmp = this.view.getState(cells[i]); + var geo = this.getCellGeometry(cells[i]); + + if (tmp != null && geo != null) { + geo = geo.clone(); + geo.translate(Math.round(dx * Math.max(0, Math.min(1, (tmp.x - state.x) / state.width))), + Math.round(dy * Math.max(0, Math.min(1, (tmp.y - state.y) / state.height)))); + this.model.setGeometry(cells[i], geo); + } + } + } + } + finally { + this.model.endUpdate(); + } + }; + + /** + * Overrides label orientation for collapsed swimlanes inside stack. + */ + Graph.prototype.resizeParentStacks = function (parent, layout, dx, dy) { + if (this.layoutManager != null && layout != null && layout.constructor == mxStackLayout && !layout.resizeLast) { + this.model.beginUpdate(); + try { + var dir = layout.horizontal; + + // Bubble resize up for all parent stack layouts with same orientation + while (parent != null && layout != null && layout.constructor == mxStackLayout && + layout.horizontal == dir && !layout.resizeLast) { + var pgeo = this.getCellGeometry(parent); + var pstate = this.view.getState(parent); + + if (pstate != null && pgeo != null) { + pgeo = pgeo.clone(); + + if (layout.horizontal) { + pgeo.width += dx + Math.min(0, pstate.width / this.view.scale - pgeo.width); + } + else { + pgeo.height += dy + Math.min(0, pstate.height / this.view.scale - pgeo.height); + } + + this.model.setGeometry(parent, pgeo); + } + + parent = this.model.getParent(parent); + layout = this.layoutManager.getLayout(parent); + } + } + finally { + this.model.endUpdate(); + } + } + }; + + /** + * Disables drill-down for non-swimlanes. + */ + Graph.prototype.isContainer = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + if (this.isSwimlane(cell)) { + return style['container'] != '0'; + } + else { + return style['container'] == '1'; + } + }; + + /** + * Adds a connectable style. + */ + Graph.prototype.isCellConnectable = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return (style['connectable'] != null) ? style['connectable'] != '0' : + mxGraph.prototype.isCellConnectable.apply(this, arguments); + }; + + /** + * Function: selectAll + * + * Selects all children of the given parent cell or the children of the + * default parent if no parent is specified. To select leaf vertices and/or + * edges use . + * + * Parameters: + * + * parent - Optional whose children should be selected. + * Default is . + */ + Graph.prototype.selectAll = function (parent) { + parent = parent || this.getDefaultParent(); + + if (!this.isCellLocked(parent)) { + mxGraph.prototype.selectAll.apply(this, arguments); + } + }; + + /** + * Function: selectCells + * + * Selects all vertices and/or edges depending on the given boolean + * arguments recursively, starting at the given parent or the default + * parent if no parent is specified. Use to select all cells. + * For vertices, only cells with no children are selected. + * + * Parameters: + * + * vertices - Boolean indicating if vertices should be selected. + * edges - Boolean indicating if edges should be selected. + * parent - Optional that acts as the root of the recursion. + * Default is . + */ + Graph.prototype.selectCells = function (vertices, edges, parent) { + parent = parent || this.getDefaultParent(); + + if (!this.isCellLocked(parent)) { + mxGraph.prototype.selectCells.apply(this, arguments); + } + }; + + /** + * Function: getSwimlaneAt + * + * Returns the bottom-most swimlane that intersects the given point (x, y) + * in the cell hierarchy that starts at the given parent. + * + * Parameters: + * + * x - X-coordinate of the location to be checked. + * y - Y-coordinate of the location to be checked. + * parent - that should be used as the root of the recursion. + * Default is . + */ + Graph.prototype.getSwimlaneAt = function (x, y, parent) { + parent = parent || this.getDefaultParent(); + + if (!this.isCellLocked(parent)) { + return mxGraph.prototype.getSwimlaneAt.apply(this, arguments); + } + + return null; + }; + + /** + * Disables folding for non-swimlanes. + */ + Graph.prototype.isCellFoldable = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return this.foldingEnabled && !this.isCellLocked(cell) && + ((this.isContainer(cell) && style['collapsible'] != '0') || + (!this.isContainer(cell) && style['collapsible'] == '1')); + }; + + /** + * Stops all interactions and clears the selection. + */ + Graph.prototype.reset = function () { + if (this.isEditing()) { + this.stopEditing(true); + } + + this.escape(); + + if (!this.isSelectionEmpty()) { + this.clearSelection(); + } + }; + + /** + * Overridden to limit zoom to 1% - 16.000%. + */ + Graph.prototype.zoom = function (factor, center) { + factor = Math.max(0.01, Math.min(this.view.scale * factor, 160)) / this.view.scale; + + mxGraph.prototype.zoom.apply(this, arguments); + }; + + /** + * Function: zoomIn + * + * Zooms into the graph by . + */ + Graph.prototype.zoomIn = function () { + // Switches to 1% zoom steps below 15% + if (this.view.scale < 0.15) { + this.zoom((this.view.scale + 0.01) / this.view.scale); + } + else { + // Uses to 5% zoom steps for better grid rendering in webkit + // and to avoid rounding errors for zoom steps + this.zoom((Math.round(this.view.scale * this.zoomFactor * 20) / 20) / this.view.scale); + } + }; + + /** + * Function: zoomOut + * + * Zooms out of the graph by . + */ + Graph.prototype.zoomOut = function () { + // Switches to 1% zoom steps below 15% + if (this.view.scale <= 0.15) { + this.zoom((this.view.scale - 0.01) / this.view.scale); + } + else { + // Uses to 5% zoom steps for better grid rendering in webkit + // and to avoid rounding errors for zoom steps + this.zoom((Math.round(this.view.scale * (1 / this.zoomFactor) * 20) / 20) / this.view.scale); + } + }; + + /** + * Overrides tooltips to show custom tooltip or metadata. + */ + Graph.prototype.getTooltipForCell = function (cell) { + var tip = ''; + if (mxUtils.isNode(cell.value)) { + var tmp = cell.value.getAttribute('tooltip'); + + if (tmp != null) { + if (tmp != null && this.isReplacePlaceholders(cell)) { + tmp = this.replacePlaceholders(cell, tmp); + } + + tip = this.sanitizeHtml(tmp); + } + else { + var ignored = this.builtInProperties; + var attrs = cell.value.attributes; + var temp = []; + + // Hides links in edit mode + if (this.isEnabled()) { + ignored.push('link'); + } + + for (var i = 0; i < attrs.length; i++) { + if (mxUtils.indexOf(ignored, attrs[i].nodeName) < 0 && attrs[i].nodeValue.length > 0) { + temp.push({ name: attrs[i].nodeName, value: attrs[i].nodeValue }); + } + } + + // Sorts by name + temp.sort(function (a, b) { + if (a.name < b.name) { + return -1; + } + else if (a.name > b.name) { + return 1; + } + else { + return 0; + } + }); + + for (var i = 0; i < temp.length; i++) { + if (temp[i].name != 'link' || !this.isCustomLink(temp[i].value)) { + tip += ((temp[i].name != 'link') ? '' + temp[i].name + ': ' : '') + + mxUtils.htmlEntities(temp[i].value) + '\n'; + } + } + + if (tip.length > 0) { + tip = tip.substring(0, tip.length - 1); + + if (mxClient.IS_SVG) { + tip = '
' + tip + '
'; + } + } + } + } + return tip; + }; + + /** + * Turns the given string into an array. + */ + Graph.prototype.stringToBytes = function (str) { + var arr = new Array(str.length); + + for (var i = 0; i < str.length; i++) { + arr[i] = str.charCodeAt(i); + } + + return arr; + }; + + /** + * Turns the given array into a string. + */ + Graph.prototype.bytesToString = function (arr) { + var result = new Array(arr.length); + + for (var i = 0; i < arr.length; i++) { + result[i] = String.fromCharCode(arr[i]); + } + + return result.join(''); + }; + + /** + * Returns a base64 encoded version of the compressed outer XML of the given node. + */ + Graph.prototype.compressNode = function (node) { + return this.compress(this.zapGremlins(mxUtils.getXml(node))); + }; + + /** + * Returns a base64 encoded version of the compressed string. + */ + Graph.prototype.compress = function (data) { + if (data == null || data.length == 0 || typeof (pako) === 'undefined') { + return data; + } + else { + var tmp = this.bytesToString(pako.deflateRaw(encodeURIComponent(data))); + + return (window.btoa) ? btoa(tmp) : Base64.encode(tmp, true); + } + }; + + /** + * Returns a decompressed version of the base64 encoded string. + */ + Graph.prototype.decompress = function (data) { + if (data == null || data.length == 0 || typeof (pako) === 'undefined') { + return data; + } + else { + var tmp = (window.atob) ? atob(data) : Base64.decode(data, true); + + return this.zapGremlins(decodeURIComponent( + this.bytesToString(pako.inflateRaw(tmp)))); + } + }; + + /** + * Removes all illegal control characters with ASCII code <32 except TAB, LF + * and CR. + */ + Graph.prototype.zapGremlins = function (text) { + var checked = []; + + for (var i = 0; i < text.length; i++) { + var code = text.charCodeAt(i); + + // Removes all control chars except TAB, LF and CR + if (code >= 32 || code == 9 || code == 10 || code == 13) { + checked.push(text.charAt(i)); + } + } + + return checked.join(''); + }; + + /** + * Hover icons are used for hover, vertex handler and drag from sidebar. + */ + var HoverIcons = function (graph) { + this.graph = graph; + this.init(); + }; + + /** + * Up arrow. + */ + HoverIcons.prototype.arrowSpacing = 2; + + /** + * Delay to switch to another state for overlapping bbox. Default is 500ms. + */ + HoverIcons.prototype.updateDelay = 500; + + /** + * Delay to switch between states. Default is 140ms. + */ + HoverIcons.prototype.activationDelay = 140; + + /** + * Up arrow. + */ + HoverIcons.prototype.currentState = null; + + /** + * Up arrow. + */ + HoverIcons.prototype.activeArrow = null; + + /** + * Up arrow. + */ + HoverIcons.prototype.inactiveOpacity = 15; + + /** + * Up arrow. + */ + HoverIcons.prototype.cssCursor = 'copy'; + + /** + * Whether to hide arrows that collide with vertices. + * LATER: Add keyboard override, touch support. + */ + HoverIcons.prototype.checkCollisions = true; + + /** + * Up arrow. + */ + HoverIcons.prototype.arrowFill = '#29b6f2'; + + /** + * Up arrow. + */ + HoverIcons.prototype.triangleUp = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/triangle-up.png', 26, 14) : + Graph.createSvgImage(18, 28, ''); + + /** + * Right arrow. + */ + HoverIcons.prototype.triangleRight = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/triangle-right.png', 14, 26) : + Graph.createSvgImage(26, 18, ''); + + /** + * Down arrow. + */ + HoverIcons.prototype.triangleDown = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/triangle-down.png', 26, 14) : + Graph.createSvgImage(18, 26, ''); + + /** + * Left arrow. + */ + HoverIcons.prototype.triangleLeft = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/triangle-left.png', 14, 26) : + Graph.createSvgImage(28, 18, ''); + + /** + * Round target. + */ + HoverIcons.prototype.roundDrop = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/round-drop.png', 26, 26) : + Graph.createSvgImage(26, 26, ''); + + /** + * Refresh target. + */ + HoverIcons.prototype.refreshTarget = new mxImage((mxClient.IS_SVG) ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDQxNERDRTU1QjY1MTFFNDkzNTRFQTVEMTdGMTdBQjciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDQxNERDRTY1QjY1MTFFNDkzNTRFQTVEMTdGMTdBQjciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NDE0RENFMzVCNjUxMUU0OTM1NEVBNUQxN0YxN0FCNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NDE0RENFNDVCNjUxMUU0OTM1NEVBNUQxN0YxN0FCNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsvuX50AAANaSURBVHja7FjRZ1tRGD9ZJ1NCyIQSwrivI4Q8hCpjlFDyFEoYfSp9Ko1QWnmo0If+BSXkIfo0QirTMUpeGo2EPfWllFYjZMLKLDJn53d3biU337m5J223bPbxk5t7v+/c3/2+73znO8fDOWezKM/YjMpz68Lj8ejY+QTeCCwLxOS9qPxtyN+6wAeBTwJ31CCO0cJDjXBGBN4LfIepSwykTUT1bgpuib0SONIgo8KRHOtRiCFcvUcgZeGrHPNBxLIyFPyRgTGz0xLbegJCdmzpElue5KlAIMDX19d5uVzm5+fnfDAYmMA17uEZdOx2Yvb/sHlu2S0xwymn5ufneTab5b1ej08S6EAXNrDd2dnhiUTim21MvMtwQ6yiIrWwsMDPzs64rsBmf3/fvM7n89TYlUnEllSkQqEQv7q64g+Vk5MTVXosORErU0Zer5f0FEIlw2N6MxwO82QyaXql2+2SxDqdjopYWUUsqEp45IldqtWq6UWVh/1+P7+8vCTJ4QMUJSRIEXuneoH96w8PDyeWAnhSJfCqwm6NIlaklFdXV0cGhRcQ2mlJQXK5nMq2YPEZbnteU1U2lUqN/D84OGD9fl+5fgnSrFarsUwmw0qlEru4uBjTicViTk3Cr27HSnxR+Doyz0ZE1CAWiUTusbu7y9rttlZv5fP5WDQavYfIMba4uEipfhF8XtqJoZXx/uH+sC/4vPg7OljZZQbsCmLtYzc3N6zRaJhotVrmfx0xDINtbm6athYUeXpHdbBNaqZUKpWxWXV7e2vex+xaWVnhc3NzjrPUXgexyCt0m67LBV7uJMITjqRE4o8tZeg8FPpFitgapYxiOC0poFgsji1jKNo6BZZckrAGUtJsNk1vqAihCBcKhTE7hNWhqw2qFnGy5UFOUYJVIJ1OjzSE+BCEilon0URavRmBqnbbQ00AXbm+vnZc9O1tj72OnQoc2+cwygRkb2+P1et17ZoEm3g87lRmjgWZ00kbXkNuse6/Bu2wlegIxfb2tuvWGroO4bO2c4bbzUh60mxDXm1sbJhhxkQYnhS4h2fUZoRAWnf7lv8N27f8P7Xhnekjgpk+VKGOoQbsiY+hhhtF3YO7twIJ+ULvUGv+GQ2fQEvWxI/THNx5/p/BaspPAQYAqStgiSQwCDoAAAAASUVORK5CYII=' : + IMAGE_PATH + '/refresh.png', 38, 38); + + /** + * Tolerance for hover icon clicks. + */ + HoverIcons.prototype.tolerance = (mxClient.IS_TOUCH) ? 6 : 0; + + /** + * + */ + HoverIcons.prototype.init = function () { + this.arrowUp = this.createArrow(this.triangleUp, mxResources.get('plusTooltip')); + this.arrowRight = this.createArrow(this.triangleRight, mxResources.get('plusTooltip')); + this.arrowDown = this.createArrow(this.triangleDown, mxResources.get('plusTooltip')); + this.arrowLeft = this.createArrow(this.triangleLeft, mxResources.get('plusTooltip')); + + this.elts = [this.arrowUp, this.arrowRight, this.arrowDown, this.arrowLeft]; + + this.repaintHandler = mxUtils.bind(this, function () { + this.repaint(); + }); + + this.graph.selectionModel.addListener(mxEvent.CHANGE, this.repaintHandler); + this.graph.model.addListener(mxEvent.CHANGE, this.repaintHandler); + this.graph.view.addListener(mxEvent.SCALE_AND_TRANSLATE, this.repaintHandler); + this.graph.view.addListener(mxEvent.TRANSLATE, this.repaintHandler); + this.graph.view.addListener(mxEvent.SCALE, this.repaintHandler); + this.graph.view.addListener(mxEvent.DOWN, this.repaintHandler); + this.graph.view.addListener(mxEvent.UP, this.repaintHandler); + this.graph.addListener(mxEvent.ROOT, this.repaintHandler); + + // Resets the mouse point on escape + this.graph.addListener(mxEvent.ESCAPE, mxUtils.bind(this, function () { + this.mouseDownPoint = null; + })); + + // Removes hover icons if mouse leaves the container + mxEvent.addListener(this.graph.container, 'mouseleave', mxUtils.bind(this, function (evt) { + // Workaround for IE11 firing mouseleave for touch in diagram + if (evt.relatedTarget != null && mxEvent.getSource(evt) == this.graph.container) { + this.setDisplay('none'); + } + })); + + // Resets current state when in-place editor starts + this.graph.addListener(mxEvent.START_EDITING, mxUtils.bind(this, function (evt) { + this.reset(); + })); + + // Resets current state after update of selection state for touch events + var graphClick = this.graph.click; + this.graph.click = mxUtils.bind(this, function (me) { + graphClick.apply(this.graph, arguments); + + if (this.currentState != null && !this.graph.isCellSelected(this.currentState.cell) && + mxEvent.isTouchEvent(me.getEvent()) && !this.graph.model.isVertex(me.getCell())) { + this.reset(); + } + }); + + // Checks if connection handler was active in mouse move + // as workaround for possible double connection inserted + var connectionHandlerActive = false; + + // Implements a listener for hover and click handling + this.graph.addMouseListener( + { + mouseDown: mxUtils.bind(this, function (sender, me) { + connectionHandlerActive = false; + var evt = me.getEvent(); + + if (this.isResetEvent(evt)) { + this.reset(); + } + else if (!this.isActive()) { + var state = this.getState(me.getState()); + + if (state != null || !mxEvent.isTouchEvent(evt)) { + this.update(state); + } + } + + this.setDisplay('none'); + }), + mouseMove: mxUtils.bind(this, function (sender, me) { + var evt = me.getEvent(); + + if (this.isResetEvent(evt)) { + this.reset(); + } + else if (!this.graph.isMouseDown && !mxEvent.isTouchEvent(evt)) { + this.update(this.getState(me.getState()), + me.getGraphX(), me.getGraphY()); + } + + if (this.graph.connectionHandler != null && + this.graph.connectionHandler.shape != null) { + connectionHandlerActive = true; + } + }), + mouseUp: mxUtils.bind(this, function (sender, me) { + var evt = me.getEvent(); + var pt = mxUtils.convertPoint(this.graph.container, + mxEvent.getClientX(evt), mxEvent.getClientY(evt)) + + if (this.isResetEvent(evt)) { + this.reset(); + } + else if (this.isActive() && !connectionHandlerActive && + this.mouseDownPoint != null) { + this.click(this.currentState, this.getDirection(), me); + } + else if (this.isActive()) { + // Selects target vertex after drag and clone if not only new edge was inserted + if (this.graph.getSelectionCount() != 1 || !this.graph.model.isEdge( + this.graph.getSelectionCell())) { + this.update(this.getState(this.graph.view.getState( + this.graph.getCellAt(me.getGraphX(), me.getGraphY())))); + } + else { + this.reset(); + } + } + else if (mxEvent.isTouchEvent(evt) || (this.bbox != null && + mxUtils.contains(this.bbox, me.getGraphX(), me.getGraphY()))) { + // Shows existing hover icons if inside bounding box + this.setDisplay(''); + this.repaint(); + } + else if (!mxEvent.isTouchEvent(evt)) { + this.reset(); + } + + connectionHandlerActive = false; + this.resetActiveArrow(); + }) + }); + }; + + /** + * + */ + HoverIcons.prototype.isResetEvent = function (evt, allowShift) { + return mxEvent.isAltDown(evt) || (this.activeArrow == null && mxEvent.isShiftDown(evt)) || + mxEvent.isMetaDown(evt) || (mxEvent.isPopupTrigger(evt) && !mxEvent.isControlDown(evt)); + }; + + /** + * + */ + HoverIcons.prototype.createArrow = function (img, tooltip) { + var arrow = null; + + if (mxClient.IS_IE && !mxClient.IS_SVG) { + // Workaround for PNG images in IE6 + if (mxClient.IS_IE6 && document.compatMode != 'CSS1Compat') { + arrow = document.createElement(mxClient.VML_PREFIX + ':image'); + arrow.setAttribute('src', img.src); + arrow.style.borderStyle = 'none'; + } + else { + arrow = document.createElement('div'); + arrow.style.backgroundImage = 'url(' + img.src + ')'; + arrow.style.backgroundPosition = 'center'; + arrow.style.backgroundRepeat = 'no-repeat'; + } + + arrow.style.width = (img.width + 4) + 'px'; + arrow.style.height = (img.height + 4) + 'px'; + arrow.style.display = (mxClient.IS_QUIRKS) ? 'inline' : 'inline-block'; + } + else { + arrow = mxUtils.createImage(img.src); + arrow.style.width = img.width + 'px'; + arrow.style.height = img.height + 'px'; + arrow.style.padding = this.tolerance + 'px'; + } + + if (tooltip != null) { + arrow.setAttribute('title', tooltip); + } + + arrow.style.position = 'absolute'; + arrow.style.cursor = this.cssCursor; + + mxEvent.addGestureListeners(arrow, mxUtils.bind(this, function (evt) { + if (this.currentState != null && !this.isResetEvent(evt)) { + this.mouseDownPoint = mxUtils.convertPoint(this.graph.container, + mxEvent.getClientX(evt), mxEvent.getClientY(evt)); + this.drag(evt, this.mouseDownPoint.x, this.mouseDownPoint.y); + this.activeArrow = arrow; + this.setDisplay('none'); + mxEvent.consume(evt); + } + })); + + // Captures mouse events as events on graph + mxEvent.redirectMouseEvents(arrow, this.graph, this.currentState); + + mxEvent.addListener(arrow, 'mouseenter', mxUtils.bind(this, function (evt) { + // Workaround for Firefox firing mouseenter on touchend + if (mxEvent.isMouseEvent(evt)) { + if (this.activeArrow != null && this.activeArrow != arrow) { + mxUtils.setOpacity(this.activeArrow, this.inactiveOpacity); + } + + this.graph.connectionHandler.constraintHandler.reset(); + mxUtils.setOpacity(arrow, 100); + this.activeArrow = arrow; + } + })); + + mxEvent.addListener(arrow, 'mouseleave', mxUtils.bind(this, function (evt) { + // Workaround for IE11 firing this event on touch + if (!this.graph.isMouseDown) { + this.resetActiveArrow(); + } + })); + + return arrow; + }; + + /** + * + */ + HoverIcons.prototype.resetActiveArrow = function () { + if (this.activeArrow != null) { + mxUtils.setOpacity(this.activeArrow, this.inactiveOpacity); + this.activeArrow = null; + } + }; + + /** + * + */ + HoverIcons.prototype.getDirection = function () { + var dir = mxConstants.DIRECTION_EAST; + + if (this.activeArrow == this.arrowUp) { + dir = mxConstants.DIRECTION_NORTH; + } + else if (this.activeArrow == this.arrowDown) { + dir = mxConstants.DIRECTION_SOUTH; + } + else if (this.activeArrow == this.arrowLeft) { + dir = mxConstants.DIRECTION_WEST; + } + + return dir; + }; + + /** + * + */ + HoverIcons.prototype.visitNodes = function (visitor) { + for (var i = 0; i < this.elts.length; i++) { + if (this.elts[i] != null) { + visitor(this.elts[i]); + } + } + }; + + /** + * + */ + HoverIcons.prototype.removeNodes = function () { + this.visitNodes(function (elt) { + if (elt.parentNode != null) { + elt.parentNode.removeChild(elt); + } + }); + }; + + /** + * + */ + HoverIcons.prototype.setDisplay = function (display) { + this.visitNodes(function (elt) { + elt.style.display = display; + }); + }; + + /** + * + */ + HoverIcons.prototype.isActive = function () { + return this.activeArrow != null && this.currentState != null; + }; + + /** + * + */ + HoverIcons.prototype.drag = function (evt, x, y) { + this.graph.popupMenuHandler.hideMenu(); + this.graph.stopEditing(false); + + // Checks if state was removed in call to stopEditing above + if (this.currentState != null) { + this.graph.connectionHandler.start(this.currentState, x, y); + this.graph.isMouseTrigger = mxEvent.isMouseEvent(evt); + this.graph.isMouseDown = true; + + // Hides handles for selection cell + var handler = this.graph.selectionCellsHandler.getHandler(this.currentState.cell); + + if (handler != null) { + handler.setHandlesVisible(false); + } + + // Ctrl+shift drag sets source constraint + var es = this.graph.connectionHandler.edgeState; + + if (evt != null && mxEvent.isShiftDown(evt) && mxEvent.isControlDown(evt) && es != null && + mxUtils.getValue(es.style, mxConstants.STYLE_EDGE, null) === 'orthogonalEdgeStyle') { + var direction = this.getDirection(); + es.cell.style = mxUtils.setStyle(es.cell.style, 'sourcePortConstraint', direction); + es.style['sourcePortConstraint'] = direction; + } + } + }; + + /** + * + */ + HoverIcons.prototype.getStateAt = function (state, x, y) { + return this.graph.view.getState(this.graph.getCellAt(x, y)); + }; + + /** + * + */ + HoverIcons.prototype.click = function (state, dir, me) { + var evt = me.getEvent(); + var x = me.getGraphX(); + var y = me.getGraphY(); + + var tmp = this.getStateAt(state, x, y); + + if (tmp != null && this.graph.model.isEdge(tmp.cell) && !mxEvent.isControlDown(evt) && + (tmp.getVisibleTerminalState(true) == state || tmp.getVisibleTerminalState(false) == state)) { + this.graph.setSelectionCell(tmp.cell); + this.reset(); + } + else if (state != null) { + var cells = this.graph.connectVertex(state.cell, dir, this.graph.defaultEdgeLength, evt); + this.graph.selectCellsForConnectVertex(cells, evt, this); + + // Selects only target vertex if one exists + if (cells.length == 2 && this.graph.model.isVertex(cells[1])) { + this.graph.setSelectionCell(cells[1]); + + // Adds hover icons to new target vertex for touch devices + if (mxEvent.isTouchEvent(evt)) { + this.update(this.getState(this.graph.view.getState(cells[1]))); + } + else { + // Hides hover icons after click with mouse + this.reset(); + } + + this.graph.scrollCellToVisible(cells[1]); + } + else { + this.graph.setSelectionCells(cells); + } + } + + me.consume(); + }; + + /** + * + */ + HoverIcons.prototype.reset = function (clearTimeout) { + clearTimeout = (clearTimeout == null) ? true : clearTimeout; + + if (clearTimeout && this.updateThread != null) { + window.clearTimeout(this.updateThread); + } + + this.mouseDownPoint = null; + this.currentState = null; + this.activeArrow = null; + this.removeNodes(); + this.bbox = null; + }; + + /** + * + */ + HoverIcons.prototype.repaint = function () { + this.bbox = null; + + if (this.currentState != null) { + // Checks if cell was deleted + this.currentState = this.getState(this.currentState); + + // Cell was deleted + if (this.currentState != null && + this.graph.model.isVertex(this.currentState.cell) && + this.graph.isCellConnectable(this.currentState.cell)) { + var bds = mxRectangle.fromRectangle(this.currentState); + + // Uses outer bounding box to take rotation into account + if (this.currentState.shape != null && this.currentState.shape.boundingBox != null) { + bds = mxRectangle.fromRectangle(this.currentState.shape.boundingBox); + } + + bds.grow(this.graph.tolerance); + bds.grow(this.arrowSpacing); + + var handler = this.graph.selectionCellsHandler.getHandler(this.currentState.cell); + + if (handler != null) { + bds.x -= handler.horizontalOffset / 2; + bds.y -= handler.verticalOffset / 2; + bds.width += handler.horizontalOffset; + bds.height += handler.verticalOffset; + + // Adds bounding box of rotation handle to avoid overlap + if (handler.rotationShape != null && handler.rotationShape.node != null && + handler.rotationShape.node.style.visibility != 'hidden' && + handler.rotationShape.node.style.display != 'none' && + handler.rotationShape.boundingBox != null) { + bds.add(handler.rotationShape.boundingBox); + } + } + + this.arrowUp.style.left = Math.round(this.currentState.getCenterX() - this.triangleUp.width / 2 - this.tolerance) + 'px'; + this.arrowUp.style.top = Math.round(bds.y - this.triangleUp.height - this.tolerance) + 'px'; + mxUtils.setOpacity(this.arrowUp, this.inactiveOpacity); + + this.arrowRight.style.left = Math.round(bds.x + bds.width - this.tolerance) + 'px'; + this.arrowRight.style.top = Math.round(this.currentState.getCenterY() - this.triangleRight.height / 2 - this.tolerance) + 'px'; + mxUtils.setOpacity(this.arrowRight, this.inactiveOpacity); + + this.arrowDown.style.left = this.arrowUp.style.left; + this.arrowDown.style.top = Math.round(bds.y + bds.height - this.tolerance) + 'px'; + mxUtils.setOpacity(this.arrowDown, this.inactiveOpacity); + + this.arrowLeft.style.left = Math.round(bds.x - this.triangleLeft.width - this.tolerance) + 'px'; + this.arrowLeft.style.top = this.arrowRight.style.top; + mxUtils.setOpacity(this.arrowLeft, this.inactiveOpacity); + + if (this.checkCollisions) { + var right = this.graph.getCellAt(bds.x + bds.width + + this.triangleRight.width / 2, this.currentState.getCenterY()); + var left = this.graph.getCellAt(bds.x - this.triangleLeft.width / 2, this.currentState.getCenterY()); + var top = this.graph.getCellAt(this.currentState.getCenterX(), bds.y - this.triangleUp.height / 2); + var bottom = this.graph.getCellAt(this.currentState.getCenterX(), bds.y + bds.height + this.triangleDown.height / 2); + + // Shows hover icons large cell is behind all directions of current cell + if (right != null && right == left && left == top && top == bottom) { + right = null; + left = null; + top = null; + bottom = null; + } + + var currentGeo = this.graph.getCellGeometry(this.currentState.cell); + + var checkCollision = mxUtils.bind(this, function (cell, arrow) { + var geo = this.graph.model.isVertex(cell) && this.graph.getCellGeometry(cell); + + // Ignores collision if vertex is more than 3 times the size of this vertex + if (cell != null && !this.graph.model.isAncestor(cell, this.currentState.cell) && + (geo == null || currentGeo == null || (geo.height < 6 * currentGeo.height && + geo.width < 6 * currentGeo.width))) { + arrow.style.visibility = 'hidden'; + } + else { + arrow.style.visibility = 'visible'; + } + }); + + checkCollision(right, this.arrowRight); + checkCollision(left, this.arrowLeft); + checkCollision(top, this.arrowUp); + checkCollision(bottom, this.arrowDown); + } + else { + this.arrowLeft.style.visibility = 'visible'; + this.arrowRight.style.visibility = 'visible'; + this.arrowUp.style.visibility = 'visible'; + this.arrowDown.style.visibility = 'visible'; + } + + if (this.graph.tooltipHandler.isEnabled()) { + this.arrowLeft.setAttribute('title', mxResources.get('plusTooltip')); + this.arrowRight.setAttribute('title', mxResources.get('plusTooltip')); + this.arrowUp.setAttribute('title', mxResources.get('plusTooltip')); + this.arrowDown.setAttribute('title', mxResources.get('plusTooltip')); + } + else { + this.arrowLeft.removeAttribute('title'); + this.arrowRight.removeAttribute('title'); + this.arrowUp.removeAttribute('title'); + this.arrowDown.removeAttribute('title'); + } + } + else { + this.reset(); + } + + // Updates bounding box + if (this.currentState != null) { + this.bbox = this.computeBoundingBox(); + + // Adds tolerance for hover + if (this.bbox != null) { + this.bbox.grow(10); + } + } + } + }; + + /** + * + */ + HoverIcons.prototype.computeBoundingBox = function () { + var bbox = (!this.graph.model.isEdge(this.currentState.cell)) ? mxRectangle.fromRectangle(this.currentState) : null; + + this.visitNodes(function (elt) { + if (elt.parentNode != null) { + var tmp = new mxRectangle(elt.offsetLeft, elt.offsetTop, elt.offsetWidth, elt.offsetHeight); + + if (bbox == null) { + bbox = tmp; + } + else { + bbox.add(tmp); + } + } + }); + + return bbox; + }; + + /** + * + */ + HoverIcons.prototype.getState = function (state) { + if (state != null) { + var cell = state.cell; + + // Uses connectable parent vertex if child is not connectable + if (this.graph.getModel().isVertex(cell) && !this.graph.isCellConnectable(cell)) { + var parent = this.graph.getModel().getParent(cell); + + if (this.graph.getModel().isVertex(parent) && this.graph.isCellConnectable(parent)) { + cell = parent; + } + } + + // Ignores locked cells and edges + if (this.graph.isCellLocked(cell) || this.graph.model.isEdge(cell)) { + cell = null; + } + + state = this.graph.view.getState(cell); + } + + return state; + }; + + /** + * + */ + HoverIcons.prototype.update = function (state, x, y) { + if (!this.graph.connectionArrowsEnabled) { + this.reset(); + } + else { + var timeOnTarget = null; + + // Time on target + if (this.prev != state || this.isActive()) { + this.startTime = new Date().getTime(); + this.prev = state; + timeOnTarget = 0; + + if (this.updateThread != null) { + window.clearTimeout(this.updateThread); + } + + if (state != null) { + // Starts timer to update current state with no mouse events + this.updateThread = window.setTimeout(mxUtils.bind(this, function () { + if (!this.isActive() && !this.graph.isMouseDown && + !this.graph.panningHandler.isActive()) { + this.prev = state; + this.update(state, x, y); + } + }), this.updateDelay + 10); + } + } + else if (this.startTime != null) { + timeOnTarget = new Date().getTime() - this.startTime; + } + + this.setDisplay(''); + + if (this.currentState != null && this.currentState != state && timeOnTarget < this.activationDelay && + this.bbox != null && !mxUtils.contains(this.bbox, x, y)) { + this.reset(false); + } + else if (this.currentState != null || timeOnTarget > this.activationDelay) { + if (this.currentState != state && ((timeOnTarget > this.updateDelay && state != null) || + this.bbox == null || x == null || y == null || !mxUtils.contains(this.bbox, x, y))) { + if (state != null && this.graph.isEnabled()) { + this.removeNodes(); + this.setCurrentState(state); + this.repaint(); + + // Resets connection points on other focused cells + if (this.graph.connectionHandler.constraintHandler.currentFocus != state) { + this.graph.connectionHandler.constraintHandler.reset(); + } + } + else { + this.reset(); + } + } + } + } + }; + + /** + * + */ + HoverIcons.prototype.setCurrentState = function (state) { + if (state.style['portConstraint'] != 'eastwest') { + this.graph.container.appendChild(this.arrowUp); + this.graph.container.appendChild(this.arrowDown); + } + + this.graph.container.appendChild(this.arrowRight); + this.graph.container.appendChild(this.arrowLeft); + this.currentState = state; + }; + + (function () { + + /** + * Reset the list of processed edges. + */ + var mxGraphViewResetValidationState = mxGraphView.prototype.resetValidationState; + + mxGraphView.prototype.resetValidationState = function () { + mxGraphViewResetValidationState.apply(this, arguments); + + this.validEdges = []; + }; + + /** + * Updates jumps for valid edges and repaints if needed. + */ + var mxGraphViewValidateCellState = mxGraphView.prototype.validateCellState; + + mxGraphView.prototype.validateCellState = function (cell, recurse) { + var state = this.getState(cell); + + // Forces repaint if jumps change on a valid edge + if (state != null && this.graph.model.isEdge(state.cell) && + state.style != null && state.style[mxConstants.STYLE_CURVED] != 1 && + !state.invalid && this.updateLineJumps(state)) { + this.graph.cellRenderer.redraw(state, false, this.isRendering()); + } + + state = mxGraphViewValidateCellState.apply(this, arguments); + + // Adds to the list of edges that may intersect with later edges + if (state != null && this.graph.model.isEdge(state.cell) && + state.style[mxConstants.STYLE_CURVED] != 1) { + // LATER: Reuse jumps for valid edges + this.validEdges.push(state); + } + + return state; + }; + + /** + * Forces repaint if routed points have changed. + */ + var mxCellRendererIsShapeInvalid = mxCellRenderer.prototype.isShapeInvalid; + + mxCellRenderer.prototype.isShapeInvalid = function (state, shape) { + return mxCellRendererIsShapeInvalid.apply(this, arguments) || + (state.routedPoints != null && shape.routedPoints != null && + !mxUtils.equalPoints(shape.routedPoints, state.routedPoints)) + }; + + + /** + * Updates jumps for invalid edges. + */ + var mxGraphViewUpdateCellState = mxGraphView.prototype.updateCellState; + + mxGraphView.prototype.updateCellState = function (state) { + mxGraphViewUpdateCellState.apply(this, arguments); + + // Updates jumps on invalid edge before repaint + if (this.graph.model.isEdge(state.cell) && + state.style[mxConstants.STYLE_CURVED] != 1) { + this.updateLineJumps(state); + } + }; + + /** + * Updates the jumps between given state and processed edges. + */ + mxGraphView.prototype.updateLineJumps = function (state) { + var pts = state.absolutePoints; + + if (Graph.lineJumpsEnabled) { + var changed = state.routedPoints != null; + var actual = null; + + if (pts != null && this.validEdges != null && + mxUtils.getValue(state.style, 'jumpStyle', 'none') !== 'none') { + var thresh = 0.5 * this.scale; + changed = false; + actual = []; + + // Type 0 means normal waypoint, 1 means jump + function addPoint(type, x, y) { + var rpt = new mxPoint(x, y); + rpt.type = type; + + actual.push(rpt); + var curr = (state.routedPoints != null) ? state.routedPoints[actual.length - 1] : null; + + return curr == null || curr.type != type || curr.x != x || curr.y != y; + }; + + for (var i = 0; i < pts.length - 1; i++) { + var p1 = pts[i + 1]; + var p0 = pts[i]; + var list = []; + + // Ignores waypoints on straight segments + var pn = pts[i + 2]; + + while (i < pts.length - 2 && + mxUtils.ptSegDistSq(p0.x, p0.y, pn.x, pn.y, + p1.x, p1.y) < 1 * this.scale * this.scale) { + p1 = pn; + i++; + pn = pts[i + 2]; + } + + changed = addPoint(0, p0.x, p0.y) || changed; + + // Processes all previous edges + for (var e = 0; e < this.validEdges.length; e++) { + var state2 = this.validEdges[e]; + var pts2 = state2.absolutePoints; + + if (pts2 != null && mxUtils.intersects(state, state2) && state2.style['noJump'] != '1') { + // Compares each segment of the edge with the current segment + for (var j = 0; j < pts2.length - 1; j++) { + var p3 = pts2[j + 1]; + var p2 = pts2[j]; + + // Ignores waypoints on straight segments + pn = pts2[j + 2]; + + while (j < pts2.length - 2 && + mxUtils.ptSegDistSq(p2.x, p2.y, pn.x, pn.y, + p3.x, p3.y) < 1 * this.scale * this.scale) { + p3 = pn; + j++; + pn = pts2[j + 2]; + } + + var pt = mxUtils.intersection(p0.x, p0.y, p1.x, p1.y, p2.x, p2.y, p3.x, p3.y); + + // Handles intersection between two segments + if (pt != null && (Math.abs(pt.x - p2.x) > thresh || + Math.abs(pt.y - p2.y) > thresh) && + (Math.abs(pt.x - p3.x) > thresh || + Math.abs(pt.y - p3.y) > thresh)) { + var dx = pt.x - p0.x; + var dy = pt.y - p0.y; + var temp = { distSq: dx * dx + dy * dy, x: pt.x, y: pt.y }; + + // Intersections must be ordered by distance from start of segment + for (var t = 0; t < list.length; t++) { + if (list[t].distSq > temp.distSq) { + list.splice(t, 0, temp); + temp = null; + + break; + } + } + + // Ignores multiple intersections at segment joint + if (temp != null && (list.length == 0 || + list[list.length - 1].x !== temp.x || + list[list.length - 1].y !== temp.y)) { + list.push(temp); + } + } + } + } + } + + // Adds ordered intersections to routed points + for (var j = 0; j < list.length; j++) { + changed = addPoint(1, list[j].x, list[j].y) || changed; + } + } + + var pt = pts[pts.length - 1]; + changed = addPoint(0, pt.x, pt.y) || changed; + } + + state.routedPoints = actual; + + return changed; + } + else { + return false; + } + }; + + /** + * Overrides painting the actual shape for taking into account jump style. + */ + var mxConnectorPaintLine = mxConnector.prototype.paintLine; + + mxConnector.prototype.paintLine = function (c, absPts, rounded) { + // Required for checking dirty state + this.routedPoints = (this.state != null) ? this.state.routedPoints : null; + + if (this.outline || this.state == null || this.style == null || + this.state.routedPoints == null || this.state.routedPoints.length == 0) { + mxConnectorPaintLine.apply(this, arguments); + } + else { + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, + mxConstants.LINE_ARCSIZE) / 2; + var size = (parseInt(mxUtils.getValue(this.style, 'jumpSize', + Graph.defaultJumpSize)) - 2) / 2 + this.strokewidth; + var style = mxUtils.getValue(this.style, 'jumpStyle', 'none'); + var f = Editor.jumpSizeRatio; + var moveTo = true; + var last = null; + var len = null; + var pts = []; + var n = null; + c.begin(); + + for (var i = 0; i < this.state.routedPoints.length; i++) { + var rpt = this.state.routedPoints[i]; + var pt = new mxPoint(rpt.x / this.scale, rpt.y / this.scale); + + // Takes first and last point from passed-in array + if (i == 0) { + pt = absPts[0]; + } + else if (i == this.state.routedPoints.length - 1) { + pt = absPts[absPts.length - 1]; + } + + var done = false; + + // Type 1 is an intersection + if (last != null && rpt.type == 1) { + // Checks if next/previous points are too close + var next = this.state.routedPoints[i + 1]; + var dx = next.x / this.scale - pt.x; + var dy = next.y / this.scale - pt.y; + var dist = dx * dx + dy * dy; + + if (n == null) { + n = new mxPoint(pt.x - last.x, pt.y - last.y); + len = Math.sqrt(n.x * n.x + n.y * n.y); + n.x = n.x * size / len; + n.y = n.y * size / len; + } + + if (dist > size * size && len > 0) { + var dx = last.x - pt.x; + var dy = last.y - pt.y; + var dist = dx * dx + dy * dy; + + if (dist > size * size) { + var p0 = new mxPoint(pt.x - n.x, pt.y - n.y); + var p1 = new mxPoint(pt.x + n.x, pt.y + n.y); + pts.push(p0); + + this.addPoints(c, pts, rounded, arcSize, false, null, moveTo); + + var f = (Math.round(n.x) < 0 || (Math.round(n.x) == 0 + && Math.round(n.y) <= 0)) ? 1 : -1; + moveTo = false; + + if (style == 'sharp') { + c.lineTo(p0.x - n.y * f, p0.y + n.x * f); + c.lineTo(p1.x - n.y * f, p1.y + n.x * f); + c.lineTo(p1.x, p1.y); + } + else if (style == 'arc') { + f *= 1.3; + c.curveTo(p0.x - n.y * f, p0.y + n.x * f, + p1.x - n.y * f, p1.y + n.x * f, + p1.x, p1.y); + } + else { + c.moveTo(p1.x, p1.y); + moveTo = true; + } + + pts = [p1]; + done = true; + } + } + } + else { + n = null; + } + + if (!done) { + pts.push(pt); + last = pt; + } + } + + this.addPoints(c, pts, rounded, arcSize, false, null, moveTo); + c.stroke(); + } + }; + + /** + * Adds support for snapToPoint style. + */ + var mxGraphViewUpdateFloatingTerminalPoint = mxGraphView.prototype.updateFloatingTerminalPoint; + + mxGraphView.prototype.updateFloatingTerminalPoint = function (edge, start, end, source) { + if (start != null && edge != null && + (start.style['snapToPoint'] == '1' || + edge.style['snapToPoint'] == '1')) { + start = this.getTerminalPort(edge, start, source); + var next = this.getNextPoint(edge, end, source); + + var orth = this.graph.isOrthogonal(edge); + var alpha = mxUtils.toRadians(Number(start.style[mxConstants.STYLE_ROTATION] || '0')); + var center = new mxPoint(start.getCenterX(), start.getCenterY()); + + if (alpha != 0) { + var cos = Math.cos(-alpha); + var sin = Math.sin(-alpha); + next = mxUtils.getRotatedPoint(next, cos, sin, center); + } + + var border = parseFloat(edge.style[mxConstants.STYLE_PERIMETER_SPACING] || 0); + border += parseFloat(edge.style[(source) ? + mxConstants.STYLE_SOURCE_PERIMETER_SPACING : + mxConstants.STYLE_TARGET_PERIMETER_SPACING] || 0); + var pt = this.getPerimeterPoint(start, next, alpha == 0 && orth, border); + + if (alpha != 0) { + var cos = Math.cos(alpha); + var sin = Math.sin(alpha); + pt = mxUtils.getRotatedPoint(pt, cos, sin, center); + } + + edge.setAbsoluteTerminalPoint(this.snapToAnchorPoint(edge, start, end, source, pt), source); + } + else { + mxGraphViewUpdateFloatingTerminalPoint.apply(this, arguments); + } + }; + + mxGraphView.prototype.snapToAnchorPoint = function (edge, start, end, source, pt) { + if (start != null && edge != null) { + var constraints = this.graph.getAllConnectionConstraints(start) + var nearest = null; + var dist = null; + + if (constraints != null) { + for (var i = 0; i < constraints.length; i++) { + var cp = this.graph.getConnectionPoint(start, constraints[i]); + + if (cp != null) { + var tmp = (cp.x - pt.x) * (cp.x - pt.x) + (cp.y - pt.y) * (cp.y - pt.y); + + if (dist == null || tmp < dist) { + nearest = cp; + dist = tmp; + } + } + } + } + + if (nearest != null) { + pt = nearest; + } + } + + return pt; + }; + + /** + * Adds support for placeholders in text elements of shapes. + */ + var mxStencilEvaluateTextAttribute = mxStencil.prototype.evaluateTextAttribute; + + mxStencil.prototype.evaluateTextAttribute = function (node, attribute, shape) { + var result = mxStencilEvaluateTextAttribute.apply(this, arguments); + var placeholders = node.getAttribute('placeholders'); + + if (placeholders == '1' && shape.state != null) { + result = shape.state.view.graph.replacePlaceholders(shape.state.cell, result); + } + + return result; + }; + + /** + * Adds custom stencils defined via shape=stencil(value) style. The value is a base64 encoded, compressed and + * URL encoded XML definition of the shape according to the stencil definition language of mxGraph. + * + * Needs to be in this file to make sure its part of the embed client code. Also the check for ZLib is + * different than for the Editor code. + */ + var mxCellRendererCreateShape = mxCellRenderer.prototype.createShape; + mxCellRenderer.prototype.createShape = function (state) { + if (state.style != null && typeof (pako) !== 'undefined') { + var shape = mxUtils.getValue(state.style, mxConstants.STYLE_SHAPE, null); + + // Extracts and decodes stencil XML if shape has the form shape=stencil(value) + if (shape != null && shape.substring(0, 8) == 'stencil(') { + try { + var stencil = shape.substring(8, shape.length - 1); + var doc = mxUtils.parseXml(state.view.graph.decompress(stencil)); + + return new mxShape(new mxStencil(doc.documentElement)); + } + catch (e) { + if (window.console != null) { + console.error('Error in shape: ' + e); + } + } + } + } + + return mxCellRendererCreateShape.apply(this, arguments); + }; + })(); + + /** + * Overrides stencil registry for dynamic loading of stencils. + */ + /** + * Maps from library names to an array of Javascript filenames, + * which are synchronously loaded. Currently only stencil files + * (.xml) and JS files (.js) are supported. + * IMPORTANT: For embedded diagrams to work entries must also + * be added in EmbedServlet.java. + */ + mxStencilRegistry.libraries = {}; + + /** + * Global switch to disable dynamic loading. + */ + mxStencilRegistry.dynamicLoading = true; + + /** + * Global switch to disable eval for JS (preload all JS instead). + */ + mxStencilRegistry.allowEval = true; + + /** + * Stores all package names that have been dynamically loaded. + * Each package is only loaded once. + */ + mxStencilRegistry.packages = []; + + // Extends the default stencil registry to add dynamic loading + mxStencilRegistry.getStencil = function (name) { + // console.debug("mxStencilRegistry.getStencil name", name) + var result = mxStencilRegistry.stencils[name]; + if (result == null && mxCellRenderer.defaultShapes[name] == null && mxStencilRegistry.dynamicLoading) { + var basename = mxStencilRegistry.getBasenameForStencil(name); + // console.debug("mxStencilRegistry.getStencil basename", basename) + // Loads stencil files and tries again + if (basename != null) { + var libs = mxStencilRegistry.libraries[basename]; + + if (libs != null) { + if (mxStencilRegistry.packages[basename] == null) { + for (var i = 0; i < libs.length; i++) { + var fname = libs[i]; + + if (fname.toLowerCase().substring(fname.length - 4, fname.length) == '.xml') { + mxStencilRegistry.loadStencilSet(fname, null); + } + else if (fname.toLowerCase().substring(fname.length - 3, fname.length) == '.js') { + try { + if (mxStencilRegistry.allowEval) { + var req = mxUtils.load(fname); + + if (req != null && req.getStatus() >= 200 && req.getStatus() <= 299) { + eval.call(window, req.getText()); + } + } + } + catch (e) { + if (window.console != null) { + console.error('error in getStencil:', fname, e); + } + } + } + else { + // FIXME: This does not yet work as the loading is triggered after + // the shape was used in the graph, at which point the keys have + // typically been translated in the calling method. + //mxResources.add(fname); + } + } + + mxStencilRegistry.packages[basename] = 1; + } + } + else { + // Replaces '_-_' with '_' + basename = basename.replace('_-_', '_'); + mxStencilRegistry.loadStencilSet(STENCIL_PATH + '/' + basename + '.xml', null); + } + + result = mxStencilRegistry.stencils[name]; + } + } + + return result; + }; + + // Returns the basename for the given stencil or null if no file must be + // loaded to render the given stencil. + mxStencilRegistry.getBasenameForStencil = function (name) { + var tmp = null; + + if (name != null) { + var parts = name.split('.'); + + if (parts.length > 0 && parts[0] == 'mxgraph') { + tmp = parts[1]; + + for (var i = 2; i < parts.length - 1; i++) { + tmp += '/' + parts[i]; + } + } + } + + return tmp; + }; + + // Loads the given stencil set + mxStencilRegistry.loadStencilSet = function (stencilFile, postStencilLoad, force, async) { + force = (force != null) ? force : false; + + // Uses additional cache for detecting previous load attempts + var xmlDoc = mxStencilRegistry.packages[stencilFile]; + + if (force || xmlDoc == null) { + var install = false; + + if (xmlDoc == null) { + try { + if (async) { + mxStencilRegistry.loadStencil(stencilFile, mxUtils.bind(this, function (xmlDoc2) { + if (xmlDoc2 != null && xmlDoc2.documentElement != null) { + mxStencilRegistry.packages[stencilFile] = xmlDoc2; + install = true; + mxStencilRegistry.parseStencilSet(xmlDoc2.documentElement, postStencilLoad, install); + } + })); + + return; + } + else { + xmlDoc = mxStencilRegistry.loadStencil(stencilFile); + mxStencilRegistry.packages[stencilFile] = xmlDoc; + install = true; + } + } + catch (e) { + if (window.console != null) { + console.error('error in loadStencilSet:', stencilFile, e); + } + } + } + + if (xmlDoc != null && xmlDoc.documentElement != null) { + mxStencilRegistry.parseStencilSet(xmlDoc.documentElement, postStencilLoad, install); + } + } + }; + + // Loads the given stencil XML file. + mxStencilRegistry.loadStencil = function (filename, fn) { + if (fn != null) { + var req = mxUtils.get(filename, mxUtils.bind(this, function (req) { + fn((req.getStatus() >= 200 && req.getStatus() <= 299) ? req.getXml() : null); + })); + } + else { + return mxUtils.load(filename).getXml(); + } + }; + + // Takes array of strings + mxStencilRegistry.parseStencilSets = function (stencils) { + for (var i = 0; i < stencils.length; i++) { + mxStencilRegistry.parseStencilSet(mxUtils.parseXml(stencils[i]).documentElement); + } + }; + + // Parses the given stencil set + mxStencilRegistry.parseStencilSet = function (root, postStencilLoad, install) { + if (root.nodeName == 'stencils') { + var shapes = root.firstChild; + + while (shapes != null) { + if (shapes.nodeName == 'shapes') { + mxStencilRegistry.parseStencilSet(shapes, postStencilLoad, install); + } + + shapes = shapes.nextSibling; + } + } + else { + install = (install != null) ? install : true; + var shape = root.firstChild; + var packageName = ''; + var name = root.getAttribute('name'); + + if (name != null) { + packageName = name + '.'; + } + + while (shape != null) { + if (shape.nodeType == mxConstants.NODETYPE_ELEMENT) { + name = shape.getAttribute('name'); + + if (name != null) { + packageName = packageName.toLowerCase(); + var stencilName = name.replace(/ /g, "_"); + + if (install) { + mxStencilRegistry.addStencil(packageName + stencilName.toLowerCase(), new mxStencil(shape)); + } + + if (postStencilLoad != null) { + var w = shape.getAttribute('w'); + var h = shape.getAttribute('h'); + + w = (w == null) ? 80 : parseInt(w, 10); + h = (h == null) ? 80 : parseInt(h, 10); + + postStencilLoad(packageName, stencilName, name, w, h); + } + } + } + + shape = shape.nextSibling; + } + } + }; + + /** + * These overrides are only added if mxVertexHandler is defined (ie. not in embedded graph) + */ + if (typeof mxVertexHandler != 'undefined') { + (function () { + // Sets colors for handles + mxConstants.HANDLE_FILLCOLOR = '#29b6f2'; + mxConstants.HANDLE_STROKECOLOR = '#0088cf'; + mxConstants.VERTEX_SELECTION_COLOR = '#00a8ff'; + mxConstants.OUTLINE_COLOR = '#00a8ff'; + mxConstants.OUTLINE_HANDLE_FILLCOLOR = '#99ccff'; + mxConstants.OUTLINE_HANDLE_STROKECOLOR = '#00a8ff'; + mxConstants.CONNECT_HANDLE_FILLCOLOR = '#cee7ff'; + mxConstants.EDGE_SELECTION_COLOR = '#00a8ff'; + mxConstants.DEFAULT_VALID_COLOR = '#00a8ff'; + mxConstants.LABEL_HANDLE_FILLCOLOR = '#cee7ff'; + mxConstants.GUIDE_COLOR = '#0088cf'; + mxConstants.HIGHLIGHT_OPACITY = 30; + mxConstants.HIGHLIGHT_SIZE = 5; + + // Enables snapping to off-grid terminals for edge waypoints + mxEdgeHandler.prototype.snapToTerminals = true; + + // Enables guides + mxGraphHandler.prototype.guidesEnabled = true; + + // Enables fading of rubberband + mxRubberband.prototype.fadeOut = true; + + // Alt-move disables guides + mxGuide.prototype.isEnabledForEvent = function (evt) { + return !mxEvent.isAltDown(evt); + }; + + // Extends connection handler to enable ctrl+drag for cloning source cell + // since copyOnConnect is now disabled by default + var mxConnectionHandlerCreateTarget = mxConnectionHandler.prototype.isCreateTarget; + mxConnectionHandler.prototype.isCreateTarget = function (evt) { + return mxEvent.isControlDown(evt) || mxConnectionHandlerCreateTarget.apply(this, arguments); + }; + + // Overrides highlight shape for connection points + mxConstraintHandler.prototype.createHighlightShape = function () { + var hl = new mxEllipse(null, this.highlightColor, this.highlightColor, 0); + hl.opacity = mxConstants.HIGHLIGHT_OPACITY; + + return hl; + }; + + // Overrides edge preview to use current edge shape and default style + mxConnectionHandler.prototype.livePreview = true; + mxConnectionHandler.prototype.cursor = 'crosshair'; + + // Uses current edge style for connect preview + mxConnectionHandler.prototype.createEdgeState = function (me) { + var style = this.graph.createCurrentEdgeStyle(); + var edge = this.graph.createEdge(null, null, null, null, null, style); + var state = new mxCellState(this.graph.view, edge, this.graph.getCellStyle(edge)); + + for (var key in this.graph.currentEdgeStyle) { + state.style[key] = this.graph.currentEdgeStyle[key]; + } + + return state; + }; + + // Overrides dashed state with current edge style + var connectionHandlerCreateShape = mxConnectionHandler.prototype.createShape; + mxConnectionHandler.prototype.createShape = function () { + var shape = connectionHandlerCreateShape.apply(this, arguments); + + shape.isDashed = this.graph.currentEdgeStyle[mxConstants.STYLE_DASHED] == '1'; + + return shape; + } + + // Overrides live preview to keep current style + mxConnectionHandler.prototype.updatePreview = function (valid) { + // do not change color of preview + }; + + // Overrides connection handler to ignore edges instead of not allowing connections + var mxConnectionHandlerCreateMarker = mxConnectionHandler.prototype.createMarker; + mxConnectionHandler.prototype.createMarker = function () { + var marker = mxConnectionHandlerCreateMarker.apply(this, arguments); + + var markerGetCell = marker.getCell; + marker.getCell = mxUtils.bind(this, function (me) { + var result = markerGetCell.apply(this, arguments); + + this.error = null; + + return result; + }); + + return marker; + }; + + /** + * Function: isCellLocked + * + * Returns true if the given cell does not allow new connections to be created. + * This implementation returns false. + */ + mxConnectionHandler.prototype.isCellEnabled = function (cell) { + return !this.graph.isCellLocked(cell); + }; + + /** + * + */ + Graph.prototype.defaultVertexStyle = {}; + + /** + * Contains the default style for edges. + */ + Graph.prototype.defaultEdgeStyle = { + 'edgeStyle': 'orthogonalEdgeStyle', 'rounded': '0', + 'jettySize': 'auto', 'orthogonalLoop': '1' + }; + + /** + * Returns the current edge style as a string. + */ + Graph.prototype.createCurrentEdgeStyle = function () { + var style = 'edgeStyle=' + (this.currentEdgeStyle['edgeStyle'] || 'none') + ';'; + + if (this.currentEdgeStyle['shape'] != null) { + style += 'shape=' + this.currentEdgeStyle['shape'] + ';'; + } + + if (this.currentEdgeStyle['curved'] != null) { + style += 'curved=' + this.currentEdgeStyle['curved'] + ';'; + } + + if (this.currentEdgeStyle['rounded'] != null) { + style += 'rounded=' + this.currentEdgeStyle['rounded'] + ';'; + } + + if (this.currentEdgeStyle['comic'] != null) { + style += 'comic=' + this.currentEdgeStyle['comic'] + ';'; + } + + if (this.currentEdgeStyle['jumpStyle'] != null) { + style += 'jumpStyle=' + this.currentEdgeStyle['jumpStyle'] + ';'; + } + + if (this.currentEdgeStyle['jumpSize'] != null) { + style += 'jumpSize=' + this.currentEdgeStyle['jumpSize'] + ';'; + } + + // Special logic for custom property of elbowEdgeStyle + if (this.currentEdgeStyle['edgeStyle'] == 'elbowEdgeStyle' && this.currentEdgeStyle['elbow'] != null) { + style += 'elbow=' + this.currentEdgeStyle['elbow'] + ';'; + } + + if (this.currentEdgeStyle['html'] != null) { + style += 'html=' + this.currentEdgeStyle['html'] + ';'; + } + else { + style += 'html=1;'; + } + + return style; + }; + + /** + * Hook for subclassers. + */ + Graph.prototype.getPagePadding = function () { + return new mxPoint(0, 0); + }; + + /** + * Loads the stylesheet for this graph. + */ + Graph.prototype.loadStylesheet = function () { + // var node = (this.themes != null) ? this.themes[this.defaultThemeName] : (!mxStyleRegistry.dynamicLoading) ? null : mxUtils.load(STYLE_PATH + '/default.xml').getDocumentElement(); + var node = mxUtils.load(STYLE_PATH + '/default.xml').getDocumentElement(); + + if (node != null) { + var dec = new mxCodec(node.ownerDocument); + dec.decode(node, this.getStylesheet()); + } + }; + + /** + * + */ + Graph.prototype.importGraphModel = function (node, dx, dy, crop) { + dx = (dx != null) ? dx : 0; + dy = (dy != null) ? dy : 0; + + var codec = new mxCodec(node.ownerDocument); + var tempModel = new mxGraphModel(); + codec.decode(node, tempModel); + var cells = [] + + // Clones cells to remove invalid edges + var layers = tempModel.getChildren(this.cloneCell( + tempModel.root, this.isCloneInvalidEdges())); + + if (layers != null) { + // Uses copy as layers are removed from array inside loop + layers = layers.slice(); + + this.model.beginUpdate(); + try { + // Merges into unlocked current layer if one layer is pasted + if (layers.length == 1 && !this.isCellLocked(this.getDefaultParent())) { + cells = this.moveCells(tempModel.getChildren(layers[0]), + dx, dy, false, this.getDefaultParent()); + } + else { + for (var i = 0; i < layers.length; i++) { + cells = cells.concat(this.model.getChildren(this.moveCells( + [layers[i]], dx, dy, false, this.model.getRoot())[0])); + } + } + + if (crop) { + if (this.isGridEnabled()) { + dx = this.snap(dx); + dy = this.snap(dy); + } + + var bounds = this.getBoundingBoxFromGeometry(cells, true); + + if (bounds != null) { + this.moveCells(cells, dx - bounds.x, dy - bounds.y); + } + } + } + finally { + this.model.endUpdate(); + } + } + + return cells; + }; + + /** + * Overrides method to provide connection constraints for shapes. + */ + Graph.prototype.getAllConnectionConstraints = function (terminal, source) { + if (terminal != null) { + var constraints = (terminal.shape != null) ? terminal.shape.getConstraints(terminal.style) : null; + + if (constraints != null) { + return constraints; + } + else { + constraints = mxUtils.getValue(terminal.style, 'points', null); + + if (constraints != null) { + // Requires an array of arrays with x, y (0..1) and an optional + // perimeter (0 or 1), eg. points=[[0,0,1],[0,1,0],[1,1]] + var result = []; + + try { + var c = JSON.parse(constraints); + + for (var i = 0; i < c.length; i++) { + var tmp = c[i]; + result.push(new mxConnectionConstraint(new mxPoint(tmp[0], tmp[1]), (tmp.length > 2) ? tmp[2] != '0' : true)); + } + } + catch (e) { + // ignore + } + + return result; + } + else if (terminal.shape != null) { + if (terminal.shape.stencil != null) { + if (terminal.shape.stencil != null) { + return terminal.shape.stencil.constraints; + } + } + else if (terminal.shape.constraints != null) { + return terminal.shape.constraints; + } + } + } + } + + return null; + }; + + /** + * Inverts the elbow edge style without removing existing styles. + */ + Graph.prototype.flipEdge = function (edge) { + if (edge != null) { + var state = this.view.getState(edge); + var style = (state != null) ? state.style : this.getCellStyle(edge); + + if (style != null) { + var elbow = mxUtils.getValue(style, mxConstants.STYLE_ELBOW, + mxConstants.ELBOW_HORIZONTAL); + var value = (elbow == mxConstants.ELBOW_HORIZONTAL) ? + mxConstants.ELBOW_VERTICAL : mxConstants.ELBOW_HORIZONTAL; + this.setCellStyles(mxConstants.STYLE_ELBOW, value, [edge]); + } + } + }; + + /** + * Disables drill-down for non-swimlanes. + */ + Graph.prototype.isValidRoot = function (cell) { + // Counts non-relative children + var childCount = this.model.getChildCount(cell); + var realChildCount = 0; + + for (var i = 0; i < childCount; i++) { + var child = this.model.getChildAt(cell, i); + + if (this.model.isVertex(child)) { + var geometry = this.getCellGeometry(child); + + if (geometry != null && !geometry.relative) { + realChildCount++; + } + } + } + + return realChildCount > 0 || this.isContainer(cell); + }; + + /** + * Disables drill-down for non-swimlanes. + */ + Graph.prototype.isValidDropTarget = function (cell) { + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return mxUtils.getValue(style, 'part', '0') != '1' && (this.isContainer(cell) || + (mxGraph.prototype.isValidDropTarget.apply(this, arguments) && + mxUtils.getValue(style, 'dropTarget', '1') != '0')); + }; + + /** + * Overrides createGroupCell to set the group style for new groups to 'group'. + */ + Graph.prototype.createGroupCell = function () { + var group = mxGraph.prototype.createGroupCell.apply(this, arguments); + group.setStyle('group'); + + return group; + }; + + /** + * Disables extending parents with stack layouts on add + */ + Graph.prototype.isExtendParentsOnAdd = function (cell) { + var result = mxGraph.prototype.isExtendParentsOnAdd.apply(this, arguments); + + if (result && cell != null && this.layoutManager != null) { + var parent = this.model.getParent(cell); + + if (parent != null) { + var layout = this.layoutManager.getLayout(parent); + + if (layout != null && layout.constructor == mxStackLayout) { + result = false; + } + } + } + + return result; + }; + + /** + * Overrides autosize to add a border. + */ + Graph.prototype.getPreferredSizeForCell = function (cell) { + var result = mxGraph.prototype.getPreferredSizeForCell.apply(this, arguments); + + // Adds buffer + if (result != null) { + result.width += 10; + result.height += 4; + + if (this.gridEnabled) { + result.width = this.snap(result.width); + result.height = this.snap(result.height); + } + } + + return result; + } + + /** + * Turns the given cells and returns the changed cells. + */ + Graph.prototype.turnShapes = function (cells) { + var model = this.getModel(); + var select = []; + + model.beginUpdate(); + try { + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + + if (model.isEdge(cell)) { + var src = model.getTerminal(cell, true); + var trg = model.getTerminal(cell, false); + + model.setTerminal(cell, trg, true); + model.setTerminal(cell, src, false); + + var geo = model.getGeometry(cell); + + if (geo != null) { + geo = geo.clone(); + + if (geo.points != null) { + geo.points.reverse(); + } + + var sp = geo.getTerminalPoint(true); + var tp = geo.getTerminalPoint(false) + + geo.setTerminalPoint(sp, false); + geo.setTerminalPoint(tp, true); + model.setGeometry(cell, geo); + + // Inverts constraints + var edgeState = this.view.getState(cell); + var sourceState = this.view.getState(src); + var targetState = this.view.getState(trg); + + if (edgeState != null) { + var sc = (sourceState != null) ? this.getConnectionConstraint(edgeState, sourceState, true) : null; + var tc = (targetState != null) ? this.getConnectionConstraint(edgeState, targetState, false) : null; + + this.setConnectionConstraint(cell, src, true, tc); + this.setConnectionConstraint(cell, trg, false, sc); + } + + select.push(cell); + } + } + else if (model.isVertex(cell)) { + var geo = this.getCellGeometry(cell); + + if (geo != null) { + // Rotates the size and position in the geometry + geo = geo.clone(); + geo.x += geo.width / 2 - geo.height / 2; + geo.y += geo.height / 2 - geo.width / 2; + var tmp = geo.width; + geo.width = geo.height; + geo.height = tmp; + model.setGeometry(cell, geo); + + // Reads the current direction and advances by 90 degrees + var state = this.view.getState(cell); + + if (state != null) { + var dir = state.style[mxConstants.STYLE_DIRECTION] || 'east'/*default*/; + + if (dir == 'east') { + dir = 'south'; + } + else if (dir == 'south') { + dir = 'west'; + } + else if (dir == 'west') { + dir = 'north'; + } + else if (dir == 'north') { + dir = 'east'; + } + + this.setCellStyles(mxConstants.STYLE_DIRECTION, dir, [cell]); + } + + select.push(cell); + } + } + } + } + finally { + model.endUpdate(); + } + + return select; + }; + + /** + * Returns true if the given stencil contains any placeholder text. + */ + Graph.prototype.stencilHasPlaceholders = function (stencil) { + if (stencil != null && stencil.fgNode != null) { + var node = stencil.fgNode.firstChild; + + while (node != null) { + if (node.nodeName == 'text' && node.getAttribute('placeholders') == '1') { + return true; + } + + node = node.nextSibling; + } + } + + return false; + }; + + /** + * Updates the child cells with placeholders if metadata of a cell has changed. + */ + Graph.prototype.processChange = function (change) { + mxGraph.prototype.processChange.apply(this, arguments); + if (!isNaN(mxValueChange) && change instanceof mxValueChange && change.cell != null && + change.cell.value != null && typeof (change.cell.value) == 'object') { + // Invalidates all descendants with placeholders + var desc = this.model.getDescendants(change.cell); + + // LATER: Check if only label or tooltip have changed + if (desc.length > 0) { + for (var i = 0; i < desc.length; i++) { + var state = this.view.getState(desc[i]); + + if (state != null && state.shape != null && state.shape.stencil != null && + this.stencilHasPlaceholders(state.shape.stencil)) { + this.removeStateForCell(desc[i]); + } + else if (this.isReplacePlaceholders(desc[i])) { + this.view.invalidate(desc[i], false, false); + } + } + } + } + }; + + /** + * Replaces the given element with a span. + */ + Graph.prototype.replaceElement = function (elt, tagName) { + var span = elt.ownerDocument.createElement((tagName != null) ? tagName : 'span'); + var attributes = Array.prototype.slice.call(elt.attributes); + + while (attr = attributes.pop()) { + span.setAttribute(attr.nodeName, attr.nodeValue); + } + + span.innerHTML = elt.innerHTML; + elt.parentNode.replaceChild(span, elt); + }; + + /** + * Handles label changes for XML user objects. + */ + Graph.prototype.updateLabelElements = function (cells, fn, tagName) { + cells = (cells != null) ? cells : this.getSelectionCells(); + var div = document.createElement('div'); + + for (var i = 0; i < cells.length; i++) { + // Changes font tags inside HTML labels + if (this.isHtmlLabel(cells[i])) { + var label = this.convertValueToString(cells[i]); + + if (label != null && label.length > 0) { + div.innerHTML = label; + var elts = div.getElementsByTagName((tagName != null) ? tagName : '*'); + + for (var j = 0; j < elts.length; j++) { + fn(elts[j]); + } + + if (div.innerHTML != label) { + this.cellLabelChanged(cells[i], div.innerHTML); + } + } + } + } + }; + + /** + * Handles label changes for XML user objects. + */ + Graph.prototype.cellLabelChanged = function (cell, value, autoSize) { + // Removes all illegal control characters in user input + value = this.zapGremlins(value); + + this.model.beginUpdate(); + try { + if (cell.value != null && typeof cell.value == 'object') { + if (this.isReplacePlaceholders(cell) && + cell.getAttribute('placeholder') != null) { + // LATER: Handle delete, name change + var name = cell.getAttribute('placeholder'); + var current = cell; + + while (current != null) { + if (current == this.model.getRoot() || (current.value != null && + typeof (current.value) == 'object' && current.hasAttribute(name))) { + this.setAttributeForCell(current, name, value); + + break; + } + + current = this.model.getParent(current); + } + } + + var tmp = cell.value.cloneNode(true); + tmp.setAttribute('label', value); + value = tmp; + } + + mxGraph.prototype.cellLabelChanged.apply(this, arguments); + } + finally { + this.model.endUpdate(); + } + }; + + /** + * Removes transparent empty groups if all children are removed. + */ + Graph.prototype.cellsRemoved = function (cells) { + if (cells != null) { + var dict = new mxDictionary(); + + for (var i = 0; i < cells.length; i++) { + dict.put(cells[i], true); + } + + // LATER: Recurse up the cell hierarchy + var parents = []; + + for (var i = 0; i < cells.length; i++) { + var parent = this.model.getParent(cells[i]); + + if (parent != null && !dict.get(parent)) { + dict.put(parent, true); + parents.push(parent); + } + } + + for (var i = 0; i < parents.length; i++) { + var state = this.view.getState(parents[i]); + + if (state != null && (this.model.isEdge(state.cell) || this.model.isVertex(state.cell)) && this.isCellDeletable(state.cell)) { + var stroke = mxUtils.getValue(state.style, mxConstants.STYLE_STROKECOLOR, mxConstants.NONE); + var fill = mxUtils.getValue(state.style, mxConstants.STYLE_FILLCOLOR, mxConstants.NONE); + + if (stroke == mxConstants.NONE && fill == mxConstants.NONE) { + var allChildren = true; + + for (var j = 0; j < this.model.getChildCount(state.cell) && allChildren; j++) { + if (!dict.get(this.model.getChildAt(state.cell, j))) { + allChildren = false; + } + } + + if (allChildren) { + cells.push(state.cell); + } + } + } + } + } + + mxGraph.prototype.cellsRemoved.apply(this, arguments); + }; + + /** + * Overrides ungroup to check if group should be removed. + */ + Graph.prototype.removeCellsAfterUngroup = function (cells) { + var cellsToRemove = []; + + for (var i = 0; i < cells.length; i++) { + if (this.isCellDeletable(cells[i])) { + var state = this.view.getState(cells[i]); + + if (state != null) { + var stroke = mxUtils.getValue(state.style, mxConstants.STYLE_STROKECOLOR, mxConstants.NONE); + var fill = mxUtils.getValue(state.style, mxConstants.STYLE_FILLCOLOR, mxConstants.NONE); + + if (stroke == mxConstants.NONE && fill == mxConstants.NONE) { + cellsToRemove.push(cells[i]); + } + } + } + } + + cells = cellsToRemove; + + mxGraph.prototype.removeCellsAfterUngroup.apply(this, arguments); + }; + + /** + * Sets the link for the given cell. + */ + Graph.prototype.setLinkForCell = function (cell, link) { + this.setAttributeForCell(cell, 'link', link); + }; + + /** + * Sets the link for the given cell. + */ + Graph.prototype.setTooltipForCell = function (cell, link) { + this.setAttributeForCell(cell, 'tooltip', link); + }; + + /** + * Sets the link for the given cell. + */ + Graph.prototype.setAttributeForCell = function (cell, attributeName, attributeValue) { + var value = null; + + if (cell.value != null && typeof (cell.value) == 'object') { + value = cell.value.cloneNode(true); + } + else { + var doc = mxUtils.createXmlDocument(); + + value = doc.createElement('UserObject'); + value.setAttribute('label', cell.value || ''); + } + + if (attributeValue != null && attributeValue.length > 0) { + value.setAttribute(attributeName, attributeValue); + } + else { + value.removeAttribute(attributeName); + } + + this.model.setValue(cell, value); + }; + + /** + * Overridden to stop moving edge labels between cells. + */ + Graph.prototype.getDropTarget = function (cells, evt, cell, clone) { + var model = this.getModel(); + + // Disables drop into group if alt is pressed + if (mxEvent.isAltDown(evt)) { + return null; + } + + // Disables dragging edge labels out of edges + for (var i = 0; i < cells.length; i++) { + if (this.model.isEdge(this.model.getParent(cells[i]))) { + return null; + } + } + + return mxGraph.prototype.getDropTarget.apply(this, arguments); + }; + + /** + * Overrides double click handling to avoid accidental inserts of new labels in dblClick below. + */ + Graph.prototype.click = function (me) { + mxGraph.prototype.click.call(this, me); + + // Stores state and source for checking in dblClick + this.firstClickState = me.getState(); + this.firstClickSource = me.getSource(); + }; + + /** + * Overrides double click handling to add the tolerance and inserting text. + */ + Graph.prototype.dblClick = function (evt, cell) { + if (this.isEnabled()) { + var pt = mxUtils.convertPoint(this.container, mxEvent.getClientX(evt), mxEvent.getClientY(evt)); + + // Automatically adds new child cells to edges on double click + if (evt != null && !this.model.isVertex(cell)) { + var state = (this.model.isEdge(cell)) ? this.view.getState(cell) : null; + var src = mxEvent.getSource(evt); + + if (this.firstClickState == state && this.firstClickSource == src) { + if (state == null || (state.text == null || state.text.node == null || + (!mxUtils.contains(state.text.boundingBox, pt.x, pt.y) && + !mxUtils.isAncestorNode(state.text.node, mxEvent.getSource(evt))))) { + if ((state == null && !this.isCellLocked(this.getDefaultParent())) || + (state != null && !this.isCellLocked(state.cell))) { + // Avoids accidental inserts on background + if (state != null || (mxClient.IS_VML && src == this.view.getCanvas()) || + (mxClient.IS_SVG && src == this.view.getCanvas().ownerSVGElement)) { + cell = this.addText(pt.x, pt.y, state); + } + } + } + } + } + + mxGraph.prototype.dblClick.call(this, evt, cell); + } + }; + + /** + * Returns a point that specifies the location for inserting cells. + */ + Graph.prototype.getInsertPoint = function () { + var gs = this.getGridSize(); + var dx = this.container.scrollLeft / this.view.scale - this.view.translate.x; + var dy = this.container.scrollTop / this.view.scale - this.view.translate.y; + + if (this.pageVisible) { + var layout = this.getPageLayout(); + var page = this.getPageSize(); + dx = Math.max(dx, layout.x * page.width); + dy = Math.max(dy, layout.y * page.height); + } + + return new mxPoint(this.snap(dx + gs), this.snap(dy + gs)); + }; + + /** + * + */ + Graph.prototype.getFreeInsertPoint = function () { + var view = this.view; + var bds = this.getGraphBounds(); + var pt = this.getInsertPoint(); + + // Places at same x-coord and 2 grid sizes below existing graph + var x = this.snap(Math.round(Math.max(pt.x, bds.x / view.scale - view.translate.x + + ((bds.width == 0) ? 2 * this.gridSize : 0)))); + var y = this.snap(Math.round(Math.max(pt.y, (bds.y + bds.height) / view.scale - view.translate.y + + 2 * this.gridSize))); + + return new mxPoint(x, y); + }; + + /** + * Hook for subclassers to return true if the current insert point was defined + * using a mouse hover event. + */ + Graph.prototype.isMouseInsertPoint = function () { + return false; + }; + + /** + * Adds a new label at the given position and returns the new cell. State is + * an optional edge state to be used as the parent for the label. Vertices + * are not allowed currently as states. + */ + Graph.prototype.addText = function (x, y, state) { + // Creates a new edge label with a predefined text + var label = new mxCell(); + label.value = 'Text'; + label.style = 'text;html=1;resizable=0;points=[];' + label.geometry = new mxGeometry(0, 0, 0, 0); + label.vertex = true; + + if (state != null) { + label.style += 'align=center;verticalAlign=middle;labelBackgroundColor=#ffffff;' + label.geometry.relative = true; + label.connectable = false; + + // Resets the relative location stored inside the geometry + var pt2 = this.view.getRelativePoint(state, x, y); + label.geometry.x = Math.round(pt2.x * 10000) / 10000; + label.geometry.y = Math.round(pt2.y); + + // Resets the offset inside the geometry to find the offset from the resulting point + label.geometry.offset = new mxPoint(0, 0); + pt2 = this.view.getPoint(state, label.geometry); + + var scale = this.view.scale; + label.geometry.offset = new mxPoint(Math.round((x - pt2.x) / scale), Math.round((y - pt2.y) / scale)); + } + else { + label.style += 'autosize=1;align=left;verticalAlign=top;spacingTop=-4;' + + var tr = this.view.translate; + label.geometry.width = 40; + label.geometry.height = 20; + label.geometry.x = Math.round(x / this.view.scale) - tr.x; + label.geometry.y = Math.round(y / this.view.scale) - tr.y; + } + + this.getModel().beginUpdate(); + try { + this.addCells([label], (state != null) ? state.cell : null); + this.fireEvent(new mxEventObject('textInserted', 'cells', [label])); + // Updates size of text after possible change of style via event + this.autoSizeCell(label); + } + finally { + this.getModel().endUpdate(); + } + + return label; + }; + + /** + * + */ + Graph.prototype.getAbsoluteUrl = function (url) { + if (url != null && this.isRelativeUrl(url)) { + if (url.charAt(0) == '#') { + url = this.baseUrl + url; + } + else if (url.charAt(0) == '/') { + url = this.domainUrl + url; + } + else { + url = this.domainPathUrl + url; + } + } + + return url; + }; + + /** + * Adds a handler for clicking on shapes with links. This replaces all links in labels. + */ + Graph.prototype.addClickHandler = function (highlight, beforeClick, onClick) { + // Replaces links in labels for consistent right-clicks + var checkLinks = mxUtils.bind(this, function () { + var links = this.container.getElementsByTagName('a'); + + if (links != null) { + for (var i = 0; i < links.length; i++) { + var href = this.getAbsoluteUrl(links[i].getAttribute('href')); + + if (href != null) { + links[i].setAttribute('rel', this.linkRelation); + links[i].setAttribute('href', href); + + if (beforeClick != null) { + mxEvent.addGestureListeners(links[i], null, null, beforeClick); + } + } + } + } + }); + + this.model.addListener(mxEvent.CHANGE, checkLinks); + checkLinks(); + + var cursor = this.container.style.cursor; + var tol = this.getTolerance(); + var graph = this; + + var mouseListener = + { + currentState: null, + currentLink: null, + highlight: (highlight != null && highlight != '' && highlight != mxConstants.NONE) ? + new mxCellHighlight(graph, highlight, 4) : null, + startX: 0, + startY: 0, + scrollLeft: 0, + scrollTop: 0, + updateCurrentState: function (me) { + var tmp = me.sourceState; + + // Gets topmost intersecting cell with link + if (tmp == null || graph.getLinkForCell(tmp.cell) == null) { + var cell = graph.getCellAt(me.getGraphX(), me.getGraphY(), null, null, null, function (state, x, y) { + return graph.getLinkForCell(state.cell) == null; + }); + + tmp = graph.view.getState(cell); + } + + if (tmp != this.currentState) { + if (this.currentState != null) { + this.clear(); + } + + this.currentState = tmp; + + if (this.currentState != null) { + this.activate(this.currentState); + } + } + }, + mouseDown: function (sender, me) { + this.startX = me.getGraphX(); + this.startY = me.getGraphY(); + this.scrollLeft = graph.container.scrollLeft; + this.scrollTop = graph.container.scrollTop; + + if (this.currentLink == null && graph.container.style.overflow == 'auto') { + graph.container.style.cursor = 'move'; + } + + this.updateCurrentState(me); + }, + mouseMove: function (sender, me) { + if (graph.isMouseDown) { + if (this.currentLink != null) { + var dx = Math.abs(this.startX - me.getGraphX()); + var dy = Math.abs(this.startY - me.getGraphY()); + + if (dx > tol || dy > tol) { + this.clear(); + } + } + } + else { + // Checks for parent link + var linkNode = me.getSource(); + + while (linkNode != null && linkNode.nodeName.toLowerCase() != 'a') { + linkNode = linkNode.parentNode; + } + + if (linkNode != null) { + this.clear(); + } + else { + if (graph.tooltipHandler != null && this.currentLink != null && this.currentState != null) { + graph.tooltipHandler.reset(me, true, this.currentState); + } + + if (this.currentState != null && (me.getState() == this.currentState || me.sourceState == null) && + graph.intersects(this.currentState, me.getGraphX(), me.getGraphY())) { + return; + } + + this.updateCurrentState(me); + } + } + }, + mouseUp: function (sender, me) { + var source = me.getSource(); + var evt = me.getEvent(); + + // Checks for parent link + var linkNode = source; + + while (linkNode != null && linkNode.nodeName.toLowerCase() != 'a') { + linkNode = linkNode.parentNode; + } + + // Ignores clicks on links and collapse/expand icon + if (linkNode == null && + (((Math.abs(this.scrollLeft - graph.container.scrollLeft) < tol && + Math.abs(this.scrollTop - graph.container.scrollTop) < tol) && + (me.sourceState == null || !me.isSource(me.sourceState.control))) && + (((mxEvent.isLeftMouseButton(evt) || mxEvent.isMiddleMouseButton(evt)) && + !mxEvent.isPopupTrigger(evt)) || mxEvent.isTouchEvent(evt)))) { + if (this.currentLink != null) { + var blank = graph.isBlankLink(this.currentLink); + + if ((this.currentLink.substring(0, 5) === 'data:' || + !blank) && beforeClick != null) { + beforeClick(evt, this.currentLink); + } + + if (!mxEvent.isConsumed(evt)) { + var target = (mxEvent.isMiddleMouseButton(evt)) ? '_blank' : + ((blank) ? graph.linkTarget : '_top'); + graph.openLink(this.currentLink, target); + me.consume(); + } + } + else if (onClick != null && !me.isConsumed() && + (Math.abs(this.scrollLeft - graph.container.scrollLeft) < tol && + Math.abs(this.scrollTop - graph.container.scrollTop) < tol) && + (Math.abs(this.startX - me.getGraphX()) < tol && + Math.abs(this.startY - me.getGraphY()) < tol)) { + onClick(me.getEvent()); + } + } + + this.clear(); + }, + activate: function (state) { + this.currentLink = graph.getAbsoluteUrl(graph.getLinkForCell(state.cell)); + + if (this.currentLink != null) { + graph.container.style.cursor = 'pointer'; + + if (this.highlight != null) { + this.highlight.highlight(state); + } + } + }, + clear: function () { + if (graph.container != null) { + graph.container.style.cursor = cursor; + } + + this.currentState = null; + this.currentLink = null; + + if (this.highlight != null) { + this.highlight.hide(); + } + + if (graph.tooltipHandler != null) { + graph.tooltipHandler.hide(); + } + } + }; + + // Ignores built-in click handling + graph.click = function (me) { }; + graph.addMouseListener(mouseListener); + + mxEvent.addListener(document, 'mouseleave', function (evt) { + mouseListener.clear(); + }); + }; + + /** + * Duplicates the given cells and returns the duplicates. + */ + Graph.prototype.duplicateCells = function (cells, append) { + cells = (cells != null) ? cells : this.getSelectionCells(); + append = (append != null) ? append : true; + + cells = this.model.getTopmostCells(cells); + + var model = this.getModel(); + var s = this.gridSize; + var select = []; + + model.beginUpdate(); + try { + var clones = this.cloneCells(cells, false, null, true); + + for (var i = 0; i < cells.length; i++) { + var parent = model.getParent(cells[i]); + var child = this.moveCells([clones[i]], s, s, false)[0]; + select.push(child); + + if (append) { + model.add(parent, clones[i]); + } + else { + // Maintains child index by inserting after clone in parent + var index = parent.getIndex(cells[i]); + model.add(parent, clones[i], index + 1); + } + } + } + finally { + model.endUpdate(); + } + + return select; + }; + + /** + * Inserts the given image at the cursor in a content editable text box using + * the insertimage command on the document instance. + */ + Graph.prototype.insertImage = function (newValue, w, h) { + // To find the new image, we create a list of all existing links first + if (newValue != null) { + var tmp = this.cellEditor.textarea.getElementsByTagName('img'); + var oldImages = []; + + for (var i = 0; i < tmp.length; i++) { + oldImages.push(tmp[i]); + } + + // LATER: Fix inserting link/image in IE8/quirks after focus lost + document.execCommand('insertimage', false, newValue); + + // Sets size of new image + var newImages = this.cellEditor.textarea.getElementsByTagName('img'); + + if (newImages.length == oldImages.length + 1) { + // Inverse order in favor of appended images + for (var i = newImages.length - 1; i >= 0; i--) { + if (i == 0 || newImages[i] != oldImages[i - 1]) { + // Workaround for lost styles during undo and redo is using attributes + newImages[i].setAttribute('width', w); + newImages[i].setAttribute('height', h); + + break; + } + } + } + } + }; + + /** + * Inserts the given image at the cursor in a content editable text box using + * the insertimage command on the document instance. + */ + Graph.prototype.insertLink = function (value) { + if (value.length == 0) { + document.execCommand('unlink', false); + } + else if (mxClient.IS_FF) { + // Workaround for Firefox that adds a new link and removes + // the href from the inner link if its parent is a span is + // to remove all inner links inside the new outer link + var tmp = this.cellEditor.textarea.getElementsByTagName('a'); + var oldLinks = []; + + for (var i = 0; i < tmp.length; i++) { + oldLinks.push(tmp[i]); + } + + document.execCommand('createlink', false, mxUtils.trim(value)); + + // Finds the new link element + var newLinks = this.cellEditor.textarea.getElementsByTagName('a'); + + if (newLinks.length == oldLinks.length + 1) { + // Inverse order in favor of appended links + for (var i = newLinks.length - 1; i >= 0; i--) { + if (newLinks[i] != oldLinks[i - 1]) { + // Removes all inner links from the new link and + // moves the children to the inner link parent + var tmp = newLinks[i].getElementsByTagName('a'); + + while (tmp.length > 0) { + var parent = tmp[0].parentNode; + + while (tmp[0].firstChild != null) { + parent.insertBefore(tmp[0].firstChild, tmp[0]); + } + + parent.removeChild(tmp[0]); + } + + break; + } + } + } + } + else { + // LATER: Fix inserting link/image in IE8/quirks after focus lost + document.execCommand('createlink', false, mxUtils.trim(value)); + } + }; + + /** + * + * @param cell + * @returns {Boolean} + */ + Graph.prototype.isCellResizable = function (cell) { + var result = mxGraph.prototype.isCellResizable.apply(this, arguments); + + var state = this.view.getState(cell); + var style = (state != null) ? state.style : this.getCellStyle(cell); + + return result || (mxUtils.getValue(style, mxConstants.STYLE_RESIZABLE, '1') != '0' && + style[mxConstants.STYLE_WHITE_SPACE] == 'wrap'); + }; + + /** + * Function: distributeCells + * + * Distribuets the centers of the given cells equally along the available + * horizontal or vertical space. + * + * Parameters: + * + * horizontal - Boolean that specifies the direction of the distribution. + * cells - Optional array of to be distributed. Edges are ignored. + */ + Graph.prototype.distributeCells = function (horizontal, cells) { + if (cells == null) { + cells = this.getSelectionCells(); + } + + if (cells != null && cells.length > 1) { + var vertices = []; + var max = null; + var min = null; + + for (var i = 0; i < cells.length; i++) { + if (this.getModel().isVertex(cells[i])) { + var state = this.view.getState(cells[i]); + + if (state != null) { + var tmp = (horizontal) ? state.getCenterX() : state.getCenterY(); + max = (max != null) ? Math.max(max, tmp) : tmp; + min = (min != null) ? Math.min(min, tmp) : tmp; + + vertices.push(state); + } + } + } + + if (vertices.length > 2) { + vertices.sort(function (a, b) { + return (horizontal) ? a.x - b.x : a.y - b.y; + }); + + var t = this.view.translate; + var s = this.view.scale; + + min = min / s - ((horizontal) ? t.x : t.y); + max = max / s - ((horizontal) ? t.x : t.y); + + this.getModel().beginUpdate(); + try { + var dt = (max - min) / (vertices.length - 1); + var t0 = min; + + for (var i = 1; i < vertices.length - 1; i++) { + var pstate = this.view.getState(this.model.getParent(vertices[i].cell)); + var geo = this.getCellGeometry(vertices[i].cell); + t0 += dt; + + if (geo != null && pstate != null) { + geo = geo.clone(); + + if (horizontal) { + geo.x = Math.round(t0 - geo.width / 2) - pstate.origin.x; + } + else { + geo.y = Math.round(t0 - geo.height / 2) - pstate.origin.y; + } + + this.getModel().setGeometry(vertices[i].cell, geo); + } + } + } + finally { + this.getModel().endUpdate(); + } + } + } + + return cells; + }; + + /** + * Adds meta-drag an Mac. + * @param evt + * @returns + */ + Graph.prototype.isCloneEvent = function (evt) { + return (mxClient.IS_MAC && mxEvent.isMetaDown(evt)) || mxEvent.isControlDown(evt); + }; + + /** + * Translates this point by the given vector. + * + * @param {number} dx X-coordinate of the translation. + * @param {number} dy Y-coordinate of the translation. + */ + Graph.prototype.encodeCells = function (cells) { + var clones = this.cloneCells(cells); + + // Creates a dictionary for fast lookups + var dict = new mxDictionary(); + + for (var i = 0; i < cells.length; i++) { + dict.put(cells[i], true); + } + + // Checks for orphaned relative children and makes absolute + for (var i = 0; i < clones.length; i++) { + var state = this.view.getState(cells[i]); + + if (state != null) { + var geo = this.getCellGeometry(clones[i]); + + if (geo != null && geo.relative && !this.model.isEdge(cells[i]) && + !dict.get(this.model.getParent(cells[i]))) { + geo.relative = false; + geo.x = state.x / state.view.scale - state.view.translate.x; + geo.y = state.y / state.view.scale - state.view.translate.y; + } + } + } + + var codec = new mxCodec(); + var model = new mxGraphModel(); + var parent = model.getChildAt(model.getRoot(), 0); + + for (var i = 0; i < cells.length; i++) { + model.add(parent, clones[i]); + } + + return codec.encode(model); + }; + + /** + * Translates this point by the given vector. + * + * @param {number} dx X-coordinate of the translation. + * @param {number} dy Y-coordinate of the translation. + */ + Graph.prototype.createSvgImageExport = function () { + var exp = new mxImageExport(); + + // Adds hyperlinks (experimental) + exp.getLinkForCellState = mxUtils.bind(this, function (state, canvas) { + return this.getLinkForCell(state.cell); + }); + + return exp; + }; + + /** + * Translates this point by the given vector. + * + * @param {number} dx X-coordinate of the translation. + * @param {number} dy Y-coordinate of the translation. + */ + Graph.prototype.getSvg = function (background, scale, border, nocrop, crisp, + ignoreSelection, showText, imgExport, linkTarget, hasShadow) { + //Disable Css Transforms if it is used + var origUseCssTrans = this.useCssTransforms; + + if (origUseCssTrans) { + this.useCssTransforms = false; + this.view.revalidate(); + this.sizeDidChange(); + } + + try { + scale = (scale != null) ? scale : 1; + border = (border != null) ? border : 0; + crisp = (crisp != null) ? crisp : true; + ignoreSelection = (ignoreSelection != null) ? ignoreSelection : true; + showText = (showText != null) ? showText : true; + + var bounds = (ignoreSelection || nocrop) ? + this.getGraphBounds() : this.getBoundingBox(this.getSelectionCells()); + + if (bounds == null) { + throw Error(mxResources.get('drawingEmpty')); + } + + var vs = this.view.scale; + + // Prepares SVG document that holds the output + var svgDoc = mxUtils.createXmlDocument(); + var root = (svgDoc.createElementNS != null) ? + svgDoc.createElementNS(mxConstants.NS_SVG, 'svg') : svgDoc.createElement('svg'); + + if (background != null) { + if (root.style != null) { + root.style.backgroundColor = background; + } + else { + root.setAttribute('style', 'background-color:' + background); + } + } + + if (svgDoc.createElementNS == null) { + root.setAttribute('xmlns', mxConstants.NS_SVG); + root.setAttribute('xmlns:xlink', mxConstants.NS_XLINK); + } + else { + // KNOWN: Ignored in IE9-11, adds namespace for each image element instead. No workaround. + root.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', mxConstants.NS_XLINK); + } + + var s = scale / vs; + var w = Math.max(1, Math.ceil(bounds.width * s) + 2 * border) + ((hasShadow) ? 5 : 0); + var h = Math.max(1, Math.ceil(bounds.height * s) + 2 * border) + ((hasShadow) ? 5 : 0); + + root.setAttribute('version', '1.1'); + root.setAttribute('width', w + 'px'); + root.setAttribute('height', h + 'px'); + root.setAttribute('viewBox', ((crisp) ? '-0.5 -0.5' : '0 0') + ' ' + w + ' ' + h); + svgDoc.appendChild(root); + + // Renders graph. Offset will be multiplied with state's scale when painting state. + // TextOffset only seems to affect FF output but used everywhere for consistency. + var svgCanvas = this.createSvgCanvas(root); + svgCanvas.foOffset = (crisp) ? -0.5 : 0; + svgCanvas.textOffset = (crisp) ? -0.5 : 0; + svgCanvas.imageOffset = (crisp) ? -0.5 : 0; + svgCanvas.translate(Math.floor((border / scale - bounds.x) / vs), + Math.floor((border / scale - bounds.y) / vs)); + + // Convert HTML entities + var htmlConverter = document.createElement('textarea'); + + // Adds simple text fallback for viewers with no support for foreignObjects + var createAlternateContent = svgCanvas.createAlternateContent; + svgCanvas.createAlternateContent = function (fo, x, y, w, h, str, align, valign, wrap, format, overflow, clip, rotation) { + var s = this.state; + + // Assumes a max character width of 0.2em + if (this.foAltText != null && (w == 0 || (s.fontSize != 0 && str.length < (w * 5) / s.fontSize))) { + var alt = this.createElement('text'); + alt.setAttribute('x', Math.round(w / 2)); + alt.setAttribute('y', Math.round((h + s.fontSize) / 2)); + alt.setAttribute('fill', s.fontColor || 'black'); + alt.setAttribute('text-anchor', 'middle'); + alt.setAttribute('font-size', Math.round(s.fontSize) + 'px'); + alt.setAttribute('font-family', s.fontFamily); + + if ((s.fontStyle & mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD) { + alt.setAttribute('font-weight', 'bold'); + } + + if ((s.fontStyle & mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC) { + alt.setAttribute('font-style', 'italic'); + } + + if ((s.fontStyle & mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE) { + alt.setAttribute('text-decoration', 'underline'); + } + + try { + htmlConverter.innerHTML = str; + alt.textContent = htmlConverter.value; + + return alt; + } + catch (e) { + return createAlternateContent.apply(this, arguments); + } + } + else { + return createAlternateContent.apply(this, arguments); + } + }; + + // Paints background image + var bgImg = this.backgroundImage; + + if (bgImg != null) { + var s2 = vs / scale; + var tr = this.view.translate; + var tmp = new mxRectangle(tr.x * s2, tr.y * s2, bgImg.width * s2, bgImg.height * s2); + + // Checks if visible + if (mxUtils.intersects(bounds, tmp)) { + svgCanvas.image(tr.x, tr.y, bgImg.width, bgImg.height, bgImg.src, true); + } + } + + svgCanvas.scale(s); + svgCanvas.textEnabled = showText; + + imgExport = (imgExport != null) ? imgExport : this.createSvgImageExport(); + var imgExportDrawCellState = imgExport.drawCellState; + + // Implements ignoreSelection flag + imgExport.drawCellState = function (state, canvas) { + var graph = state.view.graph; + var selected = graph.isCellSelected(state.cell); + var parent = graph.model.getParent(state.cell); + + // Checks if parent cell is selected + while (!ignoreSelection && !selected && parent != null) { + selected = graph.isCellSelected(parent); + parent = graph.model.getParent(parent); + } + + if (ignoreSelection || selected) { + imgExportDrawCellState.apply(this, arguments); + } + }; + + imgExport.drawState(this.getView().getState(this.model.root), svgCanvas); + this.updateSvgLinks(root, linkTarget, true); + + return root; + } + finally { + if (origUseCssTrans) { + this.useCssTransforms = true; + this.view.revalidate(); + this.sizeDidChange(); + } + } + }; + + /** + * Hook for creating the canvas used in getSvg. + */ + Graph.prototype.updateSvgLinks = function (node, target, removeCustom) { + var links = node.getElementsByTagName('a'); + + for (var i = 0; i < links.length; i++) { + var href = links[i].getAttribute('href'); + + if (href == null) { + href = links[i].getAttribute('xlink:href'); + } + + if (href != null) { + if (target != null && /^https?:\/\//.test(href)) { + links[i].setAttribute('target', target); + } + else if (removeCustom && this.isCustomLink(href)) { + links[i].setAttribute('href', 'javascript:void(0);'); + } + } + } + }; + + /** + * Hook for creating the canvas used in getSvg. + */ + Graph.prototype.createSvgCanvas = function (node) { + return new mxSvgCanvas2D(node); + }; + + /** + * Returns the first ancestor of the current selection with the given name. + */ + Graph.prototype.getSelectedElement = function () { + var node = null; + + if (window.getSelection) { + var sel = window.getSelection(); + + if (sel.getRangeAt && sel.rangeCount) { + var range = sel.getRangeAt(0); + node = range.commonAncestorContainer; + } + } + else if (document.selection) { + node = document.selection.createRange().parentElement(); + } + + return node; + }; + + /** + * Returns the first ancestor of the current selection with the given name. + */ + Graph.prototype.getParentByName = function (node, name, stopAt) { + while (node != null) { + if (node.nodeName == name) { + return node; + } + + if (node == stopAt) { + return null; + } + + node = node.parentNode; + } + + return node; + }; + + /** + * Selects the given node. + */ + Graph.prototype.selectNode = function (node) { + var sel = null; + + // IE9 and non-IE + if (window.getSelection) { + sel = window.getSelection(); + + if (sel.getRangeAt && sel.rangeCount) { + var range = document.createRange(); + range.selectNode(node); + sel.removeAllRanges(); + sel.addRange(range); + } + } + // IE < 9 + else if ((sel = document.selection) && sel.type != 'Control') { + var originalRange = sel.createRange(); + originalRange.collapse(true); + var range = sel.createRange(); + range.setEndPoint('StartToStart', originalRange); + range.select(); + } + }; + + /** + * Inserts a new row into the given table. + */ + Graph.prototype.insertRow = function (table, index) { + var bd = table.tBodies[0]; + var cells = bd.rows[0].cells; + var cols = 0; + + // Counts columns including colspans + for (var i = 0; i < cells.length; i++) { + var colspan = cells[i].getAttribute('colspan'); + cols += (colspan != null) ? parseInt(colspan) : 1; + } + + var row = bd.insertRow(index); + + for (var i = 0; i < cols; i++) { + mxUtils.br(row.insertCell(-1)); + } + + return row.cells[0]; + }; + + /** + * Deletes the given column. + */ + Graph.prototype.deleteRow = function (table, index) { + table.tBodies[0].deleteRow(index); + }; + + /** + * Deletes the given column. + */ + Graph.prototype.insertColumn = function (table, index) { + var hd = table.tHead; + + if (hd != null) { + // TODO: use colIndex + for (var h = 0; h < hd.rows.length; h++) { + var th = document.createElement('th'); + hd.rows[h].appendChild(th); + mxUtils.br(th); + } + } + + var bd = table.tBodies[0]; + + for (var i = 0; i < bd.rows.length; i++) { + var cell = bd.rows[i].insertCell(index); + mxUtils.br(cell); + } + + return bd.rows[0].cells[(index >= 0) ? index : bd.rows[0].cells.length - 1]; + }; + + /** + * Deletes the given column. + */ + Graph.prototype.deleteColumn = function (table, index) { + if (index >= 0) { + var bd = table.tBodies[0]; + var rows = bd.rows; + + for (var i = 0; i < rows.length; i++) { + if (rows[i].cells.length > index) { + rows[i].deleteCell(index); + } + } + } + }; + + /** + * Inserts the given HTML at the caret position (no undo). + */ + Graph.prototype.pasteHtmlAtCaret = function (html) { + var sel, range; + + // IE9 and non-IE + if (window.getSelection) { + sel = window.getSelection(); + + if (sel.getRangeAt && sel.rangeCount) { + range = sel.getRangeAt(0); + range.deleteContents(); + + // Range.createContextualFragment() would be useful here but is + // only relatively recently standardized and is not supported in + // some browsers (IE9, for one) + var el = document.createElement("div"); + el.innerHTML = html; + var frag = document.createDocumentFragment(), node; + + while ((node = el.firstChild)) { + lastNode = frag.appendChild(node); + } + + range.insertNode(frag); + } + } + // IE < 9 + else if ((sel = document.selection) && sel.type != "Control") { + // FIXME: Does not work if selection is empty + sel.createRange().pasteHTML(html); + } + }; + + /** + * Creates an anchor elements for handling the given link in the + * hint that is shown when the cell is selected. + */ + Graph.prototype.createLinkForHint = function (link, label) { + link = (link != null) ? link : 'javascript:void(0);'; + + if (label == null || label.length == 0) { + if (this.isCustomLink(link)) { + label = this.getLinkTitle(link); + } + else { + label = link; + } + } + + // Helper function to shorten strings + function short(str, max) { + if (str.length > max) { + str = str.substring(0, Math.round(max / 2)) + '...' + + str.substring(str.length - Math.round(max / 4)); + } + + return str; + }; + + var a = document.createElement('a'); + a.setAttribute('rel', this.linkRelation); + a.setAttribute('href', this.getAbsoluteUrl(link)); + a.setAttribute('title', short((this.isCustomLink(link)) ? + this.getLinkTitle(link) : link, 80)); + + if (this.linkTarget != null) { + a.setAttribute('target', this.linkTarget); + } + + // Adds shortened label to link + mxUtils.write(a, short(label, 40)); + + // Handles custom links + if (this.isCustomLink(link)) { + mxEvent.addListener(a, 'click', mxUtils.bind(this, function (evt) { + this.customLinkClicked(link); + mxEvent.consume(evt); + })); + } + + return a; + }; + + /** + * Customized graph for touch devices. + */ + Graph.prototype.initTouch = function () { + // Disables new connections via "hotspot" + this.connectionHandler.marker.isEnabled = function () { + return this.graph.connectionHandler.first != null; + }; + + // Hides menu when editing starts + this.addListener(mxEvent.START_EDITING, function (sender, evt) { + this.popupMenuHandler.hideMenu(); + }); + + // Adds custom hit detection if native hit detection found no cell + var graphUpdateMouseEvent = this.updateMouseEvent; + this.updateMouseEvent = function (me) { + me = graphUpdateMouseEvent.apply(this, arguments); + + if (mxEvent.isTouchEvent(me.getEvent()) && me.getState() == null) { + var cell = this.getCellAt(me.graphX, me.graphY); + + if (cell != null && this.isSwimlane(cell) && this.hitsSwimlaneContent(cell, me.graphX, me.graphY)) { + cell = null; + } + else { + me.state = this.view.getState(cell); + + if (me.state != null && me.state.shape != null) { + this.container.style.cursor = me.state.shape.node.style.cursor; + } + } + } + + if (me.getState() == null && this.isEnabled()) { + this.container.style.cursor = 'default'; + } + + return me; + }; + + // Context menu trigger implementation depending on current selection state + // combined with support for normal popup trigger. + var cellSelected = false; + var selectionEmpty = false; + var menuShowing = false; + + var oldFireMouseEvent = this.fireMouseEvent; + + this.fireMouseEvent = function (evtName, me, sender) { + if (evtName == mxEvent.MOUSE_DOWN) { + // For hit detection on edges + me = this.updateMouseEvent(me); + + cellSelected = this.isCellSelected(me.getCell()); + selectionEmpty = this.isSelectionEmpty(); + menuShowing = this.popupMenuHandler.isMenuShowing(); + } + + oldFireMouseEvent.apply(this, arguments); + }; + + // Shows popup menu if cell was selected or selection was empty and background was clicked + // FIXME: Conflicts with mxPopupMenuHandler.prototype.getCellForPopupEvent in Editor.js by + // selecting parent for selected children in groups before this check can be made. + this.popupMenuHandler.mouseUp = mxUtils.bind(this, function (sender, me) { + this.popupMenuHandler.popupTrigger = !this.isEditing() && this.isEnabled() && + (me.getState() == null || !me.isSource(me.getState().control)) && + (this.popupMenuHandler.popupTrigger || (!menuShowing && !mxEvent.isMouseEvent(me.getEvent()) && + ((selectionEmpty && me.getCell() == null && this.isSelectionEmpty()) || + (cellSelected && this.isCellSelected(me.getCell()))))); + mxPopupMenuHandler.prototype.mouseUp.apply(this.popupMenuHandler, arguments); + }); + }; + + /** + * HTML in-place editor + */ + mxCellEditor.prototype.isContentEditing = function () { + var state = this.graph.view.getState(this.editingCell); + + return state != null && state.style['html'] == 1; + }; + + /** + * Creates the keyboard event handler for the current graph and history. + */ + mxCellEditor.prototype.saveSelection = function () { + if (window.getSelection) { + var sel = window.getSelection(); + + if (sel.getRangeAt && sel.rangeCount) { + var ranges = []; + + for (var i = 0, len = sel.rangeCount; i < len; ++i) { + ranges.push(sel.getRangeAt(i)); + } + + return ranges; + } + } + else if (document.selection && document.selection.createRange) { + return document.selection.createRange(); + } + + return null; + }; + + /** + * Creates the keyboard event handler for the current graph and history. + */ + mxCellEditor.prototype.restoreSelection = function (savedSel) { + try { + if (savedSel) { + if (window.getSelection) { + sel = window.getSelection(); + sel.removeAllRanges(); + + for (var i = 0, len = savedSel.length; i < len; ++i) { + sel.addRange(savedSel[i]); + } + } + else if (document.selection && savedSel.select) { + savedSel.select(); + } + } + } + catch (e) { + // ignore + } + }; + + /** + * Handling of special nl2Br style for not converting newlines to breaks in HTML labels. + * NOTE: Since it's easier to set this when the label is created we assume that it does + * not change during the lifetime of the mxText instance. + */ + var mxCellRendererInitializeLabel = mxCellRenderer.prototype.initializeLabel; + mxCellRenderer.prototype.initializeLabel = function (state) { + if (state.text != null) { + state.text.replaceLinefeeds = mxUtils.getValue(state.style, 'nl2Br', '1') != '0'; + } + + mxCellRendererInitializeLabel.apply(this, arguments); + }; + + var mxConstraintHandlerUpdate = mxConstraintHandler.prototype.update; + mxConstraintHandler.prototype.update = function (me, source) { + if (this.isKeepFocusEvent(me) || !mxEvent.isAltDown(me.getEvent())) { + mxConstraintHandlerUpdate.apply(this, arguments); + } + else { + this.reset(); + } + }; + + /** + * No dashed shapes. + */ + mxGuide.prototype.createGuideShape = function (horizontal) { + var guide = new mxPolyline([], mxConstants.GUIDE_COLOR, mxConstants.GUIDE_STROKEWIDTH); + + return guide; + }; + + /** + * HTML in-place editor + */ + mxCellEditor.prototype.escapeCancelsEditing = false; + + var mxCellEditorStartEditing = mxCellEditor.prototype.startEditing; + mxCellEditor.prototype.startEditing = function (cell, trigger) { + mxCellEditorStartEditing.apply(this, arguments); + + // Overrides class in case of HTML content to add + // dashed borders for divs and table cells + var state = this.graph.view.getState(cell); + + if (state != null && state.style['html'] == 1) { + this.textarea.className = 'mxCellEditor geContentEditable'; + } + else { + this.textarea.className = 'mxCellEditor mxPlainTextEditor'; + } + + // Toggles markup vs wysiwyg mode + this.codeViewMode = false; + + // Stores current selection range when switching between markup and code + this.switchSelectionState = null; + + // Selects editing cell + this.graph.setSelectionCell(cell); + + // Enables focus outline for edges and edge labels + var parent = this.graph.getModel().getParent(cell); + var geo = this.graph.getCellGeometry(cell); + + if ((this.graph.getModel().isEdge(parent) && geo != null && geo.relative) || + this.graph.getModel().isEdge(cell)) { + // Quirks does not support outline at all so use border instead + if (mxClient.IS_QUIRKS) { + this.textarea.style.border = 'gray dotted 1px'; + } + // IE>8 and FF on Windows uses outline default of none + else if (mxClient.IS_IE || mxClient.IS_IE11 || (mxClient.IS_FF && mxClient.IS_WIN)) { + this.textarea.style.outline = 'gray dotted 1px'; + } + else { + this.textarea.style.outline = ''; + } + } + else if (mxClient.IS_QUIRKS) { + this.textarea.style.outline = 'none'; + this.textarea.style.border = ''; + } + } + + /** + * HTML in-place editor + */ + var cellEditorInstallListeners = mxCellEditor.prototype.installListeners; + mxCellEditor.prototype.installListeners = function (elt) { + cellEditorInstallListeners.apply(this, arguments); + + // Adds a reference from the clone to the original node, recursively + function reference(node, clone) { + clone.originalNode = node; + + node = node.firstChild; + var child = clone.firstChild; + + while (node != null && child != null) { + reference(node, child); + node = node.nextSibling; + child = child.nextSibling; + } + + return clone; + }; + + // Checks the given node for new nodes, recursively + function checkNode(node, clone) { + if (node != null) { + if (clone.originalNode != node) { + cleanNode(node); + } + else { + node = node.firstChild; + clone = clone.firstChild; + + while (node != null) { + var nextNode = node.nextSibling; + + if (clone == null) { + cleanNode(node); + } + else { + checkNode(node, clone); + clone = clone.nextSibling; + } + + node = nextNode; + } + } + } + }; + + // Removes unused DOM nodes and attributes, recursively + function cleanNode(node) { + var child = node.firstChild; + + while (child != null) { + var next = child.nextSibling; + cleanNode(child); + child = next; + } + + if ((node.nodeType != 1 || (node.nodeName !== 'BR' && node.firstChild == null)) && + (node.nodeType != 3 || mxUtils.trim(mxUtils.getTextContent(node)).length == 0)) { + node.parentNode.removeChild(node); + } + else { + // Removes linefeeds + if (node.nodeType == 3) { + mxUtils.setTextContent(node, mxUtils.getTextContent(node).replace(/\n|\r/g, '')); + } + + // Removes CSS classes and styles (for Word and Excel) + if (node.nodeType == 1) { + node.removeAttribute('style'); + node.removeAttribute('class'); + node.removeAttribute('width'); + node.removeAttribute('cellpadding'); + node.removeAttribute('cellspacing'); + node.removeAttribute('border'); + } + } + }; + + // Handles paste from Word, Excel etc by removing styles, classnames and unused nodes + // LATER: Fix undo/redo for paste + if (!mxClient.IS_QUIRKS && document.documentMode !== 7 && document.documentMode !== 8) { + mxEvent.addListener(this.textarea, 'paste', mxUtils.bind(this, function (evt) { + var clone = reference(this.textarea, this.textarea.cloneNode(true)); + + window.setTimeout(mxUtils.bind(this, function () { + checkNode(this.textarea, clone); + }), 0); + })); + } + }; + + mxCellEditor.prototype.toggleViewMode = function () { + var state = this.graph.view.getState(this.editingCell); + var nl2Br = state != null && mxUtils.getValue(state.style, 'nl2Br', '1') != '0'; + var tmp = this.saveSelection(); + + if (!this.codeViewMode) { + // Clears the initial empty label on the first keystroke + if (this.clearOnChange && this.textarea.innerHTML == this.getEmptyLabelText()) { + this.clearOnChange = false; + this.textarea.innerHTML = ''; + } + + // Removes newlines from HTML and converts breaks to newlines + // to match the HTML output in plain text + var content = mxUtils.htmlEntities(this.textarea.innerHTML); + + // Workaround for trailing line breaks being ignored in the editor + if (!mxClient.IS_QUIRKS && document.documentMode != 8) { + content = mxUtils.replaceTrailingNewlines(content, '

'); + } + + content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '').replace(/<br\s*.?>/g, '
') : content, true); + this.textarea.className = 'mxCellEditor mxPlainTextEditor'; + + var size = mxConstants.DEFAULT_FONTSIZE; + + this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; + this.textarea.style.fontSize = Math.round(size) + 'px'; + this.textarea.style.textDecoration = ''; + this.textarea.style.fontWeight = 'normal'; + this.textarea.style.fontStyle = ''; + this.textarea.style.fontFamily = mxConstants.DEFAULT_FONTFAMILY; + this.textarea.style.textAlign = 'left'; + + // Adds padding to make cursor visible with borders + this.textarea.style.padding = '2px'; + + if (this.textarea.innerHTML != content) { + this.textarea.innerHTML = content; + } + + this.codeViewMode = true; + } + else { + var content = mxUtils.extractTextWithWhitespace(this.textarea.childNodes); + + // Strips trailing line break + if (content.length > 0 && content.charAt(content.length - 1) == '\n') { + content = content.substring(0, content.length - 1); + } + + content = this.graph.sanitizeHtml((nl2Br) ? content.replace(/\n/g, '
') : content, true) + this.textarea.className = 'mxCellEditor geContentEditable'; + + var size = mxUtils.getValue(state.style, mxConstants.STYLE_FONTSIZE, mxConstants.DEFAULT_FONTSIZE); + var family = mxUtils.getValue(state.style, mxConstants.STYLE_FONTFAMILY, mxConstants.DEFAULT_FONTFAMILY); + var align = mxUtils.getValue(state.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT); + var bold = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_BOLD) == mxConstants.FONT_BOLD; + var italic = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_ITALIC) == mxConstants.FONT_ITALIC; + var uline = (mxUtils.getValue(state.style, mxConstants.STYLE_FONTSTYLE, 0) & + mxConstants.FONT_UNDERLINE) == mxConstants.FONT_UNDERLINE; + + this.textarea.style.lineHeight = (mxConstants.ABSOLUTE_LINE_HEIGHT) ? Math.round(size * mxConstants.LINE_HEIGHT) + 'px' : mxConstants.LINE_HEIGHT; + this.textarea.style.fontSize = Math.round(size) + 'px'; + this.textarea.style.textDecoration = (uline) ? 'underline' : ''; + this.textarea.style.fontWeight = (bold) ? 'bold' : 'normal'; + this.textarea.style.fontStyle = (italic) ? 'italic' : ''; + this.textarea.style.fontFamily = family; + this.textarea.style.textAlign = align; + this.textarea.style.padding = '0px'; + + if (this.textarea.innerHTML != content) { + this.textarea.innerHTML = content; + + if (this.textarea.innerHTML.length == 0) { + this.textarea.innerHTML = this.getEmptyLabelText(); + this.clearOnChange = this.textarea.innerHTML.length > 0; + } + } + + this.codeViewMode = false; + } + + this.textarea.focus(); + + if (this.switchSelectionState != null) { + this.restoreSelection(this.switchSelectionState); + } + + this.switchSelectionState = tmp; + this.resize(); + }; + + var mxCellEditorResize = mxCellEditor.prototype.resize; + mxCellEditor.prototype.resize = function (state, trigger) { + if (this.textarea != null) { + var state = this.graph.getView().getState(this.editingCell); + + if (this.codeViewMode && state != null) { + var scale = state.view.scale; + this.bounds = mxRectangle.fromRectangle(state); + + // General placement of code editor if cell has no size + // LATER: Fix HTML editor bounds for edge labels + if (this.bounds.width == 0 && this.bounds.height == 0) { + this.bounds.width = 160 * scale; + this.bounds.height = 60 * scale; + + var m = (state.text != null) ? state.text.margin : null; + + if (m == null) { + m = mxUtils.getAlignmentAsPoint(mxUtils.getValue(state.style, mxConstants.STYLE_ALIGN, mxConstants.ALIGN_CENTER), + mxUtils.getValue(state.style, mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_MIDDLE)); + } + + this.bounds.x += m.x * this.bounds.width; + this.bounds.y += m.y * this.bounds.height; + } + + this.textarea.style.width = Math.round((this.bounds.width - 4) / scale) + 'px'; + this.textarea.style.height = Math.round((this.bounds.height - 4) / scale) + 'px'; + this.textarea.style.overflow = 'auto'; + + // Adds scrollbar offset if visible + if (this.textarea.clientHeight < this.textarea.offsetHeight) { + this.textarea.style.height = Math.round((this.bounds.height / scale)) + (this.textarea.offsetHeight - this.textarea.clientHeight) + 'px'; + this.bounds.height = parseInt(this.textarea.style.height) * scale; + } + + if (this.textarea.clientWidth < this.textarea.offsetWidth) { + this.textarea.style.width = Math.round((this.bounds.width / scale)) + (this.textarea.offsetWidth - this.textarea.clientWidth) + 'px'; + this.bounds.width = parseInt(this.textarea.style.width) * scale; + } + + this.textarea.style.left = Math.round(this.bounds.x) + 'px'; + this.textarea.style.top = Math.round(this.bounds.y) + 'px'; + + if (mxClient.IS_VML) { + this.textarea.style.zoom = scale; + } + else { + mxUtils.setPrefixedStyle(this.textarea.style, 'transform', 'scale(' + scale + ',' + scale + ')'); + } + } + else { + this.textarea.style.height = ''; + this.textarea.style.overflow = ''; + mxCellEditorResize.apply(this, arguments); + } + } + }; + + var mxCellEditorGetInitialValue = mxCellEditor.prototype.getInitialValue; + mxCellEditor.prototype.getInitialValue = function (state, trigger) { + if (mxUtils.getValue(state.style, 'html', '0') == '0') { + return mxCellEditorGetInitialValue.apply(this, arguments); + } + else { + var result = this.graph.getEditingValue(state.cell, trigger) + + if (mxUtils.getValue(state.style, 'nl2Br', '1') == '1') { + result = result.replace(/\n/g, '
'); + } + + result = this.graph.sanitizeHtml(result, true); + + return result; + } + }; + + var mxCellEditorGetCurrentValue = mxCellEditor.prototype.getCurrentValue; + mxCellEditor.prototype.getCurrentValue = function (state) { + if (mxUtils.getValue(state.style, 'html', '0') == '0') { + return mxCellEditorGetCurrentValue.apply(this, arguments); + } + else { + var result = this.graph.sanitizeHtml(this.textarea.innerHTML, true); + + if (mxUtils.getValue(state.style, 'nl2Br', '1') == '1') { + result = result.replace(/\r\n/g, '
').replace(/\n/g, '
'); + } + else { + result = result.replace(/\r\n/g, '').replace(/\n/g, ''); + } + + return result; + } + }; + + var mxCellEditorStopEditing = mxCellEditor.prototype.stopEditing; + mxCellEditor.prototype.stopEditing = function (cancel) { + // Restores default view mode before applying value + if (this.codeViewMode) { + this.toggleViewMode(); + } + + mxCellEditorStopEditing.apply(this, arguments); + + // Tries to move focus back to container after editing if possible + this.focusContainer(); + }; + + mxCellEditor.prototype.focusContainer = function () { + try { + this.graph.container.focus(); + } + catch (e) { + // ignore + } + }; + + var mxCellEditorApplyValue = mxCellEditor.prototype.applyValue; + mxCellEditor.prototype.applyValue = function (state, value) { + // Removes empty relative child labels in edges + this.graph.getModel().beginUpdate(); + + try { + mxCellEditorApplyValue.apply(this, arguments); + + if (this.graph.isCellDeletable(state.cell) && this.graph.model.getChildCount(state.cell) == 0) { + var stroke = mxUtils.getValue(state.style, mxConstants.STYLE_STROKECOLOR, mxConstants.NONE); + var fill = mxUtils.getValue(state.style, mxConstants.STYLE_FILLCOLOR, mxConstants.NONE); + + if (value == '' && stroke == mxConstants.NONE && fill == mxConstants.NONE) { + this.graph.removeCells([state.cell], false); + } + } + } + finally { + this.graph.getModel().endUpdate(); + } + }; + + /** + * Returns the background color to be used for the editing box. This returns + * the label background for edge labels and null for all other cases. + */ + mxCellEditor.prototype.getBackgroundColor = function (state) { + var color = null; + + if (this.graph.getModel().isEdge(state.cell) || this.graph.getModel().isEdge(this.graph.getModel().getParent(state.cell))) { + var color = mxUtils.getValue(state.style, mxConstants.STYLE_LABEL_BACKGROUNDCOLOR, null); + + if (color == mxConstants.NONE) { + color = null; + } + } + + return color; + }; + + mxCellEditor.prototype.getMinimumSize = function (state) { + var scale = this.graph.getView().scale; + + return new mxRectangle(0, 0, (state.text == null) ? 30 : state.text.size * scale + 20, 30); + }; + + // Hold alt to ignore drop target + var mxGraphHandlerMoveCells = mxGraphHandler.prototype.moveCells; + + mxGraphHandler.prototype.moveCells = function (cells, dx, dy, clone, target, evt) { + if (mxEvent.isAltDown(evt)) { + target = null; + } + + mxGraphHandlerMoveCells.apply(this, arguments); + }; + + /** + * Hints on handlers + */ + function createHint() { + var hint = document.createElement('div'); + hint.className = 'geHint'; + hint.style.whiteSpace = 'nowrap'; + hint.style.position = 'absolute'; + + return hint; + }; + + /** + * Updates the hint for the current operation. + */ + mxGraphHandler.prototype.updateHint = function (me) { + if (this.shape != null) { + if (this.hint == null) { + this.hint = createHint(); + this.graph.container.appendChild(this.hint); + } + + var t = this.graph.view.translate; + var s = this.graph.view.scale; + var x = this.roundLength((this.bounds.x + this.currentDx) / s - t.x); + var y = this.roundLength((this.bounds.y + this.currentDy) / s - t.y); + + this.hint.innerHTML = x + ', ' + y; + + this.hint.style.left = (this.shape.bounds.x + Math.round((this.shape.bounds.width - this.hint.clientWidth) / 2)) + 'px'; + this.hint.style.top = (this.shape.bounds.y + this.shape.bounds.height + 12) + 'px'; + } + }; + + /** + * Updates the hint for the current operation. + */ + mxGraphHandler.prototype.removeHint = function () { + if (this.hint != null) { + this.hint.parentNode.removeChild(this.hint); + this.hint = null; + } + }; + + /** + * Enables recursive resize for groups. + */ + mxVertexHandler.prototype.isRecursiveResize = function (state, me) { + return !this.graph.isSwimlane(state.cell) && this.graph.model.getChildCount(state.cell) > 0 && + !mxEvent.isControlDown(me.getEvent()) && !this.graph.isCellCollapsed(state.cell) && + mxUtils.getValue(state.style, 'recursiveResize', '1') == '1' && + mxUtils.getValue(state.style, 'childLayout', null) == null; + }; + + /** + * Enables centered resize events. + */ + mxVertexHandler.prototype.isCenteredEvent = function (state, me) { + return (!(!this.graph.isSwimlane(state.cell) && this.graph.model.getChildCount(state.cell) > 0 && + !this.graph.isCellCollapsed(state.cell) && + mxUtils.getValue(state.style, 'recursiveResize', '1') == '1' && + mxUtils.getValue(state.style, 'childLayout', null) == null) && + mxEvent.isControlDown(me.getEvent())) || + mxEvent.isMetaDown(me.getEvent()); + }; + + var vertexHandlerGetHandlePadding = mxVertexHandler.prototype.getHandlePadding; + mxVertexHandler.prototype.getHandlePadding = function () { + var result = new mxPoint(0, 0); + var tol = this.tolerance; + + if (this.graph.cellEditor.getEditingCell() == this.state.cell && + this.sizers != null && this.sizers.length > 0 && this.sizers[0] != null) { + tol /= 2; + + result.x = this.sizers[0].bounds.width + tol; + result.y = this.sizers[0].bounds.height + tol; + } + else { + result = vertexHandlerGetHandlePadding.apply(this, arguments); + } + + return result; + }; + + /** + * Updates the hint for the current operation. + */ + mxVertexHandler.prototype.updateHint = function (me) { + if (this.index != mxEvent.LABEL_HANDLE) { + if (this.hint == null) { + this.hint = createHint(); + this.state.view.graph.container.appendChild(this.hint); + } + + if (this.index == mxEvent.ROTATION_HANDLE) { + this.hint.innerHTML = this.currentAlpha + '°'; + } + else { + var s = this.state.view.scale; + this.hint.innerHTML = this.roundLength(this.bounds.width / s) + ' x ' + this.roundLength(this.bounds.height / s); + } + + var rot = (this.currentAlpha != null) ? this.currentAlpha : this.state.style[mxConstants.STYLE_ROTATION] || '0'; + var bb = mxUtils.getBoundingBox(this.bounds, rot); + + if (bb == null) { + bb = this.bounds; + } + + this.hint.style.left = bb.x + Math.round((bb.width - this.hint.clientWidth) / 2) + 'px'; + this.hint.style.top = (bb.y + bb.height + 12) + 'px'; + + if (this.linkHint != null) { + this.linkHint.style.display = 'none'; + } + } + }; + + /** + * Updates the hint for the current operation. + */ + mxVertexHandler.prototype.removeHint = function () { + mxGraphHandler.prototype.removeHint.apply(this, arguments); + + if (this.linkHint != null) { + this.linkHint.style.display = ''; + } + }; + + /** + * Updates the hint for the current operation. + */ + mxEdgeHandler.prototype.updateHint = function (me, point) { + if (this.hint == null) { + this.hint = createHint(); + this.state.view.graph.container.appendChild(this.hint); + } + + var t = this.graph.view.translate; + var s = this.graph.view.scale; + var x = this.roundLength(point.x / s - t.x); + var y = this.roundLength(point.y / s - t.y); + + this.hint.innerHTML = x + ', ' + y; + this.hint.style.visibility = 'visible'; + + if (this.isSource || this.isTarget) { + if (this.constraintHandler.currentConstraint != null && + this.constraintHandler.currentFocus != null) { + var pt = this.constraintHandler.currentConstraint.point; + this.hint.innerHTML = '[' + Math.round(pt.x * 100) + '%, ' + Math.round(pt.y * 100) + '%]'; + } + else if (this.marker.hasValidState()) { + this.hint.style.visibility = 'hidden'; + } + } + + this.hint.style.left = Math.round(me.getGraphX() - this.hint.clientWidth / 2) + 'px'; + this.hint.style.top = (Math.max(me.getGraphY(), point.y) + this.state.view.graph.gridSize) + 'px'; + + if (this.linkHint != null) { + this.linkHint.style.display = 'none'; + } + }; + + /** + * Updates the hint for the current operation. + */ + mxEdgeHandler.prototype.removeHint = mxVertexHandler.prototype.removeHint; + + /** + * Defines the handles for the UI. Uses data-URIs to speed-up loading time where supported. + */ + // TODO: Increase handle padding + HoverIcons.prototype.mainHandle = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/handle-main.png', 17, 17) : + Graph.createSvgImage(18, 18, ''); + HoverIcons.prototype.secondaryHandle = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/handle-secondary.png', 17, 17) : + Graph.createSvgImage(16, 16, ''); + HoverIcons.prototype.fixedHandle = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/handle-fixed.png', 17, 17) : + Graph.createSvgImage(18, 18, ''); + HoverIcons.prototype.terminalHandle = (!mxClient.IS_SVG) ? new mxImage(IMAGE_PATH + '/handle-terminal.png', 17, 17) : + Graph.createSvgImage(18, 18, ''); + HoverIcons.prototype.rotationHandle = new mxImage((mxClient.IS_SVG) ? 'data:image/png;base64,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' : + IMAGE_PATH + '/handle-rotate.png', 19, 21); + + if (mxClient.IS_SVG) { + mxConstraintHandler.prototype.pointImage = Graph.createSvgImage(5, 5, ''); + } + + mxVertexHandler.prototype.handleImage = HoverIcons.prototype.mainHandle; + mxVertexHandler.prototype.secondaryHandleImage = HoverIcons.prototype.secondaryHandle; + mxEdgeHandler.prototype.handleImage = HoverIcons.prototype.mainHandle; + mxEdgeHandler.prototype.terminalHandleImage = HoverIcons.prototype.terminalHandle; + mxEdgeHandler.prototype.fixedHandleImage = HoverIcons.prototype.fixedHandle; + mxEdgeHandler.prototype.labelHandleImage = HoverIcons.prototype.secondaryHandle; + mxOutline.prototype.sizerImage = HoverIcons.prototype.mainHandle; + + if (window.Sidebar != null) { + Sidebar.prototype.triangleUp = HoverIcons.prototype.triangleUp; + Sidebar.prototype.triangleRight = HoverIcons.prototype.triangleRight; + Sidebar.prototype.triangleDown = HoverIcons.prototype.triangleDown; + Sidebar.prototype.triangleLeft = HoverIcons.prototype.triangleLeft; + Sidebar.prototype.refreshTarget = HoverIcons.prototype.refreshTarget; + Sidebar.prototype.roundDrop = HoverIcons.prototype.roundDrop; + } + + // Pre-fetches images (only needed for non data-uris) + if (!mxClient.IS_SVG) { + new Image().src = HoverIcons.prototype.mainHandle.src; + new Image().src = HoverIcons.prototype.fixedHandle.src; + new Image().src = HoverIcons.prototype.terminalHandle.src; + new Image().src = HoverIcons.prototype.secondaryHandle.src; + new Image().src = HoverIcons.prototype.rotationHandle.src; + + new Image().src = HoverIcons.prototype.triangleUp.src; + new Image().src = HoverIcons.prototype.triangleRight.src; + new Image().src = HoverIcons.prototype.triangleDown.src; + new Image().src = HoverIcons.prototype.triangleLeft.src; + new Image().src = HoverIcons.prototype.refreshTarget.src; + new Image().src = HoverIcons.prototype.roundDrop.src; + } + + // Adds rotation handle and live preview + mxVertexHandler.prototype.rotationEnabled = true; + mxVertexHandler.prototype.manageSizers = true; + mxVertexHandler.prototype.livePreview = true; + + // Increases default rubberband opacity (default is 20) + mxRubberband.prototype.defaultOpacity = 30; + + // Enables connections along the outline, virtual waypoints, parent highlight etc + mxConnectionHandler.prototype.outlineConnect = true; + mxCellHighlight.prototype.keepOnTop = true; + mxVertexHandler.prototype.parentHighlightEnabled = true; + mxVertexHandler.prototype.rotationHandleVSpacing = -20; + + mxEdgeHandler.prototype.parentHighlightEnabled = true; + mxEdgeHandler.prototype.dblClickRemoveEnabled = true; + mxEdgeHandler.prototype.straightRemoveEnabled = true; + mxEdgeHandler.prototype.virtualBendsEnabled = true; + mxEdgeHandler.prototype.mergeRemoveEnabled = true; + mxEdgeHandler.prototype.manageLabelHandle = true; + mxEdgeHandler.prototype.outlineConnect = true; + + // Disables adding waypoints if shift is pressed + mxEdgeHandler.prototype.isAddVirtualBendEvent = function (me) { + return !mxEvent.isShiftDown(me.getEvent()); + }; + + // Disables custom handles if shift is pressed + mxEdgeHandler.prototype.isCustomHandleEvent = function (me) { + return !mxEvent.isShiftDown(me.getEvent()); + }; + + /** + * Implements touch style + */ + if (Graph.touchStyle) { + // Larger tolerance for real touch devices + if (mxClient.IS_TOUCH || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0) { + mxShape.prototype.svgStrokeTolerance = 18; + mxVertexHandler.prototype.tolerance = 12; + mxEdgeHandler.prototype.tolerance = 12; + Graph.prototype.tolerance = 12; + + mxVertexHandler.prototype.rotationHandleVSpacing = -24; + + // Implements a smaller tolerance for mouse events and a larger tolerance for touch + // events on touch devices. The default tolerance (4px) is used for mouse events. + mxConstraintHandler.prototype.getTolerance = function (me) { + return (mxEvent.isMouseEvent(me.getEvent())) ? 4 : this.graph.getTolerance(); + }; + } + + // One finger pans (no rubberband selection) must start regardless of mouse button + mxPanningHandler.prototype.isPanningTrigger = function (me) { + var evt = me.getEvent(); + + return (me.getState() == null && !mxEvent.isMouseEvent(evt)) || + (mxEvent.isPopupTrigger(evt) && (me.getState() == null || + mxEvent.isControlDown(evt) || mxEvent.isShiftDown(evt))); + }; + + // Don't clear selection if multiple cells selected + var graphHandlerMouseDown = mxGraphHandler.prototype.mouseDown; + mxGraphHandler.prototype.mouseDown = function (sender, me) { + graphHandlerMouseDown.apply(this, arguments); + if (mxEvent.isTouchEvent(me.getEvent()) && this.graph.isCellSelected(me.getCell()) && + this.graph.getSelectionCount() > 1) { + this.delayedSelection = false; + } + }; + } + else { + // Removes ctrl+shift as panning trigger for space splitting + mxPanningHandler.prototype.isPanningTrigger = function (me) { + var evt = me.getEvent(); + return (mxEvent.isLeftMouseButton(evt) && ((this.useLeftButtonForPanning && + me.getState() == null) || (mxEvent.isControlDown(evt) && + !mxEvent.isShiftDown(evt)))) || (this.usePopupTrigger && + mxEvent.isPopupTrigger(evt)); + }; + } + + // Overrides/extends rubberband for space handling with Ctrl+Shift(+Alt) drag ("scissors tool") + mxRubberband.prototype.isSpaceEvent = function (me) { + return this.graph.isEnabled() && !this.graph.isCellLocked(this.graph.getDefaultParent()) && + mxEvent.isControlDown(me.getEvent()) && mxEvent.isShiftDown(me.getEvent()); + }; + + // Handles moving of cells in both half panes + mxRubberband.prototype.mouseUp = function (sender, me) { + var execute = this.div != null && this.div.style.display != 'none'; + + var x0 = null; + var y0 = null; + var dx = null; + var dy = null; + + if (this.first != null && this.currentX != null && this.currentY != null) { + x0 = this.first.x; + y0 = this.first.y; + dx = (this.currentX - x0) / this.graph.view.scale; + dy = (this.currentY - y0) / this.graph.view.scale; + + if (!mxEvent.isAltDown(me.getEvent())) { + dx = this.graph.snap(dx); + dy = this.graph.snap(dy); + + if (!this.graph.isGridEnabled()) { + if (Math.abs(dx) < this.graph.tolerance) { + dx = 0; + } + + if (Math.abs(dy) < this.graph.tolerance) { + dy = 0; + } + } + } + } + + this.reset(); + + if (execute) { + if (mxEvent.isAltDown(me.getEvent()) && this.graph.isToggleEvent(me.getEvent())) { + var rect = new mxRectangle(this.x, this.y, this.width, this.height); + var cells = this.graph.getCells(rect.x, rect.y, rect.width, rect.height); + + this.graph.removeSelectionCells(cells); + } + else if (this.isSpaceEvent(me)) { + this.graph.model.beginUpdate(); + try { + var cells = this.graph.getCellsBeyond(x0, y0, this.graph.getDefaultParent(), true, true); + + for (var i = 0; i < cells.length; i++) { + if (this.graph.isCellMovable(cells[i])) { + var tmp = this.graph.view.getState(cells[i]); + var geo = this.graph.getCellGeometry(cells[i]); + + if (tmp != null && geo != null) { + geo = geo.clone(); + geo.translate(dx, dy); + this.graph.model.setGeometry(cells[i], geo); + } + } + } + } + finally { + this.graph.model.endUpdate(); + } + } + else { + var rect = new mxRectangle(this.x, this.y, this.width, this.height); + this.graph.selectRegion(rect, me.getEvent()); + } + + me.consume(); + } + }; + + // Handles preview for creating/removing space in diagram + mxRubberband.prototype.mouseMove = function (sender, me) { + if (!me.isConsumed() && this.first != null) { + var origin = mxUtils.getScrollOrigin(this.graph.container); + var offset = mxUtils.getOffset(this.graph.container); + origin.x -= offset.x; + origin.y -= offset.y; + var x = me.getX() + origin.x; + var y = me.getY() + origin.y; + var dx = this.first.x - x; + var dy = this.first.y - y; + var tol = this.graph.tolerance; + + if (this.div != null || Math.abs(dx) > tol || Math.abs(dy) > tol) { + if (this.div == null) { + this.div = this.createShape(); + } + + // Clears selection while rubberbanding. This is required because + // the event is not consumed in mouseDown. + mxUtils.clearSelection(); + this.update(x, y); + + if (this.isSpaceEvent(me)) { + var right = this.x + this.width; + var bottom = this.y + this.height; + var scale = this.graph.view.scale; + + if (!mxEvent.isAltDown(me.getEvent())) { + this.width = this.graph.snap(this.width / scale) * scale; + this.height = this.graph.snap(this.height / scale) * scale; + + if (!this.graph.isGridEnabled()) { + if (this.width < this.graph.tolerance) { + this.width = 0; + } + + if (this.height < this.graph.tolerance) { + this.height = 0; + } + } + + if (this.x < this.first.x) { + this.x = right - this.width; + } + + if (this.y < this.first.y) { + this.y = bottom - this.height; + } + } + + this.div.style.borderStyle = 'dashed'; + this.div.style.backgroundColor = 'white'; + this.div.style.left = this.x + 'px'; + this.div.style.top = this.y + 'px'; + this.div.style.width = Math.max(0, this.width) + 'px'; + this.div.style.height = this.graph.container.clientHeight + 'px'; + this.div.style.borderWidth = (this.width <= 0) ? '0px 1px 0px 0px' : '0px 1px 0px 1px'; + + if (this.secondDiv == null) { + this.secondDiv = this.div.cloneNode(true); + this.div.parentNode.appendChild(this.secondDiv); + } + + this.secondDiv.style.left = this.x + 'px'; + this.secondDiv.style.top = this.y + 'px'; + this.secondDiv.style.width = this.graph.container.clientWidth + 'px'; + this.secondDiv.style.height = Math.max(0, this.height) + 'px'; + this.secondDiv.style.borderWidth = (this.height <= 0) ? '1px 0px 0px 0px' : '1px 0px 1px 0px'; + } + else { + // Hides second div and restores style + this.div.style.backgroundColor = ''; + this.div.style.borderWidth = ''; + this.div.style.borderStyle = ''; + + if (this.secondDiv != null) { + this.secondDiv.parentNode.removeChild(this.secondDiv); + this.secondDiv = null; + } + } + + me.consume(); + } + } + }; + + // Removes preview + var mxRubberbandReset = mxRubberband.prototype.reset; + mxRubberband.prototype.reset = function () { + if (this.secondDiv != null) { + this.secondDiv.parentNode.removeChild(this.secondDiv); + this.secondDiv = null; + } + + mxRubberbandReset.apply(this, arguments); + }; + + // Timer-based activation of outline connect in connection handler + var startTime = new Date().getTime(); + var timeOnTarget = 0; + + var mxEdgeHandlerUpdatePreviewState = mxEdgeHandler.prototype.updatePreviewState; + + mxEdgeHandler.prototype.updatePreviewState = function (edge, point, terminalState, me) { + mxEdgeHandlerUpdatePreviewState.apply(this, arguments); + + if (terminalState != this.currentTerminalState) { + startTime = new Date().getTime(); + timeOnTarget = 0; + } + else { + timeOnTarget = new Date().getTime() - startTime; + } + + this.currentTerminalState = terminalState; + }; + + // Timer-based outline connect + var mxEdgeHandlerIsOutlineConnectEvent = mxEdgeHandler.prototype.isOutlineConnectEvent; + + mxEdgeHandler.prototype.isOutlineConnectEvent = function (me) { + return (this.currentTerminalState != null && me.getState() == this.currentTerminalState && timeOnTarget > 2000) || + ((this.currentTerminalState == null || mxUtils.getValue(this.currentTerminalState.style, 'outlineConnect', '1') != '0') && + mxEdgeHandlerIsOutlineConnectEvent.apply(this, arguments)); + }; + + // Disables custom handles if shift is pressed + mxVertexHandler.prototype.isCustomHandleEvent = function (me) { + return !mxEvent.isShiftDown(me.getEvent()); + }; + + // Shows secondary handle for fixed connection points + mxEdgeHandler.prototype.createHandleShape = function (index, virtual) { + var source = index != null && index == 0; + var terminalState = this.state.getVisibleTerminalState(source); + var c = (index != null && (index == 0 || index >= this.state.absolutePoints.length - 1 || + (this.constructor == mxElbowEdgeHandler && index == 2))) ? + this.graph.getConnectionConstraint(this.state, terminalState, source) : null; + var pt = (c != null) ? this.graph.getConnectionPoint(this.state.getVisibleTerminalState(source), c) : null; + var img = (pt != null) ? this.fixedHandleImage : ((c != null && terminalState != null) ? + this.terminalHandleImage : this.handleImage); + + if (img != null) { + var shape = new mxImageShape(new mxRectangle(0, 0, img.width, img.height), img.src); + + // Allows HTML rendering of the images + shape.preserveImageAspect = false; + + return shape; + } + else { + var s = mxConstants.HANDLE_SIZE; + + if (this.preferHtml) { + s -= 1; + } + + return new mxRectangleShape(new mxRectangle(0, 0, s, s), mxConstants.HANDLE_FILLCOLOR, mxConstants.HANDLE_STROKECOLOR); + } + }; + + var vertexHandlerCreateSizerShape = mxVertexHandler.prototype.createSizerShape; + mxVertexHandler.prototype.createSizerShape = function (bounds, index, fillColor) { + this.handleImage = (index == mxEvent.ROTATION_HANDLE) ? HoverIcons.prototype.rotationHandle : (index == mxEvent.LABEL_HANDLE) ? this.secondaryHandleImage : this.handleImage; + + return vertexHandlerCreateSizerShape.apply(this, arguments); + }; + + // Special case for single edge label handle moving in which case the text bounding box is used + var mxGraphHandlerGetBoundingBox = mxGraphHandler.prototype.getBoundingBox; + mxGraphHandler.prototype.getBoundingBox = function (cells) { + if (cells != null && cells.length == 1) { + var model = this.graph.getModel(); + var parent = model.getParent(cells[0]); + var geo = this.graph.getCellGeometry(cells[0]); + + if (model.isEdge(parent) && geo != null && geo.relative) { + var state = this.graph.view.getState(cells[0]); + + if (state != null && state.width < 2 && state.height < 2 && state.text != null && state.text.boundingBox != null) { + return mxRectangle.fromRectangle(state.text.boundingBox); + } + } + } + + return mxGraphHandlerGetBoundingBox.apply(this, arguments); + }; + + // Uses text bounding box for edge labels + var mxVertexHandlerGetSelectionBounds = mxVertexHandler.prototype.getSelectionBounds; + mxVertexHandler.prototype.getSelectionBounds = function (state) { + var model = this.graph.getModel(); + var parent = model.getParent(state.cell); + var geo = this.graph.getCellGeometry(state.cell); + + if (model.isEdge(parent) && geo != null && geo.relative && state.width < 2 && state.height < 2 && state.text != null && state.text.boundingBox != null) { + var bbox = state.text.unrotatedBoundingBox || state.text.boundingBox; + + return new mxRectangle(Math.round(bbox.x), Math.round(bbox.y), Math.round(bbox.width), Math.round(bbox.height)); + } + else { + return mxVertexHandlerGetSelectionBounds.apply(this, arguments); + } + }; + + // Redirects moving of edge labels to mxGraphHandler by not starting here. + // This will use the move preview of mxGraphHandler (see above). + var mxVertexHandlerMouseDown = mxVertexHandler.prototype.mouseDown; + mxVertexHandler.prototype.mouseDown = function (sender, me) { + var model = this.graph.getModel(); + var parent = model.getParent(this.state.cell); + var geo = this.graph.getCellGeometry(this.state.cell); + + // Lets rotation events through + var handle = this.getHandleForEvent(me); + + if (handle == mxEvent.ROTATION_HANDLE || !model.isEdge(parent) || geo == null || !geo.relative || + this.state == null || this.state.width >= 2 || this.state.height >= 2) { + mxVertexHandlerMouseDown.apply(this, arguments); + } + }; + + // Shows rotation handle for edge labels. + mxVertexHandler.prototype.isRotationHandleVisible = function () { + return this.graph.isEnabled() && this.rotationEnabled && this.graph.isCellRotatable(this.state.cell) && + (mxGraphHandler.prototype.maxCells <= 0 || this.graph.getSelectionCount() < mxGraphHandler.prototype.maxCells); + }; + + // Invokes turn on single click on rotation handle + mxVertexHandler.prototype.rotateClick = function () { + this.state.view.graph.turnShapes([this.state.cell]); + }; + + var vertexHandlerMouseMove = mxVertexHandler.prototype.mouseMove; + + // Workaround for "isConsumed not defined" in MS Edge is to use arguments + mxVertexHandler.prototype.mouseMove = function (sender, me) { + vertexHandlerMouseMove.apply(this, arguments); + + if (this.graph.graphHandler.first != null) { + if (this.rotationShape != null && this.rotationShape.node != null) { + this.rotationShape.node.style.display = 'none'; + } + } + }; + + var vertexHandlerMouseUp = mxVertexHandler.prototype.mouseUp; + mxVertexHandler.prototype.mouseUp = function (sender, me) { + vertexHandlerMouseUp.apply(this, arguments); + + // Shows rotation handle only if one vertex is selected + if (this.rotationShape != null && this.rotationShape.node != null) { + this.rotationShape.node.style.display = (this.graph.getSelectionCount() == 1) ? '' : 'none'; + } + }; + + var vertexHandlerInit = mxVertexHandler.prototype.init; + mxVertexHandler.prototype.init = function () { + vertexHandlerInit.apply(this, arguments); + var redraw = false; + + if (this.rotationShape != null) { + this.rotationShape.node.setAttribute('title', mxResources.get('rotateTooltip')); + } + + var update = mxUtils.bind(this, function () { + // Shows rotation handle only if one vertex is selected + if (this.rotationShape != null && this.rotationShape.node != null) { + this.rotationShape.node.style.display = (this.graph.getSelectionCount() == 1) ? '' : 'none'; + } + + if (this.specialHandle != null) { + this.specialHandle.node.style.display = (this.graph.isEnabled() && this.graph.getSelectionCount() < this.graph.graphHandler.maxCells) ? '' : 'none'; + } + + this.redrawHandles(); + }); + + this.selectionHandler = mxUtils.bind(this, function (sender, evt) { + update(); + }); + + this.graph.getSelectionModel().addListener(mxEvent.CHANGE, this.selectionHandler); + + this.changeHandler = mxUtils.bind(this, function (sender, evt) { + this.updateLinkHint(this.graph.getLinkForCell(this.state.cell), + this.graph.getLinksForState(this.state)); + update(); + }); + + this.graph.getModel().addListener(mxEvent.CHANGE, this.changeHandler); + + // Repaint needed when editing stops and no change event is fired + this.editingHandler = mxUtils.bind(this, function (sender, evt) { + this.redrawHandles(); + }); + + this.graph.addListener(mxEvent.EDITING_STOPPED, this.editingHandler); + + var link = this.graph.getLinkForCell(this.state.cell); + var links = this.graph.getLinksForState(this.state); + this.updateLinkHint(link, links); + + if (link != null || (links != null && links.length > 0)) { + redraw = true; + } + + if (redraw) { + this.redrawHandles(); + } + }; + + mxVertexHandler.prototype.updateLinkHint = function (link, links) { + if ((link == null && (links == null || links.length == 0)) || + this.graph.getSelectionCount() > 1) { + if (this.linkHint != null) { + this.linkHint.parentNode.removeChild(this.linkHint); + this.linkHint = null; + } + } + else if (link != null || (links != null && links.length > 0)) { + if (this.linkHint == null) { + this.linkHint = createHint(); + this.linkHint.style.padding = '6px 8px 6px 8px'; + this.linkHint.style.opacity = '1'; + this.linkHint.style.filter = ''; + + this.graph.container.appendChild(this.linkHint); + } + + this.linkHint.innerHTML = ''; + + if (link != null) { + this.linkHint.appendChild(this.graph.createLinkForHint(link)); + + if (this.graph.isEnabled() && typeof this.graph.editLink === 'function') { + var changeLink = document.createElement('img'); + changeLink.setAttribute('src', Editor.editImage); + changeLink.setAttribute('title', mxResources.get('editLink')); + changeLink.setAttribute('width', '11'); + changeLink.setAttribute('height', '11'); + changeLink.style.marginLeft = '10px'; + changeLink.style.marginBottom = '-1px'; + changeLink.style.cursor = 'pointer'; + this.linkHint.appendChild(changeLink); + + mxEvent.addListener(changeLink, 'click', mxUtils.bind(this, function (evt) { + this.graph.setSelectionCell(this.state.cell); + this.graph.editLink(); + mxEvent.consume(evt); + })); + + var removeLink = document.createElement('img'); + removeLink.setAttribute('src', Dialog.prototype.clearImage); + removeLink.setAttribute('title', mxResources.get('removeIt', [mxResources.get('link')])); + removeLink.setAttribute('width', '13'); + removeLink.setAttribute('height', '10'); + removeLink.style.marginLeft = '4px'; + removeLink.style.marginBottom = '-1px'; + removeLink.style.cursor = 'pointer'; + this.linkHint.appendChild(removeLink); + + mxEvent.addListener(removeLink, 'click', mxUtils.bind(this, function (evt) { + this.graph.setLinkForCell(this.state.cell, null); + mxEvent.consume(evt); + })); + } + } + + if (links != null) { + for (var i = 0; i < links.length; i++) { + var div = document.createElement('div'); + div.style.marginTop = (link != null || i > 0) ? '6px' : '0px'; + div.appendChild(this.graph.createLinkForHint( + links[i].getAttribute('href'), + mxUtils.getTextContent(links[i]))); + + this.linkHint.appendChild(div); + } + } + } + }; + + mxEdgeHandler.prototype.updateLinkHint = mxVertexHandler.prototype.updateLinkHint; + + var edgeHandlerInit = mxEdgeHandler.prototype.init; + mxEdgeHandler.prototype.init = function () { + edgeHandlerInit.apply(this, arguments); + + // Disables connection points + this.constraintHandler.isEnabled = mxUtils.bind(this, function () { + return this.state.view.graph.connectionHandler.isEnabled(); + }); + + var update = mxUtils.bind(this, function () { + if (this.linkHint != null) { + this.linkHint.style.display = (this.graph.getSelectionCount() == 1) ? '' : 'none'; + } + + if (this.labelShape != null) { + this.labelShape.node.style.display = (this.graph.isEnabled() && this.graph.getSelectionCount() < this.graph.graphHandler.maxCells) ? '' : 'none'; + } + }); + + this.selectionHandler = mxUtils.bind(this, function (sender, evt) { + update(); + }); + + this.graph.getSelectionModel().addListener(mxEvent.CHANGE, this.selectionHandler); + + this.changeHandler = mxUtils.bind(this, function (sender, evt) { + this.updateLinkHint(this.graph.getLinkForCell(this.state.cell), + this.graph.getLinksForState(this.state)); + update(); + this.redrawHandles(); + }); + + this.graph.getModel().addListener(mxEvent.CHANGE, this.changeHandler); + + var link = this.graph.getLinkForCell(this.state.cell); + var links = this.graph.getLinksForState(this.state); + + if (link != null || (links != null && links.length > 0)) { + this.updateLinkHint(link, links); + this.redrawHandles(); + } + }; + + // Disables connection points + var connectionHandlerInit = mxConnectionHandler.prototype.init; + + mxConnectionHandler.prototype.init = function () { + connectionHandlerInit.apply(this, arguments); + + this.constraintHandler.isEnabled = mxUtils.bind(this, function () { + return this.graph.connectionHandler.isEnabled(); + }); + }; + + var vertexHandlerRedrawHandles = mxVertexHandler.prototype.redrawHandles; + mxVertexHandler.prototype.redrawHandles = function () { + vertexHandlerRedrawHandles.apply(this); + + if (this.state != null && this.linkHint != null) { + var c = new mxPoint(this.state.getCenterX(), this.state.getCenterY()); + var tmp = new mxRectangle(this.state.x, this.state.y - 22, this.state.width + 24, this.state.height + 22); + var bb = mxUtils.getBoundingBox(tmp, this.state.style[mxConstants.STYLE_ROTATION] || '0', c); + var rs = (bb != null) ? mxUtils.getBoundingBox(this.state, + this.state.style[mxConstants.STYLE_ROTATION] || '0') : this.state; + var tb = (this.state.text != null) ? this.state.text.boundingBox : null; + + if (bb == null) { + bb = this.state; + } + + var b = bb.y + bb.height; + + if (tb != null) { + b = Math.max(b, tb.y + tb.height); + } + + this.linkHint.style.left = Math.max(0, Math.round(rs.x + (rs.width - this.linkHint.clientWidth) / 2)) + 'px'; + this.linkHint.style.top = Math.round(b + this.verticalOffset / 2 + 6 + + this.state.view.graph.tolerance) + 'px'; + } + }; + + + var vertexHandlerReset = mxVertexHandler.prototype.reset; + mxVertexHandler.prototype.reset = function () { + vertexHandlerReset.apply(this, arguments); + + // Shows rotation handle only if one vertex is selected + if (this.rotationShape != null && this.rotationShape.node != null) { + this.rotationShape.node.style.display = (this.graph.getSelectionCount() == 1) ? '' : 'none'; + } + }; + + var vertexHandlerDestroy = mxVertexHandler.prototype.destroy; + mxVertexHandler.prototype.destroy = function () { + vertexHandlerDestroy.apply(this, arguments); + + if (this.linkHint != null) { + this.linkHint.parentNode.removeChild(this.linkHint); + this.linkHint = null; + } + + if (this.selectionHandler != null) { + this.graph.getSelectionModel().removeListener(this.selectionHandler); + this.selectionHandler = null; + } + + if (this.changeHandler != null) { + this.graph.getModel().removeListener(this.changeHandler); + this.changeHandler = null; + } + + if (this.editingHandler != null) { + this.graph.removeListener(this.editingHandler); + this.editingHandler = null; + } + }; + + var edgeHandlerRedrawHandles = mxEdgeHandler.prototype.redrawHandles; + mxEdgeHandler.prototype.redrawHandles = function () { + // Workaround for special case where handler + // is reset before this which leads to a NPE + if (this.marker != null) { + edgeHandlerRedrawHandles.apply(this); + + if (this.state != null && this.linkHint != null) { + var b = this.state; + + if (this.state.text != null && this.state.text.bounds != null) { + b = new mxRectangle(b.x, b.y, b.width, b.height); + b.add(this.state.text.bounds); + } + + this.linkHint.style.left = Math.max(0, Math.round(b.x + (b.width - this.linkHint.clientWidth) / 2)) + 'px'; + this.linkHint.style.top = Math.round(b.y + b.height + 6 + this.state.view.graph.tolerance) + 'px'; + } + } + }; + + var edgeHandlerReset = mxEdgeHandler.prototype.reset; + mxEdgeHandler.prototype.reset = function () { + edgeHandlerReset.apply(this, arguments); + + if (this.linkHint != null) { + this.linkHint.style.visibility = ''; + } + }; + + var edgeHandlerDestroy = mxEdgeHandler.prototype.destroy; + mxEdgeHandler.prototype.destroy = function () { + edgeHandlerDestroy.apply(this, arguments); + + if (this.linkHint != null) { + this.linkHint.parentNode.removeChild(this.linkHint); + this.linkHint = null; + } + + if (this.selectionHandler != null) { + this.graph.getSelectionModel().removeListener(this.selectionHandler); + this.selectionHandler = null; + } + + if (this.changeHandler != null) { + this.graph.getModel().removeListener(this.changeHandler); + this.changeHandler = null; + } + }; + })(); + } + return Graph; +} \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/Graph_over.js b/data/plugins/grafana-flowcharting/src/Graph_over.js new file mode 100644 index 0000000000000..c0fb7ad98494b --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/Graph_over.js @@ -0,0 +1,168 @@ +mxTooltipHandler.prototype.show = function(tip, x, y) { + // u.log(1, 'mxTooltipHandler.prototype.show()'); + + // TYPE STRING + if ( this.destroyed) return; + if (tip == null) return; + if ( tip.length == 0) return; + // Initializes the DOM nodes if required + if (this.div == null) { + this.init(); + } + if (!mxUtils.isNode(tip)) { + this.div.innerHTML = tip.replace(/\n/g, '
'); + } else { + this.div.innerHTML = ''; + this.div.appendChild(tip); + } + this.$div.place_tt(x + 20, y); + this.div.style.visibility = ''; + mxUtils.fit(this.div); +}; + +mxTooltipHandler.prototype.init = function() { + // u.log(1, 'mxTooltipHandler.prototype.init()'); + if (this.div === null || this.div === undefined) { + this.$div = $('
'); + this.div = this.$div[0]; + mxEvent.addGestureListeners( + this.div, + mxUtils.bind(this, function(evt) { + this.hideTooltip(); + }) + ); + } +}; + +mxTooltipHandler.prototype.hideTooltip = function() { + if (this.div != null) { + this.div.style.visibility = 'hidden'; + this.div.innerHTML = ''; + } +}; + +mxEvent.addMouseWheelListener = function(func, container) { + if (null != func) { + var c = function(container) { + null == container && (container = window.event); + var c; + c = mxClient.IS_FF ? -container.detail / 2 : container.wheelDelta / 120; + 0 != c && func(container, 0 < c); + }; + mxClient.IS_NS && null == document.documentMode + ? mxEvent.addListener( + mxClient.IS_GC && null != container ? container : window, + mxClient.IS_SF || mxClient.IS_GC ? 'mousewheel' : 'DOMMouseScroll', + c + ) + : mxEvent.addListener(document, 'mousewheel', c); + } +}; + +mxStencilRegistry.libraries.mockup = [SHAPES_PATH + '/mockup/mxMockupButtons.js']; +mxStencilRegistry.libraries.arrows2 = [SHAPES_PATH + '/mxArrows.js']; +mxStencilRegistry.libraries.atlassian = [ + STENCIL_PATH + '/atlassian.xml', + SHAPES_PATH + '/mxAtlassian.js' +]; +mxStencilRegistry.libraries.bpmn = [ + SHAPES_PATH + '/bpmn/mxBpmnShape2.js', + STENCIL_PATH + '/bpmn.xml' +]; +mxStencilRegistry.libraries.dfd = [SHAPES_PATH + '/mxDFD.js']; +mxStencilRegistry.libraries.er = [SHAPES_PATH + '/er/mxER.js']; +mxStencilRegistry.libraries.flowchart = [ + SHAPES_PATH + '/mxFlowchart.js', + STENCIL_PATH + '/flowchart.xml' +]; +mxStencilRegistry.libraries.ios = [SHAPES_PATH + '/mockup/mxMockupiOS.js']; +mxStencilRegistry.libraries.rackGeneral = [ + SHAPES_PATH + '/rack/mxRack.js', + STENCIL_PATH + '/rack/general.xml' +]; +mxStencilRegistry.libraries.rackF5 = [STENCIL_PATH + '/rack/f5.xml']; +mxStencilRegistry.libraries.lean_mapping = [ + SHAPES_PATH + '/mxLeanMap.js', + STENCIL_PATH + '/lean_mapping.xml' +]; +mxStencilRegistry.libraries.basic = [SHAPES_PATH + '/mxBasic.js', STENCIL_PATH + '/basic.xml']; +mxStencilRegistry.libraries.ios7icons = [STENCIL_PATH + '/ios7/icons.xml']; +mxStencilRegistry.libraries.ios7ui = [ + SHAPES_PATH + '/ios7/mxIOS7Ui.js', + STENCIL_PATH + '/ios7/misc.xml' +]; +mxStencilRegistry.libraries.android = [ + SHAPES_PATH + '/mxAndroid.js', + STENCIL_PATH + '/android/android.xml' +]; +mxStencilRegistry.libraries['electrical/miscellaneous'] = [ + SHAPES_PATH + '/mxElectrical.js', + STENCIL_PATH + '/electrical/miscellaneous.xml' +]; +mxStencilRegistry.libraries['electrical/transmission'] = [ + SHAPES_PATH + '/mxElectrical.js', + STENCIL_PATH + '/electrical/transmission.xml' +]; +mxStencilRegistry.libraries['electrical/logic_gates'] = [ + SHAPES_PATH + '/mxElectrical.js', + STENCIL_PATH + '/electrical/logic_gates.xml' +]; +mxStencilRegistry.libraries['electrical/abstract'] = [ + SHAPES_PATH + '/mxElectrical.js', + STENCIL_PATH + '/electrical/abstract.xml' +]; +mxStencilRegistry.libraries.infographic = [SHAPES_PATH + '/mxInfographic.js']; +mxStencilRegistry.libraries['mockup/buttons'] = [SHAPES_PATH + '/mockup/mxMockupButtons.js']; +mxStencilRegistry.libraries['mockup/containers'] = [SHAPES_PATH + '/mockup/mxMockupContainers.js']; +mxStencilRegistry.libraries['mockup/forms'] = [SHAPES_PATH + '/mockup/mxMockupForms.js']; +mxStencilRegistry.libraries['mockup/graphics'] = [ + SHAPES_PATH + '/mockup/mxMockupGraphics.js', + STENCIL_PATH + '/mockup/misc.xml' +]; +mxStencilRegistry.libraries['mockup/markup'] = [SHAPES_PATH + '/mockup/mxMockupMarkup.js']; +mxStencilRegistry.libraries['mockup/misc'] = [ + SHAPES_PATH + '/mockup/mxMockupMisc.js', + STENCIL_PATH + '/mockup/misc.xml' +]; +mxStencilRegistry.libraries['mockup/navigation'] = [ + SHAPES_PATH + '/mockup/mxMockupNavigation.js', + STENCIL_PATH + '/mockup/misc.xml' +]; +mxStencilRegistry.libraries['mockup/text'] = [SHAPES_PATH + '/mockup/mxMockupText.js']; +mxStencilRegistry.libraries.floorplan = [ + SHAPES_PATH + '/mxFloorplan.js', + STENCIL_PATH + '/floorplan.xml' +]; +mxStencilRegistry.libraries.bootstrap = [ + SHAPES_PATH + '/mxBootstrap.js', + STENCIL_PATH + '/bootstrap.xml' +]; +mxStencilRegistry.libraries.gmdl = [SHAPES_PATH + '/mxGmdl.js', STENCIL_PATH + '/gmdl.xml']; +mxStencilRegistry.libraries.gcp2 = [SHAPES_PATH + '/mxGCP2.js', STENCIL_PATH + '/gcp2.xml']; +mxStencilRegistry.libraries.cabinets = [ + SHAPES_PATH + '/mxCabinets.js', + STENCIL_PATH + '/cabinets.xml' +]; +mxStencilRegistry.libraries.archimate = [SHAPES_PATH + '/mxArchiMate.js']; +mxStencilRegistry.libraries.archimate3 = [SHAPES_PATH + '/mxArchiMate3.js']; +mxStencilRegistry.libraries.sysml = [SHAPES_PATH + '/mxSysML.js']; +mxStencilRegistry.libraries.eip = [SHAPES_PATH + '/mxEip.js', STENCIL_PATH + '/eip.xml']; +mxStencilRegistry.libraries.networks = [ + SHAPES_PATH + '/mxNetworks.js', + STENCIL_PATH + '/networks.xml' +]; +mxStencilRegistry.libraries.aws3d = [SHAPES_PATH + '/mxAWS3D.js', STENCIL_PATH + '/aws3d.xml']; +mxStencilRegistry.libraries.aws4 = [SHAPES_PATH + '/mxAWS4.js', STENCIL_PATH + '/aws4.xml']; +mxStencilRegistry.libraries.aws4b = [SHAPES_PATH + '/mxAWS4.js', STENCIL_PATH + '/aws4.xml']; +mxStencilRegistry.libraries.veeam = [ + STENCIL_PATH + '/veeam/2d.xml', + STENCIL_PATH + '/veeam/3d.xml', + STENCIL_PATH + '/veeam/veeam.xml' +]; +mxStencilRegistry.libraries.pid2inst = [SHAPES_PATH + '/pid2/mxPidInstruments.js']; +mxStencilRegistry.libraries.pid2misc = [ + SHAPES_PATH + '/pid2/mxPidMisc.js', + STENCIL_PATH + '/pid/misc.xml' +]; +mxStencilRegistry.libraries.pid2valves = [SHAPES_PATH + '/pid2/mxPidValves.js']; +mxStencilRegistry.libraries.pidFlowSensors = [STENCIL_PATH + '/pid/flow_sensors.xml']; diff --git a/data/plugins/grafana-flowcharting/src/Init.js b/data/plugins/grafana-flowcharting/src/Init.js new file mode 100644 index 0000000000000..32ab10b9acf6f --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/Init.js @@ -0,0 +1,29 @@ +// urlParams is null when used for embedding +window.urlParams = window.urlParams || {}; + +// Public global variables +window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE || 10485760; +window.MAX_AREA = window.MAX_AREA || 15000 * 15000; + +// URLs for save and export +window.EXPORT_URL = window.EXPORT_URL || '/export'; +window.SAVE_URL = window.SAVE_URL || '/save'; +window.OPEN_URL = window.OPEN_URL || '/open'; +window.RESOURCES_PATH = window.RESOURCES_PATH || 'resources'; +window.RESOURCE_BASE = window.RESOURCE_BASE || window.RESOURCES_PATH + '/grapheditor'; +window.STENCIL_PATH = window.STENCIL_PATH || 'stencils'; +window.IMAGE_PATH = window.IMAGE_PATH || 'images'; +window.STYLE_PATH = window.STYLE_PATH || 'styles'; +window.CSS_PATH = window.CSS_PATH || 'styles'; +window.OPEN_FORM = window.OPEN_FORM || 'open.html'; + +// Sets the base path, the UI language via URL param and configures the +// supported languages to avoid 404s. The loading of all core language +// resources is disabled as all required resources are in grapheditor. +// properties. Note that in this example the loading of two resource +// files (the special bundle and the default bundle) is disabled to +// save a GET request. This requires that all resources be present in +// each properties file since only one file is loaded. +window.mxBasePath = window.mxBasePath || '../../../src'; +window.mxLanguage = window.mxLanguage || urlParams['lang']; +window.mxLanguages = window.mxLanguages || ['de']; diff --git a/data/plugins/grafana-flowcharting/src/Shapes.js b/data/plugins/grafana-flowcharting/src/Shapes.js new file mode 100644 index 0000000000000..5217ffb9a2659 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/Shapes.js @@ -0,0 +1,3965 @@ +/** + * Copyright (c) 2006-2015, JGraph Ltd + */ + +/** + * Registers shapes. + */ +(function() +{ + // Cube Shape, supports size style + function CubeShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(CubeShape, mxCylinder); + CubeShape.prototype.size = 20; + CubeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + + if (isForeground) + { + path.moveTo(s, h); + path.lineTo(s, s); + path.lineTo(0, 0); + path.moveTo(s, s); + path.lineTo(w, s); + path.end(); + } + else + { + path.moveTo(0, 0); + path.lineTo(w - s, 0); + path.lineTo(w, s); + path.lineTo(w, h); + path.lineTo(s, h); + path.lineTo(0, h - s); + path.lineTo(0, 0); + path.close(); + path.end(); + } + }; + CubeShape.prototype.getLabelMargins = function(rect) + { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) + { + var s = parseFloat(mxUtils.getValue(this.style, 'size', this.size)) * this.scale; + + return new mxRectangle(s, s, 0, 0); + } + + return null; + }; + + mxCellRenderer.registerShape('cube', CubeShape); + + var tan30 = Math.tan(mxUtils.toRadians(30)); + var tan30Dx = (0.5 - tan30) / 2; + + // Cube Shape, supports size style + function IsoRectangleShape() + { + mxActor.call(this); + }; + mxUtils.extend(IsoRectangleShape, mxActor); + IsoRectangleShape.prototype.size = 20; + IsoRectangleShape.prototype.redrawPath = function(path, x, y, w, h) + { + var m = Math.min(w, h / tan30); + + path.translate((w - m) / 2, (h - m) / 2 + m / 4); + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, m * tan30Dx); + path.lineTo(m, 0.25 * m); + path.lineTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(0, 0.25 * m); + path.close(); + path.end(); + }; + + mxCellRenderer.registerShape('isoRectangle', IsoRectangleShape); + + // Cube Shape, supports size style + function IsoCubeShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(IsoCubeShape, mxCylinder); + IsoCubeShape.prototype.size = 20; + IsoCubeShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + var m = Math.min(w, h / (0.5 + tan30)); + + if (isForeground) + { + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(m, 0.25 * m); + path.moveTo(0.5 * m, (0.5 - tan30Dx) * m); + path.lineTo(0.5 * m, (1 - tan30Dx) * m); + path.end(); + } + else + { + path.translate((w - m) / 2, (h - m) / 2); + path.moveTo(0, 0.25 * m); + path.lineTo(0.5 * m, m * tan30Dx); + path.lineTo(m, 0.25 * m); + path.lineTo(m, 0.75 * m); + path.lineTo(0.5 * m, (1 - tan30Dx) * m); + path.lineTo(0, 0.75 * m); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('isoCube', IsoCubeShape); + + // DataStore Shape, supports size style + function DataStoreShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(DataStoreShape, mxCylinder); + + DataStoreShape.prototype.redrawPath = function(c, x, y, w, h, isForeground) + { + var dy = Math.min(h / 2, Math.round(h / 8) + this.strokewidth - 1); + + if ((isForeground && this.fill != null) || (!isForeground && this.fill == null)) + { + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + // Needs separate shapes for correct hit-detection + if (!isForeground) + { + c.stroke(); + c.begin(); + } + + c.translate(0, dy / 2); + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + // Needs separate shapes for correct hit-detection + if (!isForeground) + { + c.stroke(); + c.begin(); + } + + c.translate(0, dy / 2); + c.moveTo(0, dy); + c.curveTo(0, 2 * dy, w, 2 * dy, w, dy); + + // Needs separate shapes for correct hit-detection + if (!isForeground) + { + c.stroke(); + c.begin(); + } + + c.translate(0, -dy); + } + + if (!isForeground) + { + c.moveTo(0, dy); + c.curveTo(0, -dy / 3, w, -dy / 3, w, dy); + c.lineTo(w, h - dy); + c.curveTo(w, h + dy / 3, 0, h + dy / 3, 0, h - dy); + c.close(); + } + }; + DataStoreShape.prototype.getLabelMargins = function(rect) + { + return new mxRectangle(0, 2.5 * Math.min(rect.height / 2, Math.round(rect.height / 8) + + this.strokewidth - 1) * this.scale, 0, 0); + } + + mxCellRenderer.registerShape('datastore', DataStoreShape); + + // Note Shape, supports size style + function NoteShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(NoteShape, mxCylinder); + NoteShape.prototype.size = 30; + NoteShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + + if (isForeground) + { + path.moveTo(w - s, 0); + path.lineTo(w - s, s); + path.lineTo(w, s); + path.end(); + } + else + { + path.moveTo(0, 0); + path.lineTo(w - s, 0); + path.lineTo(w, s); + path.lineTo(w, h); + path.lineTo(0, h); + path.lineTo(0, 0); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('note', NoteShape); + + // Note Shape, supports size style + function SwitchShape() + { + mxActor.call(this); + }; + mxUtils.extend(SwitchShape, mxActor); + SwitchShape.prototype.redrawPath = function(c, x, y, w, h) + { + var curve = 0.5; + c.moveTo(0, 0); + c.quadTo(w / 2, h * curve, w, 0); + c.quadTo(w * (1 - curve), h / 2, w, h); + c.quadTo(w / 2, h * (1 - curve), 0, h); + c.quadTo(w * curve, h / 2, 0, 0); + c.end(); + }; + + mxCellRenderer.registerShape('switch', SwitchShape); + + // Folder Shape, supports tabWidth, tabHeight styles + function FolderShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(FolderShape, mxCylinder); + FolderShape.prototype.tabWidth = 60; + FolderShape.prototype.tabHeight = 20; + FolderShape.prototype.tabPosition = 'right'; + FolderShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight)))); + var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); + + if (isForeground) + { + if (tp == 'left') + { + path.moveTo(0, dy); + path.lineTo(dx, dy); + } + // Right is default + else + { + path.moveTo(w - dx, dy); + path.lineTo(w, dy); + } + + path.end(); + } + else + { + if (tp == 'left') + { + path.moveTo(0, 0); + path.lineTo(dx, 0); + path.lineTo(dx, dy); + path.lineTo(w, dy); + } + // Right is default + else + { + path.moveTo(0, dy); + path.lineTo(w - dx, dy); + path.lineTo(w - dx, 0); + path.lineTo(w, 0); + } + + path.lineTo(w, h); + path.lineTo(0, h); + path.lineTo(0, dy); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('folder', FolderShape); + + // Card shape + function CardShape() + { + mxActor.call(this); + }; + mxUtils.extend(CardShape, mxActor); + CardShape.prototype.size = 30; + CardShape.prototype.isRoundable = function() + { + return true; + }; + CardShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = Math.max(0, Math.min(w, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w, 0), new mxPoint(w, h), new mxPoint(0, h), new mxPoint(0, s)], + this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('card', CardShape); + + // Tape shape + function TapeShape() + { + mxActor.call(this); + }; + mxUtils.extend(TapeShape, mxActor); + TapeShape.prototype.size = 0.4; + TapeShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + + c.moveTo(0, dy / 2); + c.quadTo(w / 4, dy * fy, w / 2, dy / 2); + c.quadTo(w * 3 / 4, dy * (1 - fy), w, dy / 2); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.close(); + c.end(); + }; + + TapeShape.prototype.getLabelBounds = function(rect) + { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) + { + var size = mxUtils.getValue(this.style, 'size', this.size); + var w = rect.width; + var h = rect.height; + + if (this.direction == null || + this.direction == mxConstants.DIRECTION_EAST || + this.direction == mxConstants.DIRECTION_WEST) + { + var dy = h * size; + + return new mxRectangle(rect.x, rect.y + dy, w, h - 2 * dy); + } + else + { + var dx = w * size; + + return new mxRectangle(rect.x + dx, rect.y, w - 2 * dx, h); + } + } + + return rect; + }; + + mxCellRenderer.registerShape('tape', TapeShape); + + // Document shape + function DocumentShape() + { + mxActor.call(this); + }; + mxUtils.extend(DocumentShape, mxActor); + DocumentShape.prototype.size = 0.3; + DocumentShape.prototype.getLabelMargins = function(rect) + { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) + { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue( + this.style, 'size', this.size)) * rect.height); + } + + return null; + }; + DocumentShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('document', DocumentShape); + + var cylinderGetCylinderSize = mxCylinder.prototype.getCylinderSize; + + mxCylinder.prototype.getCylinderSize = function(x, y, w, h) + { + var size = mxUtils.getValue(this.style, 'size'); + + if (size != null) + { + return h * Math.max(0, Math.min(1, size)); + } + else + { + return cylinderGetCylinderSize.apply(this, arguments); + } + }; + + mxCylinder.prototype.getLabelMargins = function(rect) + { + if (mxUtils.getValue(this.style, 'boundedLbl', false)) + { + var size = mxUtils.getValue(this.style, 'size', 0.15) * 2; + + return new mxRectangle(0, Math.min(this.maxHeight * this.scale, rect.height * size), 0, 0); + } + + return null; + }; + + // Parallelogram shape + function ParallelogramShape() + { + mxActor.call(this); + }; + mxUtils.extend(ParallelogramShape, mxActor); + ParallelogramShape.prototype.size = 0.2; + ParallelogramShape.prototype.isRoundable = function() + { + return true; + }; + ParallelogramShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(dx, 0), new mxPoint(w, 0), new mxPoint(w - dx, h)], + this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('parallelogram', ParallelogramShape); + + // Trapezoid shape + function TrapezoidShape() + { + mxActor.call(this); + }; + mxUtils.extend(TrapezoidShape, mxActor); + TrapezoidShape.prototype.size = 0.2; + TrapezoidShape.prototype.isRoundable = function() + { + return true; + }; + TrapezoidShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = w * Math.max(0, Math.min(0.5, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(dx, 0), new mxPoint(w - dx, 0), new mxPoint(w, h)], + this.isRounded, arcSize, true); + }; + + mxCellRenderer.registerShape('trapezoid', TrapezoidShape); + + // Curly Bracket shape + function CurlyBracketShape() + { + mxActor.call(this); + }; + mxUtils.extend(CurlyBracketShape, mxActor); + CurlyBracketShape.prototype.size = 0.5; + CurlyBracketShape.prototype.redrawPath = function(c, x, y, w, h) + { + c.setFillColor(null); + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(w, 0), new mxPoint(s, 0), new mxPoint(s, h / 2), + new mxPoint(0, h / 2), new mxPoint(s, h / 2), new mxPoint(s, h), + new mxPoint(w, h)], this.isRounded, arcSize, false); + c.end(); + }; + + mxCellRenderer.registerShape('curlyBracket', CurlyBracketShape); + + // Parallel marker shape + function ParallelMarkerShape() + { + mxActor.call(this); + }; + mxUtils.extend(ParallelMarkerShape, mxActor); + ParallelMarkerShape.prototype.redrawPath = function(c, x, y, w, h) + { + c.setStrokeWidth(1); + c.setFillColor(this.stroke); + var w2 = w / 5; + c.rect(0, 0, w2, h); + c.fillAndStroke(); + c.rect(2 * w2, 0, w2, h); + c.fillAndStroke(); + c.rect(4 * w2, 0, w2, h); + c.fillAndStroke(); + }; + + mxCellRenderer.registerShape('parallelMarker', ParallelMarkerShape); + + /** + * Adds handJiggle style (jiggle=n sets jiggle) + */ + function HandJiggle(canvas, defaultVariation) + { + this.canvas = canvas; + + // Avoids "spikes" in the output + this.canvas.setLineJoin('round'); + this.canvas.setLineCap('round'); + + this.defaultVariation = defaultVariation; + + this.originalLineTo = this.canvas.lineTo; + this.canvas.lineTo = mxUtils.bind(this, HandJiggle.prototype.lineTo); + + this.originalMoveTo = this.canvas.moveTo; + this.canvas.moveTo = mxUtils.bind(this, HandJiggle.prototype.moveTo); + + this.originalClose = this.canvas.close; + this.canvas.close = mxUtils.bind(this, HandJiggle.prototype.close); + + this.originalQuadTo = this.canvas.quadTo; + this.canvas.quadTo = mxUtils.bind(this, HandJiggle.prototype.quadTo); + + this.originalCurveTo = this.canvas.curveTo; + this.canvas.curveTo = mxUtils.bind(this, HandJiggle.prototype.curveTo); + + this.originalArcTo = this.canvas.arcTo; + this.canvas.arcTo = mxUtils.bind(this, HandJiggle.prototype.arcTo); + }; + + HandJiggle.prototype.moveTo = function(endX, endY) + { + this.originalMoveTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + this.firstX = endX; + this.firstY = endY; + }; + + HandJiggle.prototype.close = function() + { + if (this.firstX != null && this.firstY != null) + { + this.lineTo(this.firstX, this.firstY); + this.originalClose.apply(this.canvas, arguments); + } + + this.originalClose.apply(this.canvas, arguments); + }; + + HandJiggle.prototype.quadTo = function(x1, y1, x2, y2) + { + this.originalQuadTo.apply(this.canvas, arguments); + this.lastX = x2; + this.lastY = y2; + }; + + HandJiggle.prototype.curveTo = function(x1, y1, x2, y2, x3, y3) + { + this.originalCurveTo.apply(this.canvas, arguments); + this.lastX = x3; + this.lastY = y3; + }; + + HandJiggle.prototype.arcTo = function(rx, ry, angle, largeArcFlag, sweepFlag, x, y) + { + this.originalArcTo.apply(this.canvas, arguments); + this.lastX = x; + this.lastY = y; + }; + + HandJiggle.prototype.lineTo = function(endX, endY) + { + // LATER: Check why this.canvas.lastX cannot be used + if (this.lastX != null && this.lastY != null) + { + var dx = Math.abs(endX - this.lastX); + var dy = Math.abs(endY - this.lastY); + var dist = Math.sqrt(dx * dx + dy * dy); + + if (dist < 2) + { + this.originalLineTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + + return; + } + + var segs = Math.round(dist / 10); + var variation = this.defaultVariation; + + if (segs < 5) + { + segs = 5; + variation /= 3; + } + + function sign(x) + { + return typeof x === 'number' ? x ? x < 0 ? -1 : 1 : x === x ? 0 : NaN : NaN; + } + + var stepX = sign(endX - this.lastX) * dx / segs; + var stepY = sign(endY - this.lastY) * dy / segs; + + var fx = dx / dist; + var fy = dy / dist; + + for (var s = 0; s < segs; s++) + { + var x = stepX * s + this.lastX; + var y = stepY * s + this.lastY; + + var offset = (Math.random() - 0.5) * variation; + this.originalLineTo.call(this.canvas, x - offset * fy, y - offset * fx); + } + + this.originalLineTo.call(this.canvas, endX, endY); + this.lastX = endX; + this.lastY = endY; + } + else + { + this.originalLineTo.apply(this.canvas, arguments); + this.lastX = endX; + this.lastY = endY; + } + }; + + HandJiggle.prototype.destroy = function() + { + this.canvas.lineTo = this.originalLineTo; + this.canvas.moveTo = this.originalMoveTo; + this.canvas.close = this.originalClose; + this.canvas.quadTo = this.originalQuadTo; + this.canvas.curveTo = this.originalCurveTo; + this.canvas.arcTo = this.originalArcTo; + }; + + // Installs hand jiggle in all shapes + var mxShapePaint0 = mxShape.prototype.paint; + mxShape.prototype.defaultJiggle = 1.5; + mxShape.prototype.paint = function(c) + { + // NOTE: getValue does not return a boolean value so !('0') would return true here and below + if (this.style != null && mxUtils.getValue(this.style, 'comic', '0') != '0' && c.handHiggle == null) + { + c.handJiggle = new HandJiggle(c, mxUtils.getValue(this.style, 'jiggle', this.defaultJiggle)); + } + + mxShapePaint0.apply(this, arguments); + + if (c.handJiggle != null) + { + c.handJiggle.destroy(); + delete c.handJiggle; + } + }; + + // Sets default jiggle for diamond + mxRhombus.prototype.defaultJiggle = 2; + + /** + * Overrides to avoid call to rect + */ + var mxRectangleShapeIsHtmlAllowed0 = mxRectangleShape.prototype.isHtmlAllowed; + mxRectangleShape.prototype.isHtmlAllowed = function() + { + return (this.style == null || mxUtils.getValue(this.style, 'comic', '0') == '0') && + mxRectangleShapeIsHtmlAllowed0.apply(this, arguments); + }; + + var mxRectangleShapePaintBackground0 = mxRectangleShape.prototype.paintBackground; + mxRectangleShape.prototype.paintBackground = function(c, x, y, w, h) + { + if (c.handJiggle == null) + { + mxRectangleShapePaintBackground0.apply(this, arguments); + } + else + { + var events = true; + + if (this.style != null) + { + events = mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '1'; + } + + if (events || (this.fill != null && this.fill != mxConstants.NONE) || + (this.stroke != null && this.stroke != mxConstants.NONE)) + { + if (!events && (this.fill == null || this.fill == mxConstants.NONE)) + { + c.pointerEvents = false; + } + + c.begin(); + + if (this.isRounded) + { + var r = 0; + + if (mxUtils.getValue(this.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') + { + r = Math.min(w / 2, Math.min(h / 2, mxUtils.getValue(this.style, + mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2)); + } + else + { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, + mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + r = Math.min(w * f, h * f); + } + + c.moveTo(x + r, y); + c.lineTo(x + w - r, y); + c.quadTo(x + w, y, x + w, y + r); + c.lineTo(x + w, y + h - r); + c.quadTo(x + w, y + h, x + w - r, y + h); + c.lineTo(x + r, y + h); + c.quadTo(x, y + h, x, y + h - r); + c.lineTo(x, y + r); + c.quadTo(x, y, x + r, y); + } + else + { + + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x, y); + } + + // LATER: Check if close is needed here + c.close(); + c.end(); + + c.fillAndStroke(); + } + } + }; + + /** + * Disables glass effect with hand jiggle. + */ + var mxRectangleShapePaintForeground0 = mxRectangleShape.prototype.paintForeground; + mxRectangleShape.prototype.paintForeground = function(c, x, y, w, h) + { + if (c.handJiggle == null) + { + mxRectangleShapePaintForeground0.apply(this, arguments); + } + }; + + // End of hand jiggle integration + + // Process Shape + function ProcessShape() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(ProcessShape, mxRectangleShape); + ProcessShape.prototype.size = 0.1; + ProcessShape.prototype.isHtmlAllowed = function() + { + return false; + }; + ProcessShape.prototype.getLabelBounds = function(rect) + { + if (mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, true) == + (this.direction == null || + this.direction == mxConstants.DIRECTION_EAST || + this.direction == mxConstants.DIRECTION_WEST)) + { + var w = rect.width; + var h = rect.height; + var r = new mxRectangle(rect.x, rect.y, w, h); + + var inset = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + if (this.isRounded) + { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, + mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + r.x += Math.round(inset); + r.width -= Math.round(2 * inset); + + return r; + } + + return rect; + }; + ProcessShape.prototype.paintForeground = function(c, x, y, w, h) + { + var inset = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + if (this.isRounded) + { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, + mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + // Crisp rendering of inner lines + inset = Math.round(inset); + + c.begin(); + c.moveTo(x + inset, y); + c.lineTo(x + inset, y + h); + c.moveTo(x + w - inset, y); + c.lineTo(x + w - inset, y + h); + c.end(); + c.stroke(); + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('process', ProcessShape); + + // Transparent Shape + function TransparentShape() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(TransparentShape, mxRectangleShape); + TransparentShape.prototype.paintBackground = function(c, x, y, w, h) + { + c.setFillColor(mxConstants.NONE); + c.rect(x, y, w, h); + c.fill(); + }; + TransparentShape.prototype.paintForeground = function(c, x, y, w, h) { }; + + mxCellRenderer.registerShape('transparent', TransparentShape); + + // Callout shape + function CalloutShape() + { + mxActor.call(this); + }; + mxUtils.extend(CalloutShape, mxHexagon); + CalloutShape.prototype.size = 30; + CalloutShape.prototype.position = 0.5; + CalloutShape.prototype.position2 = 0.5; + CalloutShape.prototype.base = 20; + CalloutShape.prototype.getLabelMargins = function() + { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue( + this.style, 'size', this.size)) * this.scale); + }; + CalloutShape.prototype.isRoundable = function() + { + return true; + }; + CalloutShape.prototype.redrawPath = function(c, x, y, w, h) + { + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + var s = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var dx = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'position', this.position)))); + var dx2 = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'position2', this.position2)))); + var base = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'base', this.base)))); + + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, h - s), + new mxPoint(Math.min(w, dx + base), h - s), new mxPoint(dx2, h), + new mxPoint(Math.max(0, dx), h - s), new mxPoint(0, h - s)], + this.isRounded, arcSize, true, [4]); + }; + + mxCellRenderer.registerShape('callout', CalloutShape); + + // Step shape + function StepShape() + { + mxActor.call(this); + }; + mxUtils.extend(StepShape, mxActor); + StepShape.prototype.size = 0.2; + StepShape.prototype.fixedSize = 20; + StepShape.prototype.isRoundable = function() + { + return true; + }; + StepShape.prototype.redrawPath = function(c, x, y, w, h) + { + var fixed = mxUtils.getValue(this.style, 'fixedSize', '0') != '0'; + var s = (fixed) ? Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.fixedSize)))) : + w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w - s, 0), new mxPoint(w, h / 2), new mxPoint(w - s, h), + new mxPoint(0, h), new mxPoint(s, h / 2)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('step', StepShape); + + // Hexagon shape + function HexagonShape() + { + mxActor.call(this); + }; + mxUtils.extend(HexagonShape, mxHexagon); + HexagonShape.prototype.size = 0.25; + HexagonShape.prototype.isRoundable = function() + { + return true; + }; + HexagonShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w - s, 0), new mxPoint(w, 0.5 * h), new mxPoint(w - s, h), + new mxPoint(s, h), new mxPoint(0, 0.5 * h)], this.isRounded, arcSize, true); + }; + + mxCellRenderer.registerShape('hexagon', HexagonShape); + + // Plus Shape + function PlusShape() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(PlusShape, mxRectangleShape); + PlusShape.prototype.isHtmlAllowed = function() + { + return false; + }; + PlusShape.prototype.paintForeground = function(c, x, y, w, h) + { + var border = Math.min(w / 5, h / 5) + 1; + + c.begin(); + c.moveTo(x + w / 2, y + border); + c.lineTo(x + w / 2, y + h - border); + c.moveTo(x + border, y + h / 2); + c.lineTo(x + w - border, y + h / 2); + c.end(); + c.stroke(); + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('plus', PlusShape); + + // Overrides painting of rhombus shape to allow for double style + var mxRhombusPaintVertexShape = mxRhombus.prototype.paintVertexShape; + mxRhombus.prototype.getLabelBounds = function(rect) + { + if (this.style['double'] == 1) + { + var margin = (Math.max(2, this.strokewidth + 1) * 2 + parseFloat( + this.style[mxConstants.STYLE_MARGIN] || 0)) * this.scale; + + return new mxRectangle(rect.x + margin, rect.y + margin, + rect.width - 2 * margin, rect.height - 2 * margin); + } + + return rect; + }; + mxRhombus.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxRhombusPaintVertexShape.apply(this, arguments); + + if (!this.outline && this.style['double'] == 1) + { + var margin = Math.max(2, this.strokewidth + 1) * 2 + + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0); + x += margin; + y += margin; + w -= 2 * margin; + h -= 2 * margin; + + if (w > 0 && h > 0) + { + c.setShadow(false); + + // Workaround for closure compiler bug where the lines with x and y above + // are removed if arguments is used as second argument in call below. + mxRhombusPaintVertexShape.apply(this, [c, x, y, w, h]); + } + } + }; + + // CompositeShape + function ExtendedShape() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(ExtendedShape, mxRectangleShape); + ExtendedShape.prototype.isHtmlAllowed = function() + { + return false; + }; + ExtendedShape.prototype.getLabelBounds = function(rect) + { + if (this.style['double'] == 1) + { + var margin = (Math.max(2, this.strokewidth + 1) + parseFloat( + this.style[mxConstants.STYLE_MARGIN] || 0)) * this.scale; + + return new mxRectangle(rect.x + margin, rect.y + margin, + rect.width - 2 * margin, rect.height - 2 * margin); + } + + return rect; + }; + + ExtendedShape.prototype.paintForeground = function(c, x, y, w, h) + { + if (this.style != null) + { + if (!this.outline && this.style['double'] == 1) + { + var margin = Math.max(2, this.strokewidth + 1) + parseFloat(this.style[mxConstants.STYLE_MARGIN] || 0); + x += margin; + y += margin; + w -= 2 * margin; + h -= 2 * margin; + + if (w > 0 && h > 0) + { + mxRectangleShape.prototype.paintBackground.apply(this, arguments); + } + } + + c.setDashed(false); + + // Draws the symbols defined in the style. The symbols are + // numbered from 1...n. Possible postfixes are align, + // verticalAlign, spacing, arcSpacing, width, height + var counter = 0; + var shape = null; + + do + { + shape = mxCellRenderer.defaultShapes[this.style['symbol' + counter]]; + + if (shape != null) + { + var align = this.style['symbol' + counter + 'Align']; + var valign = this.style['symbol' + counter + 'VerticalAlign']; + var width = this.style['symbol' + counter + 'Width']; + var height = this.style['symbol' + counter + 'Height']; + var spacing = this.style['symbol' + counter + 'Spacing'] || 0; + var vspacing = this.style['symbol' + counter + 'VSpacing'] || spacing; + var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; + + if (arcspacing != null) + { + var arcSize = this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + spacing += arcSize; + vspacing += arcSize; + } + + var x2 = x; + var y2 = y; + + if (align == mxConstants.ALIGN_CENTER) + { + x2 += (w - width) / 2; + } + else if (align == mxConstants.ALIGN_RIGHT) + { + x2 += w - width - spacing; + } + else + { + x2 += spacing; + } + + if (valign == mxConstants.ALIGN_MIDDLE) + { + y2 += (h - height) / 2; + } + else if (valign == mxConstants.ALIGN_BOTTOM) + { + y2 += h - height - vspacing; + } + else + { + y2 += vspacing; + } + + c.save(); + + // Small hack to pass style along into subshape + var tmp = new shape(); + // TODO: Clone style and override settings (eg. strokewidth) + tmp.style = this.style; + shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); + c.restore(); + } + + counter++; + } + while (shape != null); + } + + // Paints glass effect + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + }; + + mxCellRenderer.registerShape('ext', ExtendedShape); + + // Tape Shape, supports size style + function MessageShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(MessageShape, mxCylinder); + MessageShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + if (isForeground) + { + path.moveTo(0, 0); + path.lineTo(w / 2, h / 2); + path.lineTo(w, 0); + path.end(); + } + else + { + path.moveTo(0, 0); + path.lineTo(w, 0); + path.lineTo(w, h); + path.lineTo(0, h); + path.close(); + } + }; + + mxCellRenderer.registerShape('message', MessageShape); + + // UML Actor Shape + function UmlActorShape() + { + mxShape.call(this); + }; + mxUtils.extend(UmlActorShape, mxShape); + UmlActorShape.prototype.paintBackground = function(c, x, y, w, h) + { + c.translate(x, y); + + // Head + c.ellipse(w / 4, 0, w / 2, h / 4); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w / 2, h / 4); + c.lineTo(w / 2, 2 * h / 3); + + // Arms + c.moveTo(w / 2, h / 3); + c.lineTo(0, h / 3); + c.moveTo(w / 2, h / 3); + c.lineTo(w, h / 3); + + // Legs + c.moveTo(w / 2, 2 * h / 3); + c.lineTo(0, h); + c.moveTo(w / 2, 2 * h / 3); + c.lineTo(w, h); + c.end(); + + c.stroke(); + }; + + // Replaces existing actor shape + mxCellRenderer.registerShape('umlActor', UmlActorShape); + + // UML Boundary Shape + function UmlBoundaryShape() + { + mxShape.call(this); + }; + mxUtils.extend(UmlBoundaryShape, mxShape); + UmlBoundaryShape.prototype.getLabelMargins = function(rect) + { + return new mxRectangle(rect.width / 6, 0, 0, 0); + }; + UmlBoundaryShape.prototype.paintBackground = function(c, x, y, w, h) + { + c.translate(x, y); + + // Base line + c.begin(); + c.moveTo(0, h / 4); + c.lineTo(0, h * 3 / 4); + c.end(); + c.stroke(); + + // Horizontal line + c.begin(); + c.moveTo(0, h / 2); + c.lineTo(w / 6, h / 2); + c.end(); + c.stroke(); + + // Circle + c.ellipse(w / 6, 0, w * 5 / 6, h); + c.fillAndStroke(); + }; + + // Replaces existing actor shape + mxCellRenderer.registerShape('umlBoundary', UmlBoundaryShape); + + // UML Entity Shape + function UmlEntityShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(UmlEntityShape, mxEllipse); + UmlEntityShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + + c.begin(); + c.moveTo(x + w / 8, y + h); + c.lineTo(x + w * 7 / 8, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlEntity', UmlEntityShape); + + // UML Destroy Shape + function UmlDestroyShape() + { + mxShape.call(this); + }; + mxUtils.extend(UmlDestroyShape, mxShape); + UmlDestroyShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + c.translate(x, y); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(0, h); + c.moveTo(0, 0); + c.lineTo(w, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlDestroy', UmlDestroyShape); + + // UML Control Shape + function UmlControlShape() + { + mxShape.call(this); + }; + mxUtils.extend(UmlControlShape, mxShape); + UmlControlShape.prototype.getLabelBounds = function(rect) + { + return new mxRectangle(rect.x, rect.y + rect.height / 8, rect.width, rect.height * 7 / 8); + }; + UmlControlShape.prototype.paintBackground = function(c, x, y, w, h) + { + c.translate(x, y); + + // Upper line + c.begin(); + c.moveTo(w * 3 / 8, h / 8 * 1.1); + c.lineTo(w * 5 / 8, 0); + c.end(); + c.stroke(); + + // Circle + c.ellipse(0, h / 8, w, h * 7 / 8); + c.fillAndStroke(); + }; + UmlControlShape.prototype.paintForeground = function(c, x, y, w, h) + { + // Lower line + c.begin(); + c.moveTo(w * 3 / 8, h / 8 * 1.1); + c.lineTo(w * 5 / 8, h / 4); + c.end(); + c.stroke(); + }; + + // Replaces existing actor shape + mxCellRenderer.registerShape('umlControl', UmlControlShape); + + // UML Lifeline Shape + function UmlLifeline() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(UmlLifeline, mxRectangleShape); + UmlLifeline.prototype.size = 40; + UmlLifeline.prototype.isHtmlAllowed = function() + { + return false; + }; + UmlLifeline.prototype.getLabelBounds = function(rect) + { + var size = Math.max(0, Math.min(rect.height, parseFloat( + mxUtils.getValue(this.style, 'size', this.size)) * this.scale)); + + return new mxRectangle(rect.x, rect.y, rect.width, size); + }; + UmlLifeline.prototype.paintBackground = function(c, x, y, w, h) + { + var size = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var participant = mxUtils.getValue(this.style, 'participant'); + + if (participant == null || this.state == null) + { + mxRectangleShape.prototype.paintBackground.call(this, c, x, y, w, size); + } + else + { + var ctor = this.state.view.graph.cellRenderer.getShape(participant); + + if (ctor != null && ctor != UmlLifeline) + { + var shape = new ctor(); + shape.apply(this.state); + c.save(); + shape.paintVertexShape(c, x, y, w, size); + c.restore(); + } + } + + if (size < h) + { + c.setDashed(true); + c.begin(); + c.moveTo(x + w / 2, y + size); + c.lineTo(x + w / 2, y + h); + c.end(); + c.stroke(); + } + }; + UmlLifeline.prototype.paintForeground = function(c, x, y, w, h) + { + var size = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + mxRectangleShape.prototype.paintForeground.call(this, c, x, y, w, Math.min(h, size)); + }; + + mxCellRenderer.registerShape('umlLifeline', UmlLifeline); + + // UML Frame Shape + function UmlFrame() + { + mxShape.call(this); + }; + mxUtils.extend(UmlFrame, mxShape); + UmlFrame.prototype.width = 60; + UmlFrame.prototype.height = 30; + UmlFrame.prototype.corner = 10; + UmlFrame.prototype.getLabelMargins = function(rect) + { + return new mxRectangle(0, 0, + rect.width - (parseFloat(mxUtils.getValue(this.style, 'width', this.width) * this.scale)), + rect.height - (parseFloat(mxUtils.getValue(this.style, 'height', this.height) * this.scale))); + }; + UmlFrame.prototype.paintBackground = function(c, x, y, w, h) + { + var co = this.corner; + var w0 = Math.min(w, Math.max(co, parseFloat(mxUtils.getValue(this.style, 'width', this.width)))); + var h0 = Math.min(h, Math.max(co * 1.5, parseFloat(mxUtils.getValue(this.style, 'height', this.height)))); + var bg = mxUtils.getValue(this.style, mxConstants.STYLE_SWIMLANE_FILLCOLOR, mxConstants.NONE); + + if (bg != mxConstants.NONE) + { + c.setFillColor(bg); + c.rect(x, y, w, h); + c.fill(); + } + + if (this.fill != null && this.fill != mxConstants.NONE && this.gradient && this.gradient != mxConstants.NONE) + { + var b = this.getGradientBounds(c, x, y, w, h); + c.setGradient(this.fill, this.gradient, x, y, w, h, this.gradientDirection); + } + else + { + c.setFillColor(this.fill); + } + + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w0, y); + c.lineTo(x + w0, y + Math.max(0, h0 - co * 1.5)); + c.lineTo(x + Math.max(0, w0 - co), y + h0); + c.lineTo(x, y + h0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(x + w0, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x, y + h0); + c.stroke(); + }; + + mxCellRenderer.registerShape('umlFrame', UmlFrame); + + mxPerimeter.LifelinePerimeter = function (bounds, vertex, next, orthogonal) + { + var size = UmlLifeline.prototype.size; + + if (vertex != null) + { + size = mxUtils.getValue(vertex.style, 'size', size) * vertex.view.scale; + } + + var sw = (parseFloat(vertex.style[mxConstants.STYLE_STROKEWIDTH] || 1) * vertex.view.scale / 2) - 1; + + if (next.x < bounds.getCenterX()) + { + sw += 1; + sw *= -1; + } + + return new mxPoint(bounds.getCenterX() + sw, Math.min(bounds.y + bounds.height, + Math.max(bounds.y + size, next.y))); + }; + + mxStyleRegistry.putValue('lifelinePerimeter', mxPerimeter.LifelinePerimeter); + + mxPerimeter.OrthogonalPerimeter = function (bounds, vertex, next, orthogonal) + { + orthogonal = true; + + return mxPerimeter.RectanglePerimeter.apply(this, arguments); + }; + + mxStyleRegistry.putValue('orthogonalPerimeter', mxPerimeter.OrthogonalPerimeter); + + mxPerimeter.BackbonePerimeter = function (bounds, vertex, next, orthogonal) + { + var sw = (parseFloat(vertex.style[mxConstants.STYLE_STROKEWIDTH] || 1) * vertex.view.scale / 2) - 1; + + if (vertex.style['backboneSize'] != null) + { + sw += (parseFloat(vertex.style['backboneSize']) * vertex.view.scale / 2) - 1; + } + + if (vertex.style[mxConstants.STYLE_DIRECTION] == 'south' || + vertex.style[mxConstants.STYLE_DIRECTION] == 'north') + { + if (next.x < bounds.getCenterX()) + { + sw += 1; + sw *= -1; + } + + return new mxPoint(bounds.getCenterX() + sw, Math.min(bounds.y + bounds.height, + Math.max(bounds.y, next.y))); + } + else + { + if (next.y < bounds.getCenterY()) + { + sw += 1; + sw *= -1; + } + + return new mxPoint(Math.min(bounds.x + bounds.width, Math.max(bounds.x, next.x)), + bounds.getCenterY() + sw); + } + }; + + mxStyleRegistry.putValue('backbonePerimeter', mxPerimeter.BackbonePerimeter); + + // Callout Perimeter + mxPerimeter.CalloutPerimeter = function (bounds, vertex, next, orthogonal) + { + return mxPerimeter.RectanglePerimeter(mxUtils.getDirectedBounds(bounds, new mxRectangle(0, 0, 0, + Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(vertex.style, 'size', + CalloutShape.prototype.size)) * vertex.view.scale))), + vertex.style), vertex, next, orthogonal); + }; + + mxStyleRegistry.putValue('calloutPerimeter', mxPerimeter.CalloutPerimeter); + + // Parallelogram Perimeter + mxPerimeter.ParallelogramPerimeter = function (bounds, vertex, next, orthogonal) + { + var size = ParallelogramShape.prototype.size; + + if (vertex != null) + { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + + var direction = (vertex != null) ? mxUtils.getValue( + vertex.style, mxConstants.STYLE_DIRECTION, + mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var vertical = direction == mxConstants.DIRECTION_NORTH || + direction == mxConstants.DIRECTION_SOUTH; + var points; + + if (vertical) + { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y + dy), + new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y)]; + } + else + { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), + new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)]; + } + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) + { + if (next.x < x || next.x > x + w) + { + p1.y = next.y; + } + else + { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('parallelogramPerimeter', mxPerimeter.ParallelogramPerimeter); + + // Trapezoid Perimeter + mxPerimeter.TrapezoidPerimeter = function (bounds, vertex, next, orthogonal) + { + var size = TrapezoidShape.prototype.size; + + if (vertex != null) + { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + + var direction = (vertex != null) ? mxUtils.getValue( + vertex.style, mxConstants.STYLE_DIRECTION, + mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var points; + + if (direction == mxConstants.DIRECTION_EAST) + { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), + new mxPoint(x + w, y + h), new mxPoint(x, y + h), new mxPoint(x + dx, y)]; + } + else if (direction == mxConstants.DIRECTION_WEST) + { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y), + new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h), new mxPoint(x, y)]; + } + else if (direction == mxConstants.DIRECTION_NORTH) + { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y + dy), new mxPoint(x + w, y), + new mxPoint(x + w, y + h), new mxPoint(x, y + h - dy), new mxPoint(x, y + dy)]; + } + else + { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w, y + dy), + new mxPoint(x + w, y + h - dy), new mxPoint(x, y + h), new mxPoint(x, y)]; + } + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) + { + if (next.x < x || next.x > x + w) + { + p1.y = next.y; + } + else + { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('trapezoidPerimeter', mxPerimeter.TrapezoidPerimeter); + + // Step Perimeter + mxPerimeter.StepPerimeter = function (bounds, vertex, next, orthogonal) + { + var fixed = mxUtils.getValue(vertex.style, 'fixedSize', '0') != '0'; + var size = (fixed) ? StepShape.prototype.fixedSize : StepShape.prototype.size; + + if (vertex != null) + { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + + var direction = (vertex != null) ? mxUtils.getValue( + vertex.style, mxConstants.STYLE_DIRECTION, + mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var points; + + if (direction == mxConstants.DIRECTION_EAST) + { + var dx = (fixed) ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy), + new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h), + new mxPoint(x + dx, cy), new mxPoint(x, y)]; + } + else if (direction == mxConstants.DIRECTION_WEST) + { + var dx = (fixed) ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, cy), + new mxPoint(x + w, y + h), new mxPoint(x + dx, y + h), + new mxPoint(x, cy), new mxPoint(x + dx, y)]; + } + else if (direction == mxConstants.DIRECTION_NORTH) + { + var dy = (fixed) ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y + dy), new mxPoint(cx, y), new mxPoint(x + w, y + dy), + new mxPoint(x + w, y + h), new mxPoint(cx, y + h - dy), + new mxPoint(x, y + h), new mxPoint(x, y + dy)]; + } + else + { + var dy = (fixed) ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x, y), new mxPoint(cx, y + dy), new mxPoint(x + w, y), + new mxPoint(x + w, y + h - dy), new mxPoint(cx, y + h), + new mxPoint(x, y + h - dy), new mxPoint(x, y)]; + } + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) + { + if (next.x < x || next.x > x + w) + { + p1.y = next.y; + } + else + { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('stepPerimeter', mxPerimeter.StepPerimeter); + + // Hexagon Perimeter 2 (keep existing one) + mxPerimeter.HexagonPerimeter2 = function (bounds, vertex, next, orthogonal) + { + var size = HexagonShape.prototype.size; + + if (vertex != null) + { + size = mxUtils.getValue(vertex.style, 'size', size); + } + + var x = bounds.x; + var y = bounds.y; + var w = bounds.width; + var h = bounds.height; + + var cx = bounds.getCenterX(); + var cy = bounds.getCenterY(); + + var direction = (vertex != null) ? mxUtils.getValue( + vertex.style, mxConstants.STYLE_DIRECTION, + mxConstants.DIRECTION_EAST) : mxConstants.DIRECTION_EAST; + var vertical = direction == mxConstants.DIRECTION_NORTH || + direction == mxConstants.DIRECTION_SOUTH; + var points; + + if (vertical) + { + var dy = h * Math.max(0, Math.min(1, size)); + points = [new mxPoint(cx, y), new mxPoint(x + w, y + dy), new mxPoint(x + w, y + h - dy), + new mxPoint(cx, y + h), new mxPoint(x, y + h - dy), + new mxPoint(x, y + dy), new mxPoint(cx, y)]; + } + else + { + var dx = w * Math.max(0, Math.min(1, size)); + points = [new mxPoint(x + dx, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy), + new mxPoint(x + w - dx, y + h), new mxPoint(x + dx, y + h), + new mxPoint(x, cy), new mxPoint(x + dx, y)]; + } + + var p1 = new mxPoint(cx, cy); + + if (orthogonal) + { + if (next.x < x || next.x > x + w) + { + p1.y = next.y; + } + else + { + p1.x = next.x; + } + } + + return mxUtils.getPerimeterPoint(points, p1, next); + }; + + mxStyleRegistry.putValue('hexagonPerimeter2', mxPerimeter.HexagonPerimeter2); + + // Provided Interface Shape (aka Lollipop) + function LollipopShape() + { + mxShape.call(this); + }; + mxUtils.extend(LollipopShape, mxShape); + LollipopShape.prototype.size = 10; + LollipopShape.prototype.paintBackground = function(c, x, y, w, h) + { + var sz = parseFloat(mxUtils.getValue(this.style, 'size', this.size)); + c.translate(x, y); + + c.ellipse((w - sz) / 2, 0, sz, sz); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w / 2, sz); + c.lineTo(w / 2, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('lollipop', LollipopShape); + + // Required Interface Shape + function RequiresShape() + { + mxShape.call(this); + }; + mxUtils.extend(RequiresShape, mxShape); + RequiresShape.prototype.size = 10; + RequiresShape.prototype.inset = 2; + RequiresShape.prototype.paintBackground = function(c, x, y, w, h) + { + var sz = parseFloat(mxUtils.getValue(this.style, 'size', this.size)); + var inset = parseFloat(mxUtils.getValue(this.style, 'inset', this.inset)) + this.strokewidth; + c.translate(x, y); + + c.begin(); + c.moveTo(w / 2, sz + inset); + c.lineTo(w / 2, h); + c.end(); + c.stroke(); + + c.begin(); + c.moveTo((w - sz) / 2 - inset, sz / 2); + c.quadTo((w - sz) / 2 - inset, sz + inset, w / 2, sz + inset); + c.quadTo((w + sz) / 2 + inset, sz + inset, (w + sz) / 2 + inset, sz / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('requires', RequiresShape); + + // Required Interface Shape + function RequiredInterfaceShape() + { + mxShape.call(this); + }; + mxUtils.extend(RequiredInterfaceShape, mxShape); + + RequiredInterfaceShape.prototype.paintBackground = function(c, x, y, w, h) + { + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('requiredInterface', RequiredInterfaceShape); + + // Provided and Required Interface Shape + function ProvidedRequiredInterfaceShape() + { + mxShape.call(this); + }; + mxUtils.extend(ProvidedRequiredInterfaceShape, mxShape); + ProvidedRequiredInterfaceShape.prototype.inset = 2; + ProvidedRequiredInterfaceShape.prototype.paintBackground = function(c, x, y, w, h) + { + var inset = parseFloat(mxUtils.getValue(this.style, 'inset', this.inset)) + this.strokewidth; + c.translate(x, y); + + c.ellipse(0, inset, w - 2 * inset, h - 2 * inset); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w / 2, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w / 2, h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('providedRequiredInterface', ProvidedRequiredInterfaceShape); + + // Component shape + function ComponentShape() + { + mxCylinder.call(this); + }; + mxUtils.extend(ComponentShape, mxCylinder); + ComponentShape.prototype.jettyWidth = 32; + ComponentShape.prototype.jettyHeight = 12; + ComponentShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) + { + var dx = parseFloat(mxUtils.getValue(this.style, 'jettyWidth', this.jettyWidth)); + var dy = parseFloat(mxUtils.getValue(this.style, 'jettyHeight', this.jettyHeight)); + var x0 = dx / 2; + var x1 = x0 + dx / 2; + var y0 = 0.3 * h - dy / 2; + var y1 = 0.7 * h - dy / 2; + + if (isForeground) + { + path.moveTo(x0, y0); + path.lineTo(x1, y0); + path.lineTo(x1, y0 + dy); + path.lineTo(x0, y0 + dy); + path.moveTo(x0, y1); + path.lineTo(x1, y1); + path.lineTo(x1, y1 + dy); + path.lineTo(x0, y1 + dy); + path.end(); + } + else + { + path.moveTo(x0, 0); + path.lineTo(w, 0); + path.lineTo(w, h); + path.lineTo(x0, h); + path.lineTo(x0, y1 + dy); + path.lineTo(0, y1 + dy); + path.lineTo(0, y1); + path.lineTo(x0, y1); + path.lineTo(x0, y0 + dy); + path.lineTo(0, y0 + dy); + path.lineTo(0, y0); + path.lineTo(x0, y0); + path.close(); + path.end(); + } + }; + + mxCellRenderer.registerShape('component', ComponentShape); + + // State Shapes derives from double ellipse + function StateShape() + { + mxDoubleEllipse.call(this); + }; + mxUtils.extend(StateShape, mxDoubleEllipse); + StateShape.prototype.outerStroke = true; + StateShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + var inset = Math.min(4, Math.min(w / 5, h / 5)); + + if (w > 0 && h > 0) + { + c.ellipse(x + inset, y + inset, w - 2 * inset, h - 2 * inset); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (this.outerStroke) + { + c.ellipse(x, y, w, h); + c.stroke(); + } + }; + + mxCellRenderer.registerShape('endState', StateShape); + + function StartStateShape() + { + StateShape.call(this); + }; + mxUtils.extend(StartStateShape, StateShape); + StartStateShape.prototype.outerStroke = false; + + mxCellRenderer.registerShape('startState', StartStateShape); + + // Link shape + function LinkShape() + { + mxArrowConnector.call(this); + this.spacing = 0; + }; + mxUtils.extend(LinkShape, mxArrowConnector); + LinkShape.prototype.defaultWidth = 4; + + LinkShape.prototype.isOpenEnded = function() + { + return true; + }; + + LinkShape.prototype.getEdgeWidth = function() + { + return mxUtils.getNumber(this.style, 'width', this.defaultWidth) + Math.max(0, this.strokewidth - 1); + }; + + LinkShape.prototype.isArrowRounded = function() + { + return this.isRounded; + }; + + // Registers the link shape + mxCellRenderer.registerShape('link', LinkShape); + + // Generic arrow + function FlexArrowShape() + { + mxArrowConnector.call(this); + this.spacing = 0; + }; + mxUtils.extend(FlexArrowShape, mxArrowConnector); + FlexArrowShape.prototype.defaultWidth = 10; + FlexArrowShape.prototype.defaultArrowWidth = 20; + + FlexArrowShape.prototype.getStartArrowWidth = function() + { + return this.getEdgeWidth() + mxUtils.getNumber(this.style, 'startWidth', this.defaultArrowWidth); + }; + + FlexArrowShape.prototype.getEndArrowWidth = function() + { + return this.getEdgeWidth() + mxUtils.getNumber(this.style, 'endWidth', this.defaultArrowWidth);; + }; + + FlexArrowShape.prototype.getEdgeWidth = function() + { + return mxUtils.getNumber(this.style, 'width', this.defaultWidth) + Math.max(0, this.strokewidth - 1); + }; + + // Registers the link shape + mxCellRenderer.registerShape('flexArrow', FlexArrowShape); + + // Manual Input shape + function ManualInputShape() + { + mxActor.call(this); + }; + mxUtils.extend(ManualInputShape, mxActor); + ManualInputShape.prototype.size = 30; + ManualInputShape.prototype.isRoundable = function() + { + return true; + }; + ManualInputShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h), new mxPoint(0, s), new mxPoint(w, 0), new mxPoint(w, h)], + this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('manualInput', ManualInputShape); + + // Internal storage + function InternalStorageShape() + { + mxRectangleShape.call(this); + }; + mxUtils.extend(InternalStorageShape, mxRectangleShape); + InternalStorageShape.prototype.dx = 20; + InternalStorageShape.prototype.dy = 20; + InternalStorageShape.prototype.isHtmlAllowed = function() + { + return false; + }; + InternalStorageShape.prototype.paintForeground = function(c, x, y, w, h) + { + mxRectangleShape.prototype.paintForeground.apply(this, arguments); + var inset = 0; + + if (this.isRounded) + { + var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, + mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) / 100; + inset = Math.max(inset, Math.min(w * f, h * f)); + } + + var dx = Math.max(inset, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(inset, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + c.begin(); + c.moveTo(x, y + dy); + c.lineTo(x + w, y + dy); + c.end(); + c.stroke(); + + c.begin(); + c.moveTo(x + dx, y); + c.lineTo(x + dx, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('internalStorage', InternalStorageShape); + + // Internal storage + function CornerShape() + { + mxActor.call(this); + }; + mxUtils.extend(CornerShape, mxActor); + CornerShape.prototype.dx = 20; + CornerShape.prototype.dy = 20; + + // Corner + CornerShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, dy), new mxPoint(dx, dy), + new mxPoint(dx, h), new mxPoint(0, h)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('corner', CornerShape); + + // Crossbar shape + function CrossbarShape() + { + mxActor.call(this); + }; + mxUtils.extend(CrossbarShape, mxActor); + + CrossbarShape.prototype.redrawPath = function(c, x, y, w, h) + { + c.moveTo(0, 0); + c.lineTo(0, h); + c.end(); + + c.moveTo(w, 0); + c.lineTo(w, h); + c.end(); + + c.moveTo(0, h / 2); + c.lineTo(w, h / 2); + c.end(); + }; + + mxCellRenderer.registerShape('crossbar', CrossbarShape); + + // Internal storage + function TeeShape() + { + mxActor.call(this); + }; + mxUtils.extend(TeeShape, mxActor); + TeeShape.prototype.dx = 20; + TeeShape.prototype.dy = 20; + + // Corner + TeeShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var w2 = Math.abs(w - dx) / 2; + + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, dy), new mxPoint((w + dx) / 2, dy), + new mxPoint((w + dx) / 2, h), new mxPoint((w - dx) / 2, h), new mxPoint((w - dx) / 2, dy), + new mxPoint(0, dy)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('tee', TeeShape); + + // Arrow + function SingleArrowShape() + { + mxActor.call(this); + }; + mxUtils.extend(SingleArrowShape, mxActor); + SingleArrowShape.prototype.arrowWidth = 0.3; + SingleArrowShape.prototype.arrowSize = 0.2; + SingleArrowShape.prototype.redrawPath = function(c, x, y, w, h) + { + var aw = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowWidth', this.arrowWidth)))); + var as = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowSize', this.arrowSize)))); + var at = (h - aw) / 2; + var ab = at + aw; + + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, at), new mxPoint(w - as, at), new mxPoint(w - as, 0), new mxPoint(w, h / 2), + new mxPoint(w - as, h), new mxPoint(w - as, ab), new mxPoint(0, ab)], + this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('singleArrow', SingleArrowShape); + + // Arrow + function DoubleArrowShape() + { + mxActor.call(this); + }; + mxUtils.extend(DoubleArrowShape, mxActor); + DoubleArrowShape.prototype.redrawPath = function(c, x, y, w, h) + { + var aw = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowWidth', SingleArrowShape.prototype.arrowWidth)))); + var as = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arrowSize', SingleArrowShape.prototype.arrowSize)))); + var at = (h - aw) / 2; + var ab = at + aw; + + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, h / 2), new mxPoint(as, 0), new mxPoint(as, at), new mxPoint(w - as, at), + new mxPoint(w - as, 0), new mxPoint(w, h / 2), new mxPoint(w - as, h), + new mxPoint(w - as, ab), new mxPoint(as, ab), new mxPoint(as, h)], + this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('doubleArrow', DoubleArrowShape); + + // Data storage + function DataStorageShape() + { + mxActor.call(this); + }; + mxUtils.extend(DataStorageShape, mxActor); + DataStorageShape.prototype.size = 0.1; + DataStorageShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + c.moveTo(s, 0); + c.lineTo(w, 0); + c.quadTo(w - s * 2, h / 2, w, h); + c.lineTo(s, h); + c.quadTo(s - s * 2, h / 2, s, 0); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('dataStorage', DataStorageShape); + + // Or + function OrShape() + { + mxActor.call(this); + }; + mxUtils.extend(OrShape, mxActor); + OrShape.prototype.redrawPath = function(c, x, y, w, h) + { + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('or', OrShape); + + // Xor + function XorShape() + { + mxActor.call(this); + }; + mxUtils.extend(XorShape, mxActor); + XorShape.prototype.redrawPath = function(c, x, y, w, h) + { + c.moveTo(0, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, 0, h); + c.quadTo(w / 2, h / 2, 0, 0); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('xor', XorShape); + + // Loop limit + function LoopLimitShape() + { + mxActor.call(this); + }; + mxUtils.extend(LoopLimitShape, mxActor); + LoopLimitShape.prototype.size = 20; + LoopLimitShape.prototype.isRoundable = function() + { + return true; + }; + LoopLimitShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = Math.min(w / 2, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(s, 0), new mxPoint(w - s, 0), new mxPoint(w, s * 0.8), new mxPoint(w, h), + new mxPoint(0, h), new mxPoint(0, s * 0.8)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('loopLimit', LoopLimitShape); + + // Off page connector + function OffPageConnectorShape() + { + mxActor.call(this); + }; + mxUtils.extend(OffPageConnectorShape, mxActor); + OffPageConnectorShape.prototype.size = 3 / 8; + OffPageConnectorShape.prototype.isRoundable = function() + { + return true; + }; + OffPageConnectorShape.prototype.redrawPath = function(c, x, y, w, h) + { + var s = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w, 0), new mxPoint(w, h - s), new mxPoint(w / 2, h), + new mxPoint(0, h - s)], this.isRounded, arcSize, true); + c.end(); + }; + + mxCellRenderer.registerShape('offPageConnector', OffPageConnectorShape); + + // Internal storage + function TapeDataShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(TapeDataShape, mxEllipse); + TapeDataShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + + c.begin(); + c.moveTo(x + w / 2, y + h); + c.lineTo(x + w, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('tapeData', TapeDataShape); + + // OrEllipseShape + function OrEllipseShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(OrEllipseShape, mxEllipse); + OrEllipseShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + + c.setShadow(false); + c.begin(); + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + c.end(); + c.stroke(); + + c.begin(); + c.moveTo(x + w / 2, y); + c.lineTo(x + w / 2, y + h); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('orEllipse', OrEllipseShape); + + // SumEllipseShape + function SumEllipseShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(SumEllipseShape, mxEllipse); + SumEllipseShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + var s2 = 0.145; + + c.setShadow(false); + c.begin(); + c.moveTo(x + w * s2, y + h * s2); + c.lineTo(x + w * (1 - s2), y + h * (1 - s2)); + c.end(); + c.stroke(); + + c.begin(); + c.moveTo(x + w * (1 - s2), y + h * s2); + c.lineTo(x + w * s2, y + h * (1 - s2)); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('sumEllipse', SumEllipseShape); + + // SortShape + function SortShape() + { + mxRhombus.call(this); + }; + mxUtils.extend(SortShape, mxRhombus); + SortShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxRhombus.prototype.paintVertexShape.apply(this, arguments); + + c.setShadow(false); + c.begin(); + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('sortShape', SortShape); + + // CollateShape + function CollateShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(CollateShape, mxEllipse); + CollateShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w / 2, y + h / 2); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(x, y + h); + c.lineTo(x + w, y + h); + c.lineTo(x + w / 2, y + h / 2); + c.close(); + c.fillAndStroke(); + }; + + mxCellRenderer.registerShape('collate', CollateShape); + + // DimensionShape + function DimensionShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(DimensionShape, mxEllipse); + DimensionShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + // Arrow size + var al = 10; + var cy = y + h - al / 2; + + c.begin(); + c.moveTo(x, y); + c.lineTo(x, y + h); + c.moveTo(x, cy); + c.lineTo(x + al, cy - al / 2); + c.moveTo(x, cy); + c.lineTo(x + al, cy + al / 2); + c.moveTo(x, cy); + c.lineTo(x + w, cy); + + // Opposite side + c.moveTo(x + w, y); + c.lineTo(x + w, y + h); + c.moveTo(x + w, cy); + c.lineTo(x + w - al, cy - al / 2); + c.moveTo(x + w, cy); + c.lineTo(x + w - al, cy + al / 2); + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('dimension', DimensionShape); + + // PartialRectangleShape + function PartialRectangleShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(PartialRectangleShape, mxEllipse); + PartialRectangleShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + if (!this.outline) + { + c.setStrokeColor(null); + } + + mxRectangleShape.prototype.paintBackground.apply(this, arguments); + + if (this.style != null) + { + c.setStrokeColor(this.stroke); + c.rect(x, y, w, h); + c.fill(); + + c.begin(); + c.moveTo(x, y); + + if (mxUtils.getValue(this.style, 'top', '1') == '1') + { + c.lineTo(x + w, y); + } + else + { + c.moveTo(x + w, y); + } + + if (mxUtils.getValue(this.style, 'right', '1') == '1') + { + c.lineTo(x + w, y + h); + } + else + { + c.moveTo(x + w, y + h); + } + + if (mxUtils.getValue(this.style, 'bottom', '1') == '1') + { + c.lineTo(x, y + h); + } + else + { + c.moveTo(x, y + h); + } + + if (mxUtils.getValue(this.style, 'left', '1') == '1') + { + c.lineTo(x, y - this.strokewidth / 2); + } + + c.end(); + c.stroke(); + } + }; + + mxCellRenderer.registerShape('partialRectangle', PartialRectangleShape); + + // LineEllipseShape + function LineEllipseShape() + { + mxEllipse.call(this); + }; + mxUtils.extend(LineEllipseShape, mxEllipse); + LineEllipseShape.prototype.paintVertexShape = function(c, x, y, w, h) + { + mxEllipse.prototype.paintVertexShape.apply(this, arguments); + + c.setShadow(false); + c.begin(); + + if (mxUtils.getValue(this.style, 'line') == 'vertical') + { + c.moveTo(x + w / 2, y); + c.lineTo(x + w / 2, y + h); + } + else + { + c.moveTo(x, y + h / 2); + c.lineTo(x + w, y + h / 2); + } + + c.end(); + c.stroke(); + }; + + mxCellRenderer.registerShape('lineEllipse', LineEllipseShape); + + // Delay + function DelayShape() + { + mxActor.call(this); + }; + mxUtils.extend(DelayShape, mxActor); + DelayShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = Math.min(w, h / 2); + c.moveTo(0, 0); + c.lineTo(w - dx, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w - dx, h); + c.lineTo(0, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('delay', DelayShape); + + // Cross Shape + function CrossShape() + { + mxActor.call(this); + }; + mxUtils.extend(CrossShape, mxActor); + CrossShape.prototype.size = 0.2; + CrossShape.prototype.redrawPath = function(c, x, y, w, h) + { + var m = Math.min(h, w); + var size = Math.max(0, Math.min(m, m * parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var t = (h - size) / 2; + var b = t + size; + var l = (w - size) / 2; + var r = l + size; + + c.moveTo(0, t); + c.lineTo(l, t); + c.lineTo(l, 0); + c.lineTo(r, 0); + c.lineTo(r, t); + c.lineTo(w, t); + c.lineTo(w, b); + c.lineTo(r, b); + c.lineTo(r, h); + c.lineTo(l, h); + c.lineTo(l, b); + c.lineTo(0, b); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('cross', CrossShape); + + // Display + function DisplayShape() + { + mxActor.call(this); + }; + mxUtils.extend(DisplayShape, mxActor); + DisplayShape.prototype.size = 0.25; + DisplayShape.prototype.redrawPath = function(c, x, y, w, h) + { + var dx = Math.min(w, h / 2); + var s = Math.min(w - dx, Math.max(0, parseFloat(mxUtils.getValue(this.style, 'size', this.size))) * w); + + c.moveTo(0, h / 2); + c.lineTo(s, 0); + c.lineTo(w - dx, 0); + c.quadTo(w, 0, w, h / 2); + c.quadTo(w, h, w - dx, h); + c.lineTo(s, h); + c.close(); + c.end(); + }; + + mxCellRenderer.registerShape('display', DisplayShape); + + // FilledEdge shape + function FilledEdge() + { + mxConnector.call(this); + }; + mxUtils.extend(FilledEdge, mxConnector); + + FilledEdge.prototype.origPaintEdgeShape = FilledEdge.prototype.paintEdgeShape; + FilledEdge.prototype.paintEdgeShape = function(c, pts, rounded) + { + // Markers modify incoming points array + var temp = []; + + for (var i = 0; i < pts.length; i++) + { + temp.push(mxUtils.clone(pts[i])); + } + + // paintEdgeShape resets dashed to false + var dashed = c.state.dashed; + var fixDash = c.state.fixDash; + FilledEdge.prototype.origPaintEdgeShape.apply(this, [c, temp, rounded]); + + if (c.state.strokeWidth >= 3) + { + var fillClr = mxUtils.getValue(this.style, 'fillColor', null); + + if (fillClr != null) + { + c.setStrokeColor(fillClr); + c.setStrokeWidth(c.state.strokeWidth - 2); + c.setDashed(dashed, fixDash); + + FilledEdge.prototype.origPaintEdgeShape.apply(this, [c, pts, rounded]); + } + } + }; + + // Registers the link shape + mxCellRenderer.registerShape('filledEdge', FilledEdge); + + // Implements custom colors for shapes + if (typeof StyleFormatPanel !== 'undefined') + { + (function() + { + var styleFormatPanelGetCustomColors = StyleFormatPanel.prototype.getCustomColors; + + StyleFormatPanel.prototype.getCustomColors = function() + { + var ss = this.format.getSelectionState(); + var result = styleFormatPanelGetCustomColors.apply(this, arguments); + + if (ss.style.shape == 'umlFrame') + { + result.push({title: mxResources.get('laneColor'), key: 'swimlaneFillColor', defaultValue: '#ffffff'}); + } + + return result; + }; + })(); + } + + // Registers and defines the custom marker + mxMarker.addMarker('dash', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); + c.stroke(); + }; + }); + + // Registers and defines the custom marker + mxMarker.addMarker('cross', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 - nx / 2); + c.moveTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.lineTo(pe.x - ny / 2 - 3 * nx / 2, pe.y - 3 * ny / 2 + nx / 2); + c.stroke(); + }; + }); + + function circleMarker(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + var a = size / 2; + var size = size + sw; + + var pt = pe.clone(); + + pe.x -= unitX * (2 * size + sw); + pe.y -= unitY * (2 * size + sw); + + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + + return function() + { + c.ellipse(pt.x - unitX - size, pt.y - unitY - size, 2 * size, 2 * size); + + if (filled) + { + c.fillAndStroke(); + } + else + { + c.stroke(); + } + }; + }; + + mxMarker.addMarker('circle', circleMarker); + mxMarker.addMarker('circlePlus', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + var pt = pe.clone(); + var fn = circleMarker.apply(this, arguments); + var nx = unitX * (size + 2 * sw); // (size + sw + 1); + var ny = unitY * (size + 2 * sw); //(size + sw + 1); + + return function() + { + fn.apply(this, arguments); + + c.begin(); + c.moveTo(pt.x - unitX * (sw), pt.y - unitY * (sw)); + c.lineTo(pt.x - 2 * nx + unitX * (sw), pt.y - 2 * ny + unitY * (sw)); + c.moveTo(pt.x - nx - ny + unitY * sw, pt.y - ny + nx - unitX * sw); + c.lineTo(pt.x + ny - nx - unitY * sw, pt.y - ny - nx + unitX * sw); + c.stroke(); + }; + }); + + mxMarker.addMarker('async', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + // The angle of the forward facing arrow sides against the x axis is + // 26.565 degrees, 1/sin(26.565) = 2.236 / 2 = 1.118 ( / 2 allows for + // only half the strokewidth is processed ). + var endOffsetX = unitX * sw * 1.118; + var endOffsetY = unitY * sw * 1.118; + + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + + var pt = pe.clone(); + pt.x -= endOffsetX; + pt.y -= endOffsetY; + + var f = 1; + pe.x += -unitX * f - endOffsetX; + pe.y += -unitY * f - endOffsetY; + + return function() + { + c.begin(); + c.moveTo(pt.x, pt.y); + + if (source) + { + c.lineTo(pt.x - unitX - unitY / 2, pt.y - unitY + unitX / 2); + } + else + { + c.lineTo(pt.x + unitY / 2 - unitX, pt.y - unitY - unitX / 2); + } + + c.lineTo(pt.x - unitX, pt.y - unitY); + c.close(); + + if (filled) + { + c.fillAndStroke(); + } + else + { + c.stroke(); + } + }; + }); + + function createOpenAsyncArrow(widthFactor) + { + widthFactor = (widthFactor != null) ? widthFactor : 2; + + return function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + + var pt = pe.clone(); + + return function() + { + c.begin(); + c.moveTo(pt.x, pt.y); + + if (source) + { + c.lineTo(pt.x - unitX - unitY / widthFactor, pt.y - unitY + unitX / widthFactor); + } + else + { + c.lineTo(pt.x + unitY / widthFactor - unitX, pt.y - unitY - unitX / widthFactor); + } + + c.stroke(); + }; + } + }; + + mxMarker.addMarker('openAsync', createOpenAsyncArrow(2)); + + function arrow(canvas, shape, type, pe, unitX, unitY, size, source, sw, filled) + { + // The angle of the forward facing arrow sides against the x axis is + // 26.565 degrees, 1/sin(26.565) = 2.236 / 2 = 1.118 ( / 2 allows for + // only half the strokewidth is processed ). + var endOffsetX = unitX * sw * 1.118; + var endOffsetY = unitY * sw * 1.118; + + unitX = unitX * (size + sw); + unitY = unitY * (size + sw); + + var pt = pe.clone(); + pt.x -= endOffsetX; + pt.y -= endOffsetY; + + var f = (type != mxConstants.ARROW_CLASSIC && type != mxConstants.ARROW_CLASSIC_THIN) ? 1 : 3 / 4; + pe.x += -unitX * f - endOffsetX; + pe.y += -unitY * f - endOffsetY; + + return function() + { + canvas.begin(); + canvas.moveTo(pt.x, pt.y); + canvas.lineTo(pt.x - unitX - unitY / widthFactor, pt.y - unitY + unitX / widthFactor); + + if (type == mxConstants.ARROW_CLASSIC || type == mxConstants.ARROW_CLASSIC_THIN) + { + canvas.lineTo(pt.x - unitX * 3 / 4, pt.y - unitY * 3 / 4); + } + + canvas.lineTo(pt.x + unitY / widthFactor - unitX, pt.y - unitY - unitX / widthFactor); + canvas.close(); + + if (filled) + { + canvas.fillAndStroke(); + } + else + { + canvas.stroke(); + } + }; + } + + // Handlers are only added if mxVertexHandler is defined (ie. not in embedded graph) + if (typeof mxVertexHandler !== 'undefined') + { + function createHandle(state, keys, getPositionFn, setPositionFn, ignoreGrid, redrawEdges) + { + var handle = new mxHandle(state, null, mxVertexHandler.prototype.secondaryHandleImage); + + handle.execute = function() + { + for (var i = 0; i < keys.length; i++) + { + this.copyStyle(keys[i]); + } + }; + + handle.getPosition = getPositionFn; + handle.setPosition = setPositionFn; + handle.ignoreGrid = (ignoreGrid != null) ? ignoreGrid : true; + + // Overridden to update connected edges + if (redrawEdges) + { + var positionChanged = handle.positionChanged; + + handle.positionChanged = function() + { + positionChanged.apply(this, arguments); + + // Redraws connected edges TODO: Include child edges + state.view.invalidate(this.state.cell); + state.view.validate(); + }; + } + + return handle; + }; + + function createArcHandle(state, yOffset) + { + return createHandle(state, [mxConstants.STYLE_ARCSIZE], function(bounds) + { + var tmp = (yOffset != null) ? yOffset : bounds.height / 8; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') + { + var arcSize = mxUtils.getValue(state.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2; + + return new mxPoint(bounds.x + bounds.width - Math.min(bounds.width / 2, arcSize), bounds.y + tmp); + } + else + { + var arcSize = Math.max(0, parseFloat(mxUtils.getValue(state.style, + mxConstants.STYLE_ARCSIZE, mxConstants.RECTANGLE_ROUNDING_FACTOR * 100))) / 100; + + return new mxPoint(bounds.x + bounds.width - Math.min(Math.max(bounds.width / 2, bounds.height / 2), + Math.min(bounds.width, bounds.height) * arcSize), bounds.y + tmp); + } + }, function(bounds, pt, me) + { + if (mxUtils.getValue(state.style, mxConstants.STYLE_ABSOLUTE_ARCSIZE, 0) == '1') + { + this.state.style[mxConstants.STYLE_ARCSIZE] = Math.round(Math.max(0, Math.min(bounds.width, + (bounds.x + bounds.width - pt.x) * 2))); + } + else + { + var f = Math.min(50, Math.max(0, (bounds.width - pt.x + bounds.x) * 100 / + Math.min(bounds.width, bounds.height))); + this.state.style[mxConstants.STYLE_ARCSIZE] = Math.round(f); + } + }); + } + + function createArcHandleFunction() + { + return function(state) + { + var handles = []; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + function createTrapezoidHandleFunction(max) + { + return function(state) + { + var handles = [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(max, parseFloat(mxUtils.getValue(this.state.style, 'size', TrapezoidShape.prototype.size)))); + + return new mxPoint(bounds.x + size * bounds.width * 0.75, bounds.y + bounds.height / 4); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(max, (pt.x - bounds.x) / (bounds.width * 0.75))); + }, null, true)]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + function createDisplayHandleFunction(defaultValue, allowArcHandle, max, redrawEdges, fixedDefaultValue) + { + max = (max != null) ? max : 1; + + return function(state) + { + var handles = [createHandle(state, ['size'], function(bounds) + { + var fixed = (fixedDefaultValue != null) ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null; + var size = parseFloat(mxUtils.getValue(this.state.style, 'size', (fixed) ? fixedDefaultValue : defaultValue)); + + return new mxPoint(bounds.x + Math.max(0, Math.min(bounds.width, size * ((fixed) ? 1 : bounds.width))), bounds.getCenterY()); + }, function(bounds, pt, me) + { + var fixed = (fixedDefaultValue != null) ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null; + var size = (fixed) ? (pt.x - bounds.x) : Math.max(0, Math.min(max, (pt.x - bounds.x) / bounds.width)); + + if (fixed && !mxEvent.isAltDown(me.getEvent())) + { + size = state.view.graph.snap(size); + } + + this.state.style['size'] = size; + }, null, redrawEdges)]; + + if (allowArcHandle && mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + function createCubeHandleFunction(factor, defaultValue, allowArcHandle) + { + return function(state) + { + var handles = [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.width, Math.min(bounds.height, parseFloat( + mxUtils.getValue(this.state.style, 'size', defaultValue))))) * factor; + + return new mxPoint(bounds.x + size, bounds.y + size); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(Math.max(0, Math.min(Math.min(bounds.width, pt.x - bounds.x), + Math.min(bounds.height, pt.y - bounds.y))) / factor); + })]; + + if (allowArcHandle && mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }; + }; + + function createArrowHandleFunction(maxSize) + { + return function(state) + { + return [createHandle(state, ['arrowWidth', 'arrowSize'], function(bounds) + { + var aw = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'arrowWidth', SingleArrowShape.prototype.arrowWidth))); + var as = Math.max(0, Math.min(maxSize, mxUtils.getValue(this.state.style, 'arrowSize', SingleArrowShape.prototype.arrowSize))); + + return new mxPoint(bounds.x + (1 - as) * bounds.width, bounds.y + (1 - aw) * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['arrowWidth'] = Math.max(0, Math.min(1, Math.abs(bounds.y + bounds.height / 2 - pt.y) / bounds.height * 2)); + this.state.style['arrowSize'] = Math.max(0, Math.min(maxSize, (bounds.x + bounds.width - pt.x) / (bounds.width))); + })]; + }; + }; + + function createEdgeHandle(state, keys, start, getPosition, setPosition) + { + return createHandle(state, keys, function(bounds) + { + var pts = state.absolutePoints; + var n = pts.length - 1; + + var tr = state.view.translate; + var s = state.view.scale; + + var p0 = (start) ? pts[0] : pts[n]; + var p1 = (start) ? pts[1] : pts[n - 1]; + var dx = (start) ? p1.x - p0.x : p1.x - p0.x; + var dy = (start) ? p1.y - p0.y : p1.y - p0.y; + + var dist = Math.sqrt(dx * dx + dy * dy); + + var pt = getPosition.call(this, dist, dx / dist, dy / dist, p0, p1); + + return new mxPoint(pt.x / s - tr.x, pt.y / s - tr.y); + }, function(bounds, pt, me) + { + var pts = state.absolutePoints; + var n = pts.length - 1; + + var tr = state.view.translate; + var s = state.view.scale; + + var p0 = (start) ? pts[0] : pts[n]; + var p1 = (start) ? pts[1] : pts[n - 1]; + var dx = (start) ? p1.x - p0.x : p1.x - p0.x; + var dy = (start) ? p1.y - p0.y : p1.y - p0.y; + + var dist = Math.sqrt(dx * dx + dy * dy); + pt.x = (pt.x + tr.x) * s; + pt.y = (pt.y + tr.y) * s; + + setPosition.call(this, dist, dx / dist, dy / dist, p0, p1, pt, me); + }); + }; + + function createEdgeWidthHandle(state, start, spacing) + { + return createEdgeHandle(state, ['width'], start, function(dist, nx, ny, p0, p1) + { + var w = state.shape.getEdgeWidth() * state.view.scale + spacing; + + return new mxPoint(p0.x + nx * dist / 4 + ny * w / 2, p0.y + ny * dist / 4 - nx * w / 2); + }, function(dist, nx, ny, p0, p1, pt) + { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + state.style['width'] = Math.round(w * 2) / state.view.scale - spacing; + }); + }; + + function ptLineDistance(x1, y1, x2, y2, x0, y0) + { + return Math.abs((y2 - y1) * x0 - (x2 - x1) * y0 + x2 * y1 - y2 * x1) / Math.sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1)); + } + + var handleFactory = { + 'link': function(state) + { + var spacing = 10; + + return [createEdgeWidthHandle(state, true, spacing), createEdgeWidthHandle(state, false, spacing)]; + }, + 'flexArrow': function(state) + { + // Do not use state.shape.startSize/endSize since it is cached + var tol = state.view.graph.gridSize / state.view.scale; + var handles = []; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_STARTARROW, mxConstants.NONE) != mxConstants.NONE) + { + handles.push(createEdgeHandle(state, ['width', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], true, function(dist, nx, ny, p0, p1) + { + var w = (state.shape.getEdgeWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) + ny * w / 2, + p0.y + ny * (l + state.shape.strokewidth * state.view.scale) - nx * w / 2); + }, function(dist, nx, ny, p0, p1, pt, me) + { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + + state.style[mxConstants.STYLE_STARTSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['width'] = Math.round(w * 2) / state.view.scale; + + // Applies to opposite side + if (mxEvent.isControlDown(me.getEvent())) + { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + + // Snaps to end geometry + if (!mxEvent.isAltDown(me.getEvent())) + { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_STARTSIZE]) - parseFloat(state.style[mxConstants.STYLE_ENDSIZE])) < tol / 6) + { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + } + })); + + handles.push(createEdgeHandle(state, ['startWidth', 'endWidth', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], true, function(dist, nx, ny, p0, p1) + { + var w = (state.shape.getStartArrowWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) + ny * w / 2, + p0.y + ny * (l + state.shape.strokewidth * state.view.scale) - nx * w / 2); + }, function(dist, nx, ny, p0, p1, pt, me) + { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + + state.style[mxConstants.STYLE_STARTSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['startWidth'] = Math.max(0, Math.round(w * 2) - state.shape.getEdgeWidth()) / state.view.scale; + + // Applies to opposite side + if (mxEvent.isControlDown(me.getEvent())) + { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + state.style['endWidth'] = state.style['startWidth']; + } + + // Snaps to endWidth + if (!mxEvent.isAltDown(me.getEvent())) + { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_STARTSIZE]) - parseFloat(state.style[mxConstants.STYLE_ENDSIZE])) < tol / 6) + { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + + if (Math.abs(parseFloat(state.style['startWidth']) - parseFloat(state.style['endWidth'])) < tol) + { + state.style['startWidth'] = state.style['endWidth']; + } + } + })); + } + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ENDARROW, mxConstants.NONE) != mxConstants.NONE) + { + handles.push(createEdgeHandle(state, ['width', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], false, function(dist, nx, ny, p0, p1) + { + var w = (state.shape.getEdgeWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_ENDSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) - ny * w / 2, + p0.y + ny * (l + state.shape.strokewidth * state.view.scale) + nx * w / 2); + }, function(dist, nx, ny, p0, p1, pt, me) + { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + + state.style[mxConstants.STYLE_ENDSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['width'] = Math.round(w * 2) / state.view.scale; + + // Applies to opposite side + if (mxEvent.isControlDown(me.getEvent())) + { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + } + + // Snaps to start geometry + if (!mxEvent.isAltDown(me.getEvent())) + { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_ENDSIZE]) - parseFloat(state.style[mxConstants.STYLE_STARTSIZE])) < tol / 6) + { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + } + })); + + handles.push(createEdgeHandle(state, ['startWidth', 'endWidth', mxConstants.STYLE_STARTSIZE, mxConstants.STYLE_ENDSIZE], false, function(dist, nx, ny, p0, p1) + { + var w = (state.shape.getEndArrowWidth() - state.shape.strokewidth) * state.view.scale; + var l = mxUtils.getNumber(state.style, mxConstants.STYLE_ENDSIZE, mxConstants.ARROW_SIZE / 5) * 3 * state.view.scale; + + return new mxPoint(p0.x + nx * (l + state.shape.strokewidth * state.view.scale) - ny * w / 2, + p0.y + ny * (l + state.shape.strokewidth * state.view.scale) + nx * w / 2); + }, function(dist, nx, ny, p0, p1, pt, me) + { + var w = Math.sqrt(mxUtils.ptSegDistSq(p0.x, p0.y, p1.x, p1.y, pt.x, pt.y)); + var l = mxUtils.ptLineDist(p0.x, p0.y, p0.x + ny, p0.y - nx, pt.x, pt.y); + + state.style[mxConstants.STYLE_ENDSIZE] = Math.round((l - state.shape.strokewidth) * 100 / 3) / 100 / state.view.scale; + state.style['endWidth'] = Math.max(0, Math.round(w * 2) - state.shape.getEdgeWidth()) / state.view.scale; + + // Applies to opposite side + if (mxEvent.isControlDown(me.getEvent())) + { + state.style[mxConstants.STYLE_STARTSIZE] = state.style[mxConstants.STYLE_ENDSIZE]; + state.style['startWidth'] = state.style['endWidth']; + } + + // Snaps to start geometry + if (!mxEvent.isAltDown(me.getEvent())) + { + if (Math.abs(parseFloat(state.style[mxConstants.STYLE_ENDSIZE]) - parseFloat(state.style[mxConstants.STYLE_STARTSIZE])) < tol / 6) + { + state.style[mxConstants.STYLE_ENDSIZE] = state.style[mxConstants.STYLE_STARTSIZE]; + } + + if (Math.abs(parseFloat(state.style['endWidth']) - parseFloat(state.style['startWidth'])) < tol) + { + state.style['endWidth'] = state.style['startWidth']; + } + } + })); + } + + return handles; + }, + 'swimlane': function(state) + { + var handles = [createHandle(state, [mxConstants.STYLE_STARTSIZE], function(bounds) + { + var size = parseFloat(mxUtils.getValue(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)); + + if (mxUtils.getValue(state.style, mxConstants.STYLE_HORIZONTAL, 1) == 1) + { + return new mxPoint(bounds.getCenterX(), bounds.y + Math.max(0, Math.min(bounds.height, size))); + } + else + { + return new mxPoint(bounds.x + Math.max(0, Math.min(bounds.width, size)), bounds.getCenterY()); + } + }, function(bounds, pt) + { + state.style[mxConstants.STYLE_STARTSIZE] = + (mxUtils.getValue(this.state.style, mxConstants.STYLE_HORIZONTAL, 1) == 1) ? + Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))) : + Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED)) + { + var size = parseFloat(mxUtils.getValue(state.style, mxConstants.STYLE_STARTSIZE, mxConstants.DEFAULT_STARTSIZE)); + handles.push(createArcHandle(state, size / 2)); + } + + return handles; + }, + 'label': createArcHandleFunction(), + 'ext': createArcHandleFunction(), + 'rectangle': createArcHandleFunction(), + 'triangle': createArcHandleFunction(), + 'rhombus': createArcHandleFunction(), + 'umlLifeline': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'size', UmlLifeline.prototype.size)))); + + return new mxPoint(bounds.getCenterX(), bounds.y + size); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + }, false)]; + }, + 'umlFrame': function(state) + { + var handles = [createHandle(state, ['width', 'height'], function(bounds) + { + var w0 = Math.max(UmlFrame.prototype.corner, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'width', UmlFrame.prototype.width))); + var h0 = Math.max(UmlFrame.prototype.corner * 1.5, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'height', UmlFrame.prototype.height))); + + return new mxPoint(bounds.x + w0, bounds.y + h0); + }, function(bounds, pt) + { + this.state.style['width'] = Math.round(Math.max(UmlFrame.prototype.corner, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['height'] = Math.round(Math.max(UmlFrame.prototype.corner * 1.5, Math.min(bounds.height, pt.y - bounds.y))); + }, false)]; + + return handles; + }, + 'process': function(state) + { + var handles = [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(0.5, parseFloat(mxUtils.getValue(this.state.style, 'size', ProcessShape.prototype.size)))); + + return new mxPoint(bounds.x + bounds.width * size, bounds.y + bounds.height / 4); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(0.5, (pt.x - bounds.x) / bounds.width)); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'cross': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var m = Math.min(bounds.width, bounds.height); + var size = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'size', CrossShape.prototype.size))) * m / 2; + + return new mxPoint(bounds.getCenterX() - size, bounds.getCenterY() - size); + }, function(bounds, pt) + { + var m = Math.min(bounds.width, bounds.height); + this.state.style['size'] = Math.max(0, Math.min(1, Math.min((Math.max(0, bounds.getCenterY() - pt.y) / m) * 2, + (Math.max(0, bounds.getCenterX() - pt.x) / m) * 2))); + })]; + }, + 'note': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.width, Math.min(bounds.height, parseFloat( + mxUtils.getValue(this.state.style, 'size', NoteShape.prototype.size))))); + + return new mxPoint(bounds.x + bounds.width - size, bounds.y + size); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(Math.max(0, Math.min(Math.min(bounds.width, bounds.x + bounds.width - pt.x), + Math.min(bounds.height, pt.y - bounds.y)))); + })]; + }, + 'manualInput': function(state) + { + var handles = [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', ManualInputShape.prototype.size))); + + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + size * 3 / 4); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, (pt.y - bounds.y) * 4 / 3))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'dataStorage': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', DataStorageShape.prototype.size)))); + + return new mxPoint(bounds.x + (1 - size) * bounds.width, bounds.getCenterY()); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.x + bounds.width - pt.x) / bounds.width)); + })]; + }, + 'callout': function(state) + { + var handles = [createHandle(state, ['size', 'position'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', CalloutShape.prototype.size))); + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + + return new mxPoint(bounds.x + position * bounds.width, bounds.y + bounds.height - size); + }, function(bounds, pt) + { + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + this.state.style['size'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + this.state.style['position'] = Math.round(Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width)) * 100) / 100; + }), createHandle(state, ['position2'], function(bounds) + { + var position2 = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position2', CalloutShape.prototype.position2))); + + return new mxPoint(bounds.x + position2 * bounds.width, bounds.y + bounds.height); + }, function(bounds, pt) + { + this.state.style['position2'] = Math.round(Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width)) * 100) / 100; + }), createHandle(state, ['base'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'size', CalloutShape.prototype.size))); + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + var base = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'base', CalloutShape.prototype.base))); + + return new mxPoint(bounds.x + Math.min(bounds.width, position * bounds.width + base), bounds.y + bounds.height - size); + }, function(bounds, pt) + { + var position = Math.max(0, Math.min(1, mxUtils.getValue(this.state.style, 'position', CalloutShape.prototype.position))); + + this.state.style['base'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x - position * bounds.width))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'internalStorage': function(state) + { + var handles = [createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', InternalStorageShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', InternalStorageShape.prototype.dy))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + + if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) + { + handles.push(createArcHandle(state)); + } + + return handles; + }, + 'corner': function(state) + { + return [createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', CornerShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', CornerShape.prototype.dy))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width, pt.x - bounds.x))); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'tee': function(state) + { + return [createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'dx', TeeShape.prototype.dx))); + var dy = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'dy', TeeShape.prototype.dy))); + + return new mxPoint(bounds.x + (bounds.width + dx) / 2, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(Math.max(0, Math.min(bounds.width / 2, (pt.x - bounds.x - bounds.width / 2)) * 2)); + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'singleArrow': createArrowHandleFunction(1), + 'doubleArrow': createArrowHandleFunction(0.5), + 'folder': function(state) + { + return [createHandle(state, ['tabWidth', 'tabHeight'], function(bounds) + { + var tw = Math.max(0, Math.min(bounds.width, mxUtils.getValue(this.state.style, 'tabWidth', FolderShape.prototype.tabWidth))); + var th = Math.max(0, Math.min(bounds.height, mxUtils.getValue(this.state.style, 'tabHeight', FolderShape.prototype.tabHeight))); + + if (mxUtils.getValue(this.state.style, 'tabPosition', FolderShape.prototype.tabPosition) == mxConstants.ALIGN_RIGHT) + { + tw = bounds.width - tw; + } + + return new mxPoint(bounds.x + tw, bounds.y + th); + }, function(bounds, pt) + { + var tw = Math.max(0, Math.min(bounds.width, pt.x - bounds.x)); + + if (mxUtils.getValue(this.state.style, 'tabPosition', FolderShape.prototype.tabPosition) == mxConstants.ALIGN_RIGHT) + { + tw = bounds.width - tw; + } + + this.state.style['tabWidth'] = Math.round(tw); + this.state.style['tabHeight'] = Math.round(Math.max(0, Math.min(bounds.height, pt.y - bounds.y))); + })]; + }, + 'document': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', DocumentShape.prototype.size)))); + + return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + }, + 'tape': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', TapeShape.prototype.size)))); + + return new mxPoint(bounds.getCenterX(), bounds.y + size * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(1, ((pt.y - bounds.y) / bounds.height) * 2)); + })]; + }, + 'offPageConnector': function(state) + { + return [createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', OffPageConnectorShape.prototype.size)))); + + return new mxPoint(bounds.getCenterX(), bounds.y + (1 - size) * bounds.height); + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + }, + 'step': createDisplayHandleFunction(StepShape.prototype.size, true, null, true, StepShape.prototype.fixedSize), + 'hexagon': createDisplayHandleFunction(HexagonShape.prototype.size, true, 0.5, true), + 'curlyBracket': createDisplayHandleFunction(CurlyBracketShape.prototype.size, false), + 'display': createDisplayHandleFunction(DisplayShape.prototype.size, false), + 'cube': createCubeHandleFunction(1, CubeShape.prototype.size, false), + 'card': createCubeHandleFunction(0.5, CardShape.prototype.size, true), + 'loopLimit': createCubeHandleFunction(0.5, LoopLimitShape.prototype.size, true), + 'trapezoid': createTrapezoidHandleFunction(0.5), + 'parallelogram': createTrapezoidHandleFunction(1) + }; + + // Exposes custom handles + mxGraph.createHandle = createHandle; + mxGraph.handleFactory = handleFactory; + + mxVertexHandler.prototype.createCustomHandles = function() + { + // Not rotatable means locked + if (this.state.view.graph.getSelectionCount() == 1) + { + if (this.graph.isCellRotatable(this.state.cell)) + // LATER: Make locked state independent of rotatable flag, fix toggle if default is false + //if (this.graph.isCellResizable(this.state.cell) || this.graph.isCellMovable(this.state.cell)) + { + var name = this.state.style['shape']; + + if (mxCellRenderer.defaultShapes[name] == null && + mxStencilRegistry.getStencil(name) == null) + { + name = mxConstants.SHAPE_RECTANGLE; + } + + var fn = handleFactory[name]; + + if (fn == null && this.state.shape != null && this.state.shape.isRoundable()) + { + fn = handleFactory[mxConstants.SHAPE_RECTANGLE]; + } + + if (fn != null) + { + return fn(this.state); + } + } + } + + return null; + }; + + mxEdgeHandler.prototype.createCustomHandles = function() + { + if (this.state.view.graph.getSelectionCount() == 1) + { + var name = this.state.style['shape']; + + if (mxCellRenderer.defaultShapes[name] == null && + mxStencilRegistry.getStencil(name) == null) + { + name = mxConstants.SHAPE_CONNECTOR; + } + + var fn = handleFactory[name]; + + if (fn != null) + { + return fn(this.state); + } + } + + return null; + } + } + else + { + // Dummy entries to avoid NPE in embed mode + mxGraph.createHandle = function() {}; + mxGraph.handleFactory = {}; + } + + var isoHVector = new mxPoint(1, 0); + var isoVVector = new mxPoint(1, 0); + + var alpha1 = mxUtils.toRadians(-30); + + var cos1 = Math.cos(alpha1); + var sin1 = Math.sin(alpha1); + + isoHVector = mxUtils.getRotatedPoint(isoHVector, cos1, sin1); + + var alpha2 = mxUtils.toRadians(-150); + + var cos2 = Math.cos(alpha2); + var sin2 = Math.sin(alpha2); + + isoVVector = mxUtils.getRotatedPoint(isoVVector, cos2, sin2); + + mxEdgeStyle.IsometricConnector = function (state, source, target, points, result) + { + var view = state.view; + var pt = (points != null && points.length > 0) ? points[0] : null; + var pts = state.absolutePoints; + var p0 = pts[0]; + var pe = pts[pts.length-1]; + + if (pt != null) + { + pt = view.transformControlPoint(state, pt); + } + + if (p0 == null) + { + if (source != null) + { + p0 = new mxPoint(source.getCenterX(), source.getCenterY()); + } + } + + if (pe == null) + { + if (target != null) + { + pe = new mxPoint(target.getCenterX(), target.getCenterY()); + } + } + + var a1 = isoHVector.x; + var a2 = isoHVector.y; + + var b1 = isoVVector.x; + var b2 = isoVVector.y; + + var elbow = mxUtils.getValue(state.style, 'elbow', 'horizontal') == 'horizontal'; + + if (pe != null && p0 != null) + { + var last = p0; + + function isoLineTo(x, y, ignoreFirst) + { + var c1 = x - last.x; + var c2 = y - last.y; + + // Solves for isometric base vectors + var h = (b2 * c1 - b1 * c2) / (a1 * b2 - a2 * b1); + var v = (a2 * c1 - a1 * c2) / (a2 * b1 - a1 * b2); + + if (elbow) + { + if (ignoreFirst) + { + last = new mxPoint(last.x + a1 * h, last.y + a2 * h); + result.push(last); + } + + last = new mxPoint(last.x + b1 * v, last.y + b2 * v); + result.push(last); + } + else + { + if (ignoreFirst) + { + last = new mxPoint(last.x + b1 * v, last.y + b2 * v); + result.push(last); + } + + last = new mxPoint(last.x + a1 * h, last.y + a2 * h); + result.push(last); + } + }; + + if (pt == null) + { + pt = new mxPoint(p0.x + (pe.x - p0.x) / 2, p0.y + (pe.y - p0.y) / 2); + } + + isoLineTo(pt.x, pt.y, true); + isoLineTo(pe.x, pe.y, false); + } + }; + + mxStyleRegistry.putValue('isometricEdgeStyle', mxEdgeStyle.IsometricConnector); + + var graphCreateEdgeHandler = mxGraph.prototype.createEdgeHandler; + mxGraph.prototype.createEdgeHandler = function(state, edgeStyle) + { + if (edgeStyle == mxEdgeStyle.IsometricConnector) + { + var handler = new mxElbowEdgeHandler(state); + handler.snapToTerminals = false; + + return handler; + } + + return graphCreateEdgeHandler.apply(this, arguments); + }; + + // Defines connection points for all shapes + IsoRectangleShape.prototype.constraints = []; + IsoCubeShape.prototype.constraints = []; + CalloutShape.prototype.constraints = []; + mxRectangleShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + mxEllipse.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), true), new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), new mxConnectionConstraint(new mxPoint(1, 0.5))]; + mxLabel.prototype.constraints = mxRectangleShape.prototype.constraints; + mxImageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + mxSwimlane.prototype.constraints = mxRectangleShape.prototype.constraints; + PlusShape.prototype.constraints = mxRectangleShape.prototype.constraints; + NoteShape.prototype.constraints = mxRectangleShape.prototype.constraints; + CardShape.prototype.constraints = mxRectangleShape.prototype.constraints; + CubeShape.prototype.constraints = mxRectangleShape.prototype.constraints; + FolderShape.prototype.constraints = mxRectangleShape.prototype.constraints; + InternalStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DataStorageShape.prototype.constraints = mxRectangleShape.prototype.constraints; + TapeDataShape.prototype.constraints = mxEllipse.prototype.constraints; + OrEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + SumEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + LineEllipseShape.prototype.constraints = mxEllipse.prototype.constraints; + ManualInputShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DelayShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DisplayShape.prototype.constraints = mxRectangleShape.prototype.constraints; + LoopLimitShape.prototype.constraints = mxRectangleShape.prototype.constraints; + OffPageConnectorShape.prototype.constraints = mxRectangleShape.prototype.constraints; + mxCylinder.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.15, 0.05), false), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.85, 0.05), false), + new mxConnectionConstraint(new mxPoint(0, 0.3), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.7), true), + new mxConnectionConstraint(new mxPoint(1, 0.3), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.7), true), + new mxConnectionConstraint(new mxPoint(0.15, 0.95), false), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.85, 0.95), false)]; + UmlActorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.1), false), + new mxConnectionConstraint(new mxPoint(0.5, 0), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.1), false), + new mxConnectionConstraint(new mxPoint(0, 1/3), false), + new mxConnectionConstraint(new mxPoint(0, 1), false), + new mxConnectionConstraint(new mxPoint(1, 1/3), false), + new mxConnectionConstraint(new mxPoint(1, 1), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)]; + ComponentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.3), true), + new mxConnectionConstraint(new mxPoint(0, 0.7), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + mxActor.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.25, 0.2), false), + new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true)]; + SwitchShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.25), false), + new mxConnectionConstraint(new mxPoint(1, 0), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 1), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.75), false), + new mxConnectionConstraint(new mxPoint(1, 1), false)]; + TapeShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.35), false), + new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 0.65), false), + new mxConnectionConstraint(new mxPoint(1, 0.35), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.65), false), + new mxConnectionConstraint(new mxPoint(0.25, 1), false), + new mxConnectionConstraint(new mxPoint(0.75, 0), false)]; + StepShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true)]; + mxLine.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + LollipopShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 0), false), + new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; + mxDoubleEllipse.prototype.constraints = mxEllipse.prototype.constraints; + mxRhombus.prototype.constraints = mxEllipse.prototype.constraints; + mxTriangle.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true)]; + mxHexagon.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.375, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.625, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.375, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.625, 1), true)]; + mxCloud.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.4, 0.1), false), + new mxConnectionConstraint(new mxPoint(0.16, 0.55), false), + new mxConnectionConstraint(new mxPoint(0.07, 0.4), false), + new mxConnectionConstraint(new mxPoint(0.31, 0.8), false), + new mxConnectionConstraint(new mxPoint(0.13, 0.77), false), + new mxConnectionConstraint(new mxPoint(0.8, 0.8), false), + new mxConnectionConstraint(new mxPoint(0.55, 0.95), false), + new mxConnectionConstraint(new mxPoint(0.875, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.96, 0.7), false), + new mxConnectionConstraint(new mxPoint(0.625, 0.2), false), + new mxConnectionConstraint(new mxPoint(0.88, 0.25), false)]; + ParallelogramShape.prototype.constraints = mxRectangleShape.prototype.constraints; + TrapezoidShape.prototype.constraints = mxRectangleShape.prototype.constraints; + DocumentShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true)]; + mxArrow.prototype.constraints = null; + TeeShape.prototype.constraints = null; + CornerShape.prototype.constraints = null; + CrossbarShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0), false), + new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 1), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 1), false)]; + + SingleArrowShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + DoubleArrowShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + CrossShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.5, 0), false), + new mxConnectionConstraint(new mxPoint(0.5, 1), false)]; + UmlLifeline.prototype.constraints = null; + OrShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.25), false), + new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 0.75), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.7, 0.1), false), + new mxConnectionConstraint(new mxPoint(0.7, 0.9), false)]; + XorShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.175, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.175, 0.75), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.7, 0.1), false), + new mxConnectionConstraint(new mxPoint(0.7, 0.9), false)]; + RequiredInterfaceShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + ProvidedRequiredInterfaceShape.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; +})(); diff --git a/data/plugins/grafana-flowcharting/src/css/_chartist-settings.scss b/data/plugins/grafana-flowcharting/src/css/_chartist-settings.scss new file mode 100644 index 0000000000000..7e206e6550ab8 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/css/_chartist-settings.scss @@ -0,0 +1,88 @@ +// Scales for responsive SVG containers +$ct-scales: ((1), (15/16), (8/9), (5/6), (4/5), (3/4), (2/3), (5/8), (1/1.618), (3/5), (9/16), (8/15), (1/2), (2/5), (3/8), (1/3), (1/4)) !default; +$ct-scales-names: (ct-square, ct-minor-second, ct-major-second, ct-minor-third, ct-major-third, ct-perfect-fourth, ct-perfect-fifth, ct-minor-sixth, ct-golden-section, ct-major-sixth, ct-minor-seventh, ct-major-seventh, ct-octave, ct-major-tenth, ct-major-eleventh, ct-major-twelfth, ct-double-octave) !default; + +// Class names to be used when generating CSS +$ct-class-chart: ct-chart !default; +$ct-class-chart-line: ct-chart-line !default; +$ct-class-chart-bar: ct-chart-bar !default; +$ct-class-horizontal-bars: ct-horizontal-bars !default; +$ct-class-chart-pie: ct-chart-pie !default; +$ct-class-chart-donut: ct-chart-donut !default; +$ct-class-label: ct-label !default; +$ct-class-series: ct-series !default; +$ct-class-line: ct-line !default; +$ct-class-point: ct-point !default; +$ct-class-area: ct-area !default; +$ct-class-bar: ct-bar !default; +$ct-class-slice-pie: ct-slice-pie !default; +$ct-class-slice-donut: ct-slice-donut !default; +$ct-class-slice-donut-solid: ct-slice-donut-solid !default; +$ct-class-grid: ct-grid !default; +$ct-class-grid-background: ct-grid-background !default; +$ct-class-vertical: ct-vertical !default; +$ct-class-horizontal: ct-horizontal !default; +$ct-class-start: ct-start !default; +$ct-class-end: ct-end !default; + +// Container ratio +$ct-container-ratio: (1/1.618) !default; + +// Text styles for labels +$ct-text-color: rgba(0, 0, 0, 0.4) !default; +$ct-text-size: 0.75rem !default; +$ct-text-align: flex-start !default; +$ct-text-justify: flex-start !default; +$ct-text-line-height: 1; + +// Grid styles +$ct-grid-color: rgba(0, 0, 0, 0.2) !default; +$ct-grid-dasharray: 2px !default; +$ct-grid-width: 1px !default; +$ct-grid-background-fill: none !default; + +// Line chart properties +$ct-line-width: 4px !default; +$ct-line-dasharray: false !default; +$ct-point-size: 10px !default; +// Line chart point, can be either round or square +$ct-point-shape: round !default; +// Area fill transparency between 0 and 1 +$ct-area-opacity: 0.1 !default; + +// Bar chart bar width +$ct-bar-width: 10px !default; + +// Donut width (If donut width is to big it can cause issues where the shape gets distorted) +$ct-donut-width: 60px !default; + +// If set to true it will include the default classes and generate CSS output. If you're planning to use the mixins you +// should set this property to false +$ct-include-classes: true !default; + +// If this is set to true the CSS will contain colored series. You can extend or change the color with the +// properties below +$ct-include-colored-series: $ct-include-classes !default; + +// If set to true this will include all responsive container variations using the scales defined at the top of the script +$ct-include-alternative-responsive-containers: $ct-include-classes !default; + +// Series names and colors. This can be extended or customized as desired. Just add more series and colors. +$ct-series-names: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) !default; +$ct-series-colors: ( + #d70206, + #f05b4f, + #f4c63d, + #d17905, + #453d3f, + #59922b, + #0544d3, + #6b0392, + #f05b4f, + #dda458, + #eacf7d, + #86797d, + #b2c326, + #6188e2, + #a748ca +) !default; \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/css/flowchart.dark.scss b/data/plugins/grafana-flowcharting/src/css/flowchart.dark.scss new file mode 100644 index 0000000000000..e606a0be3c833 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/css/flowchart.dark.scss @@ -0,0 +1,767 @@ +div.flowchart-panel { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; +} + +div.flowchart-panel__chart { + position: relative; + flex-grow: 1; + // top: 10px; + width: 100%; + height: 100%; + margin: 0; + // overflow: auto; +} + +table.flowchartTable-editor { + font-family: Arial, Helvetica, sans-serif; + border: 2px solid #161719; + background-color: #212124; + width: 90%; + height: 200px; + text-align: left; + border-collapse: collapse; +} + +table.flowchartTable-editor td, +table.flowchartTable-editor th { + border: 2px solid #161719; + padding: 2px 2px; +} +table.flowchartTable-editor tbody td { + font-size: 11px; + color: #e6e6e6; +} +table.flowchartTable-editor thead { + background: #2f2f32; + border-bottom: 2px solid #000000; +} +table.flowchartTable-editor thead th { + font-size: 12px; + font-weight: bold; + color: #33b5e5; + text-align: center; + border-left: 2px solid #171819; +} +table.flowchartTable-editor thead th:first-child { + border-left: none; +} + +table.flowchartTable-editor tfoot td { + font-size: 12px; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid #333; +} + +div.rule-item { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + box-sizing: inherit; + text-decoration: none; + touch-action: manipulation; + display: block; + margin: 3px; + padding: 7px; + background: linear-gradient(135deg, #2f2f32, #262628); + box-shadow: -1px -1px 0 0 hsla(0, 0%, 100%, 0.1), 1px 1px 0 0 rgba(0, 0, 0, 0.3); + color: #d8d9da; +} + +div.rule-item:hover { + background: linear-gradient(135deg, #3d3d41, #262628); +} + +span.rule-extend { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; +} + +span.rule-title { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; +} + +span.rule-nav { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #d8d9da; + box-sizing: inherit; + float: right; +} + +div.tooltip-text { + display: block; + word-wrap:break-word; + max-width: 200px; + white-space: normal +} + +div.tooltip-metric { + margin: 5px 5px 5px 5px; +} + +div.tooltip-graph { + // margin: 5px 5px 5px 5px; +} + +div.tooltip-date { + margin-top:5px; + margin-bottom:5px; +} + + + +.ct-label { + fill: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.4); + font-size: 0.75rem; + line-height: 1; +} + +.ct-chart-line .ct-label, +.ct-chart-bar .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +.ct-chart-pie .ct-label, +.ct-chart-donut .ct-label { + dominant-baseline: central; +} + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} + +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end; +} + +.ct-grid { + stroke: rgba(0, 0, 0, 0.2); + stroke-width: 1px; + stroke-dasharray: 2px; +} + +.ct-grid-background { + fill: none; +} + +.ct-point { + stroke-width: 1px; + stroke-linecap: round; +} + +.ct-line { + fill: none; + stroke-width: 1px; +} + +.ct-area { + stroke: none; + fill-opacity: 0.1; +} + +.ct-bar { + fill: none; + stroke-width: 10px; +} + +.ct-slice-donut { + fill: none; + stroke-width: 60px; +} + +.ct-series-a .ct-point, +.ct-series-a .ct-line, +.ct-series-a .ct-bar, +.ct-series-a .ct-slice-donut { + stroke: #d70206; +} + +.ct-series-a .ct-slice-pie, +.ct-series-a .ct-slice-donut-solid, +.ct-series-a .ct-area { + fill: #d70206; +} + + +.ct-square { + display: block; + position: relative; + width: 100%; +} +.ct-square:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 100%; +} +.ct-square:after { + content: ''; + display: table; + clear: both; +} +.ct-square > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-second { + display: block; + position: relative; + width: 100%; +} +.ct-minor-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 93.75%; +} +.ct-minor-second:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-second { + display: block; + position: relative; + width: 100%; +} +.ct-major-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 88.8888888889%; +} +.ct-major-second:after { + content: ''; + display: table; + clear: both; +} +.ct-major-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-third { + display: block; + position: relative; + width: 100%; +} +.ct-minor-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 83.3333333333%; +} +.ct-minor-third:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-third { + display: block; + position: relative; + width: 100%; +} +.ct-major-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 80%; +} +.ct-major-third:after { + content: ''; + display: table; + clear: both; +} +.ct-major-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fourth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 75%; +} +.ct-perfect-fourth:after { + content: ''; + display: table; + clear: both; +} +.ct-perfect-fourth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fifth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 66.6666666667%; +} +.ct-perfect-fifth:after { + content: ''; + display: table; + clear: both; +} +.ct-perfect-fifth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-minor-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 62.5%; +} +.ct-minor-sixth:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-golden-section { + display: block; + position: relative; + width: 100%; +} +.ct-golden-section:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 61.804697157%; +} +.ct-golden-section:after { + content: ''; + display: table; + clear: both; +} +.ct-golden-section > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-major-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 60%; +} +.ct-major-sixth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-minor-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 56.25%; +} +.ct-minor-seventh:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 53.3333333333%; +} +.ct-major-seventh:after { + content: ''; + display: table; + clear: both; +} +.ct-major-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-octave { + display: block; + position: relative; + width: 100%; +} +.ct-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 50%; +} +.ct-octave:after { + content: ''; + display: table; + clear: both; +} +.ct-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-tenth { + display: block; + position: relative; + width: 100%; +} +.ct-major-tenth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 40%; +} +.ct-major-tenth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-tenth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-eleventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-eleventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 37.5%; +} +.ct-major-eleventh:after { + content: ''; + display: table; + clear: both; +} +.ct-major-eleventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-twelfth { + display: block; + position: relative; + width: 100%; +} +.ct-major-twelfth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 33.3333333333%; +} +.ct-major-twelfth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-twelfth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-double-octave { + display: block; + position: relative; + width: 100%; +} +.ct-double-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 25%; +} +.ct-double-octave:after { + content: ''; + display: table; + clear: both; +} +.ct-double-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-chart .ct-series.ct-series-a .ct-area { fill: rgb(34, 230, 27); } +.ct-chart .ct-series.ct-series-a .ct-line { stroke: rgb(34, 230, 27); } diff --git a/data/plugins/grafana-flowcharting/src/css/flowchart.light.scss b/data/plugins/grafana-flowcharting/src/css/flowchart.light.scss new file mode 100644 index 0000000000000..e606a0be3c833 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/css/flowchart.light.scss @@ -0,0 +1,767 @@ +div.flowchart-panel { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; +} + +div.flowchart-panel__chart { + position: relative; + flex-grow: 1; + // top: 10px; + width: 100%; + height: 100%; + margin: 0; + // overflow: auto; +} + +table.flowchartTable-editor { + font-family: Arial, Helvetica, sans-serif; + border: 2px solid #161719; + background-color: #212124; + width: 90%; + height: 200px; + text-align: left; + border-collapse: collapse; +} + +table.flowchartTable-editor td, +table.flowchartTable-editor th { + border: 2px solid #161719; + padding: 2px 2px; +} +table.flowchartTable-editor tbody td { + font-size: 11px; + color: #e6e6e6; +} +table.flowchartTable-editor thead { + background: #2f2f32; + border-bottom: 2px solid #000000; +} +table.flowchartTable-editor thead th { + font-size: 12px; + font-weight: bold; + color: #33b5e5; + text-align: center; + border-left: 2px solid #171819; +} +table.flowchartTable-editor thead th:first-child { + border-left: none; +} + +table.flowchartTable-editor tfoot td { + font-size: 12px; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid #333; +} + +div.rule-item { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + box-sizing: inherit; + text-decoration: none; + touch-action: manipulation; + display: block; + margin: 3px; + padding: 7px; + background: linear-gradient(135deg, #2f2f32, #262628); + box-shadow: -1px -1px 0 0 hsla(0, 0%, 100%, 0.1), 1px 1px 0 0 rgba(0, 0, 0, 0.3); + color: #d8d9da; +} + +div.rule-item:hover { + background: linear-gradient(135deg, #3d3d41, #262628); +} + +span.rule-extend { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; +} + +span.rule-title { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #dad9d8; + box-sizing: inherit; +} + +span.rule-nav { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + font-family: Roboto, Helvetica Neue, Arial, sans-serif; + font-size: 13px; + line-height: 1.5; + -webkit-box-direction: normal; + cursor: pointer; + color: #d8d9da; + box-sizing: inherit; + float: right; +} + +div.tooltip-text { + display: block; + word-wrap:break-word; + max-width: 200px; + white-space: normal +} + +div.tooltip-metric { + margin: 5px 5px 5px 5px; +} + +div.tooltip-graph { + // margin: 5px 5px 5px 5px; +} + +div.tooltip-date { + margin-top:5px; + margin-bottom:5px; +} + + + +.ct-label { + fill: rgba(0, 0, 0, 0.4); + color: rgba(0, 0, 0, 0.4); + font-size: 0.75rem; + line-height: 1; +} + +.ct-chart-line .ct-label, +.ct-chart-bar .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +.ct-chart-pie .ct-label, +.ct-chart-donut .ct-label { + dominant-baseline: central; +} + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} + +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end; +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end; +} + +.ct-grid { + stroke: rgba(0, 0, 0, 0.2); + stroke-width: 1px; + stroke-dasharray: 2px; +} + +.ct-grid-background { + fill: none; +} + +.ct-point { + stroke-width: 1px; + stroke-linecap: round; +} + +.ct-line { + fill: none; + stroke-width: 1px; +} + +.ct-area { + stroke: none; + fill-opacity: 0.1; +} + +.ct-bar { + fill: none; + stroke-width: 10px; +} + +.ct-slice-donut { + fill: none; + stroke-width: 60px; +} + +.ct-series-a .ct-point, +.ct-series-a .ct-line, +.ct-series-a .ct-bar, +.ct-series-a .ct-slice-donut { + stroke: #d70206; +} + +.ct-series-a .ct-slice-pie, +.ct-series-a .ct-slice-donut-solid, +.ct-series-a .ct-area { + fill: #d70206; +} + + +.ct-square { + display: block; + position: relative; + width: 100%; +} +.ct-square:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 100%; +} +.ct-square:after { + content: ''; + display: table; + clear: both; +} +.ct-square > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-second { + display: block; + position: relative; + width: 100%; +} +.ct-minor-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 93.75%; +} +.ct-minor-second:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-second { + display: block; + position: relative; + width: 100%; +} +.ct-major-second:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 88.8888888889%; +} +.ct-major-second:after { + content: ''; + display: table; + clear: both; +} +.ct-major-second > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-third { + display: block; + position: relative; + width: 100%; +} +.ct-minor-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 83.3333333333%; +} +.ct-minor-third:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-third { + display: block; + position: relative; + width: 100%; +} +.ct-major-third:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 80%; +} +.ct-major-third:after { + content: ''; + display: table; + clear: both; +} +.ct-major-third > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fourth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 75%; +} +.ct-perfect-fourth:after { + content: ''; + display: table; + clear: both; +} +.ct-perfect-fourth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100%; +} +.ct-perfect-fifth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 66.6666666667%; +} +.ct-perfect-fifth:after { + content: ''; + display: table; + clear: both; +} +.ct-perfect-fifth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-minor-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 62.5%; +} +.ct-minor-sixth:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-golden-section { + display: block; + position: relative; + width: 100%; +} +.ct-golden-section:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 61.804697157%; +} +.ct-golden-section:after { + content: ''; + display: table; + clear: both; +} +.ct-golden-section > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-sixth { + display: block; + position: relative; + width: 100%; +} +.ct-major-sixth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 60%; +} +.ct-major-sixth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-sixth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-minor-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-minor-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 56.25%; +} +.ct-minor-seventh:after { + content: ''; + display: table; + clear: both; +} +.ct-minor-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-seventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-seventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 53.3333333333%; +} +.ct-major-seventh:after { + content: ''; + display: table; + clear: both; +} +.ct-major-seventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-octave { + display: block; + position: relative; + width: 100%; +} +.ct-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 50%; +} +.ct-octave:after { + content: ''; + display: table; + clear: both; +} +.ct-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-tenth { + display: block; + position: relative; + width: 100%; +} +.ct-major-tenth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 40%; +} +.ct-major-tenth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-tenth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-eleventh { + display: block; + position: relative; + width: 100%; +} +.ct-major-eleventh:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 37.5%; +} +.ct-major-eleventh:after { + content: ''; + display: table; + clear: both; +} +.ct-major-eleventh > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-major-twelfth { + display: block; + position: relative; + width: 100%; +} +.ct-major-twelfth:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 33.3333333333%; +} +.ct-major-twelfth:after { + content: ''; + display: table; + clear: both; +} +.ct-major-twelfth > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-double-octave { + display: block; + position: relative; + width: 100%; +} +.ct-double-octave:before { + display: block; + float: left; + content: ''; + width: 0; + height: 0; + padding-bottom: 25%; +} +.ct-double-octave:after { + content: ''; + display: table; + clear: both; +} +.ct-double-octave > svg { + display: block; + position: absolute; + top: 0; + left: 0; +} + +.ct-chart .ct-series.ct-series-a .ct-area { fill: rgb(34, 230, 27); } +.ct-chart .ct-series.ct-series-a .ct-line { stroke: rgb(34, 230, 27); } diff --git a/data/plugins/grafana-flowcharting/src/flowchartHandler.js b/data/plugins/grafana-flowcharting/src/flowchartHandler.js new file mode 100644 index 0000000000000..1681101450edb --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/flowchartHandler.js @@ -0,0 +1,419 @@ +/* eslint-disable prefer-destructuring */ +import Flowchart from './flowchart_class'; + +/** + * Class FlowchartHandler + */ +export default class FlowchartHandler { + /** + *Creates an instance of FlowchartHandler to handle flowchart + * @param {*} $scope - angular scope + * @param {*} elem - angular elem + * @param {*} ctrl - ctrlPanel + * @param {*} data - Empty data to store + * @memberof FlowchartHandler + */ + constructor($scope, elem, ctrl, data) { + u.log(1, 'FlowchartHandler.constructor()'); + u.log(0, 'FlowchartHandler.constructor() data', data); + this.$scope = $scope || null; + this.$elem = elem.find('.flowchart-panel__chart'); + this.ctrl = ctrl; + this.flowcharts = []; + this.data = data; + this.firstLoad = true; + this.changeSourceFlag = false; + this.changeOptionFlag = true; + this.changeDataFlag = false; + this.changedRuleFlag = false; + this.defaultXml = '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'; + this.xgraph = undefined; + this.$container = undefined; + this.onMapping = { + active: false, // boolean if pointer mapping is active + object: undefined, // ojb to return id of mapping + id: undefined // id of dom + }; + + this.import(this.data); + + // Events Render + ctrl.events.on('render', () => { + this.render(); + }); + + this.mousedownTimeout = 0; + this.mousedown = 0; + + document.body.onmousedown = () => { + this.mousedown = 0; + window.clearInterval(this.mousedownTimeout); + this.mousedownTimeout = window.setInterval(() => { + this.mousedown += 1; + }, 200); + }; + + document.body.onmouseup = () => { + this.mousedown = 0; + window.clearInterval(this.mousedownTimeout); + }; + } + + /** + * import data into + * + * @param {Object} obj + * @memberof FlowchartHandler + */ + import(obj) { + u.log(1, 'FlowchartHandler.import()'); + u.log(0, 'FlowchartHandler.import() obj', obj); + this.flowcharts = []; + if (obj !== undefined && obj !== null && obj.length > 0) { + obj.forEach(map => { + const container = this.createContainer(); + const newData = {}; + const fc = new Flowchart(map.name, map.xml, container, this.ctrl, newData); + fc.import(map); + this.flowcharts.push(fc); + this.data.push(newData); + }); + } + } + + /** + * Get flowchart in index position + * + * @param {Number} index + * @returns {Flowchart} + * @memberof FlowchartHandler + */ + getFlowchart(index) { + return this.flowcharts[index]; + } + + /** + * Return array of flowchart + * + * @returns {Array} Array of flowchart + * @memberof FlowchartHandler + */ + getFlowcharts() { + return this.flowcharts; + } + + /** + *Return number of flowchart + * + * @returns {number} Nulber of flowchart + * @memberof FlowchartHandler + */ + countFlowcharts() { + if (this.flowcharts !== undefined && Array.isArray(this.flowcharts)) + return this.flowcharts.length; + return 0; + } + + /** + *Create a div container for graph + * + * @returns {DOM} + * @memberof FlowchartHandler + */ + createContainer() { + const $container = $( + `
` + ); + this.$elem.html($container); + return $container[0]; + } + + /** + *Add a flowchart + * + * @param {string} name + * @memberof FlowchartHandler + */ + addFlowchart(name) { + u.log(1, 'FlowchartHandler.addFlowchart()'); + const container = this.createContainer(); + const data = {}; + const flowchart = new Flowchart(name, this.defaultXml, container, this.ctrl, data); + this.data.push(data); + this.flowcharts.push(flowchart); + } + + /** + *Render for draw + * + * @memberof FlowchartHandler + */ + render() { + u.log(1, 'flowchartHandler.render()'); + // not repeat render if mouse down + this.optionsFlag = true; + if (!this.mousedown) { + // SOURCE + if (this.changeSourceFlag) { + this.load(); + this.changeSourceFlag = false; + this.changeRuleFlag = true; + this.optionsFlag = true; + } + // OPTIONS + if (this.changeOptionFlag) { + this.setOptions(); + this.changeOptionFlag = false; + this.optionsFlag = true; + } + // RULES or DATAS + if (this.changeRuleFlag || this.changeDataFlag) { + const rules = this.ctrl.rulesHandler.getRules(); + const series = this.ctrl.series; + + // if (this.changeRuleFlag) { + // this.updateStates(rules); + // this.changeRuleFlag = false; + // } + // this.setStates(rules, series); + // this.applyStates(); + + // Change to async to optimize + this.async_refreshStates(rules,series); + this.changeDataFlag = false; + this.optionsFlag = false; + } + + // OTHER : Resize, OnLoad + if (this.optionsFlag || this.firstLoad) { + this.applyOptions(); + this.optionsFlag = false; + this.firstLoad = false; + } + } + } + + /** + *Flag source change + * + * @memberof FlowchartHandler + */ + sourceChanged() { + this.changeSourceFlag = true; + } + + /** + *Flag options change + * + * @memberof FlowchartHandler + */ + optionChanged() { + this.changeOptionFlag = true; + } + + /** + *Flag rule change + * + * @memberof FlowchartHandler + */ + ruleChanged() { + this.changeRuleFlag = true; + } + + /** + *Flag data change + * + * @memberof FlowchartHandler + */ + dataChanged() { + this.changeDataFlag = true; + } + + /** + *Refresh flowchart then graph + * + * @memberof FlowchartHandler + */ + applyOptions() { + u.log(1, `FlowchartHandler.applyOptions()`); + this.flowcharts.forEach(flowchart => { + flowchart.applyOptions(); + }); + } + + /** + *Call refreshStates asynchronously + * + * @param {*} rules + * @param {*} series + * @memberof FlowchartHandler + */ + async_refreshStates(rules,series) { + this.refreshStates(rules,series); + } + + /** + *Refresh rules according new rules or data + * + * @param {*} rules + * @param {*} series + * @memberof FlowchartHandler + */ + refreshStates(rules,series) { + if (this.changeRuleFlag) { + this.updateStates(rules); + this.changeRuleFlag = false; + } + this.setStates(rules, series); + this.applyStates(); + } + + refresh() { + this.flowcharts.forEach(flowchart => { + flowchart.refresh(); + }); + } + + /** + * Change states of cell according to rules and series + * + * @memberof FlowchartHandler + */ + setStates(rules, series) { + this.flowcharts.forEach(flowchart => { + flowchart.setStates(rules, series); + }); + } + + updateStates(rules) { + this.flowcharts.forEach(flowchart => { + flowchart.updateStates(rules); + }); + } + + /** + * Apply state of cell after setStates + * + * @memberof FlowchartHandler + */ + applyStates() { + this.flowcharts.forEach(flowchart => { + flowchart.applyStates(); + }); + this.refresh(); + } + + /** + *Apply and set options + * + * @memberof FlowchartHandler + */ + setOptions() { + this.flowcharts.forEach(flowchart => { + flowchart.setOptions(); + }); + } + + /** + *(re)draw graph + * + * @memberof FlowchartHandler + */ + draw() { + u.log(1, `FlowchartHandler.draw()`); + this.flowcharts.forEach(flowchart => { + flowchart.redraw(); + }); + } + + /** + *(re)load graph + * + * @memberof FlowchartHandler + */ + load() { + u.log(1, `FlowchartHandler.load()`); + this.flowcharts.forEach(flowchart => { + flowchart.reload(); + }); + } + + /** + *Active option link/map + * + * @param {Object} objToMap + * @memberof FlowchartHandler + */ + setMap(objToMap) { + const flowchart = this.getFlowchart(0); + this.onMapping.active = true; + this.onMapping.object = objToMap; + this.onMapping.id = objToMap.getId(); + this.onMapping.$scope = this.$scope; + flowchart.setMap(this.onMapping); + } + + /** + *Desactivate option + * + * @memberof FlowchartHandler + */ + unsetMap() { + const flowchart = this.getFlowchart(0); + this.onMapping.active = false; + this.onMapping.object = undefined; + this.onMapping.id = ''; + flowchart.unsetMap(); + } + + /** + *Return true if mapping object is active + * + * @param {properties} objToMap + * @returns true - true if mapping mode + * @memberof FlowchartHandler + */ + isMapping(objToMap) { + if (objToMap === undefined || objToMap == null) return this.onMapping.active; + if (this.onMapping.active === true && objToMap === this.onMapping.object) return true; + return false; + } + + listenMessage(event) { + // if (event.origin !== urlEditor) return; + // when editor is open + let index = this.currentFlowchartIndex; + if (event.data === 'ready') { + // send xml + event.source.postMessage(this.flowcharts[index].data.xml, event.origin); + } else { + if (this.onEdit && event.data !== undefined && event.data.length > 0) { + this.flowcharts[index].redraw(event.data); + this.sourceChanged(); + this.$scope.$apply(); + this.render(); + } + if ((this.onEdit && event.data !== undefined) || event.data.length === 0) { + this.editorWindow.close(); + this.onEdit = false; + window.removeEventListener('message', this.listenMessage.bind(this), false); + } + } + } + + /** + *Open graph in draw.io + * + * @param {number} index - index of flowchart + * @memberof FlowchartHandler + */ + openDrawEditor(index) { + const urlEditor = this.getFlowchart(index).getUrlEditor(); + this.currentFlowchartIndex = index; + const theme = this.getFlowchart(index).getThemeEditor(); + const urlParams = `${urlEditor}?embed=1&spin=1&libraries=1&ui=${theme}`; + this.editorWindow = window.open(urlParams, 'MxGraph Editor', 'width=1280, height=720'); + this.onEdit = true; + window.addEventListener('message', this.listenMessage.bind(this), false); + } +} diff --git a/data/plugins/grafana-flowcharting/src/flowchart_class.js b/data/plugins/grafana-flowcharting/src/flowchart_class.js new file mode 100644 index 0000000000000..dc0b6b0f0e626 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/flowchart_class.js @@ -0,0 +1,359 @@ +import XGraph from './graph_class'; +import StateHandler from './statesHandler'; + +/** + *Flowchart handler + * + * @export + * @class Flowchart + */ +export default class Flowchart { + constructor(name, xmlGraph, container, ctrl, data) { + u.log(1, `flowchart[${name}].constructor()`); + u.log(0, `flowchart[${name}].constructor() data`, data); + this.data = data; + this.data.name = name; + this.data.xml = xmlGraph; + this.data.download = false; + this.container = container; + this.xgraph = undefined; + this.stateHandler = undefined; + this.ctrl = ctrl; + this.templateSrv = ctrl.templateSrv; + this.import(data); + } + + /** + *Import data object in current flowchart + * + * @param {Object} obj + * @memberof Flowchart + */ + import(obj) { + u.log(1, `flowchart[${this.data.name}].import()`); + u.log(0, `flowchart[${this.data.name}].import() obj`, obj); + this.data.download = (obj.download !== undefined ? obj.download : false); + if (obj.source) this.data.type = obj.source.type; + else this.data.type = obj.type || this.data.type || 'xml'; + if (obj.source) this.data.xml = obj.source.xml.value; + else this.data.xml = obj.xml || this.data.xml || ''; + if (obj.source) this.data.url = obj.source.url.value; + else this.data.url = (obj.url !== undefined ? obj.url : 'http://:/'); + if (obj.options) this.data.zoom = obj.options.zoom; + else this.data.zoom = obj.zoom || '100%'; + if (obj.options) this.data.center = obj.options.center; + else this.data.center = obj.center !== undefined ? obj.center : true; + if (obj.options) this.data.scale = obj.options.scale; + else this.data.scale = obj.scale !== undefined ? obj.scale : true; + if (obj.options) this.data.lock = obj.options.lock; + else this.data.lock = obj.lock !== undefined ? obj.lock : true; + if (obj.options) this.data.allowDrawio = false; + else this.data.allowDrawio = obj.allowDrawio !== undefined ? obj.allowDrawio : false; + if (obj.options) this.data.tooltip = obj.options.tooltip; + else this.data.tooltip = obj.tooltip !== undefined ? obj.tooltip : true; + if (obj.options) this.data.grid = obj.options.grid; + else this.data.grid = obj.grid !== undefined ? obj.grid : false; + if (obj.options) this.data.bgColor = obj.options.bgColor; + else this.data.bgColor = obj.bgColor; + this.data.editorUrl = obj.editorUrl !== undefined ? obj.editorUrl : "https://www.draw.io"; + this.data.editorTheme = obj.editorTheme !== undefined ? obj.editorTheme : "dark"; + this.init(); + } + + /** + * Return data without functions to save json in grafana + * + * @returns {Object} Data object + * @memberof Flowchart + */ + getData() { + return this.data; + } + + /** + *Update states of flowchart/graph + * + * @param {*} rules + * @memberof Flowchart + */ + updateStates(rules) { + // if (this.stateHandler !== undefined) this.stateHandler.updateStates(rules); + // this.stateHandler.prepare(); + rules.forEach(rule => { + rule.states = this.stateHandler.getStatesForRule(rule); + rule.states.forEach(state => { + state.unsetState(); + }); + }); + } + + /** + *Initialisation of flowchart class + * + * @memberof Flowchart + */ + init() { + u.log(1, `flowchart[${this.data.name}].init()`); + if (this.xgraph === undefined) + this.xgraph = new XGraph(this.container, this.data.type, this.getContent()); + if (this.data.xml !== undefined && this.data.xml !== null) { + if (this.data.allowDrawio) this.xgraph.allowDrawio(true); + else this.xgraph.allowDrawio(false); + this.setOptions(); + this.xgraph.drawGraph(); + if (this.data.tooltip) this.xgraph.tooltipGraph(true); + if (this.data.scale) this.xgraph.scaleGraph(true); + else this.xgraph.zoomGraph(this.data.zoom); + if (this.data.center) this.xgraph.centerGraph(true); + if (this.data.lock) this.xgraph.lockGraph(true); + this.stateHandler = new StateHandler(this.xgraph, this.ctrl); + } else { + u.log(3, 'XML Graph not defined'); + } + } + + getStateHandler() { + return this.stateHandler; + } + + getXGraph() { + return this.xgraph; + } + + setStates(rules, series) { + u.log(1, `flowchart[${this.data.name}].setStates()`); + u.log(0, `flowchart[${this.data.name}].setStates() rules`, rules); + u.log(0, `flowchart[${this.data.name}].setStates() series`, series); + if (rules === undefined) u.log(3, "Rules shoudn't be null"); + if (series === undefined) u.log(3, "Series shoudn't be null"); + this.stateHandler.setStates(rules, series); + } + + setOptions() { + this.setScale(this.data.scale); + this.setCenter(this.data.center); + this.setGrid(this.data.grid); + this.setTooltip(this.data.tooltip); + this.setLock(this.data.lock); + this.setZoom(this.data.zoom); + this.setBgColor(this.data.bgColor); + } + + + + applyStates() { + u.log(1, `flowchart[${this.data.name}].applyStates()`); + this.stateHandler.applyStates(); + } + + applyOptions() { + u.log(1, `flowchart[${this.data.name}].refresh()`); + u.log(0, `flowchart[${this.data.name}].refresh() data`, this.data); + this.xgraph.applyGraph(this.width, this.height); + } + + refresh() + { + this.xgraph.refresh(); + } + + redraw(xmlGraph) { + u.log(1, `flowchart[${this.data.name}].redraw()`); + if (xmlGraph !== undefined) { + this.data.xml = xmlGraph; + this.xgraph.setXmlGraph(this.getXml(true)); + } else { + u.log(2, 'XML Content not defined'); + this.xgraph.setXmlGraph(this.getXml(true)); + } + this.applyOptions(); + } + + reload() { + u.log(1, `flowchart[${this.data.name}].reload()`); + if (this.xgraph !== undefined && this.xgraph !== null) { + this.xgraph.destroyGraph(); + this.xgraph = undefined; + this.init(); + } + else this.init(); + } + + setLock(bool) { + this.data.lock = bool; + this.xgraph.lock = bool; + } + + lock(bool) { + if (bool !== undefined) this.data.lock = bool; + this.xgraph.lockGraph(this.data.lock); + } + + setTooltip(bool) { + this.data.tooltip = bool; + this.xgraph.tooltip = bool; + } + + tooltip(bool) { + if (bool !== undefined) this.data.tooltip = bool; + this.xgraph.tooltipGraph(this.data.tooltip); + } + + setScale(bool) { + this.data.scale = bool; + this.xgraph.scale = bool; + } + + setBgColor(bgColor) { + this.data.bgColor = bgColor; + this.xgraph.bgColor = bgColor; + } + + bgColor(bgColor) { + this.data.bgColor = bgColor; + if (bgColor) this.xgraph.bgGraph(bgColor); + } + + scale(bool) { + u.log(1, 'Flowchart.scale()'); + if (bool !== undefined) this.data.scale = bool; + this.xgraph.scaleGraph(this.data.scale); + } + + setCenter(bool) { + this.data.center = bool; + this.xgraph.center = bool; + } + + getNamesByProp(prop) { + return this.xgraph.getOrignalCells(prop); + } + + getXml(replaceVarBool) { + u.log(1, `flowchart[${this.data.name}].getXml()`); + if (!replaceVarBool) return this.data.xml; + return this.templateSrv.replaceWithText(this.data.xml); + } + + getCsv(replaceVarBool) { + u.log(1, `flowchart[${this.data.name}].getXml()`); + if (!replaceVarBool) return this.data.csv; + return this.templateSrv.replaceWithText(this.data.csv); + } + + getUrlEditor() { + return this.data.editorUrl; + } + + getThemeEditor() { + return this.data.editorTheme; + } + + /** + *Get Source of graph (csv|xml) or get content from url + * + * @returns + * @memberof Flowchart + */ + getContent() { + u.log(1, `flowchart[${this.data.name}].getContent()`); + if (this.data.download) { + let content = this.loadContent(this.data.url); + if (content !== null) { + return content; + } else return ''; + } else { + if (this.data.type === 'xml') return this.getXml(true); + if (this.data.type === 'csv') return this.getCsv(true); + } + } + + loadContent(url) { + u.log(1, `flowchart[${this.data.name}].loadContent()`); + var req = mxUtils.load(url); + if (req.getStatus() === 200) { + return req.getText(); + } else { + u.log(3, 'Cannot load ' + url, req.getStatus()); + return null; + } + } + + renameId(oldId, newId) { + this.xgraph.renameId(oldId, newId); + } + + applyModel() { + this.xmlGraph = this.xgraph.getXmlModel(); + this.redraw(this.xmlGraph); + } + + center(bool) { + if (bool !== undefined) this.data.center = bool; + this.xgraph.centerGraph(this.data.center); + } + + setZoom(percent) { + this.data.zoom = percent; + this.xgraph.zoomPercent = percent; + } + + zoom(percent) { + if (percent !== undefined) this.data.percent = percent; + this.xgraph.zoomGraph(this.data.percent); + } + + setGrid(bool) { + this.data.grid = bool; + this.xgraph.grid = bool; + } + + grid(bool) { + if (bool !== undefined) this.data.grid = bool; + this.xgraph.gridGraph(this.data.grid); + } + + setWidth(width) { + this.width = width; + } + + setHeight(height) { + this.height = height; + } + + setXml(xml) { + this.data.xml = xml; + } + + minify() { + this.data.xml = u.minify(this.data.xml); + } + + prettify() { + this.data.xml = u.prettify(this.data.xml); + } + + decode() { + if (u.isencoded(this.data.xml)) this.data.xml = u.decode(this.data.xml, true, true, true); + } + + encode() { + if (!u.isencoded(this.data.xml)) this.data.xml = u.encode(this.data.xml, true, true, true); + } + + getContainer() { + return this.container; + } + + setMap(onMappingObj) { + u.log(1, `flowchart[${this.data.name}].setMap()`); + const container = this.getContainer(); + this.xgraph.setMap(onMappingObj); + container.scrollIntoView(); + container.focus(); + } + + unsetMap() { + this.xgraph.unsetMap(); + } +} diff --git a/data/plugins/grafana-flowcharting/src/flowchart_ctrl.js b/data/plugins/grafana-flowcharting/src/flowchart_ctrl.js new file mode 100644 index 0000000000000..ab261964aa9f9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/flowchart_ctrl.js @@ -0,0 +1,180 @@ +// eslint-disable-next-line import/no-unresolved +import { MetricsPanelCtrl } from 'app/plugins/sdk'; +// eslint-disable-next-line import/no-unresolved +import TimeSeries from 'app/core/time_series2'; +// eslint-disable-next-line import/no-unresolved +import kbn from 'app/core/utils/kbn'; +import { mappingOptionsTab } from './mapping_options'; +import { flowchartOptionsTab } from './flowchart_options'; +import { inspectOptionsTab } from './inspect_options'; +import RulesHandler from './rulesHandler'; +import FlowchartHandler from './flowchartHandler'; + +const u = require('./utils'); + +window.u = window.u || u; + +class FlowchartCtrl extends MetricsPanelCtrl { + constructor($scope, $injector, $rootScope, templateSrv) { + super($scope, $injector); + this.version = '0.5.0'; + this.$rootScope = $rootScope; + this.$scope = $scope; + this.templateSrv = templateSrv; + this.unitFormats = kbn.getUnitFormats(); + this.changedSource = true; + this.changedData = true; + this.changedOptions = true; + this.rulesHandler = undefined; + this.flowchartHandler = undefined; + this.series = []; + this.panelDefaults = { + newFlag: true, + format: 'short', + valueName: 'current', + rulesData: [], + flowchartsData: [], + }; + + _.defaults(this.panel, this.panelDefaults); + this.panel.graphId = `flowchart_${this.panel.id}`; + this.containerDivId = `container_${this.panel.graphId}`; + + // events + this.events.on('render', this.onRender.bind(this)); + this.events.on('refresh', this.onRefresh.bind(this)); + this.events.on('data-received', this.onDataReceived.bind(this)); + this.events.on('data-error', this.onDataError.bind(this)); + this.events.on('data-snapshot-load', this.onDataReceived.bind(this)); + this.events.on('init-edit-mode', this.onInitEditMode.bind(this)); + this.events.on('init-panel-actions', this.onInitPanelActions.bind(this)); + this.events.on('template-variable-value-updated', this.onVarChanged.bind(this)); + this.dashboard.events.on('template-variable-value-updated', this.onVarChanged.bind(this), $scope); + $rootScope.onAppEvent('template-variable-value-updated', this.onVarChanged.bind(this), $scope); + } + + // + // EVENTS FCT + // + onInitEditMode() { + this.addEditorTab('Flowchart', flowchartOptionsTab, 2); + this.addEditorTab('Mapping', mappingOptionsTab, 3); + this.addEditorTab('Inspect', inspectOptionsTab, 4); + } + + onRefresh() { + u.log(1, 'FlowchartCtrl.onRefresh()'); + this.onRender(); + } + + onVarChanged() { + u.log(1, 'FlowchartCtrl.onVarChanged()'); + this.flowchartHandler.sourceChanged(); + this.flowchartHandler.render(); + } + + onRender() { + u.log(1, 'FlowchartCtrl.onRender()'); + } + + onDataReceived(dataList) { + u.log(1, 'FlowchartCtrl.onDataReceived()'); + u.log(0, 'FlowchartCtrl.onDataReceived() dataList', dataList); + this.series = dataList.map(this.seriesHandler.bind(this)); + u.log(0, 'FlowchartCtrl.onDataReceived() this.series', dataList); + this.flowchartHandler.dataChanged(); + this.render(); + } + + onDataError() { + this.series = []; + this.render(); + } + + onInitPanelActions(actions) { + actions.push({ + text: 'Export SVG', + click: 'ctrl.exportSVG()', + }); + } + + // + // FUNCTIONS + // + link(scope, elem, attrs, ctrl) { + u.log(1, 'FlowchartCtrl.link()'); + + // RULES + const newRulesData = []; + this.rulesHandler = new RulesHandler(scope, newRulesData); + if (this.panel.version === undefined && this.panel.styles !== undefined) { + this.rulesHandler.import(this.panel.styles); + delete this.panel.styles; + } else this.rulesHandler.import(this.panel.rulesData); + if (this.panel.newFlag && this.rulesHandler.countRules() === 0) this.rulesHandler.addRule('.*'); + this.panel.rulesData = newRulesData; + + // FLOWCHART + const newFlowchartsData = []; + this.flowchartHandler = new FlowchartHandler(scope, elem, ctrl, newFlowchartsData); + if (this.panel.version === undefined && this.panel.flowchart !== undefined) { + this.flowchartHandler.import([this.panel.flowchart]); + delete this.panel.flowchart; + } else this.flowchartHandler.import(this.panel.flowchartsData); + if (this.panel.newFlag && this.flowchartHandler.countFlowcharts() === 0) this.flowchartHandler.addFlowchart('Main'); + this.panel.flowchartsData = newFlowchartsData; + + // Versions + this.panel.newFlag = false; + this.panel.version = this.version; + } + + exportSVG() { + const scope = this.$scope.$new(true); + scope.panel = 'table'; + this.publishAppEvent('show-modal', { + templateHtml: '', + scope, + modalClass: 'modal--narrow', + }); + } + + setUnitFormat(subItem) { + this.panel.format = subItem.value; + this.refresh(); + } + + getVariables() { + if (this.templateSrv !== undefined && this.templateSrv !== null) { + return _.map(this.templateSrv.variables, variable => `\${${variable.name}}`); + } + return null; + } + + // + // Series + // + + seriesHandler(seriesData) { + u.log(1, 'FlowchartCtrl.seriesHandler()'); + const series = new TimeSeries({ + datapoints: seriesData.datapoints, + alias: seriesData.target, + unit: seriesData.unit, + }); + series.flotpairs = series.getFlotPairs(this.panel.nullPointMode); + const datapoints = seriesData.datapoints || []; + if (datapoints && datapoints.length > 0) { + const last = datapoints[datapoints.length - 1][1]; + const from = this.range.from; + if (last - from < -10000) { + series.isOutsideRange = true; + } + } + return series; + } +} + +export { FlowchartCtrl, FlowchartCtrl as MetricsPanelCtrl }; + +FlowchartCtrl.templateUrl = './partials/module.html'; diff --git a/data/plugins/grafana-flowcharting/src/flowchart_options.js b/data/plugins/grafana-flowcharting/src/flowchart_options.js new file mode 100644 index 0000000000000..91dc8cba5eb6e --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/flowchart_options.js @@ -0,0 +1,77 @@ +/* eslint-disable no-unused-vars */ +import { plugin } from './plugin'; + +export class FlowchartOptionsCtrl { + /** @ngInject */ + constructor($scope) { + $scope.editor = this; + $scope.GF_PLUGIN = window.GF_PLUGIN; + this.$scope = $scope; + this.ctrl = $scope.ctrl; + this.flowchartHandler = this.ctrl.flowchartHandler; + this.panel = this.ctrl.panel; + this.sourceTypes = [{ text: 'XML Content', value: 'xml' }] + this.themes = [ + { text: 'Dark', value: 'dark' }, + { text: 'Light', value: 'kennedy' }, + { text: 'Mobile', value: 'minimal' }, + { text: 'Atlas', value: 'atlas' }, + ]; + //,{ text: 'CSV', value: 'csv' }]; + } + + /** + *Render + * + * @memberof FlowchartOptionsCtrl + */ + render() { + this.flowchartHandler.render(); + } + + /** + * onSourceChange event when source changes + * + * @memberof FlowchartOptionsCtrl + */ + onSourceChange() { + this.flowchartHandler.sourceChanged(); + this.render(); + } + + /** + * onOptionChange event when options change + * + * @memberof FlowchartOptionsCtrl + */ + onOptionChange() { + u.log(1, "FlowchartOptionsCtrl.onOptionChange()"); + this.flowchartHandler.optionChanged(); + this.render(); + } + + /** + * Open graph in index in draw.io + * + * @param {Number} index - index of graph + * @memberof FlowchartOptionsCtrl + * @see flowchartHandler:openDrawEditor + */ + edit(index) { + this.flowchartHandler.openDrawEditor(index); + } + + getFlowcharts() { + return this.flowchartHandler.getFlowcharts(); + } +} + +/** @ngInject */ +export function flowchartOptionsTab($q, $sce, uiSegmentSrv) { + return { + restrict: 'E', + scope: true, + templateUrl: `${GF_PLUGIN.getPartialPath()}/flowchart_options.html`, + controller: FlowchartOptionsCtrl, + }; +} diff --git a/data/plugins/grafana-flowcharting/src/graph_class.js b/data/plugins/grafana-flowcharting/src/graph_class.js new file mode 100644 index 0000000000000..fdd9643a88b49 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/graph_class.js @@ -0,0 +1,1099 @@ +import { resolve } from 'path'; + +/* eslint-disable no-undef */ +/* eslint-disable new-cap */ +/* eslint-disable dot-notation */ +/* eslint-disable object-shorthand */ +window.mxLanguages = window.mxLanguages || ['en']; + +require('./libs/sanitizer.min'); +const mxgraph = require('mxgraph')({ + mxImageBasePath: GF_PLUGIN.getMxImagePath(), + mxBasePath: GF_PLUGIN.getMxBasePath(), + mxLoadStylesheets: false, + mxLanguage: 'en', + mxLoadResources: false +}); + +const Chartist = require('chartist'); + +window.BASE_PATH = window.BASE_PATH || GF_PLUGIN.getMxBasePath(); +window.RESOURCES_PATH = window.BASE_PATH || `${window.BASE_PATH}resources`; +window.RESOURCE_BASE = window.RESOURCE_BASE || `${window.RESOURCES_PATH}/grapheditor`; +window.STENCIL_PATH = window.STENCIL_PATH || `${window.BASE_PATH}stencils`; +window.SHAPES_PATH = window.SHAPES_PATH || GF_PLUGIN.getShapesPath(); +window.IMAGE_PATH = window.IMAGE_PATH || `${window.BASE_PATH}images`; +window.STYLE_PATH = window.STYLE_PATH || `${window.BASE_PATH}styles`; +window.CSS_PATH = window.CSS_PATH || `${window.BASE_PATH}styles`; +window.mxLanguages = window.mxLanguages || ['en']; + +// Put to global vars to work +window.mxActor = window.mxActor || mxgraph.mxActor; +window.mxArrow = window.mxArrow || mxgraph.mxArrow; +window.mxArrowConnector = window.mxArrowConnector || mxgraph.mxArrowConnector; +window.mxCell = window.mxCell || mxgraph.mxCell; +window.mxCellEditor = window.mxCellEditor || mxgraph.mxCellEditor; +window.mxCellHighlight = window.mxCellHighlight || mxgraph.mxCellHighlight; +window.mxCellOverlay = window.mxCellOverlay || mxgraph.mxCellOverlay; +window.mxCellRenderer = window.mxCellRenderer || mxgraph.mxCellRenderer; +window.mxCellState = window.mxCellState || mxgraph.mxCellState; +window.mxClient = window.mxClient || mxgraph.mxClient; +mxClient.mxBasePath = GF_PLUGIN.getMxBasePath(); +mxClient.mxImageBasePath = GF_PLUGIN.getMxImagePath(); +mxClient.mxLoadResources = true; +mxClient.mxLanguage = 'en'; +mxClient.mxLoadStylesheets = true; +window.mxCloud = window.mxCloud || mxgraph.mxCloud; +window.mxCodec = window.mxCodec || mxgraph.mxCodec; +window.mxCompactTreeLayout = window.mxCompactTreeLayout || mxgraph.mxCompactTreeLayout; +window.mxConnectionConstraint = window.mxConnectionConstraint || mxgraph.mxConnectionConstraint; +window.mxConnectionHandler = window.mxConnectionHandler || mxgraph.mxConnectionHandler; +window.mxConnector = window.mxConnector || mxgraph.mxConnector; +window.mxConstants = window.mxConstants || mxgraph.mxConstants; +window.mxConstraintHandler = window.mxConstraintHandler || mxgraph.mxConstraintHandler; +window.mxCylinder = window.mxCylinder || mxgraph.mxCylinder; +window.mxDefaultKeyHandler = window.mxDefaultKeyHandler || mxgraph.mxDefaultKeyHandler; +window.mxDefaultPopupMenu = window.mxDefaultPopupMenu || mxgraph.mxDefaultPopupMenu; +window.mxDefaultToolbar = window.mxDefaultToolbar || mxgraph.mxDefaultToolbar; +window.mxDivResizer = window.mxDivResizer || mxgraph.mxDivResizer; +window.mxDoubleEllipse = window.mxDoubleEllipse || mxgraph.mxDoubleEllipse; +window.mxDragSource = window.mxDragSource || mxgraph.mxDragSource; +window.mxEdgeStyle = window.mxEdgeStyle || mxgraph.mxEdgeStyle; +window.mxEdgeHandler = window.mxEdgeHandler || mxgraph.mxEdgeHandler; +window.mxEditor = window.mxEditor || mxgraph.mxEditor; +window.mxElbowEdgeHandler = window.mxElbowEdgeHandler || mxgraph.mxElbowEdgeHandler; +window.mxEllipse = window.mxEllipse || mxgraph.mxEllipse; +window.mxEvent = window.mxEvent || mxgraph.mxEvent; +window.mxEventObject = window.mxEventObject || mxgraph.mxEventObject; +window.mxFile = window.mxFile || mxgraph.mxFile; +window.mxGeometry = window.mxGeometry || mxgraph.mxGeometry; +window.mxGraph = window.mxGraph || mxgraph.mxGraph; +window.mxGraphHandler = window.mxGraphHandler || mxgraph.mxGraphHandler; +window.mxGraphModel = window.mxGraphModel || mxgraph.mxGraphModel; +window.mxGraphView = window.mxGraphView || mxgraph.mxGraphView; +window.mxGuide = window.mxGuide || mxgraph.mxGuide; +window.mxHexagon = window.mxHexagon || mxgraph.mxHexagon; +window.mxHandle = window.mxHandle || mxgraph.mxHandle; +window.mxHierarchicalLayout = window.mxHierarchicalLayout || mxgraph.mxHierarchicalLayout; +window.mxImage = window.mxImage || mxgraph.mxImage; +window.mxImageShape = window.mxImageShape || mxgraph.mxImageShape; +window.mxKeyHandler = window.mxKeyHandler || mxgraph.mxKeyHandler; +window.mxLabel = window.mxLabel || mxgraph.mxLabel; +window.mxLayoutManager = window.mxLayoutManager || mxgraph.mxLayoutManager; +window.mxLine = window.mxLine || mxgraph.mxLine; +window.mxMarker = window.mxMarker || mxgraph.mxMarker; +window.mxOutline = window.mxOutline || mxgraph.mxOutline; +window.mxPanningHandler = window.mxPanningHandler || mxgraph.mxPanningHandler; +window.mxPerimeter = window.mxPerimeter || mxgraph.mxPerimeter; +window.mxPoint = window.mxPoint || mxgraph.mxPoint; +window.mxPolyline = window.mxPolyline || mxgraph.mxPolyline; +window.mxPopupMenu = window.mxPopupMenu || mxgraph.mxPopupMenu; +window.mxPopupMenuHandler = window.mxPopupMenuHandler || mxgraph.mxPopupMenuHandler; +window.mxPrintPreview = window.mxPrintPreview || mxgraph.mxPrintPreview; +window.mxRectangle = window.mxRectangle || mxgraph.mxRectangle; +window.mxRectangleShape = window.mxRectangleShape || mxgraph.mxRectangleShape; +window.mxResources = window.mxResources || mxgraph.mxResources; +window.mxRhombus = window.mxRhombus || mxgraph.mxRhombus; +window.mxRubberband = window.mxRubberband || mxgraph.mxRubberband; +window.mxShape = window.mxShape || mxgraph.mxShape; +window.mxStackLayout = window.mxStackLayout || mxgraph.mxStackLayout; +window.mxStencil = window.mxStencil || mxgraph.mxStencil; +window.mxStencilRegistry = window.mxStencilRegistry || mxgraph.mxStencilRegistry; +window.mxStylesheet = window.mxStylesheet || mxgraph.mxStylesheet; +window.mxStyleRegistry = window.mxStyleRegistry || mxgraph.mxStyleRegistry; +window.mxSvgCanvas2D = window.mxSvgCanvas2D || mxgraph.mxSvgCanvas2D; +window.mxSwimlane = window.mxSwimlane || mxgraph.mxSwimlane; +window.mxText = window.mxText || mxgraph.mxText; +window.mxToolbar = window.mxToolbar || mxgraph.mxToolbar; +window.mxTooltip = window.mxTooltip || mxgraph.mxTooltip; +window.mxTooltipHandler = window.mxTooltipHandler || mxgraph.mxTooltipHandler; +window.mxTriangle = window.mxTriangle || mxgraph.mxTriangle; +window.mxUndoManager = window.mxUndoManager || mxgraph.mxUndoManager; +window.mxUrlConverter = window.mxUrlConverter || mxgraph.mxUrlConverter; +window.mxUtils = window.mxUtils || mxgraph.mxUtils; +window.mxValueChange = window.mxValueChange || mxgraph.mxValueChange; +window.mxVertexHandler = window.mxVertexHandler || mxgraph.mxVertexHandler; + +// Extends mxGraph +require('./Shapes'); +const Graph = require('./Graph')({ + libs: 'arrows;basic;bpmn;flowchart' +}); +Graph.handleFactory = mxGraph.handleFactory; +Graph.createHandle = mxGraph.createHandle; +// Specifics function for Flowcharting +require('./Graph_over'); +window.Graph = window.Graph || Graph; + +/** + *mxGraph interface class + * + * @export + * @class XGraph + */ +export default class XGraph { + /** + *Creates an instance of XGraph. + * @param {DOM} container + * @param {string} definition + * @memberof XGraph + */ + constructor(container, type, definition) { + u.log(1, 'XGraph.constructor()'); + this.container = container; + this.xmlGraph = undefined; + this.type = type; + this.graph = undefined; + this.scale = true; + this.tooltip = true; + this.lock = true; + this.center = true; + this.zoom = false; + // BEGIN ZOOM MouseWheele + this.zoomFactor = 1.2; + this.cumulativeZoomFactor = 1; + this.updateZoomTimeout = null; + this.resize = null; + // END ZOOM MouseWheele + this.grid = false; + this.bgColor = undefined; + this.zoomPercent = '1'; + this.cells = {}; + this.cells.id = []; + this.cells.value = []; + this.cells.attributs = {}; + this.clickBackup = undefined; + if (type === 'xml') { + if (u.isencoded(definition)) this.xmlGraph = u.decode(definition, true, true, true); + else this.xmlGraph = definition; + } + + this.initGraph(); + } + + /** + *Graph initilisation and reset + * + * @memberof XGraph + */ + initGraph() { + u.log(1, 'XGraph.initGraph()'); + this.graph = new Graph(this.container); + this.graph.getTooltipForCell = this.getTooltipForCell; + + // /!\ What is setPannig + this.graph.setPanning(true); + + // Backup funtions of clicks + this.clickBackup = this.graph.click; + this.dbclickBackup = this.graph.dblClick; + + // EVENTS + + // CTRL+MOUSEWHEEL + mxEvent.addMouseWheelListener(mxUtils.bind(this, this.eventMouseWheel), this.container); + if (mxClient.IS_IE || mxClient.IS_EDGE) + mxEvent.addListener(this.container, 'wheel', mxUtils.bind(this, this.eventMouseWheel)); + + // KEYS + mxEvent.addListener(document, 'keydown', mxUtils.bind(this, this.eventKey)); + + // CONTEXT MENU + this.container.addEventListener('contextmenu', e => e.preventDefault()); + + // DB CLICK + this.graph.dblClick = this.eventDbClick.bind(this); + } + + /** + *Draw graph + * + * @memberof XGraph + */ + drawGraph() { + u.log(1, 'XGraph.drawGraph()'); + this.graph.getModel().beginUpdate(); + this.graph.getModel().clear(); + try { + const xmlDoc = mxUtils.parseXml(this.xmlGraph); + const codec = new mxCodec(xmlDoc); + codec.decode(xmlDoc.documentElement, this.graph.getModel()); + } catch (error) { + u.log(3, 'Error in draw', error); + } finally { + this.graph.getModel().endUpdate(); + this.cells['id'] = this.getCurrentCells('id'); + this.cells['value'] = this.getCurrentCells('value'); + } + } + + /** + *apply options on graph + * + * @param {*} width + * @param {*} height + * @memberof XGraph + */ + applyGraph() { + u.log(1, 'XGraph.refreshGraph()'); + if (!this.scale) this.zoomGraph(this.zoomPercent); + else this.unzoomGraph(); + this.tooltipGraph(this.tooltip); + this.lockGraph(this.lock); + if (this.scale && this.center) this.fitGraph(); + else { + this.scaleGraph(this.scale); + this.centerGraph(this.center); + } + this.gridGraph(this.grid); + this.bgGraph(this.bgColor); + this.refresh(); + } + + refresh() { + this.graph.refresh(); + } + + destroyGraph() { + this.graph.destroy(); + this.graph = undefined; + } + + /** + *lock cells + * + * @param {Boolean} bool + * @memberof XGraph + */ + lockGraph(bool) { + if (bool) this.graph.setEnabled(false); + else this.graph.setEnabled(true); + this.lock = bool; + } + + /** + *Enable tooltip + * + * @param {Boolean} bool + * @memberof XGraph + */ + tooltipGraph(bool) { + if (bool) this.graph.setTooltips(true); + else this.graph.setTooltips(false); + this.tooltip = bool; + } + + allowDrawio(bool) { + if (bool) { + mxUrlConverter.prototype.baseUrl = 'http://draw.io/'; + mxUrlConverter.prototype.baseDomain = ''; + } else { + mxUrlConverter.prototype.baseUrl = null; + mxUrlConverter.prototype.baseDomain = null; + } + } + + /** + *Center graph in panel + * + * @param {Boolean} bool + * @memberof XGraph + */ + centerGraph(bool) { + this.graph.centerZoom = false; + if (bool) this.graph.center(true, true); + else this.graph.center(false, false); + this.center = bool; + } + + /** + *Scale graph in panel + * + * @param {Boolean} bool + * @memberof XGraph + */ + scaleGraph(bool) { + if (bool) { + this.unzoomGraph(); + this.graph.fit(); + this.graph.view.rendering = true; + } + this.scale = bool; + } + + fitGraph() { + var margin = 2; + var max = 3; + + var bounds = this.graph.getGraphBounds(); + var cw = this.graph.container.clientWidth - margin; + var ch = this.graph.container.clientHeight - margin; + var w = bounds.width / this.graph.view.scale; + var h = bounds.height / this.graph.view.scale; + var s = Math.min(max, Math.min(cw / w, ch / h)); + + this.graph.view.scaleAndTranslate( + s, + (margin + cw - w * s) / (2 * s) - bounds.x / this.graph.view.scale, + (margin + ch - h * s) / (2 * s) - bounds.y / this.graph.view.scale + ); + } + + /** + *Display grid in panel + * + * @param {Boolean} bool + * @memberof XGraph + */ + gridGraph(bool) { + if (bool) { + // eslint-disable-next-line no-undef + this.container.style.backgroundImage = `url('${IMAGE_PATH}/grid.gif')`; + } else { + this.container.style.backgroundImage = ''; + } + this.grid = bool; + } + + /** + *Zoom/unzoom + * + * @param {string} percent + * @memberof XGraph + */ + zoomGraph(percent) { + u.log(1, 'XGraph.zoomGraph()'); + if (!this.scale && percent && percent.length > 0 && percent !== '100%' && percent !== '0%') { + const ratio = percent.replace('%', '') / 100; + this.graph.zoomTo(ratio, true); + this.zoomPercent = percent; + } else { + this.unzoomGraph(); + } + this.zoom = true; + } + + /** + *Restore initial size + * + * @memberof XGraph + */ + unzoomGraph() { + this.zoom = false; + this.graph.zoomActual(); + } + + /** + *Define background color + * + * @param {string} bgColor + * @memberof XGraph + */ + bgGraph(bgColor) { + const $div = $(this.container); + if (bgColor) { + this.bgColor = bgColor; + $div.css('background-color', bgColor); + } else { + $div.css('background-color', ''); + } + } + + /** + *Return mxgraph object + * + * @returns {mxGraph} + * @memberof XGraph + */ + getMxGraph() { + return this.graph; + } + + /** + *Return xml definition + * + * @returns {string} + * @memberof XGraph + */ + getxmlGraph() { + return this.xmlGraph; + } + + /** + *Assign xml definition and redraw graph + * + * @param {string} xmlGraph + * @memberof XGraph + */ + setXmlGraph(xmlGraph) { + u.log(1, 'XGraph.setXmlGraph()'); + if (u.isencoded(xmlGraph)) this.xmlGraph = u.decode(xmlGraph, true, true, true); + else this.xmlGraph = xmlGraph; + this.drawGraph(); + } + + /** + *Get list of values or id + * + * @param {string} prop - id|value + * @returns {Array} + * @memberof XGraph + */ + getCurrentCells(prop) { + const cellIds = []; + const model = this.graph.getModel(); + const cells = model.cells; + if (prop === 'id') { + _.each(cells, cell => { + cellIds.push(cell.getId()); + }); + } else if (prop === 'value') { + _.each(cells, cell => { + cellIds.push(cell.getValue()); + }); + } + return cellIds; + } + + /** + *Get list of mxCell + * + * @param {string} prop - id|value + * @param {string} pattern - regex like or string + * @returns {Array} + * @memberof XGraph + */ + findMxCells(prop, pattern) { + const mxcells = this.getMxCells(); + const result = []; + if (prop === 'id') { + _.each(mxcells, mxcell => { + if (u.matchString(mxcell.id, pattern)) result.push(mxcell); + }); + } else if (prop === 'value') { + _.each(mxcells, mxcell => { + if (u.matchString(mxcell.getValue(), pattern)) result.push(mxcell); + }); + } + return result; + } + + /** + *Select cells in graph with pattern for id or value + * + * @param {string} prop - "id"|"value" + * @param {string} pattern - regex like + * @memberof XGraph + */ + selectMxCells(prop, pattern) { + const mxcells = this.findMxCells(prop, pattern); + if (mxcells) { + // this.graph.setSelectionCells(mxcells); + this.highlightCells(mxcells); + } + } + + /** + *Unselect cells + * + * @memberof XGraph + */ + unselectMxCells(prop, pattern) { + const mxcells = this.findMxCells(prop, pattern); + if (mxcells) { + this.unhighlightCells(mxcells); + } + } + + /** + *Create tooltip on image + * + * @param {*} image + * @param {*} tooltip + * @returns + * @memberof XGraph + */ + createOverlay(image, tooltip) { + const overlay = new mxCellOverlay(image, tooltip); + overlay.addListener(mxEvent.CLICK, (_sender, _evt) => { + mxUtils.alert(`${tooltip}\nLast update: ${new Date()}`); + }); + return overlay; + } + + /** + *Add Warning icon + * + * @param {string} state (OK|WARN|ERROR) + * @param {mxCell} mxcell + * @memberof XGraph + */ + addOverlay(state, mxcell) { + this.graph.addCellOverlay( + mxcell, + this.createOverlay(this.graph.warningImage, `State: ${state}`) + ); + } + + /** + *Remove Warning icon + * + * @param {mxCell} mxcell + * @memberof XGraph + */ + removeOverlay(mxcell) { + this.graph.removeCellOverlays(mxcell); + } + + /** + *Add link to cell + * + * @param {mxCell} mxcell + * @param {string} link - Url + * @memberof XGraph + */ + addLink(mxcell, link) { + this.graph.setLinkForCell(mxcell, link); + } + + /** + *Get link from cell + * + * @param {*} mxcell + * @memberof XGraph + */ + getLink(mxcell) { + this.graph.getLinkForCell(mxcell); + } + + /** + *Remove link of cell + * + * @param {mxCell} mxcell + * @memberof XGraph + */ + removeLink(mxcell) { + this.graph.setLinkForCell(mxcell, null); + } + + /** + *Get value or id from cell source + * + * @param {*} prop + * @returns + * @memberof XGraph + */ + getOrignalCells(prop) { + if (prop === 'id' || prop === 'value') return this.cells[prop]; + // TODO: attributs + return []; + } + + /** + *Rename Id of cell + *Must be uniq + * + * @param {string} oldId + * @param {string} newId + * @memberof XGraph + */ + renameId(oldId, newId) { + const cells = this.findMxCells('id', oldId); + if (cells !== undefined && cells.length > 0) { + cells.forEach(cell => { + cell.id = newId; + }); + } else { + u.log(2, `Cell ${oldId} not found`); + } + } + + /** + *Get xml definition from current graph + * + * @returns + * @memberof XGraph + */ + getXmlModel() { + const encoder = new mxCodec(); + const node = encoder.encode(this.graph.getModel()); + return mxUtils.getXml(node); + } + + /** + *Find and return current cell with matching pattern for id or value + * + * @param {string} prop - "id"|"value" + * @param {string} pattern - regex + * @returns {Array} strings of id + * @memberof XGraph + */ + // NOT USED + // findCurrentCells(prop, pattern) { + // const cells = this.getCurrentCells(prop); + // const result = _.find(cells, cell => { + // u.matchString(cell, pattern); + // }); + // return result; + // } + + /** + *Find and return original cell with matching pattern for id or value + * + * @param {string} prop - "id"|"value" + * @param {string} pattern - regex + * @returns {Array} strings of id + * @memberof XGraph + */ + // NOT USED + // findOriginalCells(prop, pattern) { + // const cells = this.getOrignalCells(prop); + // const result = _.find(cells, cell => { + // u.matchString(cell, pattern); + // }); + // return result; + // } + + /** + *Return all cells + * + * @returns {array} mxCells + * @memberof XGraph + */ + getMxCells() { + return this.graph.getModel().cells; + } + + /** + * Return value of id or value of mxcell + * + * @param {string} prop - "id"|"value" + * @param {mxCell} mxcell + * @memberof XGraph + */ + getValuePropOfMxCell(prop, mxcell) { + if (prop === 'id') return this.getId(mxcell); + if (prop === 'value') return this.getLabel(mxcell); + return null; + } + + // NOT USED + // findCurrentMxCells(prop, pattern) { + // const cells = []; + // _.each(this.getMxCells(), mxcell => { + // if (prop === 'id') { + // const id = mxcell.getId(); + // if (u.matchString(id, pattern)) cells.push(mxcell); + // } else if (prop === 'value') { + // const value = this.getLabel(mxcell); + // if (u.matchString(value, pattern)) cells.push(mxcell); + // } + // }); + // return cells; + // } + + getStyleCell(mxcell, style) { + const state = this.graph.view.getState(mxcell); + if (state) return state.style[style]; + return null; + } + + setStyleCell(mxcell, style, color) { + this.graph.setCellStyles(style, color, [mxcell]); + } + + // eslint-disable-next-line class-methods-use-this + /** + *Return Label/value of mxcell + * + * @param {mxCell} mxcell + * @returns + * @memberof XGraph + */ + getLabel(mxcell) { + if (mxUtils.isNode(mxcell.value)) { + return mxcell.value.getAttribute('label'); + } + return mxcell.getValue(mxcell); + } + + /** + *Return Id of mxCell + * + * @param {mxCell} mxcell + * @returns {string} Id of mxCell + * @memberof XGraph + */ + getId(mxcell) { + return mxcell.getId(); + } + + // eslint-disable-next-line class-methods-use-this + /** + *Assign new label for mxcell + * + * @param {*} mxcell + * @param {string} text - New label + * @returns {string} New label + * @memberof XGraph + */ + setLabelCell(mxcell, text) { + if (mxUtils.isNode(mxcell.value)) { + var label = mxcell.value.setAttribute('label', text); + } else mxcell.setValue(text); + return text; + } + + /** + *Active mapping option when user click on mapping + * + * @param {Object} onMappingObj + * @memberof XGraph + */ + setMap(onMappingObj) { + u.log(1, 'XGraph.setMapping()'); + u.log(0, 'XGraph.setMapping() onMappingObject : ', onMappingObj); + this.onMapping = onMappingObj; + if (this.onMapping.active === true) { + this.container.style.cursor = 'crosshair'; + this.graph.click = this.eventClick.bind(this); + } + } + + /** + *Disable mapping when user click on mapping + * + * @memberof XGraph + */ + unsetMap() { + u.log(1, 'XGraph.unsetMapping()'); + this.onMapping.active = false; + this.container.style.cursor = 'auto'; + this.graph.click = this.clickBackup; + this.onMapping.$scope.$apply(); + } + + // + // GRAPH HANDLER + // + + /** + *Event for click on graph + * + * @param {MouseEvent} me + * @memberof XGraph + */ + eventClick(me) { + u.log(1, 'XGraph.eventClick()'); + const self = this; + + if (this.onMapping.active) { + const state = me.getState(); + if (state) { + const id = state.cell.id; + this.onMapping.object.data.pattern = id; + const elt = document.getElementById(this.onMapping.id); + if (elt) { + setTimeout(() => { + elt.focus(); + }, 100); + } + this.unsetMap(); + } + } + } + + /** + *Event for double click on graph + * + * @param {Event} evt + * @param {mxCell} mxcell + * @memberof XGraph + */ + eventDbClick(evt, mxcell) { + u.log(1, 'XGraph.eventDbClick()'); + u.log(0, 'XGraph.eventDbClick() evt', evt); + u.log(0, 'XGraph.eventDbClick() cell', mxcell); + u.log( + 1, + 'XGraph.eventDbClick() container.getBoundingClientRect()', + this.container.getBoundingClientRect() + ); + if (mxcell !== undefined) { + this.lazyZoomCell(mxcell); + } + } + + /** + *Event for mouse wheel on graph + * + * @param {Event} evt + * @param {boolean} up + * @memberof XGraph + */ + eventMouseWheel(evt, up) { + u.log(1, 'XGraph.eventMouseWheel()'); + u.log(0, 'XGraph.eventMouseWheel() evt', evt); + u.log(0, 'XGraph.eventMouseWheel() up', up); + if (this.graph.isZoomWheelEvent(evt)) { + if (up == null || up == undefined) { + u.log(0, 'XGraph.eventMouseWheel() up', 'Not defined'); + if (evt.deltaY < 0) up = true; + else up = false; + } + // const rect = evt.target.getBoundingClientRect(); + // let offsetLeft = (evt.currentTarget.offsetLeft != undefined ? evt.currentTarget.offsetLeft : 0 ); + // let offsetTop = (evt.currentTarget.offsetTop != undefined ? evt.currentTarget.offsetTop : 0 ) + // u.log(0, 'XGraph.eventMouseWheel() offsetLeft', offsetLeft); + // u.log(0, 'XGraph.eventMouseWheel() offsetTop', offsetTop); + // var x = evt.layerX - offsetLeft; + // var y = evt.layerY - offsetTop; + var x = evt.layerX; + var y = evt.layerY; + if (up) { + this.cumulativeZoomFactor = this.cumulativeZoomFactor * 1.2; + } else { + this.cumulativeZoomFactor = this.cumulativeZoomFactor * 0.8; + } + this.lazyZoomPointer(this.cumulativeZoomFactor, x, y); + mxEvent.consume(evt); + } + } + + /** + *Event for key on graph + * + * @param {Event} evt + * @memberof XGraph + */ + eventKey(evt) { + if (!mxEvent.isConsumed(evt) && evt.keyCode == 27 /* Escape */) { + this.cumulativeZoomFactor = 1; + if (this.graph) { + this.graph.zoomActual(); + this.applyGraph(this.width, this.height); + } + } + } + + /** + *Zoom/Unzoom on graph on center + * + * @param {number} factor - 1 = 100% + * @memberof XGraph + */ + lazyZoomCenter(factor) { + this.graph.zoomTo(factor, true); + } + + /** + *Zoom/Unzoom on graph on mouse pointer + * + * @param {number} factor + * @param {number} offsetX + * @param {number} offsetY + * @memberof XGraph + */ + lazyZoomPointer(factor, offsetX, offsetY) { + u.log(1, 'XGraph.lazyZoomPointer()'); + u.log(0, 'XGraph.lazyZoomPointer() factor', factor); + u.log(0, 'XGraph.lazyZoomPointer() offsetX', offsetX); + u.log(0, 'XGraph.lazyZoomPointer() offsetY', offsetY); + let dx = offsetX * 2; + let dy = offsetY * 2; + + factor = Math.max(0.01, Math.min(this.graph.view.scale * factor, 160)) / this.graph.view.scale; + factor = this.cumulativeZoomFactor / this.graph.view.scale; + let scale = Math.round(this.graph.view.scale * factor * 100) / 100; + factor = scale / this.graph.view.scale; + + if (factor > 1) { + var f = (factor - 1) / (scale * 2); + dx *= -f; + dy *= -f; + } else { + var f = (1 / factor - 1) / (this.graph.view.scale * 2); + dx *= f; + dy *= f; + } + + this.graph.view.scaleAndTranslate( + scale, + this.graph.view.translate.x + dx, + this.graph.view.translate.y + dy + ); + } + + /** + * Highlights the given cell. + */ + highlightCells(cells) { + for (var i = 0; i < cells.length; i++) { + this.highlightCell(cells[i]); + } + } + + /** + * UnHighlights the given array of cells. + */ + unhighlightCells(cells) { + for (var i = 0; i < cells.length; i++) { + this.unhighlightCell(cells[i]); + } + } + + /** + * Highlights the given cell. + */ + // highlightCell(cell, color, duration, opacity) + highlightCell(cell) { + if (cell.highlight) return; + let color = '#99ff33'; + // color = (color != null) ? color : mxConstants.DEFAULT_VALID_COLOR; + // duration = (duration != null) ? duration : 1000; + let opacity = 100; + var state = this.graph.view.getState(cell); + + if (state != null) { + var sw = Math.max(5, mxUtils.getValue(state.style, mxConstants.STYLE_STROKEWIDTH, 1) + 4); + var hl = new mxCellHighlight(this.graph, color, sw, false); + + if (opacity != null) { + hl.opacity = opacity; + } + + hl.highlight(state); + cell.highlight = hl; + } + } + + /** + *UnHighlights the given cell. + * + * @param {*} cell + * @memberof XGraph + */ + unhighlightCell(cell) { + if (cell && cell.highlight) { + let hl = cell.highlight; + // Fades out the highlight after a duration + if (hl.shape != null) { + mxUtils.setPrefixedStyle(hl.shape.node.style, 'transition', 'all 500ms ease-in-out'); + hl.shape.node.style.opacity = 0; + } + + // Destroys the highlight after the fade + window.setTimeout(function() { + hl.destroy(); + }, 500); + cell.highlight = null; + } + } + + /** + *Zoom cell on full panel + * + * @param {*} mxcell + * @memberof XGraph + */ + lazyZoomCell(mxcell) { + u.log(1, 'XGraph.lazyZoomCell() mxcell', mxcell); + u.log(0, 'XGraph.lazyZoomCell() mxcellState', this.graph.view.getState(mxcell)); + if (mxcell !== undefined && mxcell !== null && mxcell.isVertex()) { + const state = this.graph.view.getState(mxcell); + if (state !== null) { + const x = state.x; + const y = state.y; + const width = state.width; + const height = state.height; + const rect = new mxRectangle(x, y, width, height); + this.graph.zoomToRect(rect); + this.cumulativeZoomFactor = this.graph.view.scale; + } + } + } + + toggleVisible(mxcell, includeEdges) { + this.graph.toggleCells(!this.graph.getModel().isVisible(mxcell), [mxcell], includeEdges); + } + + getTooltipForCell(cell) { + u.log(1, 'Graph.prototype.getTooltipForCell()'); + let hasTips = false; + let div = document.createElement('div'); + if (mxUtils.isNode(cell.value)) { + let tmp = cell.value.getAttribute('tooltip'); + // Tooltip + if (tmp != null) { + hasTips = true; + if (tmp != null && this.isReplacePlaceholders(cell)) { + tmp = this.replacePlaceholders(cell, tmp); + } + let ttDiv = document.createElement('div'); + ttDiv.className = 'tooltip-text'; + ttDiv.innerHTML = this.sanitizeHtml(tmp); + div.appendChild(ttDiv); + } + + let ignored = this.builtInProperties; + let attrs = cell.value.attributes; + let temp = []; + + // Hides links in edit mode + // if (this.isEnabled()) { + ignored.push('link'); + // } + + // Attributes + for (var i = 0; i < attrs.length; i++) { + if (mxUtils.indexOf(ignored, attrs[i].nodeName) < 0 && attrs[i].nodeValue.length > 0) { + temp.push({ name: attrs[i].nodeName, value: attrs[i].nodeValue }); + } + } + + // Sorts by name + temp.sort(function(a, b) { + if (a.name < b.name) { + return -1; + } else if (a.name > b.name) { + return 1; + } else { + return 0; + } + }); + if (temp.length > 0) { + hasTips = true; + var attrDiv = document.createElement('div'); + var attrString = ''; + for (var i = 0; i < temp.length; i++) { + if (temp[i].name != 'link' || !this.isCustomLink(temp[i].value)) { + attrString += + (temp[i].name != 'link' ? '' + temp[i].name + ': ' : '') + + mxUtils.htmlEntities(temp[i].value) + + '\n'; + } + } + attrDiv.innerHTML = attrString; + div.appendChild(attrDiv); + } + } + + // GF Tooltips + if (cell.GF_tooltipHandler != null) { + let tooltipHandler = cell.GF_tooltipHandler; + let gfDiv = tooltipHandler.getTooltipDiv(div); + if (gfDiv !== null) { + hasTips = true; + } + } + // let divs = this.getTooltipGFs(cell); + // if (divs !== null) { + // hasTips = true; + // div.appendChild(divs); + // } + + if (hasTips) return div; + return ''; + } + +} diff --git a/data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.png b/data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.png new file mode 100644 index 0000000000000000000000000000000000000000..cceb789ce7546ff4160373411f3fc1f9c1a3f5f9 GIT binary patch literal 1722 zcmV;r21WUaP)0uZ7VHX^N2C~AO9c^8+0_z3p+*W{iqt3? zstBec8lvq7V+zI(esBTQC}C;XOq8&Nh!AK14FXygMJ!7LwAdEfLMdAxyf@>A>H0cv z-g~pwn@svT%enXb=bUrT{ogYJ8cnGn9+~?QNkv2iz!z|nFUW5IzlKmV&-+5i(|cY< z!Otb)xFAgDdY~Agi{dAF9FdQJ93ZCSf<=dwvLct~MPVm0i-ngd?*@QUK>_d`AO%(2 zT?MR?=R@W#VHPXe0Z{&7Dgs-f)!eaJ0Wltub09Wd{lBFO8g_uM$tgf&WTp$Rv0YHk z5sQ~oz#vm5AI@_~Ft8ZX-iN4!0KdHnRZF3AG5A}Yu#jrv$P$zaW&l6f@9zR+t%uZ? z&}|Jnpgb33zrF6F9{C~)W--Z$u8Tv6tkLfG9_zciiCc0qB$E%!~k%Xb3$c=-;gmAAmdc*1Dk1J)$MP6b>Ml zeheRg+Aa3RqfS;L+7eu}WL7PM<|Cn%zg-Qd7TFt*+T{4#0I)mS%7E`Sluv=i-NBW= zasYmv04??Q2f$VfkRlFfX69pW0~~%1lC!~+2Loq=7!6e`RkOdm8x+OS^jdNypKsg` z4f`QA7owBkc%eJ%0~sV_7gv1YWS@2dLZAgWy*k4HU{;PVqy^Xwh}rcA=Eozs`UZLc z;Uc+8W^~Y2t`Q{G1wpHMgtqfyEO;hEd?pA|$N5lyWgj%1feSmq?+xmLlB@JoC>Myk z4<_$}_zVoUYn8Au8*bESj;|vVbRr#&6o8>0m{T4gF$10`(jK1@ZV2SGCdFggLIRbqRyY%yddAfPh9$4j)MdFE_L%(6y# zS$lj^`!n-?Rx^1V&gDBp6`U=T!tzEf0^Qi$$8XuTxl z##yNO8Dy{VJmA!7$jDa%rQtU(!=I~k00=e!DH%rXfrQ75civn9WfS36ZFs40poLuA z4cjNf@b{p%rz_BCyo|teH|yZ{&*6NTjtc}!QXVKar#wKyLojR+9D3831pr*!1J!$M zi%C+K2-*4KJwvSVzr>+Emk-dj0L7{tBwBSR%>XF6%LnKNL91H7(U5;dXA`8!Wj+9# zE#TI_P`OTf#uzfMBM7>YkjZ*3U{$+u0sbh~?jwCB^h$ECdIUWexNA`o;=O8;6^?=d z;~}|~5DB)L3_R!eLE{;yKG40^pwoTY764HFJ*2%7SVt9kJG;&}05QpsR|fZvFy4RN zF<3njZe5Kq2-fa^UveO$P-SL9B^}-N_%1=kayY+LpAXOjU}TXw28 z*@fw+^EF=!94yhcfJbISij90gSe&5Ue1N|N4hJDb24-6WfZr74>-9A{@!FWAAke?-V^HsA_{^%y*A)~UmxJo?zFr00k~M6(>@JaSa75{oq0yX zi)AoqQuqMGB*8NuL+Ycpm&BrX)ek4XWdRCbI-U-XUkFkh?EM5} z#hLu0BksH_l(MAb)7h_C2E6TPI_w4mrBa072&*XUv^xnxA@h+bK%vSpK0t9$Uh8fL z3a_^*kJhe-Qi4b#V-OjP-1-H%Un6hVIv2^kPRUd)!i&IZ260Fz>2iht06jo+2bv#R Q9RL6T07*qoM6N<$f~w&S-v9sr literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.svg b/data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.svg new file mode 100644 index 0000000000000..553278c8eeb00 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/img/agenty-flowcharting.svg @@ -0,0 +1,18 @@ + + + + + + + + + + background + + + + Layer 1 + + + + \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/inspect_options.js b/data/plugins/grafana-flowcharting/src/inspect_options.js new file mode 100644 index 0000000000000..e354e7552c228 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/inspect_options.js @@ -0,0 +1,91 @@ +export class InspectOptionsCtrl { + /** @ngInject */ + constructor($scope) { + $scope.editor = this; + this.enable = false; + $scope.GF_PLUGIN = window.GF_PLUGIN; + this.$scope = $scope; + this.ctrl = $scope.ctrl; + this.panel = this.ctrl.panel; + this.logDisplayOption = [{ text: 'True', value: true }, { text: 'False', value: false }]; + this.logLevelOption = [ + { text: 'DEBUG', value: 0 }, + { text: 'INFO', value: 1 }, + { text: 'WARNING', value: 2 }, + { text: 'ERROR', value: 3 }, + ]; + this.logLevel = GF_PLUGIN.logLevel; + this.logDisplay = GF_PLUGIN.logDisplay; + + this.flowchartHandler = this.ctrl.flowchartHandler; + $scope.flowchartHandler = this.ctrl.flowchartHandler; + } + + render() { + this.panelCtrl.render(); + } + + onColorChange(styleIndex, colorIndex) { + return (newColor) => { + this.colors[colorIndex] = newColor; + }; + } + + onDebug() { + GF_PLUGIN.logLevel = this.logLevel; + GF_PLUGIN.logDisplay = this.logDisplay; + } + + onChangeId(state) { + if (state.newcellId !== undefined && state.cellId !== state.newcellId) { + this.flowchartHandler.getFlowchart(0).getStateHandler().edited = true; + if (state.previousId === undefined) state.previousId = state.cellId; + state.cellId = state.newcellId; + state.edited = true; + } + state.edit = false; + } + + onEdit(state) { + state.edit = true; + state.newcellId = state.cellId; + let elt = document.getElementById(state.cellId); + setTimeout(function () { + elt.focus(); + }, 100); + } + + reset() { + this.flowchartHandler.draw(); + this.flowchartHandler.refresh(); + // this.$scope.$apply(); + } + + apply() { + const flowchart = this.flowchartHandler.getFlowchart(0); + const states = flowchart.getStateHandler().getStates(); + states.forEach((state) => { + if (state.edited) flowchart.renameId(state.previousId, state.cellId); + }); + flowchart.applyModel(); + } + + selectCell(state) { + state.highlightCell(); + } + + unselectCell(state) { + state.unhighlightCell(); + } +} + +/** @ngInject */ +export function inspectOptionsTab($q, uiSegmentSrv) { + 'use strict'; + return { + restrict: 'E', + scope: true, + templateUrl: `${GF_PLUGIN.getPartialPath()}/inspect_options.html`, + controller: InspectOptionsCtrl + }; +} diff --git a/data/plugins/grafana-flowcharting/src/libs/sanitizer.min.js b/data/plugins/grafana-flowcharting/src/libs/sanitizer.min.js new file mode 100644 index 0000000000000..0d8f9a3e44522 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/sanitizer.min.js @@ -0,0 +1,92 @@ +// NOTE: Modified to support data URIs for images, ie. data:image/* +// Modified to allow "word-break: break-word" in styles. It is done by adding "break-word" which is at index 55 of J array J[55] to "cssLitGroup" of "word-break" +(function(){var c=void 0,n=!0,s=null,C=!1,J=["aliceblue,antiquewhite,aqua,aquamarine,azure,beige,bisque,black,blanchedalmond,blue,blueviolet,brown,burlywood,cadetblue,chartreuse,chocolate,coral,cornflowerblue,cornsilk,crimson,cyan,darkblue,darkcyan,darkgoldenrod,darkgray,darkgreen,darkkhaki,darkmagenta,darkolivegreen,darkorange,darkorchid,darkred,darksalmon,darkseagreen,darkslateblue,darkslategray,darkturquoise,darkviolet,deeppink,deepskyblue,dimgray,dodgerblue,firebrick,floralwhite,forestgreen,fuchsia,gainsboro,ghostwhite,gold,goldenrod,gray,green,greenyellow,honeydew,hotpink,indianred,indigo,ivory,khaki,lavender,lavenderblush,lawngreen,lemonchiffon,lightblue,lightcoral,lightcyan,lightgoldenrodyellow,lightgreen,lightgrey,lightpink,lightsalmon,lightseagreen,lightskyblue,lightslategray,lightsteelblue,lightyellow,lime,limegreen,linen,magenta,maroon,mediumaquamarine,mediumblue,mediumorchid,mediumpurple,mediumseagreen,mediumslateblue,mediumspringgreen,mediumturquoise,mediumvioletred,midnightblue,mintcream,mistyrose,moccasin,navajowhite,navy,oldlace,olive,olivedrab,orange,orangered,orchid,palegoldenrod,palegreen,paleturquoise,palevioletred,papayawhip,peachpuff,peru,pink,plum,powderblue,purple,red,rosybrown,royalblue,saddlebrown,salmon,sandybrown,seagreen,seashell,sienna,silver,skyblue,slateblue,slategray,snow,springgreen,steelblue,tan,teal,thistle,tomato,transparent,turquoise,violet,wheat,white,whitesmoke,yellow,yellowgreen".split(","), +"all-scroll,col-resize,crosshair,default,e-resize,hand,help,move,n-resize,ne-resize,no-drop,not-allowed,nw-resize,pointer,progress,row-resize,s-resize,se-resize,sw-resize,text,vertical-text,w-resize,wait".split(","),"armenian,decimal,decimal-leading-zero,disc,georgian,lower-alpha,lower-greek,lower-latin,lower-roman,square,upper-alpha,upper-latin,upper-roman".split(","),"100,200,300,400,500,600,700,800,900,bold,bolder,lighter".split(","),"block-level,inline-level,table-caption,table-cell,table-column,table-column-group,table-footer-group,table-header-group,table-row,table-row-group".split(","), +"condensed,expanded,extra-condensed,extra-expanded,narrower,semi-condensed,semi-expanded,ultra-condensed,ultra-expanded,wider".split(","),"inherit,inline,inline-block,inline-box,inline-flex,inline-grid,inline-list-item,inline-stack,inline-table,run-in".split(","),"behind,center-left,center-right,far-left,far-right,left-side,leftwards,right-side,rightwards".split(","),"large,larger,small,smaller,x-large,x-small,xx-large,xx-small".split(","),"dashed,dotted,double,groove,outset,ridge,solid".split(","), +"ease,ease-in,ease-in-out,ease-out,linear,step-end,step-start".split(","),"at,closest-corner,closest-side,ellipse,farthest-corner,farthest-side".split(","),"baseline,middle,sub,super,text-bottom,text-top".split(","),"caption,icon,menu,message-box,small-caption,status-bar".split(","),"fast,faster,slow,slower,x-fast,x-slow".split(","),["above","below","higher","level","lower"],["cursive","fantasy","monospace","sans-serif","serif"],["loud","silent","soft","x-loud","x-soft"],["no-repeat","repeat-x","repeat-y", +"round","space"],["blink","line-through","overline","underline"],["block","flex","grid","table"],["high","low","x-high","x-low"],["nowrap","pre","pre-line","pre-wrap"],["absolute","relative","static"],["alternate","alternate-reverse","reverse"],["border-box","content-box","padding-box"],["capitalize","lowercase","uppercase"],["child","female","male"],["=","opacity"],["backwards","forwards"],["bidi-override","embed"],["bottom","top"],["break-all","keep-all"],["clip","ellipsis"],["contain","cover"], +["continuous","digits"],["end","start"],["flat","preserve-3d"],["hide","show"],["horizontal","vertical"],["inside","outside"],["italic","oblique"],["left","right"],["ltr","rtl"],["no-content","no-display"],["paused","running"],["suppress","unrestricted"],["thick","thin"],[","],["/"],["all"],["always"],["auto"],["avoid"],["both"],["break-word"],["center"],["circle"],["code"],["collapse"],["contents"],["fixed"],["hidden"],["infinite"],["inset"],["invert"],["justify"],["list-item"],["local"],["medium"], +["mix"],["none"],["normal"],["once"],["repeat"],["scroll"],["separate"],["small-caps"],["spell-out"],["to"],["visible"]],L={animation:{cssPropBits:517,cssLitGroup:[J[10],J[24],J[29],J[45],J[48],J[54],J[63],J[71],J[72]],cssFns:["cubic-bezier()","steps()"]},"animation-delay":{cssPropBits:5,cssLitGroup:[J[48]],cssFns:[]},"animation-direction":{cssPropBits:0,cssLitGroup:[J[24],J[48],J[72]],cssFns:[]},"animation-duration":"animation-delay","animation-fill-mode":{cssPropBits:0,cssLitGroup:[J[29],J[48], +J[54],J[71]],cssFns:[]},"animation-iteration-count":{cssPropBits:5,cssLitGroup:[J[48],J[63]],cssFns:[]},"animation-name":{cssPropBits:512,cssLitGroup:[J[48],J[71]],cssFns:[]},"animation-play-state":{cssPropBits:0,cssLitGroup:[J[45],J[48]],cssFns:[]},"animation-timing-function":{cssPropBits:0,cssLitGroup:[J[10],J[48]],cssFns:["cubic-bezier()","steps()"]},appearance:{cssPropBits:0,cssLitGroup:[J[71]],cssFns:[]},azimuth:{cssPropBits:5,cssLitGroup:[J[7],J[42],J[56]],cssFns:[]},"backface-visibility":{cssPropBits:0, +cssLitGroup:[J[59],J[62],J[80]],cssFns:[]},background:{cssPropBits:23,cssLitGroup:[J[0],J[18],J[25],J[31],J[34],J[42],J[48],J[49],J[52],J[56],J[61],J[68],J[71],J[74],J[75]],cssFns:"image(),linear-gradient(),radial-gradient(),repeating-linear-gradient(),repeating-radial-gradient(),rgb(),rgba()".split(",")},"background-attachment":{cssPropBits:0,cssLitGroup:[J[48],J[61],J[68],J[75]],cssFns:[]},"background-color":{cssPropBits:2,cssLitGroup:[J[0]],cssFns:["rgb()","rgba()"]},"background-image":{cssPropBits:16, +cssLitGroup:[J[48],J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"background-position":{cssPropBits:5,cssLitGroup:[J[31],J[42],J[48],J[56]],cssFns:[]},"background-repeat":{cssPropBits:0,cssLitGroup:[J[18],J[48],J[74]],cssFns:[]},"background-size":{cssPropBits:5,cssLitGroup:[J[34],J[48],J[52]],cssFns:[]},border:{cssPropBits:7,cssLitGroup:[J[0],J[9],J[47],J[62],J[64],J[69],J[71]],cssFns:["rgb()","rgba()"]},"border-bottom":"border", +"border-bottom-color":"background-color","border-bottom-left-radius":{cssPropBits:5,cssFns:[]},"border-bottom-right-radius":"border-bottom-left-radius","border-bottom-style":{cssPropBits:0,cssLitGroup:[J[9],J[62],J[64],J[71]],cssFns:[]},"border-bottom-width":{cssPropBits:5,cssLitGroup:[J[47],J[69]],cssFns:[]},"border-collapse":{cssPropBits:0,cssLitGroup:[J[59],J[76]],cssFns:[]},"border-color":"background-color","border-left":"border","border-left-color":"background-color","border-left-style":"border-bottom-style", +"border-left-width":"border-bottom-width","border-radius":{cssPropBits:5,cssLitGroup:[J[49]],cssFns:[]},"border-right":"border","border-right-color":"background-color","border-right-style":"border-bottom-style","border-right-width":"border-bottom-width","border-spacing":"border-bottom-left-radius","border-style":"border-bottom-style","border-top":"border","border-top-color":"background-color","border-top-left-radius":"border-bottom-left-radius","border-top-right-radius":"border-bottom-left-radius", +"border-top-style":"border-bottom-style","border-top-width":"border-bottom-width","border-width":"border-bottom-width",bottom:{cssPropBits:5,cssLitGroup:[J[52]],cssFns:[]},box:{cssPropBits:0,cssLitGroup:[J[60],J[71],J[72]],cssFns:[]},"box-shadow":{cssPropBits:7,cssLitGroup:[J[0],J[48],J[64],J[71]],cssFns:["rgb()","rgba()"]},"box-sizing":{cssPropBits:0,cssLitGroup:[J[25]],cssFns:[]},"caption-side":{cssPropBits:0,cssLitGroup:[J[31]],cssFns:[]},clear:{cssPropBits:0,cssLitGroup:[J[42],J[54],J[71]],cssFns:[]}, +clip:{cssPropBits:0,cssLitGroup:[J[52]],cssFns:["rect()"]},color:"background-color",content:{cssPropBits:8,cssLitGroup:[J[71],J[72]],cssFns:[]},cue:{cssPropBits:16,cssLitGroup:[J[71]],cssFns:[]},"cue-after":"cue","cue-before":"cue",cursor:{cssPropBits:16,cssLitGroup:[J[1],J[48],J[52]],cssFns:[]},direction:{cssPropBits:0,cssLitGroup:[J[43]],cssFns:[]},display:{cssPropBits:0,cssLitGroup:[J[4],J[6],J[20],J[52],J[67],J[71]],cssFns:[]},"display-extras":{cssPropBits:0,cssLitGroup:[J[67],J[71]],cssFns:[]}, +"display-inside":{cssPropBits:0,cssLitGroup:[J[20],J[52]],cssFns:[]},"display-outside":{cssPropBits:0,cssLitGroup:[J[4],J[71]],cssFns:[]},elevation:{cssPropBits:5,cssLitGroup:[J[15]],cssFns:[]},"empty-cells":{cssPropBits:0,cssLitGroup:[J[38]],cssFns:[]},filter:{cssPropBits:0,cssFns:["alpha()"]},"float":{cssPropBits:0,cssLitGroup:[J[42],J[71]],cssFns:[]},font:{cssPropBits:73,cssLitGroup:[J[3],J[8],J[13],J[16],J[41],J[48],J[49],J[69],J[72],J[77]],cssFns:[]},"font-family":{cssPropBits:72,cssLitGroup:[J[16], +J[48]],cssFns:[]},"font-size":{cssPropBits:1,cssLitGroup:[J[8],J[69]],cssFns:[]},"font-stretch":{cssPropBits:0,cssLitGroup:[J[5],J[72]],cssFns:[]},"font-style":{cssPropBits:0,cssLitGroup:[J[41],J[72]],cssFns:[]},"font-variant":{cssPropBits:0,cssLitGroup:[J[72],J[77]],cssFns:[]},"font-weight":{cssPropBits:0,cssLitGroup:[J[3],J[72]],cssFns:[]},height:"bottom",left:"bottom","letter-spacing":{cssPropBits:5,cssLitGroup:[J[72]],cssFns:[]},"line-height":{cssPropBits:1,cssLitGroup:[J[72]],cssFns:[]},"list-style":{cssPropBits:16, +cssLitGroup:[J[2],J[40],J[57],J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"list-style-image":{cssPropBits:16,cssLitGroup:[J[71]],cssFns:["image()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()"]},"list-style-position":{cssPropBits:0,cssLitGroup:[J[40]],cssFns:[]},"list-style-type":{cssPropBits:0,cssLitGroup:[J[2],J[57],J[71]],cssFns:[]},margin:"bottom","margin-bottom":"bottom", +"margin-left":"bottom","margin-right":"bottom","margin-top":"bottom","max-height":{cssPropBits:1,cssLitGroup:[J[52],J[71]],cssFns:[]},"max-width":"max-height","min-height":{cssPropBits:1,cssLitGroup:[J[52]],cssFns:[]},"min-width":"min-height",opacity:{cssPropBits:1,cssFns:[]},outline:{cssPropBits:7,cssLitGroup:[J[0],J[9],J[47],J[62],J[64],J[65],J[69],J[71]],cssFns:["rgb()","rgba()"]},"outline-color":{cssPropBits:2,cssLitGroup:[J[0],J[65]],cssFns:["rgb()","rgba()"]},"outline-style":"border-bottom-style", +"outline-width":"border-bottom-width",overflow:{cssPropBits:0,cssLitGroup:[J[52],J[62],J[75],J[80]],cssFns:[]},"overflow-wrap":{cssPropBits:0,cssLitGroup:[J[55],J[72]],cssFns:[]},"overflow-x":{cssPropBits:0,cssLitGroup:[J[44],J[52],J[62],J[75],J[80]],cssFns:[]},"overflow-y":"overflow-x",padding:"opacity","padding-bottom":"opacity","padding-left":"opacity","padding-right":"opacity","padding-top":"opacity","page-break-after":{cssPropBits:0,cssLitGroup:[J[42],J[51],J[52],J[53]],cssFns:[]},"page-break-before":"page-break-after", +"page-break-inside":{cssPropBits:0,cssLitGroup:[J[52],J[53]],cssFns:[]},pause:"border-bottom-left-radius","pause-after":"border-bottom-left-radius","pause-before":"border-bottom-left-radius",perspective:{cssPropBits:5,cssLitGroup:[J[71]],cssFns:[]},"perspective-origin":{cssPropBits:5,cssLitGroup:[J[31],J[42],J[56]],cssFns:[]},pitch:{cssPropBits:5,cssLitGroup:[J[21],J[69]],cssFns:[]},"pitch-range":"border-bottom-left-radius","play-during":{cssPropBits:16,cssLitGroup:[J[52],J[70],J[71],J[74]],cssFns:[]}, +position:{cssPropBits:0,cssLitGroup:[J[23]],cssFns:[]},quotes:{cssPropBits:8,cssLitGroup:[J[71]],cssFns:[]},resize:{cssPropBits:0,cssLitGroup:[J[39],J[54],J[71]],cssFns:[]},richness:"border-bottom-left-radius",right:"bottom",speak:{cssPropBits:0,cssLitGroup:[J[71],J[72],J[78]],cssFns:[]},"speak-header":{cssPropBits:0,cssLitGroup:[J[51],J[73]],cssFns:[]},"speak-numeral":{cssPropBits:0,cssLitGroup:[J[35]],cssFns:[]},"speak-punctuation":{cssPropBits:0,cssLitGroup:[J[58],J[71]],cssFns:[]},"speech-rate":{cssPropBits:5, +cssLitGroup:[J[14],J[69]],cssFns:[]},stress:"border-bottom-left-radius","table-layout":{cssPropBits:0,cssLitGroup:[J[52],J[61]],cssFns:[]},"text-align":{cssPropBits:0,cssLitGroup:[J[42],J[56],J[66]],cssFns:[]},"text-decoration":{cssPropBits:0,cssLitGroup:[J[19],J[71]],cssFns:[]},"text-indent":"border-bottom-left-radius","text-overflow":{cssPropBits:8,cssLitGroup:[J[33]],cssFns:[]},"text-shadow":"box-shadow","text-transform":{cssPropBits:0,cssLitGroup:[J[26],J[71]],cssFns:[]},"text-wrap":{cssPropBits:0, +cssLitGroup:[J[46],J[71],J[72]],cssFns:[]},top:"bottom",transform:{cssPropBits:0,cssLitGroup:[J[71]],cssFns:"matrix(),perspective(),rotate(),rotate3d(),rotatex(),rotatey(),rotatez(),scale(),scale3d(),scalex(),scaley(),scalez(),skew(),skewx(),skewy(),translate(),translate3d(),translatex(),translatey(),translatez()".split(",")},"transform-origin":"perspective-origin","transform-style":{cssPropBits:0,cssLitGroup:[J[37]],cssFns:[]},transition:{cssPropBits:1029,cssLitGroup:[J[10],J[48],J[50],J[71]],cssFns:["cubic-bezier()", +"steps()"]},"transition-delay":"animation-delay","transition-duration":"animation-delay","transition-property":{cssPropBits:1024,cssLitGroup:[J[48],J[50]],cssFns:[]},"transition-timing-function":"animation-timing-function","unicode-bidi":{cssPropBits:0,cssLitGroup:[J[30],J[72]],cssFns:[]},"vertical-align":{cssPropBits:5,cssLitGroup:[J[12],J[31]],cssFns:[]},visibility:"backface-visibility","voice-family":{cssPropBits:8,cssLitGroup:[J[27],J[48]],cssFns:[]},volume:{cssPropBits:1,cssLitGroup:[J[17],J[69]], +cssFns:[]},"white-space":{cssPropBits:0,cssLitGroup:[J[22],J[72]],cssFns:[]},width:"min-height","word-break":{cssPropBits:0,cssLitGroup:[J[32],J[72],J[55]],cssFns:[]},"word-spacing":"letter-spacing","word-wrap":"overflow-wrap","z-index":"bottom",zoom:"line-height","cubic-bezier()":"animation-delay","steps()":{cssPropBits:5,cssLitGroup:[J[36],J[48]],cssFns:[]},"image()":{cssPropBits:18,cssLitGroup:[J[0],J[48]],cssFns:["rgb()","rgba()"]},"linear-gradient()":{cssPropBits:7,cssLitGroup:[J[0],J[31],J[42],J[48], +J[79]],cssFns:["rgb()","rgba()"]},"radial-gradient()":{cssPropBits:7,cssLitGroup:[J[0],J[11],J[31],J[42],J[48],J[56],J[57]],cssFns:["rgb()","rgba()"]},"repeating-linear-gradient()":"linear-gradient()","repeating-radial-gradient()":"radial-gradient()","rgb()":{cssPropBits:1,cssLitGroup:[J[48]],cssFns:[]},"rgba()":"rgb()","rect()":{cssPropBits:5,cssLitGroup:[J[48],J[52]],cssFns:[]},"alpha()":{cssPropBits:1,cssLitGroup:[J[28]],cssFns:[]},"matrix()":"animation-delay","perspective()":"border-bottom-left-radius", +"rotate()":"border-bottom-left-radius","rotate3d()":"animation-delay","rotatex()":"border-bottom-left-radius","rotatey()":"border-bottom-left-radius","rotatez()":"border-bottom-left-radius","scale()":"animation-delay","scale3d()":"animation-delay","scalex()":"border-bottom-left-radius","scaley()":"border-bottom-left-radius","scalez()":"border-bottom-left-radius","skew()":"animation-delay","skewx()":"border-bottom-left-radius","skewy()":"border-bottom-left-radius","translate()":"animation-delay","translate3d()":"animation-delay", +"translatex()":"border-bottom-left-radius","translatey()":"border-bottom-left-radius","translatez()":"border-bottom-left-radius"},O;for(O in L)"string"===typeof L[O]&&Object.hasOwnProperty.call(L,O)&&(L[O]=L[L[O]]);"undefined"!==typeof window&&(window.cssSchema=L);var U,X; +(function(){function g(a){var f=parseInt(a.substring(1),16);return 65535>10),56320+(f&1023))):f==f?String.fromCharCode(f):" ">a[1]?"":a[1]}function w(a,f){return'"'+a.replace(/[\u0000-\u001f\\\"<>]/g,f)+'"'}function M(a){return E[a]||(E[a]="\\"+a.charCodeAt(0).toString(16)+" ")}function x(a){return e[a]||(e[a]=("\u0010">a?"%0":"%")+a.charCodeAt(0).toString(16))}var E={"\\":"\\\\"},e={"\\":"%5c"},v=RegExp("\\uFEFF|U[+][0-9A-F?]{1,6}(?:-[0-9A-F]{1,6})?|url[(][\\t\\n\\f ]*(?:\"(?:'|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*\"|'(?:\"|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*'|(?:[\\t\\x21\\x23-\\x26\\x28-\\x5b\\x5d-\\x7e]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*)[\\t\\n\\f ]*[)]|(?!url[(])-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*[(]|(?:@?-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))|#)(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*|\"(?:'|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*\"|'(?:\"|[^'\"\\n\\f\\\\]|\\\\[\\s\\S])*'|[-+]?(?:[0-9]+(?:[.][0-9]+)?|[.][0-9]+)(?:%|-?(?:[a-zA-Z_]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))(?:[a-zA-Z0-9_-]|[\\u0080-\\ud7ff\\ue000-\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]|\\\\(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff]))*)?|<\!--|--\>|[\\t\\n\\f ]+|/(?:[*][^*]*[*]+(?:[^/][^*]*[*]+)*/|/[^\\n\\f]*)|[~|^$*]=|[^\"'\\\\/]|/(?![/*])","gi"), +b=RegExp("\\\\(?:(?:[0-9a-fA-F]{1,6}[\\t\\n\\f ]?|[\\u0020-\\u007e\\u0080-\\ud7ff\\ue000\\ufffd]|[\\ud800-\\udbff][\\udc00-\\udfff])|[\\n\\f])","g"),a=RegExp("^url\\([\\t\\n\\f ]*[\"']?|[\"']?[\\t\\n\\f ]*\\)$","gi");X=function(a){return a.replace(b,g)};U=function(b){for(var b=(""+b).replace(/\r\n?/g,"\n").match(v)||[],f=0,h=" ",d=0,y=b.length;d"==l||"<\!--"==l||"\ufeff"==l||32>=g?" ": +/url\(/i.test(l)?"url("+w(l.replace(a,""),x)+")":l;if(h!=l||" "!=l)b[f++]=h=l}b.length=f;return b}})();"undefined"!==typeof window&&(window.lexCss=U,window.decodeCss=X);var Y=function(){function g(d){d=(""+d).match(k);return!d?s:new e(v(d[1]),v(d[2]),v(d[3]),v(d[4]),v(d[5]),v(d[6]),v(d[7]))}function w(d,a){return"string"==typeof d?encodeURI(d).replace(a,M):s}function M(d){d=d.charCodeAt(0);return"%"+"0123456789ABCDEF".charAt(d>>4&15)+"0123456789ABCDEF".charAt(d&15)}function x(d){if(d===s)return s;for(var d=d.replace(/(^|\/)\.(?:\/|$)/g,"$1").replace(/\/{2,}/g,"/"),a=b,h;(h=d.replace(a,"$1"))!=d;d=h);return d}function E(d,h){var b=d.T(),f=h.K();f?b.ga(h.j):f=h.X(); +f?b.da(h.n):f=h.Y();f?b.ea(h.k):f=h.$();var g=h.g,k=x(g);if(f)b.ca(h.V()),k=k&&k.replace(a,"");else if(f=!!g){if(47!==k.charCodeAt(0))var k=x(b.g||"").replace(a,""),e=k.lastIndexOf("/")+1,k=x((e?k.substring(0,e):"")+x(g)).replace(a,"")}else k=k&&k.replace(a,""),k!==g&&b.G(k);f?b.G(k):f=h.aa();f?b.O(h.l):f=h.Z();f&&b.fa(h.o);return b}function e(d,a,h,f,b,g,k){this.j=d;this.n=a;this.k=h;this.h=f;this.g=b;this.l=g;this.o=k}function v(d){return"string"==typeof d&&0]/g,v={"\n":"%0a","\u000c":"%0c","\r":"%0d",'"':"%22","'":"%27","(":"%28",")":"%29","*":"%2a","<":"%3c",">":"%3e"}, +b=/^(?:([^:/?# ]+):)?/,a=/^(?:https?|mailto|data)$/i;aa=function(){var a={};return function y(f,b,k,e,N){var f=E(f),u=L[f];if(!u||"object"!==typeof u)b.length=0;else{for(var i=u.cssPropBits,q=i&80,B=i&1536,F=NaN,r=0,o=0;r=I)j=i&1?j:"";else if(R=j.charCodeAt(1),v=j.charCodeAt(2),P=48<=R&&57>=R,S=48<=v&&57>=v,43===I&&(P||46===R&&S))j=i&1?(P?"":"0")+j.substring(1):"";else if(45===I&&(P||46===R&&S))j=i&4?(P?"-":"-0")+j.substring(1):i&1?"0":"";else if(46===I&&P)j=i&1?"0"+j:"";else if('url("'===j.substring(0,5))j=k&&i&16?g(x(M(e,b[r].substring(5,j.length-2)),f,k)): +"";else if("("===j.charAt(j.length-1))a:{D=b;G=r;j=1;K=G+1;for(I=D.length;K"]= +f["+"]=f["~"]=f;ba=function(a,d,b){function g(i,r){function o(b,f,g){var y,e,i,l,o,m=n;y="";if(bh&&" "===b[e-1]&&--e;f.startAtrule&&f.startAtrule(b[d].toLowerCase(),b.slice(h,e));a="{"===b[a]?w(b,a,g,f):a+1;f.endAtrule&&f.endAtrule()}return a}function w(b,a,k,f){++a;for(f.startBlock&&f.startBlock();ad)return d=~d,d===h?d+1:d;var y=b[d];if("{"!==y)return d===h?d+1:d;a=d+1;d>h&&" "===b[d-1]&&--d;for(f.startRuleset&&f.startRuleset(b.slice(h,d));ad)d=~d;else{for(var e=[],l=0,w=a;w])/g;f=b+"";if(G)f=f.split(H);else{for(var e=[],h=0,j;(j=H.exec(f))!==s;)e.push(f.substring(h,j.index)),e.push(j[0]),h=j.index+j[0].length;e.push(f.substring(h));f=e}a(d,f,0,{r:C,C:C},g)}}function b(b,d,g,f,t){return function(){a(b,d,g,f,t)}}function a(a,d,p,e,t){try{a.H&&0==p&&a.H(t);for(var h, +z,j,i=d.length;p"===d[p+1])p+=2,j=h[1].toLowerCase(),a.t&&a.t(j,t,A,b(a,d,p,e,t));else{var m=d,q=p,r=a,u=t,v=A,y=e,w=f(m,q);w?(r.t&&r.t(w.name,u,v,b(r,m,q,y,u)),p=w.next):p=m.length}else a.e&&a.e("</",t,A,b(a,d,p,e,t));break;case "<":if(h=/^([-\w:]+)\s*\/?/.exec(l))if(h[0].length===l.length&& +">"===d[p+1]){p+=2;j=h[1].toLowerCase();a.w&&a.w(j,[],t,A,b(a,d,p,e,t));var B=g.f[j];B&K&&(p=k(d,{name:j,next:p,c:B},a,t,A,e))}else{var m=d,q=a,r=t,u=A,v=e,x=f(m,p);x?(q.w&&q.w(x.name,x.R,r,u,b(q,m,x.next,v,r)),p=x.c&K?k(m,x,q,r,u,v):x.next):p=m.length}else a.e&&a.e("<",t,A,b(a,d,p,e,t));break;case "<\!--":if(!e.C){for(z=p+1;z"===d[z]&&/--$/.test(d[z-1]));z++);if(z"!==d[z];z++);z"!==d[z];z++);z":a.e&&a.e(">",t,A,b(a,d,p,e,t));break;case "":break;default:a.e&&a.e(o,t,A,b(a,d,p,e,t))}}a.B&&a.B(t)}catch(E){if(E!==A)throw E;}}function k(a,d,f,h,t,j){var z=a.length;T.hasOwnProperty(d.name)|| +(T[d.name]=RegExp("^"+d.name+"(?:[\\s\\/]|$)","i"));for(var i=T[d.name],k=d.next,l=d.next+1;l"!==a[h];h++)e+=a[h];if(!(j<=h)){for(var l=[];""!== +e;)if(d=ja.exec(e))if(d[4]&&!d[5]||d[6]&&!d[7]){for(var d=d[4]||d[6],i=C,e=[e,a[h++]];h"===a[h])break}else 0<=a[h].indexOf(d)&&(i=n);e.push(a[h])}if(j<=h)break;e=e.join("")}else{var i=d[1].toLowerCase(),k;if(d[2]){k=d[3];var m=k.charCodeAt(0);if(34===m||39===m)k=k.substr(1,k.length-2);k=x(k.replace(o,""))}else k="";l.push(i,k);e=e.substr(d[0].length)}else e=e.replace(/^[\s\S][^a-z\s]*/,"");f.R=l;f.next=h+1;return f}}function h(a){function b(a,d){f||d.push(a)}var d,f;return v({startDoc:function(){d= +[];f=C},startTag:function(b,e,h){if(!f&&g.f.hasOwnProperty(b)){var j=g.f[b];if(!(j&g.c.FOLDABLE)){var k=a(b,e);if(k){if("object"!==typeof k)throw Error("tagPolicy did not return object (old API?)");if("attribs"in k)e=k.attribs;else throw Error("tagPolicy gave no attribs");var i;"tagName"in k?(i=k.tagName,k=g.f[i]):(i=b,k=j);if(j&g.c.OPTIONAL_ENDTAG){var l=d[d.length-1];l&&l.D===b&&(l.v!==i||b!==i)&&h.push("")}j&g.c.EMPTY||d.push({D:b,v:i});h.push("<",i);b=0;for(l=e.length;b");j&g.c.EMPTY&&!(k&g.c.EMPTY)&&h.push("")}else f=!(j&g.c.EMPTY)}}},endTag:function(a,b){if(f)f=C;else if(g.f.hasOwnProperty(a)){var e=g.f[a];if(!(e&(g.c.EMPTY|g.c.FOLDABLE))){if(e&g.c.OPTIONAL_ENDTAG)for(e=d.length;0<=--e;){var h=d[e].D;if(h===a)break;if(!(g.f[h]&g.c.OPTIONAL_ENDTAG))return}else for(e=d.length;0<=--e&&d[e].D!==a;);if(!(0>e)){for(h=d.length;--h>e;){var j=d[h].v;g.f[j]&g.c.OPTIONAL_ENDTAG||b.push("")}e< +d.length&&(a=d[e].v);d.length=e;b.push("")}}}},pcdata:b,rcdata:b,cdata:b,endDoc:function(a){for(;d.length;d.length--)a.push("")}})}function d(a,b,d,f,e){if(!e)return s;try{var g=Y.parse(""+a);if(g&&(!g.K()||ka.test(g.W()))){var h=e(g,b,d,f);return h?h.toString():s}}catch(j){}return s}function y(a,b,d,f,e){d||a(b+" removed",{S:"removed",tagName:b});if(f!==e){var g="changed";f&&!e?g="removed":!f&&e&&(g="added");a(b+"."+d+" "+g,{S:g,tagName:b,la:d,oldValue:f,newValue:e})}} +function l(a,b,d){b=b+"::"+d;if(a.hasOwnProperty(b))return a[b];b="*::"+d;if(a.hasOwnProperty(b))return a[b]}function V(a,b,f,e,h){for(var j=0;j",GT:">",amp:"&",AMP:"&",quot:'"',apos:"'",nbsp:"\u00a0"},q=/^#(\d+)$/,B=/^#x([0-9A-Fa-f]+)$/,F=/^[A-Za-z][A-za-z0-9]+$/,r="undefined"!==typeof window&& +window.document?window.document.createElement("textarea"):s,o=/\0/g,j=/&(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/g,I=/^(#[0-9]+|#[xX][0-9A-Fa-f]+|\w+);/,R=/&/g,ia=/&([^a-z#]|#(?:[^0-9x]|x(?:[^0-9a-f]|$)|$)|$)/gi,P=/[<]/g,S=/>/g,D=/\"/g,ja=/^\s*([-.:\w]+)(?:\s*(=)\s*((")[^"]*("|$)|(')[^']*('|$)|(?=[a-z][-\w]*\s*=)|[^"'\s]*))?/i,G=3==="a,b".split(/(,)/).length,K=g.c.CDATA|g.c.RCDATA,A={},T={},ka=/^(?:https?|mailto|data)$/i,m={};m.pa=m.escapeAttrib=E;m.ra=m.makeHtmlSanitizer=h;m.sa=m.makeSaxParser=v;m.ta=m.makeTagPolicy= +ea;m.wa=m.normalizeRCData=e;m.xa=m.sanitize=function(a,b,d,e){return Q(a,ea(b,d,e))};m.ya=m.sanitizeAttribs=V;m.za=m.sanitizeWithPolicy=Q;m.Ba=m.unescapeEntities=x;return m}($),la=ha.sanitize;"undefined"!==typeof window&&(window.html=ha,window.html_sanitize=la);})(); \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/bpmn/mxBpmnShape2.js b/data/plugins/grafana-flowcharting/src/libs/shapes/bpmn/mxBpmnShape2.js new file mode 100644 index 0000000000000..6ee1cf8765534 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/bpmn/mxBpmnShape2.js @@ -0,0 +1,760 @@ +/** + * $Id: mxBpmnShape2.js,v 1.6 2013/12/20 09:54:28 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ +/** + * Class: mxBpmnShape + * + * Extends to implement an cylinder shape. If a + * custom shape with one filled area and an overlay path is + * needed, then this shape's should be overridden. + * This shape is registered under + * in . + * + * Constructor: mxBpmnShape + * + * Constructs a new cylinder shape. + * + * Parameters: + * + * bounds - that defines the bounds. This is stored in + * . + * fill - String that defines the fill color. This is stored in . + * stroke - String that defines the stroke color. This is stored in . + * strokewidth - Optional integer that defines the stroke width. Default is + * 1. This is stored in . + */ +function mxBpmnShape(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxBpmnShape, mxShape); + +mxBpmnShape.prototype.customProperties = [ + {name: 'symbol', dispName: 'Event', type: 'enum', defVal:'general', + enumList: [{val: 'general', dispName: 'General'}, + {val: 'message', dispName: 'Message'}, + {val: 'timer', dispName: 'Timer'}, + {val: 'escalation', dispName: 'Escalation'}, + {val: 'conditional', dispName: 'Conditional'}, + {val: 'link', dispName: 'Link'}, + {val: 'error', dispName: 'Error'}, + {val: 'cancel', dispName: 'Cancel'}, + {val: 'compensation', dispName: 'Compensation'}, + {val: 'signal', dispName: 'Signal'}, + {val: 'multiple', dispName: 'Multiple'}, + {val: 'parallelMultiple', dispName: 'Parallel Multiple'}, + {val: 'terminate', dispName: 'Terminate'}, + {val: 'exclusiveGw', dispName: 'Exclusive Gw'}, + {val: 'parallelGw', dispName: 'Parallel Gw'}, + {val: 'complexGw', dispName: 'Complex Gw'}] + }, + {name: 'outline', dispName: 'Event Type', type: 'enum', defVal:'standard', + enumList: [{val: 'standard', dispName: 'Standard'}, + {val: 'eventInt', dispName: 'Interrupting'}, + {val: 'eventNonint', dispName: 'Non-Interrupting'}, + {val: 'catching', dispName: 'Catching'}, + {val: 'boundInt', dispName: 'Bound Interrupting'}, + {val: 'boundNonint', dispName: 'Bound Non-Interrupting'}, + {val: 'throwing', dispName: 'Throwing'}, + {val: 'end', dispName: 'End'}, + {val: 'none', dispName: 'None'}] + }, + {name: 'background', dispName: 'Background', type: 'enum', defVal:'none', + enumList: [{val: 'gateway', dispName: 'Gateway'}, + {val: 'none', dispName: 'None'}] +}]; + +mxBpmnShape.prototype.eventTypeEnum = { + START_STANDARD : 'standard', + EVENT_SP_INT : 'eventInt', + EVENT_SP_NONINT : 'eventNonint', + CATCHING : 'catching', + BOUND_INT : 'boundInt', + BOUND_NONINT : 'boundNonint', + THROWING : 'throwing', + END : 'end', + NONE : 'none', + GATEWAY : 'gateway'}; + +mxBpmnShape.prototype.eventEnum = { + GENERAL : 'general', + MESSAGE : 'message', + TIMER : 'timer', + ESCALATION : 'escalation', + CONDITIONAL : 'conditional', + LINK : 'link', + ERROR : 'error', + CANCEL : 'cancel', + COMPENSATION : 'compensation', + SIGNAL : 'signal', + MULTIPLE : 'multiple', + PAR_MULTI : 'parallelMultiple', + TERMINATE : 'terminate', + GW_EXCLUSIVE : 'exclusiveGw', + GW_PARALLEL : 'parallelGw', + GW_COMPLEX : 'complexGw'}; + +mxBpmnShape.prototype.miscEnum = { + OUTLINE : 'outline', + BACKGROUND : 'background', + SYMBOL : 'symbol', + GATEWAY : 'gateway'}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxBpmnShape.prototype.paintVertexShape = function(c, x, y, w, h) +{ + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.BACKGROUND); + var bg = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.BACKGROUND, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) + { + c.setShadow(false); + } + + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.OUTLINE); + this.redrawPath(c, x, y, w, h, mxBpmnShape.prototype.miscEnum.SYMBOL); +}; + +/** + * Function: redrawPath + * + * Draws the path for this shape. + */ +mxBpmnShape.prototype.redrawPath = function(c, x, y, w, h, layer) +{ + var bg = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.BACKGROUND, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (layer == mxBpmnShape.prototype.miscEnum.BACKGROUND) + { + if (bg != null) + { + var f = this.backgrounds[bg]; + + if (f != null) + { + c.translate(x, y); + f.call(this, c, x, y, w, h, layer); + } + } + } + else if (layer == mxBpmnShape.prototype.miscEnum.OUTLINE) + { + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) + { + c.translate(w / 4, h / 4); + h /= 2; + w /= 2; + + //add rhombus connections here + this.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.75), false) + ]; + } + else + { + //add ellipse connections here + this.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.145, 0.145), false), + new mxConnectionConstraint(new mxPoint(0.145, 0.855), false), + new mxConnectionConstraint(new mxPoint(0.855, 0.145), false), + new mxConnectionConstraint(new mxPoint(0.855, 0.855), false) + ]; + } + + var o = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.OUTLINE, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (o != null) + { + var f = this.outlines[o]; + + if (f != null) + { + f.call(this, c, x, y, w, h, bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY); + } + } + } + else if (layer == mxBpmnShape.prototype.miscEnum.SYMBOL) + { + if (bg === mxBpmnShape.prototype.eventTypeEnum.GATEWAY) + { + h /= 2; + w /= 2; + } + + var s = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.SYMBOL, null); + + if (s != null) + { + var f = this.symbols[s]; + var isInverse = false; + if (f != null) + { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + var o = mxUtils.getValue(this.style, mxBpmnShape.prototype.miscEnum.OUTLINE, mxBpmnShape.prototype.eventTypeEnum.NONE); + + if (s === mxBpmnShape.prototype.eventEnum.MESSAGE) + { + c.translate(w * 0.15, h * 0.3); + w = w * 0.7; + h = h * 0.4; + } + else if (s === mxBpmnShape.prototype.eventEnum.TIMER) + { + c.translate(w * 0.11, h * 0.11); + w = w * 0.78; + h = h * 0.78; + } + else if (s === mxBpmnShape.prototype.eventEnum.ESCALATION) + { + c.translate(w * 0.19, h * 0.15); + w = w * 0.62; + h = h * 0.57; + } + else if (s === mxBpmnShape.prototype.eventEnum.CONDITIONAL) + { + c.translate(w * 0.3, h * 0.16); + w = w * 0.4; + h = h * 0.68; + } + else if (s === mxBpmnShape.prototype.eventEnum.LINK) + { + c.translate(w * 0.27, h * 0.33); + w = w * 0.46; + h = h * 0.34; + } + else if (s === mxBpmnShape.prototype.eventEnum.ERROR) + { + c.translate(w * 0.212, h * 0.243); + w = w * 0.58; + h = h * 0.507; + } + else if (s === mxBpmnShape.prototype.eventEnum.CANCEL) + { + c.translate(w * 0.22, h * 0.22); + w = w * 0.56; + h = h * 0.56; + } + else if (s === mxBpmnShape.prototype.eventEnum.COMPENSATION) + { + c.translate(w * 0.28, h * 0.35); + w = w * 0.44; + h = h * 0.3; + } + else if (s === mxBpmnShape.prototype.eventEnum.SIGNAL) + { + c.translate(w * 0.19, h * 0.15); + w = w * 0.62; + h = h * 0.57; + } + else if (s === mxBpmnShape.prototype.eventEnum.MULTIPLE) + { + c.translate(w * 0.2, h * 0.19); + w = w * 0.6; + h = h * 0.565; + } + else if (s === mxBpmnShape.prototype.eventEnum.PAR_MULTI) + { + c.translate(w * 0.2, h * 0.2); + w = w * 0.6; + h = h * 0.6; + } + else if (s === mxBpmnShape.prototype.eventEnum.TERMINATE) + { + c.translate(w * 0.05, h * 0.05); + w = w * 0.9; + h = h * 0.9; + } + else if (s === mxBpmnShape.prototype.eventEnum.GW_EXCLUSIVE) + { + c.translate(w * 0.12, 0); + w = w * 0.76; + } + + isInverse = false; + + if (s === 'star') + { + c.setFillColor(strokeColor); + } + else if (o === mxBpmnShape.prototype.eventTypeEnum.THROWING || o === mxBpmnShape.prototype.eventTypeEnum.END) + { + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + isInverse = true; + } + + f.call(this, c, x, y, w, h, layer, isInverse); + + if (s === 'star') + { + c.setFillColor(fillColor); + } + else if (o === mxBpmnShape.prototype.eventTypeEnum.THROWING || o === mxBpmnShape.prototype.eventTypeEnum.END) + { + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + } + } + } + } +}; + +//Contains all possible backgrounds +mxBpmnShape.prototype.backgrounds = { + 'none': function(c, x, y, w, h) + { + }, + 'gateway': function(c, x, y, w, h) + { + c.begin(); + c.moveTo(w / 2, 0); + c.lineTo(w, h / 2); + c.lineTo(w / 2, h); + c.lineTo(0, h / 2); + c.close(); + c.fillAndStroke(); + } +}; + +//Contains all possible outlines +mxBpmnShape.prototype.outlines = { + 'none' : function(c, x, y, w, h, isGateway) + { + if (!isGateway) + { + c.setShadow(false); + } + }, + 'standard': function(c, x, y, w, h, isGateway) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + }, + 'eventInt': function(c, x, y, w, h, isGateway) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + }, + 'eventNonint': function(c, x, y, w, h, isGateway) + { + var dashed = c.state.dashed; + c.setDashed(true); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setDashed(dashed); + + if (!isGateway) + { + c.setShadow(false); + } + + }, + 'catching': function(c, x, y, w, h, isGateway) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(inset, inset, w - 2 *inset, h - 2 * inset); + c.stroke(); + }, + 'boundInt': function(c, x, y, w, h, isGateway) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + var inset = 2; + c.ellipse(inset, inset, w - 2 *inset, h - 2 * inset); + c.stroke(); + }, + 'boundNonint': function(c, x, y, w, h, isGateway) + { + var dashed = c.state.dashed; + c.setDashed(true); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(inset, inset, w - 2 *inset, h - 2 * inset); + c.stroke(); + c.setDashed(dashed); + }, + 'throwing': function(c, x, y, w, h, isGateway) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (!isGateway) + { + c.setShadow(false); + } + + var inset = 2; + c.ellipse(w * 0.02 + inset, h * 0.02 + inset, w * 0.96 - 2 *inset, h * 0.96 - 2 * inset); + c.stroke(); + }, + 'end': function(c, x, y, w, h, isGateway) + { + var sw = c.state.strokeWidth; + c.setStrokeWidth(sw * 3); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + c.setStrokeWidth(sw); + + if (!isGateway) + { + c.setShadow(false); + } + } +}; + +//Contains all possible symbols +mxBpmnShape.prototype.symbols = { + 'general' : function(c, x, y, w, h) + { + }, + 'message': function(c, x, y, w, h, layer, isInverse) + { + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var fc = mxUtils.getValue(this.style, "fillColor", "none"); + + if (fc === 'none') + { + if (isInverse) + { + c.setStrokeColor('#ffffff'); + } + } + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.stroke(); + }, + 'timer' : function(c, x, y, w, h) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.0642); + c.moveTo(w * 0.7484, h * 0.0654); + c.lineTo(w * 0.7126, h * 0.1281); + c.moveTo(w * 0.93, h * 0.2471); + c.lineTo(w * 0.8673, h * 0.2854); + c.moveTo(w, h * 0.5); + c.lineTo(w * 0.9338, h * 0.5); + c.moveTo(w * 0.93, h * 0.7509); + c.lineTo(w * 0.8673, h * 0.7126); + c.moveTo(w * 0.7484, h * 0.9326); + c.lineTo(w * 0.7126, h * 0.8699); + c.moveTo(w * 0.5, h * 0.9338); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.2496, h * 0.9325); + c.lineTo(w * 0.2854, h * 0.8699); + c.moveTo(w * 0.068, h * 0.7509); + c.lineTo(w * 0.1307, h * 0.7126); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.0642, h * 0.5); + c.moveTo(w * 0.068, h * 0.2471); + c.lineTo(w * 0.1307, h * 0.2854); + c.moveTo(w * 0.2496, h * 0.0654); + c.lineTo(w * 0.2854, h * 0.1281); + c.moveTo(w * 0.5246, h * 0.0706); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.7804, h * 0.5118); + c.stroke(); + }, + 'escalation' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.5); + c.close(); + c.fillAndStroke(); + }, + 'conditional' : function(c, x, y, w, h) + { + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(0, h * 0.1027); + c.lineTo(w * 0.798, h * 0.1027); + c.moveTo(0, h * 0.3669); + c.lineTo(w * 0.798, h * 0.3669); + c.moveTo(0, h * 0.6311); + c.lineTo(w * 0.798, h * 0.6311); + c.moveTo(0, h * 0.8953); + c.lineTo(w * 0.798, h * 0.8953); + c.stroke(); + }, + 'link' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h * 0.76); + c.lineTo(0, h * 0.24); + c.lineTo(w * 0.63, h * 0.24); + c.lineTo(w * 0.63, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.63, h); + c.lineTo(w * 0.63, h * 0.76); + c.close(); + c.fillAndStroke(); + }, + 'error' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3287, h * 0.123); + c.lineTo(w * 0.6194, h * 0.6342); + c.lineTo(w, 0); + c.lineTo(w * 0.6625, h * 0.939); + c.lineTo(w * 0.3717, h * 0.5064); + c.close(); + c.fillAndStroke(); + }, + 'cancel' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(w * 0.1051, 0); + c.lineTo(w * 0.5, h * 0.3738); + c.lineTo(w * 0.8909, 0); + c.lineTo(w, h * 0.1054); + c.lineTo(w * 0.623, h * 0.5); + c.lineTo(w, h * 0.8926); + c.lineTo(w * 0.8909, h); + c.lineTo(w * 0.5, h * 0.6242); + c.lineTo(w * 0.1051, h); + c.lineTo(0, h * 0.8926); + c.lineTo(w * 0.373, h * 0.5); + c.lineTo(0, h * 0.1054); + c.close(); + c.fillAndStroke(); + }, + 'compensation' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + }, + 'signal' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + }, + 'multiple' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(0, h * 0.39); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.39); + c.lineTo(w * 0.815, h); + c.lineTo(w * 0.185, h); + c.close(); + c.fillAndStroke(); + }, + 'parallelMultiple' : function(c, x, y, w, h) + { + c.begin(); + c.moveTo(w * 0.38, 0); + c.lineTo(w * 0.62, 0); + c.lineTo(w * 0.62, h * 0.38); + c.lineTo(w, h * 0.38); + c.lineTo(w, h * 0.62); + c.lineTo(w * 0.62, h * 0.62); + c.lineTo(w * 0.62, h); + c.lineTo(w * 0.38, h); + c.lineTo(w * 0.38, h * 0.62); + c.lineTo(0, h * 0.62); + c.lineTo(0, h * 0.38); + c.lineTo(w * 0.38, h * 0.38); + c.close(); + c.fillAndStroke(); + }, + 'terminate' : function(c, x, y, w, h) + { + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + }, + 'exclusiveGw' : function(c, x, y, w, h) + { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.105, 0); + c.lineTo(w * 0.5, h * 0.38); + c.lineTo(w * 0.895, h * 0); + c.lineTo(w, h * 0.11); + c.lineTo(w * 0.6172, h * 0.5); + c.lineTo(w, h * 0.89); + c.lineTo(w * 0.895, h); + c.lineTo(w * 0.5, h * 0.62); + c.lineTo(w * 0.105, h); + c.lineTo(0, h * 0.89); + c.lineTo(w * 0.3808, h * 0.5); + c.lineTo(0, h * 0.11); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + + }, + 'parallelGw' : function(c, x, y, w, h) + { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.38, 0); + c.lineTo(w * 0.62, 0); + c.lineTo(w * 0.62, h * 0.38); + c.lineTo(w, h * 0.38); + c.lineTo(w, h * 0.62); + c.lineTo(w * 0.62, h * 0.62); + c.lineTo(w * 0.62, h); + c.lineTo(w * 0.38, h); + c.lineTo(w * 0.38, h * 0.62); + c.lineTo(0, h * 0.62); + c.lineTo(0, h * 0.38); + c.lineTo(w * 0.38, h * 0.38); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + }, + 'complexGw' : function(c, x, y, w, h) + { + var strokeColor = c.state.strokeColor; + var fillColor = c.state.fillColor; + c.setStrokeColor(fillColor); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(0, h * 0.44); + c.lineTo(w * 0.36, h * 0.44); + c.lineTo(w * 0.1, h * 0.18); + c.lineTo(w * 0.18, h * 0.1); + c.lineTo(w * 0.44, h * 0.36); + c.lineTo(w * 0.44, 0); + c.lineTo(w * 0.56, 0); + c.lineTo(w * 0.56, h * 0.36); + c.lineTo(w * 0.82, h * 0.1); + c.lineTo(w * 0.90, h * 0.18); + c.lineTo(w * 0.64, h * 0.44); + c.lineTo(w, h * 0.44); + c.lineTo(w, h * 0.56); + c.lineTo(w * 0.64, h * 0.56); + c.lineTo(w * 0.9, h * 0.82); + c.lineTo(w * 0.82, h * 0.9); + c.lineTo(w * 0.56, h * 0.64); + c.lineTo(w * 0.56, h); + c.lineTo(w * 0.44, h); + c.lineTo(w * 0.44, h * 0.64); + c.lineTo(w * 0.18, h * 0.9); + c.lineTo(w * 0.1, h * 0.82); + c.lineTo(w * 0.36, h * 0.56); + c.lineTo(0, h * 0.56); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + }, + 'star': function(c, x, y, w, h) + { + c.translate(w / 5, h / 6); + h *= 2 / 3; + w *= 3 / 5; + + c.begin(); + c.moveTo(0, h / 4); + c.lineTo(w / 3, h / 4); + c.lineTo(w / 2, 0); + c.lineTo(2 * w / 3, h / 4); + c.lineTo(w, h / 4); + c.lineTo(5 * w / 6, h / 2); + c.lineTo(w, 3 * h / 4); + c.lineTo(2 * w / 3, 3 * h / 4); + c.lineTo(w / 2, h); + c.lineTo(w / 3, 3 * h / 4); + c.lineTo(0, 3 * h / 4); + c.lineTo(w / 6, h / 2); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape('mxgraph.bpmn.shape', mxBpmnShape); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/er/mxER.js b/data/plugins/grafana-flowcharting/src/libs/shapes/er/mxER.js new file mode 100644 index 0000000000000..935c5334453b6 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/er/mxER.js @@ -0,0 +1,1468 @@ +/** + * $Id: mxER.js,v 1.6 2013/05/17 13:46:41 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//TODO markers.html probably isn't needed, because it was used for testing during development before the new canvas was introduced + +//********************************************************************************************************************************************************** +//Entity +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeEREntity(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeEREntity, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeEREntity.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeEREntity.prototype.background = function(c, x, y, w, h, rSize, fontColor) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') + { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'rect') + { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'dblFrame') + { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } + +}; + +mxShapeEREntity.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.entity', mxShapeEREntity); + +mxShapeEREntity.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Entity Extended +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeEREntityExt(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeEREntityExt, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeEREntityExt.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var attributes = mxUtils.getValue(this.style, 'subText', '+ attribute 1,+ attribute 2,+ attribute 3').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + var mainColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#008cff'); + var attrColor = mxUtils.getValue(this.style, 'fillColor2', '#ffffff'); + var maxTextWidth = 0; + c.translate(x, y); + var rSize = 10; + var barY = fontSize * 1.25; + + for (var i = 0; i < attributes.length; i++) + { + var currWidth = mxUtils.getSizeForString(attributes[i], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + w = Math.max(w, 2 * rSize, maxTextWidth + rSize); + h = Math.max(h, 2 * rSize, (attributes.length + 1) * barY); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.shapes(c, x, y, w, h, fontSize, mainColor, attrColor, rSize, barY); + this.mainText(c, x, y, w, h, mainText, fontSize, attrColor); + this.attrText(c, x, y, w, h, attributes, fontSize, strokeColor, barY, rSize); +}; + +mxShapeEREntityExt.prototype.background = function(c, x, y, w, h, rSize) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + c.begin(); + + if (buttonStyle === 'round') + { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + else if (buttonStyle === 'rect') + { + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeEREntityExt.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, fontSize * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeEREntityExt.prototype.shapes = function(c, x, y, w, h, fontSize, mainColor, attrColor, rSize, barY) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') + { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, barY); + c.lineTo(0, barY); + c.close(); + c.fill(); + + c.setFillColor(attrColor); + c.begin(); + c.moveTo(w, barY); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, barY); + c.close(); + c.fill(); + } + else if (buttonStyle === 'rect') + { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, barY); + c.lineTo(0, barY); + c.close(); + c.fill(); + + c.setFillColor(attrColor); + c.begin(); + c.moveTo(0, barY); + c.lineTo(w, barY); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + } + + c.begin(); + + if (buttonStyle === 'round') + { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + else if (buttonStyle === 'rect') + { + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.stroke(); +}; + +mxShapeEREntityExt.prototype.attrText = function(c, x, y, w, h, attributes, fontSize, fontColor, barY, rSize) +{ + for (var i = 0; i < attributes.length; i++) + { + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(rSize * 0.5, (i + 1.5) * barY, 0, 0, attributes[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.er.entityExt', mxShapeEREntityExt); + +mxShapeEREntityExt.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Attribute +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERAttribute(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERAttribute, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERAttribute.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERAttribute.prototype.background = function(c, x, y, w, h, rSize, fontColor) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'simple').toString(); + + if (buttonStyle === 'simple') + { + c.begin(); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + } + else if (buttonStyle === 'dblFrame') + { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.ellipse(rSize * 0.1, rSize * 0.1, w - rSize * 0.2, h - rSize * 0.2); + c.stroke(); + } +}; + +mxShapeERAttribute.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.attribute', mxShapeERAttribute); + +mxShapeERAttribute.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), + new mxConnectionConstraint(new mxPoint(0.856, 0.144), false), + new mxConnectionConstraint(new mxPoint(0.856, 0.856), false), + new mxConnectionConstraint(new mxPoint(0.144, 0.856), false), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Has +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERHas(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERHas, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERHas.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERHas.prototype.background = function(c, x, y, w, h, rSize, fontColor) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'rhombus').toString(); + + if (buttonStyle === 'rhombus') + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'dblFrame') + { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.1, h * 0.5); + c.lineTo(w * 0.5, h * 0.1); + c.lineTo(w * 0.9, h * 0.5); + c.lineTo(w * 0.5, h * 0.9); + c.close(); + c.stroke(); + } +}; + +mxShapeERHas.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.has', mxShapeERHas); + +mxShapeERHas.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.75), false) + ]; + +//********************************************************************************************************************************************************** +//Cloud +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERCloud(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERCloud, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERCloud.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERCloud.prototype.background = function(c, x, y, w, h, rSize, fontColor) +{ + c.begin(); + c.moveTo(0.25 * w, 0.25 * h); + c.curveTo(0.05 * w, 0.25 * h, 0, 0.5 * h, 0.16 * w, 0.55 * h); + c.curveTo(0, 0.66 * h, 0.18 * w, 0.9 * h, 0.31 * w, 0.8 * h); + c.curveTo(0.4 * w, h, 0.7 * w, h, 0.8 * w, 0.8 * h); + c.curveTo(w, 0.8 * h, w, 0.6 * h, 0.875 * w, 0.5 * h); + c.curveTo(w, 0.3 * h, 0.8 * w, 0.1 * h, 0.625 * w, 0.2 * h); + c.curveTo(0.5 * w, 0.05 * h, 0.3 * w, 0.05 * h, 0.25 * w, 0.25 * h); + c.fillAndStroke(); +}; + +mxShapeERCloud.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.cloud', mxShapeERCloud); + +mxShapeERCloud.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.08, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.1), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.92), false), + new mxConnectionConstraint(new mxPoint(0.24, 0.24), false), + new mxConnectionConstraint(new mxPoint(0.22, 0.8), false), + new mxConnectionConstraint(new mxPoint(0.81, 0.2), false), + new mxConnectionConstraint(new mxPoint(0.78, 0.78), false) + ]; + +//********************************************************************************************************************************************************** +//Hierarchy (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERHierarchy(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERHierarchy, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERHierarchy.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'main').toString().split(','); + var subText = mxUtils.getValue(this.style, 'subText', 'sub').toString().split(','); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var rSize = 10; + w = Math.max(w, 2 * rSize); + h = Math.max(h, 2 * rSize); + this.background(c, x, y, w, h, rSize, fontColor); + c.setShadow(false); + this.shapeText(c, x, y, w, h, mainText, subText, fontSize, fontColor); +}; + +mxShapeERHierarchy.prototype.background = function(c, x, y, w, h, rSize, fontColor) +{ + var buttonStyle = mxUtils.getValue(this.style, 'buttonStyle', 'round').toString(); + + if (buttonStyle === 'round') + { + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'rect') + { + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'dblFrame') + { + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } + + var trX = 0; + var trY = 0; + + if (buttonStyle === 'round') + { + trX = w * 0.5; + trY = rSize; + c.translate(trX, trY); + w = w * 0.5 - rSize; + h = h - 2 * rSize; + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'rect') + { + trX = w * 0.5; + trY = rSize; + c.translate(trX, trY); + w = w * 0.5 - rSize; + h = h - 2 * rSize; + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + } + else if (buttonStyle === 'dblFrame') + { + trX = w * 0.5; + trY = rSize * 0.15; + c.translate(trX, trY); + w = w * 0.5 - rSize * 0.15; + h = h - rSize * 0.3; + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + rSize = Math.min(w, h); + c.begin(); + c.moveTo(rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, rSize * 0.1); + c.lineTo(w - rSize * 0.1, h - rSize * 0.1); + c.lineTo(rSize * 0.1, h - rSize * 0.1); + c.close(); + c.stroke(); + } + + c.translate(- trX, - trY); + +}; + +mxShapeERHierarchy.prototype.shapeText = function(c, x, y, w, h, text, subText, fontSize, fontColor, rSize) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.25, (h - fontSize) * 0.5, 0, 0, text[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.25, (h + fontSize) * 0.5, 0, 0, text[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.7, (h - fontSize) * 0.5, 0, 0, subText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.7, (h + fontSize) * 0.5, 0, 0, subText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.hierarchy', mxShapeERHierarchy); + +mxShapeERHierarchy.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Note +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERNote(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERNote, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERNote.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, 'buttonText', 'Entity'); + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + var backColor = mxUtils.getValue(this.style, 'fillColor2', '#ffffff'); + c.translate(x, y); + var flipSize = 20; + w = Math.max(w, flipSize * 2); + h = Math.max(h, flipSize * 2); + this.background(c, x, y, w, h, flipSize); + c.setShadow(false); + this.flipShape(c, x, y, w, h, flipSize, backColor); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeERNote.prototype.background = function(c, x, y, w, h, flipSize) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - flipSize, 0); + c.lineTo(w, flipSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERNote.prototype.flipShape = function(c, x, y, w, h, flipSize, backColor) +{ + c.setLineJoin('round'); + c.setFillColor(backColor); + c.begin(); + c.moveTo(w - flipSize, 0); + c.lineTo(w, flipSize); + c.lineTo(w - flipSize, flipSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERNote.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.note', mxShapeERNote); + +mxShapeERNote.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Chen's Notation Legend (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERChen(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERChen, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERChen.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + var flipSize = 20; + w = Math.max(w, flipSize * 2); + h = Math.max(h, flipSize * 2); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERChen.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERChen.prototype.foreground = function(c, x, y, w, h, fontSize, fontColor) +{ + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.75); + c.lineTo(w, h * 0.75); + + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.25, h); + + c.moveTo(w * 0.5, h * 0.25); + c.lineTo(w * 0.5, h); + + c.moveTo(w * 0.75, h * 0.5); + c.lineTo(w * 0.75, h); + c.stroke(); + + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.125, 0, 0, 'ERD Peter Chen\'s Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(fontSize * 0.85); + c.text(w * 0.25, h * 0.375, 0, 0, 'Cardinality', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.375, 0, 0, 'Optionality', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(fontSize * 0.7); + c.text(w * 0.125, h * 0.625, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.375, h * 0.625, 0, 0, 'One', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.625, h * 0.625, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.875, h * 0.625, 0, 0, 'Optional', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.125, h * 0.875, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.375, h * 0.875, 0, 0, 'Many', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.625, h * 0.875, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.875, h * 0.875, 0, 0, 'Mandatory', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.er.chens', mxShapeERChen); + +mxShapeERChen.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Bachman's Notation Legend (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERBachman(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERBachman, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERBachman.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERBachman.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERBachman.prototype.foreground = function(c, x, y, w, h, fontSize, fontColor) +{ + c.begin(); + c.moveTo(0, h * 0.125); + c.lineTo(w, h * 0.125); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + c.moveTo(0, h * 0.375); + c.lineTo(w, h * 0.375); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.625); + c.lineTo(w, h * 0.625); + c.moveTo(0, h * 0.75); + c.lineTo(w, h * 0.75); + c.moveTo(0, h * 0.875); + c.lineTo(w, h * 0.875); + + c.moveTo(w * 0.5, h * 0.125); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.0625, 0, 0, 'ERD Bachman\'s Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(fontSize * 0.85); + c.text(w * 0.52, h * 0.1875, 0, 0, 'Relationship', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.3125, 0, 0, 'Cardinality (One)', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.4375, 0, 0, 'Cardinality (Many)', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.5625, 0, 0, 'Mandatory, One', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.6875, 0, 0, 'Mandatory, Many', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.8125, 0, 0, 'Optional, One', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.9375, 0, 0, 'Optional, Many', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var textWidth = mxUtils.getSizeForString('has/forms', fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.begin(); + c.moveTo(w * 0.04, h * 0.1875); + c.lineTo(w * 0.25 - textWidth * 0.5, h * 0.1875); + c.moveTo(w * 0.25 + textWidth * 0.5, h * 0.1875); + c.lineTo(w * 0.46, h * 0.1875); + + c.text(w * 0.25, h * 0.1875, 0, 0, 'has/forms', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, true, 0, 0); + + c.moveTo(w * 0.04, h * 0.3125); + c.lineTo(w * 0.46, h * 0.3125); + + c.moveTo(w * 0.04, h * 0.4375); + c.lineTo(w * 0.46, h * 0.4375); + c.moveTo(w * 0.46, h * 0.4050); + c.lineTo(w * 0.4, h * 0.4375); + c.lineTo(w * 0.46, h * 0.47); + + c.moveTo(w * 0.04, h * 0.5625); + c.lineTo(w * 0.46, h * 0.5625); + c.moveTo(w * 0.38, h * 0.53); + c.lineTo(w * 0.38, h * 0.595); + + c.moveTo(w * 0.04, h * 0.6875); + c.lineTo(w * 0.46, h * 0.6875); + c.moveTo(w * 0.46, h * 0.655); + c.lineTo(w * 0.4, h * 0.6875); + c.lineTo(w * 0.46, h * 0.72); + c.moveTo(w * 0.38, h * 0.655); + c.lineTo(w * 0.38, h * 0.72); + + c.moveTo(w * 0.04, h * 0.8125); + c.lineTo(w * 0.46, h * 0.8125); + + c.moveTo(w * 0.04, h * 0.9375); + c.lineTo(w * 0.46, h * 0.9375); + c.moveTo(w * 0.46, h * 0.9050); + c.lineTo(w * 0.4, h * 0.9375); + c.lineTo(w * 0.46, h * 0.97); + + c.stroke(); + + var ellSize = h / 15; + c.begin(); + c.ellipse(w * 0.46 - ellSize, h * 0.8125 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); + + c.begin(); + c.ellipse(w * 0.4 - ellSize, h * 0.9375 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.er.bachmans', mxShapeERBachman); + +mxShapeERBachman.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Information Engineering Notation Legend (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeERInfEng(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeERInfEng, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeERInfEng.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontColor = mxUtils.getValue(this.style, 'textColor', '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17'); + c.translate(x, y); + w = Math.max(w, h / 1.5); + h = Math.max(h, fontSize * 5); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h, fontSize, fontColor); +}; + +mxShapeERInfEng.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeERInfEng.prototype.foreground = function(c, x, y, w, h, fontSize, fontColor) +{ + c.begin(); + c.moveTo(0, h * 0.2); + c.lineTo(w, h * 0.2); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(0, h * 0.6); + c.lineTo(w, h * 0.6); + c.moveTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + + c.moveTo(w * 0.5, h * 0.2); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.1, 0, 0, 'ERD Information Engineering Notation', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(fontSize * 0.85); + c.text(w * 0.52, h * 0.3, 0, 0, 'Zero or one', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.5, 0, 0, 'One only', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.7, 0, 0, 'Zero or more', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.52, h * 0.9, 0, 0, 'One or more', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var ellSize = h / 12; + + c.begin(); + c.moveTo(w * 0.04, h * 0.3); + c.lineTo(w * 0.46, h * 0.3); + c.moveTo(w * 0.46 - ellSize, h * 0.25); + c.lineTo(w * 0.46 - ellSize, h * 0.35); + + c.moveTo(w * 0.04, h * 0.5); + c.lineTo(w * 0.46, h * 0.5); + c.moveTo(w * 0.46 - ellSize * 2, h * 0.45); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.55); + c.moveTo(w * 0.46 - ellSize * 2.5, h * 0.45); + c.lineTo(w * 0.46 - ellSize * 2.5, h * 0.55); + + c.moveTo(w * 0.04, h * 0.7); + c.lineTo(w * 0.46, h * 0.7); + c.moveTo(w * 0.46, h * 0.65); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.7); + c.lineTo(w * 0.46, h * 0.75); + c.stroke(); + + c.moveTo(w * 0.04, h * 0.9); + c.lineTo(w * 0.46, h * 0.9); + c.moveTo(w * 0.46, h * 0.85); + c.lineTo(w * 0.46 - ellSize * 2, h * 0.9); + c.lineTo(w * 0.46, h * 0.95); + c.moveTo(w * 0.46 - ellSize * 2.5, h * 0.85); + c.lineTo(w * 0.46 - ellSize * 2.5, h * 0.95); + c.stroke(); + + c.begin(); + c.ellipse(w * 0.46 - ellSize * 3, h * 0.3 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); + + c.begin(); + c.ellipse(w * 0.46 - ellSize * 3, h * 0.7 - ellSize * 0.5, ellSize, ellSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.er.ie', mxShapeERInfEng); + +mxShapeERInfEng.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +// ER markers +mxMarker.addMarker('ERone', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); + +mxMarker.addMarker('ERmandOne', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.moveTo(pe.x - nx - ny / 2, pe.y - ny + nx / 2); + c.lineTo(pe.x - nx + ny / 2, pe.y - ny - nx / 2); + c.stroke(); + }; +}); + +mxMarker.addMarker('ERmany', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); + +mxMarker.addMarker('ERoneToMany', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx - ny / 2, pe.y - ny + nx / 2); + c.lineTo(pe.x - nx + ny / 2, pe.y - ny - nx / 2); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); + +mxMarker.addMarker('ERzeroToMany', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + c.begin(); + c.ellipse(pe.x - 1.5 * nx - a, pe.y - 1.5 * ny - a, 2 * a, 2 * a); + + if (filled) + { + // TODO not sure if this is ok, because by default, markers use strokeColor for filling + var oldColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + + c.setFillColor('#ffffff'); + c.fillAndStroke(); + c.setFillColor(oldColor); + } + else + { + c.stroke(); + } + + c.begin(); + c.moveTo(pe.x + ny / 2, pe.y - nx / 2); + c.lineTo(pe.x - nx, pe.y - ny); + c.lineTo(pe.x - ny / 2, pe.y + nx / 2); + c.stroke(); + }; +}); + +mxMarker.addMarker('ERzeroToOne', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + c.begin(); + c.ellipse(pe.x - 1.5 * nx - a, pe.y - 1.5 * ny - a, 2 * a, 2 * a); + + if (filled) + { + // TODO not sure if this is ok, because by default, markers use strokeColor for filling + var oldColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + + c.setFillColor('#ffffff'); + c.fillAndStroke(); + c.setFillColor(oldColor); + } + else + { + c.stroke(); + } + + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeERRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeERRRect, mxShape); + +mxShapeERRRect.prototype.cst = { + RRECT : 'mxgraph.er.rrect', + R_SIZE : 'rSize' +}; + +mxShapeERRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Rounding Size', type: 'float'}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeERRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeERRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeERRRect.prototype.cst.RRECT, mxShapeERRRect); + +mxShapeERRRect.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeERAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeERAnchor, mxShape); + +mxShapeERAnchor.prototype.cst = { + ANCHOR : 'mxgraph.er.anchor' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeERAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeERAnchor.prototype.cst.ANCHOR, mxShapeERAnchor); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/ios7/mxIOS7Ui.js b/data/plugins/grafana-flowcharting/src/libs/shapes/ios7/mxIOS7Ui.js new file mode 100644 index 0000000000000..434a8df9d7e73 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/ios7/mxIOS7Ui.js @@ -0,0 +1,1719 @@ +/** + * $Id: mxIOS7Ui.js,v 1.6 2013/12/04 16:48:54 mate Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +var mxIOS7C = +{ + MAIN_TEXT : 'mainText', + SUB_TEXT : 'subText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + BAR_POS : 'barPos', + BUTTON_TEXT : 'buttonText', + BUTTON_STATE : 'buttonState', + SELECTED : '+', //has to be one character long + STATE_ON : 'on', + STATE_OFF : 'off', + GRID_SIZE : 'gridSize', + + SHAPE_IOS7_APP_BAR : 'mxgraph.ios7ui.appBar', + SHAPE_IOS7_ON_OFF_BUTTON : 'mxgraph.ios7ui.onOffButton', + SHAPE_IOS7_SLIDER : 'mxgraph.ios7ui.slider', + SHAPE_IOS7_DOWNLOAD_BAR : 'mxgraph.ios7ui.downloadBar', + SHAPE_IOS7_ICON : 'mxgraph.ios7ui.icon', + SHAPE_IOS7_HOR_BUTTON_BAR : 'mxgraph.ios7ui.horButtonBar', + SHAPE_IOS7_PAGE_CONTROL : 'mxgraph.ios7ui.pageControl', + SHAPE_IOS7_EXPAND : 'mxgraph.ios7ui.expand', + SHAPE_IOS7_ICON_GRID : 'mxgraph.ios7ui.iconGrid', + SHAPE_IOS7_PHONE : 'mxgraph.ios7ui.phone', + SHAPE_IOS7_SEARCH_BOX : 'mxgraph.ios7ui.searchBox', + SHAPE_IOS7_URL : 'mxgraph.ios7ui.url', + SHAPE_IOS7_ACTION_DIALOG : 'mxgraph.ios7ui.actionDialog', + + STYLE_FILLCOLOR2 : 'fillColor2', + STYLE_FILLCOLOR3 : 'fillColor3', + STYLE_TEXTCOLOR : 'textColor', + STYLE_TEXTCOLOR2 : 'textColor2', + STYLE_STROKECOLOR2 : 'strokeColor2', + STYLE_STROKECOLOR3 : 'strokeColor3', + STYLE_TEXTSIZE : 'textSize' +}; + +//********************************************************************************************************************************************************** +//iOS7 Application Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeIOS7AppBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeIOS7AppBar, mxShape); + +mxShapeIOS7AppBar.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill Color 2', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeIOS7AppBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeIOS7AppBar.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7AppBar.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#222222')); + + c.ellipse(5, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(9, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(13, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(17, h * 0.5 - 1.5, 3, 3); + c.fill(); + c.ellipse(21, h * 0.5 - 1.5, 3, 3); + c.fill(); + + c.ellipse(54, h * 0.5 + 2, 2, 2); + c.fillAndStroke(); + + c.setStrokeWidth(2); + c.begin(); + c.moveTo(52, h * 0.5 + 1); + c.arcTo(3.5, 3.5, 0, 0, 1, 58, h * 0.5 + 1); + c.stroke(); + + c.begin(); + c.moveTo(50, h * 0.5 - 1); + c.arcTo(6, 6, 0, 0, 1, 60, h * 0.5 - 1); + c.stroke(); + + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 6, h * 0.5 - 2); + c.lineTo(w - 6, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + + c.setStrokeWidth(1); + c.begin(); + c.moveTo(w - 44, h * 0.5 - 2.5); + c.lineTo(w - 36, h * 0.5 + 2.5); + c.lineTo(w - 40, h * 0.5 + 5); + c.lineTo(w - 40, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 2.5); + c.lineTo(w - 44, h * 0.5 + 2.5); + c.stroke(); + + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_APP_BAR, mxShapeIOS7AppBar); + +//********************************************************************************************************************************************************** +//On-Off Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7OnOffButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7OnOffButton, mxShape); + +mxShapeIOS7OnOffButton.prototype.customProperties = [ + {name: 'buttonState', dispName: 'Button State', type: 'enum', + enumList: [{val: 'on', dispName: 'On'}, + {val: 'off', dispName: 'Off'}] + }, + {name: 'strokeColor2', dispName: 'Stroke Color 2', type: 'color'}, + {name: 'fillColor2', dispName: 'Fill Color 2', type: 'color'}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7OnOffButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + w = Math.max(w, 2 * h); + var state = mxUtils.getValue(this.style, mxIOS7C.BUTTON_STATE, mxIOS7C.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(false); + this.foreground(c, x, y, w, h, state); +}; + +mxShapeIOS7OnOffButton.prototype.background = function(c, x, y, w, h, state) +{ + if (state === mxIOS7C.STATE_ON) + { + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } + else if (state === mxIOS7C.STATE_OFF) + { + c.setStrokeColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#aaaaaa')); + c.setFillColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#ffffff')); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } + +}; + +mxShapeIOS7OnOffButton.prototype.foreground = function(c, x, y, w, h, state) +{ + c.setFillColor('#ffffff'); + + if (state === mxIOS7C.STATE_ON) + { + c.ellipse(w - h + 1, 1, h - 2, h - 2); + c.fill(); + } + else + { + c.ellipse(0, 0, h, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ON_OFF_BUTTON, mxShapeIOS7OnOffButton); + +//********************************************************************************************************************************************************** +//Slider +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7Slider(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.barPos = 80; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Slider, mxShape); + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Slider.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeIOS7Slider.prototype.foreground = function(c, w, h) +{ + c.setStrokeWidth(2); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + var barPos = mxUtils.getValue(this.style, mxIOS7C.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setStrokeColor(mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#a0a0a0')); + c.ellipse(truePos - 5, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_SLIDER, mxShapeIOS7Slider); + +Graph.handleFactory[mxIOS7C.SHAPE_IOS7_SLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + return new mxPoint(bounds.x + barPos / 100 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Download Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7DownloadBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.barPos = 80; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7DownloadBar, mxShape); + +mxShapeIOS7DownloadBar.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:30}, + {name: 'strokeColor2', dispName: 'Stroke Color 2', type: 'color'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7DownloadBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.foreground(c, w, h); +}; + +mxShapeIOS7DownloadBar.prototype.foreground = function(c, w, h) +{ + var fieldText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, ''); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var barPos = mxUtils.getValue(this.style, mxIOS7C.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var truePos = w * barPos / 100; + + c.setStrokeWidth(2); + c.setStrokeColor(mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '')); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.setStrokeColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '')); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(truePos, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_DOWNLOAD_BAR, mxShapeIOS7DownloadBar); + +Graph.handleFactory[mxIOS7C.SHAPE_IOS7_DOWNLOAD_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + return new mxPoint(bounds.x + barPos / 100 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7Icon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Icon, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Icon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.foreground(c, w, h); +}; + +mxShapeIOS7Icon.prototype.foreground = function(c, w, h) +{ + c.setGradient('#00D0F0', '#0080F0', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, w * 0.1, h * 0.1); + c.fill(); + + var fieldText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, ''); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.5, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ICON, mxShapeIOS7Icon); + +//********************************************************************************************************************************************************** +//Horizontal Button Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7horButtonBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7horButtonBar, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7horButtonBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_FILLCOLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 2.5; //rounding size + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxIOS7C.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 10); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeIOS7horButtonBar.prototype.background = function(c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, bgColor, selectedFillColor, selectedButton) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(frameColor); + c.begin(); + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + //draw the selected button + var buttonLeft = 0; + c.setStrokeColor(mxConstants.NONE); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + c.setFillColor('#0080F0'); + + if (selectedButton === 0) + { + c.begin(); + // we draw a path for the first button + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + c.begin(); + // we draw a path for the last button + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + else if (selectedButton !== -1) + { + c.begin(); + // we draw a path rectangle for one of the buttons in the middle + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + //draw the frame again, to achieve a nicer effect + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeIOS7horButtonBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxIOS7C.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_HOR_BUTTON_BAR, mxShapeIOS7horButtonBar); + +//********************************************************************************************************************************************************** +//Page Control +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7pageControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7pageControl, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7pageControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.25 - rSize * 0.5, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.5 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.75 - rSize * 1.5, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_PAGE_CONTROL, mxShapeIOS7pageControl); + +//********************************************************************************************************************************************************** +//Icon Grid +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7iconGrid(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7iconGrid, mxShape); + +mxShapeIOS7iconGrid.prototype.customProperties = [ + {name: 'gridSize', dispName: 'Grid Size', type: 'String'}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7iconGrid.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxIOS7C.GRID_SIZE, '4,7').toString().split(','); + + var boxSizeX = w / (parseInt(gridSize[0],10) + (gridSize[0]-1) * 0.1); + var boxSizeY = h / (parseInt(gridSize[1],10) + (gridSize[1]-1) * 0.1); + + for (var i = 0; i < gridSize[0]; i++) + { + for (var j = 0; j < gridSize[1]; j++) + { + c.rect(boxSizeX * 1.1 * i, boxSizeY * 1.1 * j, boxSizeX, boxSizeY); + c.fill(); + } + } +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ICON_GRID, mxShapeIOS7iconGrid); + +//********************************************************************************************************************************************************** +//iPhone Vertical +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7phone(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7phone, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7phone.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 25; + + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + + c.setShadow(false); + + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeIOS7phone.prototype.foreground = function(c, x, y, w, h, rSize) +{ + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.stroke(); + + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.stroke(); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.stroke(); + c.roundrect(w * 0.4575, h * 0.905, w * 0.085, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_PHONE, mxShapeIOS7phone); + +//********************************************************************************************************************************************************** +//Search Box +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7searchBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7searchBox, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7searchBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeIOS7searchBox.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7searchBox.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, 'Search'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + var rSize = Math.min(w, h) * 0.1; + + c.setFillColor('#ffffff'); + c.roundrect(w * 0.05, h * 0.15, w * 0.5, h * 0.7, rSize, rSize); + c.fillAndStroke(); + + c.setFontColor(fontColor); + c.setFontSize(Math.min(h * 0.7, w * 0.1)); + + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeColor(strokeColor2); + c.ellipse(w * 0.05 + 3, h * 0.5 - 3, 4, 4); + c.stroke(); + c.begin(); + c.moveTo(w * 0.05 + 8, h * 0.5 + 3.5); + c.lineTo(w * 0.05 + 6, h * 0.5 + 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_SEARCH_BOX, mxShapeIOS7searchBox); + +//********************************************************************************************************************************************************** +//URL +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7URL(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7URL, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7URL.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeIOS7URL.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7URL.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxIOS7C.BUTTON_TEXT, 'draw.io'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxIOS7C.STYLE_STROKECOLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + var rSize = Math.min(w, h) * 0.1; + + c.setFillColor('#d8d8d8'); + c.roundrect(w * 0.05, h * 0.15, w * 0.9, h * 0.7, rSize, rSize); + c.fill(); + + c.setFontColor(fontColor); + c.setFontSize(Math.min(h * 0.7, w * 0.1)); + + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.95 - 5, h * 0.5); + c.arcTo(3, 3, 0, 1, 1, w * 0.95 - 8, h * 0.5 - 3); + c.stroke(); + + c.setFillColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.95 - 8, h * 0.5 - 4); + c.lineTo(w * 0.95 - 6, h * 0.5 - 3); + c.lineTo(w * 0.95 - 8, h * 0.5 - 2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_URL, mxShapeIOS7URL); + +//********************************************************************************************************************************************************** +//Action Dialog +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7Actiondialog(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Actiondialog, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Actiondialog.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxIOS7C.MAIN_TEXT, 'Main Text'); + var subText = mxUtils.getValue(this.style, mxIOS7C.SUB_TEXT, 'Sub Text'); + var fontColor = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxIOS7C.STYLE_TEXTSIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + + c.setShadow(false); + + c.setFillColor('#e0e0e0'); + c.roundrect(w * 0.05, h * 0.1, w * 0.9, h * 0.35, w * 0.025, h * 0.05); + c.fill(); + c.roundrect(w * 0.05, h * 0.55, w * 0.9, h * 0.35, w * 0.025, h * 0.05); + c.fill(); + + c.setFontStyle(mxConstants.FONT_BOLD); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); + this.subText(c, x, y, w, h, subText, fontSize / 1.4, fontColor); +}; + +mxShapeIOS7Actiondialog.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeIOS7Actiondialog.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.4, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeIOS7Actiondialog.prototype.subText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.7, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxIOS7C.SHAPE_IOS7_ACTION_DIALOG, mxShapeIOS7Actiondialog); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7Anchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Anchor, mxShape); + +mxShapeIOS7Anchor.prototype.cst = { + ANCHOR : 'mxgraph.ios7ui.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Anchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeIOS7Anchor.prototype.cst.ANCHOR, mxShapeIOS7Anchor); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7RRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7RRect, mxShape); + +mxShapeIOS7RRect.prototype.cst = { + RRECT : 'mxgraph.ios7ui.rrect', + R_SIZE : 'rSize' +}; + +mxShapeIOS7RRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:3} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7RRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7RRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7RRect.prototype.cst.RRECT, mxShapeIOS7RRect); + +//********************************************************************************************************************************************************** +//Left Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7LeftButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7LeftButton, mxShape); + +mxShapeIOS7LeftButton.prototype.cst = { + LEFT_BUTTON : 'mxgraph.ios7ui.leftButton', + R_SIZE : 'rSize' +}; + +mxShapeIOS7LeftButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:3} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7LeftButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7LeftButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7LeftButton.prototype.cst.LEFT_BUTTON, mxShapeIOS7LeftButton); + +//********************************************************************************************************************************************************** +//Right Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7RightButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7RightButton, mxShape); + +mxShapeIOS7RightButton.prototype.cst = { + RIGHT_BUTTON : 'mxgraph.ios7ui.rightButton', + R_SIZE : 'rSize' +}; + +mxShapeIOS7RightButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:3} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7RightButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7RightButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7RightButton.prototype.cst.RIGHT_BUTTON, mxShapeIOS7RightButton); + +//********************************************************************************************************************************************************** +//Top Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7TopButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7TopButton, mxShape); + +mxShapeIOS7TopButton.prototype.cst = { + TOP_BUTTON : 'mxgraph.ios7ui.topButton', + R_SIZE : 'rSize' +}; + +mxShapeIOS7TopButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:3} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7TopButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7TopButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, h); + c.lineTo(0, h); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7TopButton.prototype.cst.TOP_BUTTON, mxShapeIOS7TopButton); + +//********************************************************************************************************************************************************** +//Bottom Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7BottomButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7BottomButton, mxShape); + +mxShapeIOS7BottomButton.prototype.cst = { + BOTTOM_BUTTON : 'mxgraph.ios7ui.bottomButton', + R_SIZE : 'rSize' +}; + +mxShapeIOS7BottomButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:3}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7BottomButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIOS7BottomButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(0, 0); + c.lineTo(0, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, rSize, h); + c.lineTo(w - rSize, h); + c.arcTo(rSize, rSize, 0, 0, 0, w, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7BottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeIOS7BottomButton); + +//********************************************************************************************************************************************************** +//Horizontal Lines +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7HorLines(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7HorLines, mxShape); + +mxShapeIOS7HorLines.prototype.cst = { + HOR_LINES : 'mxgraph.ios7ui.horLines' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7HorLines.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fill(); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7HorLines.prototype.cst.HOR_LINES, mxShapeIOS7HorLines); + +//********************************************************************************************************************************************************** +//rect with margins +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7MarginRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7MarginRect, mxShape); + +mxShapeIOS7MarginRect.prototype.customProperties = [ + {name: 'rx', dispName: 'Hor. Rounding Size', type: 'float', min:0, defVal:3}, + {name: 'ry', dispName: 'Ver. Rounding Size', type: 'float', min:0, defVal:3}, + {name: 'rectMargin', dispName: 'Global Margin', type: 'float', min:0, defVal:5}, + {name: 'rectMarginTop', dispName: 'Top Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginLeft', dispName: 'Left Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginBottom', dispName: 'Bottom Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginRight', dispName: 'Right Margin', type: 'float', min:0, defVal:0} +]; + +mxShapeIOS7MarginRect.prototype.cst = { + SHAPE_MARGIN_RECT : 'mxgraph.ios7ui.marginRect', + MARGIN : 'rectMargin', + RX : 'rx', + RY : 'ry', + MARGIN_TOP : 'rectMarginTop', + MARGIN_LEFT : 'rectMarginLeft', + MARGIN_BOTTOM : 'rectMarginBottom', + MARGIN_RIGHT : 'rectMarginRight' +}; +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7MarginRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeIOS7MarginRect.prototype.background = function(c, x, y, w, h, state) +{ + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.MARGIN_RIGHT, '0')); + var rx = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.RX, '0')); + var ry = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7MarginRect.prototype.cst.RY, '0')); + + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 >0 && h1 > 0) + { + c.begin(); + c.roundrect(x1, y1, w1, h1, rx, ry); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeIOS7MarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeIOS7MarginRect); + +//********************************************************************************************************************************************************** +//Callout +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7Callout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Callout, mxShape); + +mxShapeIOS7Callout.prototype.cst = { + SHAPE_CALLOUT : 'mxgraph.ios7ui.callout' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Callout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeIOS7Callout.prototype.background = function(c, x, y, w, h, state) +{ + var r = 10; + + if (w >= 30 && h >= 20) + { + c.begin(); + c.moveTo(15, h - r * 0.3); + c.arcTo(r * 2, r, 0, 0, 1, 0, h); + c.arcTo(r * 1.5, r * 1.5, 0, 0, 0, 10, h - r * 1); + c.lineTo(r, r); + c.arcTo(r, r, 0, 0, 1, r * 2, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - r); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r * 2, h); + c.arcTo(r, r, 0, 0, 1, r * 1.5, h - r * 0.3); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeIOS7Callout.prototype.cst.SHAPE_CALLOUT, mxShapeIOS7Callout); + +//********************************************************************************************************************************************************** +//Select Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIOS7SelectBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.dx2 = 70; + this.size = 10; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7SelectBar, mxActor); + +mxShapeIOS7SelectBar.prototype.cst = { + SELECT_BAR : 'mxgraph.ios7ui.selectBar' +}; + +mxShapeIOS7SelectBar.prototype.customProperties = [ + {name: 'dx', dispName: 'Callout Position', type: 'float', min:0, defVal:120}, + {name: 'dx2', dispName: 'Field Size', type: 'float', min:0, defVal: 75}, + {name: 'size', dispName: 'Rounding size', type: 'float', min:0, defVal:5}, + {name: 'dy', dispName: 'Callout Size', type: 'float', min:0, defVal:5} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7SelectBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var dy = Math.max(0, Math.min(h, (w - Math.max(20, r) - r) / 2, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + r = Math.min(h / 2, w / 2, r); + dx = Math.max(r + dy, dx); + dx = Math.min(w - r - dy, w - 20 - dy, dx); + + c.begin(); + c.moveTo(dx - dy, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, 0, h - r); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - r); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(dx + dy, h); + c.lineTo(dx, h + dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(w - Math.max(20, r), 0); + c.lineTo(w - Math.max(20, r), h); + c.stroke(); + + var currDx = dx2; + + c.begin(); + + while (currDx < (w - Math.max(20, r))) + { + c.moveTo(currDx, 0); + c.lineTo(currDx, h); + + currDx = currDx + dx2; + } + + c.stroke(); + + var w1 = Math.min(Math.max(20, r), h); + var x1 = w - w1 * 0.5; + var y1 = h * 0.5; + + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '')); + c.begin(); + c.moveTo(x1 - w1 * 0.15, y1 - w1 * 0.225); + c.lineTo(x1 + w1 * 0.25, y1); + c.lineTo(x1 - w1 * 0.15, y1 + w1 * 0.225); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeIOS7SelectBar.prototype.cst.SELECT_BAR, mxShapeIOS7SelectBar); + +mxShapeIOS7SelectBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeIOS7SelectBar.prototype.cst.SELECT_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height); + }, function(bounds, pt) + { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), bounds.y + bounds.height + dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, pt.y - bounds.y - bounds.height))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + + return new mxPoint(bounds.x + bounds.width - size, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.height / 2, bounds.x + bounds.width - pt.x))) / 100; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + }); + + handles.push(handle4); + + return handles; + +} + +//********************************************************************************************************************************************************** +//slider +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +//mxShapeIOS7SelectBar +function mxShapeIOS7Slider2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIOS7Slider2, mxShape); + +mxShapeIOS7Slider2.prototype.cst = { + SHAPE_SLIDER : 'mxgraph.ios7ui.slider', + BAR_POS : 'barPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeIOS7Slider2.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:20}, + {name: 'handleSize', dispName: 'Handle Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIOS7Slider2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeIOS7Slider2.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7Slider2.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeIOS7Slider2.prototype.cst.BAR_POS, '40')) / 100; + + barPos = Math.max(0, Math.min(1, barPos)); + + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + + + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeIOS7Slider2.prototype.cst.SHAPE_SLIDER, mxShapeIOS7Slider2); + +mxShapeIOS7Slider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeIOS7Slider2.prototype.cst.SHAPE_SLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupButtons.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupButtons.js new file mode 100644 index 0000000000000..745b6bfc3a764 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupButtons.js @@ -0,0 +1,1028 @@ +/** + * $Id: mxMockupButtons.js,v 1.8 2013/05/16 06:09:21 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Multiline Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupMultiButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupMultiButton, mxShape); + +mxShapeMockupMultiButton.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_MULTILINE_BUTTON : 'mxgraph.mockup.buttons.multiButton', + SUB_TEXT : 'subText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + BUTTON_STYLE : 'buttonStyle', + ROUND : 'round', + CHEVRON : 'chevron' +}; + +mxShapeMockupMultiButton.prototype.customProperties = [ + {name: 'buttonStyle', dispName: 'Style', type: 'enum', defVal:'round', + enumList: [{val: 'round', dispName: 'Round'}, {val: 'chevron', dispName: 'Chevron'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupMultiButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.MAIN_TEXT, 'Main Text'); + var subText = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.SUB_TEXT, 'Sub Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.TEXT_SIZE, '17'); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + c.setFontStyle(mxConstants.FONT_BOLD); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); + this.subText(c, x, y, w, h, subText, fontSize / 1.4, fontColor); +}; + +mxShapeMockupMultiButton.prototype.background = function(c, x, y, w, h) +{ + var buttonStyle = mxUtils.getValue(this.style, mxShapeMockupMultiButton.prototype.cst.BUTTON_STYLE, mxShapeMockupMultiButton.prototype.cst.ROUND).toString(); + var rSize = 10; + c.begin(); + + if (buttonStyle === mxShapeMockupMultiButton.prototype.cst.ROUND) + { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + else if (buttonStyle === mxShapeMockupMultiButton.prototype.cst.CHEVRON) + { + c.moveTo(0, h * 0.1); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, w * 0.0334, 0); + c.lineTo(w * 0.768, 0); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.8014, h * 0.0399); + c.lineTo(w * 0.99, h * 0.4585); + c.arcTo(w * 0.09, h * 0.1, 0, 0, 1, w * 0.99, h * 0.5415); + c.lineTo(w * 0.8014, h * 0.9568); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.768, h); + c.lineTo(w * 0.0334, h); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, 0, h * 0.9); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupMultiButton.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5, h * 0.4, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapeMockupMultiButton.prototype.subText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.7, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupMultiButton.prototype.cst.SHAPE_MULTILINE_BUTTON, mxShapeMockupMultiButton); + +//********************************************************************************************************************************************************** +//Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupButton, mxShape); + +mxShapeMockupButton.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_BUTTON : 'mxgraph.mockup.buttons.button', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + BUTTON_STYLE : 'buttonStyle', + ROUND : 'round', + CHEVRON : 'chevron' +}; + +mxShapeMockupButton.prototype.customProperties = [ + {name: 'buttonStyle', dispName: 'Style', type: 'enum', defVal:'round', + enumList: [{val: 'round', dispName: 'Round'}, {val: 'chevron', dispName: 'Chevron'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.MAIN_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.TEXT_SIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupButton.prototype.background = function(c, x, y, w, h) +{ + var buttonStyle = mxUtils.getValue(this.style, mxShapeMockupButton.prototype.cst.BUTTON_STYLE, mxShapeMockupButton.prototype.cst.ROUND).toString(); + var rSize = 10; + c.begin(); + + if (buttonStyle === mxShapeMockupButton.prototype.cst.ROUND) + { + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + else if (buttonStyle === mxShapeMockupButton.prototype.cst.CHEVRON) + { + c.moveTo(0, h * 0.1); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, w * 0.0334, 0); + c.lineTo(w * 0.768, 0); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.8014, h * 0.0399); + c.lineTo(w * 0.99, h * 0.4585); + c.arcTo(w * 0.09, h * 0.1, 0, 0, 1, w * 0.99, h * 0.5415); + c.lineTo(w * 0.8014, h * 0.9568); + c.arcTo(w * 0.0722, h * 0.216, 0, 0, 1, w * 0.768, h); + c.lineTo(w * 0.0334, h); + c.arcTo(w * 0.0372, h * 0.1111, 0, 0, 1, 0, h * 0.9); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupButton.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w / 2, h / 2, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupButton.prototype.cst.SHAPE_BUTTON, mxShapeMockupButton); + +//********************************************************************************************************************************************************** +//Horizontal Button Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupHorButtonBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupHorButtonBar, mxShape); + +mxShapeMockupHorButtonBar.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_HOR_BUTTON_BAR : 'mxgraph.mockup.buttons.horButtonBar', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', //must be 1 char + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupHorButtonBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupHorButtonBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; //rounding size + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupHorButtonBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + c.setFontStyle(mxConstants.FONT_BOLD); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupHorButtonBar.prototype.background = function(c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + //draw the selected button + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) + { + c.begin(); + // we draw a path for the first button + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + c.begin(); + // we draw a path for the last button + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + else if (selectedButton !== -1) + { + c.begin(); + // we draw a path rectangle for one of the buttons in the middle + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + //draw the frame again, to achieve a nicer effect + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupHorButtonBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxShapeMockupHorButtonBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupHorButtonBar.prototype.cst.SHAPE_HOR_BUTTON_BAR, mxShapeMockupHorButtonBar); + +//********************************************************************************************************************************************************** +//Vertical Button Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupVerButtonBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupVerButtonBar, mxShape); + +mxShapeMockupVerButtonBar.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_VER_BUTTON_BAR : 'mxgraph.mockup.buttons.verButtonBar', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', //must be 1 char + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupVerButtonBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupVerButtonBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 10; //rounding size + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupVerButtonBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) + { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight); + c.setShadow(false); + + var currWidth = 0; + c.setFontStyle(mxConstants.FONT_BOLD); + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize); + } +}; + +mxShapeMockupVerButtonBar.prototype.background = function(c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currHeight = i * minButtonHeight * h / minH; + + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + + c.stroke(); + + //draw the selected button + c.setFillColor(selectedFillColor); + + if (selectedButton === 0) + { + // we draw a path for the first button + c.begin(); + var buttonBottom = minButtonHeight * h / minH; + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + // we draw a path for the last button + c.begin(); + var buttonTop = h - minButtonHeight * h / minH; + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } + else if (selectedButton !== -1) + { + // we draw a path rectangle for one of the buttons in the middle + c.begin(); + var buttonTop = minButtonHeight * selectedButton * h / minH; + var buttonBottom = minButtonHeight * (selectedButton + 1) * h / minH; + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + +// //draw the frame again, to achieve a nicer effect + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupVerButtonBar.prototype.buttonText = function(c, w, h, textString, fontSize) +{ + if(textString.charAt(0) === mxShapeMockupVerButtonBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w * 0.5), h, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupVerButtonBar.prototype.cst.SHAPE_VER_BUTTON_BAR, mxShapeMockupVerButtonBar); + +//********************************************************************************************************************************************************** +//On-Off Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupOnOffButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupOnOffButton, mxShape); + +mxShapeMockupOnOffButton.prototype.cst = { + SHAPE_ON_OFF_BUTTON : 'mxgraph.mockup.buttons.onOffButton', + BUTTON_STATE : 'buttonState', + STATE_ON : 'on', + STATE_OFF : 'off', + FILL_COLOR2 : 'fillColor2', + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize' +}; + +mxShapeMockupOnOffButton.prototype.customProperties = [ + {name: 'buttonState', dispName: 'Button State', type: 'enum', + enumList: [{val: 'on', dispName: 'On'}, {val: 'off', dispName: 'Off'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupOnOffButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + w = Math.max(w, 10); + h = Math.max(h, 10); + + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupOnOffButton.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); + +}; + +mxShapeMockupOnOffButton.prototype.foreground = function(c, x, y, w, h) +{ + var state = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.BUTTON_STATE, mxShapeMockupOnOffButton.prototype.cst.STATE_ON); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.FILL_COLOR2, '#008cff'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.TEXT_COLOR, '#ffffff,#999999').toString().split(','); + var mainText = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.MAIN_TEXT, 'ON,OFF').toString().split(','); + var textSize = mxUtils.getValue(this.style, mxShapeMockupOnOffButton.prototype.cst.TEXT_SIZE, '17'); + + if (state === mxShapeMockupOnOffButton.prototype.cst.STATE_ON) + { + c.setFillColor(fillColor2); + c.setFontColor(textColor[0]); + c.roundrect(0, 0, w * 0.75, h, 10, 10); + } + else + { + c.setFontColor(textColor[1]); + c.roundrect(w * 0.25, 0, w * 0.75, h, 10, 10); + } + + c.fillAndStroke(); + c.setFontSize(textSize); + c.setFontStyle(mxConstants.FONT_BOLD); + + if(state === mxShapeMockupOnOffButton.prototype.cst.STATE_ON) + { + c.text(w * 0.375, h * 0.5, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (state === mxShapeMockupOnOffButton.prototype.cst.STATE_OFF) + { + c.text(w * 0.625, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupOnOffButton.prototype.cst.SHAPE_ON_OFF_BUTTON, mxShapeMockupOnOffButton); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRRect, mxShape); + +mxShapeMockupRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRRect.prototype.cst.RRECT, mxShapeMockupRRect); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupAnchor, mxShape); + +mxShapeMockupAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.anchor' +}; + +mxShapeMockupAnchor.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupAnchor.prototype.cst.ANCHOR, mxShapeMockupAnchor); + +//********************************************************************************************************************************************************** +//Top Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupTopButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupTopButton, mxShape); + +mxShapeMockupTopButton.prototype.cst = { + TOP_BUTTON : 'mxgraph.mockup.topButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupTopButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupTopButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupTopButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTopButton.prototype.cst.TOP_BUTTON, mxShapeMockupTopButton); + +//********************************************************************************************************************************************************** +//Bottom Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupBottomButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupBottomButton, mxShape); + +mxShapeMockupBottomButton.prototype.cst = { + BOTTOM_BUTTON : 'mxgraph.mockup.bottomButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupBottomButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupBottomButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupBottomButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeMockupBottomButton); + +//********************************************************************************************************************************************************** +//Right Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRightButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRightButton, mxShape); + +mxShapeMockupRightButton.prototype.cst = { + RIGHT_BUTTON : 'mxgraph.mockup.rightButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupRightButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRightButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRightButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRightButton.prototype.cst.RIGHT_BUTTON, mxShapeMockupRightButton); + +//********************************************************************************************************************************************************** +//Left Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupLeftButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupLeftButton, mxShape); + +mxShapeMockupLeftButton.prototype.cst = { + LEFT_BUTTON : 'mxgraph.mockup.leftButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupLeftButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupLeftButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupLeftButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLeftButton.prototype.cst.LEFT_BUTTON, mxShapeMockupLeftButton); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupContainers.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupContainers.js new file mode 100644 index 0000000000000..7c28b661c7cf1 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupContainers.js @@ -0,0 +1,2119 @@ +/** + * $Id: mxMockupContainers.js,v 1.10 2013/07/09 11:19:51 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Video Player +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupVideoPlayer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.barPos = 20; + this.barHeight = 30; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupVideoPlayer, mxShape); + +mxShapeMockupVideoPlayer.prototype.cst = { + FILL_COLOR2 : 'fillColor2', + TEXT_COLOR : 'textColor', + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SHAPE_VIDEO_PLAYER : 'mxgraph.mockup.containers.videoPlayer', + BAR_POS : 'barPos', + BAR_HEIGHT : 'barHeight' +}; + +mxShapeMockupVideoPlayer.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'textColor', dispName: 'Text Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Stroke3 Color', type: 'color'}, + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, max:100, defVal:20}, + {name: 'barHeight', dispName: 'Video Bar Height', type: 'float', min:0, defVal:30} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupVideoPlayer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var buttonColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.FILL_COLOR2, '#c4c4c4'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var filledColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.STROKE_COLOR2, '#008cff'); + var emptyColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + var barHeight = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.BAR_HEIGHT, '30'); + + w = Math.max(w, 5 * barHeight); + h = Math.max(h, barHeight + 10); + + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, buttonColor, frameColor, filledColor, emptyColor, barHeight); +}; + +mxShapeMockupVideoPlayer.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupVideoPlayer.prototype.otherShapes = function(c, x, y, w, h, buttonColor, frameColor, filledColor, emptyColor, barHeight) +{ + var barPos = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.BAR_POS, '20'); + barPos = Math.max(0, barPos); + barPos = Math.min(100, barPos); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var buttonR = 8; + var barY = h - barHeight; + + var barMin = buttonR; + var barMax = w - buttonR; + var barRange = barMax - barMin; + var realBarPos = barRange * barPos / 100; + var barEnd = barMin + realBarPos; + + //progress bar + c.setStrokeColor(filledColor); + c.begin(); + c.moveTo(0, barY); + c.lineTo(barEnd, barY); + c.stroke(); + c.setStrokeColor(emptyColor); + c.begin(); + c.moveTo(barEnd, barY); + c.lineTo(w, barY); + c.stroke(); + + //progress bar button + c.setStrokeColor(frameColor); + c.begin(); + c.ellipse(barEnd - buttonR, barY - buttonR, 2 * buttonR, 2 * buttonR); + c.fillAndStroke(); + + c.begin(); + c.setStrokeWidth(strokeWidth / 2); + c.ellipse(barEnd - buttonR * 0.5, barY - buttonR * 0.5, buttonR, buttonR); + c.fillAndStroke(); + c.setStrokeWidth(strokeWidth); + + var iconSize = barHeight * 0.3; + var iconY = h - (barHeight + iconSize) * 0.5; + var iconX = barHeight * 0.3; + c.setFillColor(buttonColor); + c.setStrokeColor(buttonColor); + + //play icon + c.begin(); + c.moveTo(iconX, iconY); + c.lineTo(iconX + iconSize, iconY + iconSize * 0.5); + c.lineTo(iconX, iconY + iconSize); + c.close(); + c.fillAndStroke(); + + //volume icon + var speakerX = barHeight; + var speakerY = h - barHeight; + c.moveTo(speakerX + barHeight * 0.05, speakerY + barHeight * 0.4); + c.lineTo(speakerX + barHeight * 0.15, speakerY + barHeight * 0.4); + c.lineTo(speakerX + barHeight * 0.3, speakerY + barHeight * 0.25); + c.lineTo(speakerX + barHeight * 0.3, speakerY + barHeight * 0.75); + c.lineTo(speakerX + barHeight * 0.15, speakerY + barHeight * 0.6); + c.lineTo(speakerX + barHeight * 0.05, speakerY + barHeight * 0.6); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(speakerX + barHeight * 0.4, speakerY + barHeight * 0.35); + c.arcTo(barHeight * 0.2, barHeight * 0.3, 0, 0, 1, speakerX + barHeight * 0.4, speakerY + barHeight * 0.65); + c.moveTo(speakerX + barHeight * 0.425, speakerY + barHeight * 0.25); + c.arcTo(barHeight * 0.225, barHeight * 0.35, 0, 0, 1, speakerX + barHeight * 0.425, speakerY + barHeight * 0.75); + c.stroke(); + + //fullscreen button + var screenX = w - barHeight * 1.3; + c.begin(); + c.moveTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.4); + c.lineTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.3); + c.lineTo(screenX + barHeight * 0.25, speakerY + barHeight * 0.3); + + c.moveTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.6); + c.lineTo(screenX + barHeight * 0.1, speakerY + barHeight * 0.7); + c.lineTo(screenX + barHeight * 0.25, speakerY + barHeight * 0.7); + + c.moveTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.4); + c.lineTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.3); + c.lineTo(screenX + barHeight * 0.75, speakerY + barHeight * 0.3); + + c.moveTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.6); + c.lineTo(screenX + barHeight * 0.9, speakerY + barHeight * 0.7); + c.lineTo(screenX + barHeight * 0.75, speakerY + barHeight * 0.7); + c.stroke(); + + var textColor = mxUtils.getValue(this.style, mxShapeMockupVideoPlayer.prototype.cst.TEXT_COLOR, '#666666'); + c.begin(); + c.setFontSize(barHeight * 0.5); + c.setFontColor(textColor); + c.text(barHeight * 1.9, h - barHeight * 0.45, 0, 0, '0:00/3:53', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupVideoPlayer.prototype.cst.SHAPE_VIDEO_PLAYER, mxShapeMockupVideoPlayer); + +Graph.handleFactory[mxShapeMockupVideoPlayer.prototype.cst.SHAPE_VIDEO_PLAYER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + var barH = parseFloat(mxUtils.getValue(this.state.style, 'barHeight', this.barHeight)); + + return new mxPoint(bounds.x + ((bounds.width - 16) * barPos / bounds.width) / 100 * bounds.width + 8, bounds.y + bounds.height - barH - 20); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + var handle2 = Graph.createHandle(state, ['barHeight'], function(bounds) + { + var barHeight = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'barHeight', this.barHeight)))); + + return new mxPoint(bounds.x + bounds.width - 20, bounds.y + bounds.height - barHeight); + }, function(bounds, pt) + { + this.state.style['barHeight'] = Math.round(1000 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 1000; + }); + + handles.push(handle2); + + return handles; +} + +//********************************************************************************************************************************************************** +//Accordion (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupAccordion(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupAccordion, mxShape); + +mxShapeMockupAccordion.prototype.cst = { + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + TEXT_SIZE : 'textSize', + SHAPE_ACCORDION : 'mxgraph.mockup.containers.accordion', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', // must be 1 char + MAIN_TEXT : 'mainText' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupAccordion.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.MAIN_TEXT, '+Group 1, Group 2, Group 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupAccordion.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 10; //rounding size + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupAccordion.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) + { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight); + c.setShadow(false); + + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = 0; + + if (selectedButton === -1 || i <= selectedButton) + { + currHeight = (i * minButtonHeight + minButtonHeight * 0.5); + } + else + { + currHeight = trueH - (buttonNum - i - 0.5) * minButtonHeight; + } + + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize); + } +}; + +mxShapeMockupAccordion.prototype.background = function(c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton, minButtonHeight) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton) + { + if (selectedButton === -1 || i < selectedButton) + { + var currHeight = i * minButtonHeight; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + else + { + var currHeight = h - (buttonNum - i) * minButtonHeight; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + } + + c.stroke(); + + //draw the selected button + c.setStrokeColor(mxConstants.NONE); + c.setFillColor(selectedFillColor); + + if (selectedButton !== -1) + { + c.begin(); + var buttonTop = minButtonHeight * selectedButton; + var buttonBottom = minButtonHeight * (selectedButton + 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + +// //draw the frame again, to achieve a nicer effect + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxShapeMockupAccordion.prototype.buttonText = function(c, w, h, textString, fontSize) +{ + if(textString.charAt(0) === mxShapeMockupAccordion.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w * 0.5), h, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupAccordion.prototype.cst.SHAPE_ACCORDION, mxShapeMockupAccordion); + +//********************************************************************************************************************************************************** +//Browser Window +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupBrowserWindow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupBrowserWindow, mxShape); + +mxShapeMockupBrowserWindow.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + MAIN_TEXT : 'mainText', + SHAPE_BROWSER_WINDOW : 'mxgraph.mockup.containers.browserWindow' + +}; + +mxShapeMockupBrowserWindow.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Stroke3 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupBrowserWindow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + w = Math.max(w, 260); + h = Math.max(h, 110); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupBrowserWindow.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupBrowserWindow.prototype.otherShapes = function(c, x, y, w, h, frameColor, insideColor, closeColor) +{ + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.MAIN_TEXT, 'http://www.draw.io,Page 1').toString().split(','); + + //window buttons + c.setStrokeColor(frameColor); + c.ellipse(w - 75, 5, 20, 20); + c.stroke(); + + c.ellipse(w - 50, 5, 20, 20); + c.stroke(); + + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + + c.setStrokeColor(insideColor); + //lines + c.begin(); + c.moveTo(0, 40); + c.lineTo(30, 40); + c.lineTo(30, 15); + c.arcTo(5, 5, 0, 0, 1, 35, 10); + c.lineTo(170, 10); + c.arcTo(5, 5, 0, 0, 1, 175, 15); + c.lineTo(175, 40); + c.lineTo(w, 40); + c.stroke(); + + c.begin(); + c.moveTo(0, 110); + c.lineTo(w, 110); + c.stroke(); + + //address field + c.begin(); + c.moveTo(100, 60); + c.arcTo(5, 5, 0, 0, 1, 105, 55); + c.lineTo(w - 15, 55); + c.arcTo(5, 5, 0, 0, 1, w - 10, 60); + c.lineTo(w - 10, 85); + c.arcTo(5, 5, 0, 0, 1, w - 15, 90); + c.lineTo(105, 90); + c.arcTo(5, 5, 0, 0, 1, 100, 85); + c.close(); + c.stroke(); + + //text + var textColor = mxUtils.getValue(this.style, mxShapeMockupBrowserWindow.prototype.cst.TEXT_COLOR, '#666666'); + c.setFontColor(textColor); + c.setFontSize(17); + c.text(65, 25, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(130, 73, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.stroke(); + + //icon on tab + c.translate(37, 17); + c.begin(); + c.moveTo(0, 0); + c.lineTo(11, 0); + c.lineTo(15, 4); + c.lineTo(15, 18); + c.lineTo(0, 18); + c.close(); + c.stroke(); + + c.setStrokeWidth(strokeWidth * 0.5); //maybe because of this (read later) + c.begin(); + c.moveTo(11, 0); + c.lineTo(11, 4); + c.lineTo(15, 5); + c.stroke(); + + //icon in address bar + c.setStrokeWidth(strokeWidth * 2); // i'm not sure why i have to multiply here + c.translate(70, 47); + c.begin(); + c.moveTo(0, 0); + c.lineTo(11, 0); + c.lineTo(15, 4); + c.lineTo(15, 18); + c.lineTo(0, 18); + c.close(); + c.stroke(); + + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.moveTo(11, 0); + c.lineTo(11, 4); + c.lineTo(15, 5); + c.stroke(); + + //back + var iSi = 20; //icon size + c.setFillColor(insideColor); + c.begin(); + c.setStrokeWidth(strokeWidth * 2); // i'm not sure why i have to multiply here + c.translate(-95, 0); + c.moveTo(0, iSi * 0.5); + c.lineTo(iSi * 0.5, 0); + c.lineTo(iSi * 0.5, iSi * 0.3); + c.lineTo(iSi, iSi * 0.3); + c.lineTo(iSi, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi); + c.close(); + c.fillAndStroke(); + + //forward + c.begin(); + c.translate(30, 0); + c.moveTo(iSi, iSi * 0.5); + c.lineTo(iSi * 0.5, 0); + c.lineTo(iSi * 0.5, iSi * 0.3); + c.lineTo(0, iSi * 0.3); + c.lineTo(0, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi * 0.7); + c.lineTo(iSi * 0.5, iSi); + c.close(); + c.fillAndStroke(); + + //refresh + c.begin(); + c.translate(30, 0); + c.moveTo(iSi * 0.78, iSi * 0.665); + c.arcTo(iSi * 0.3, iSi * 0.3, 0, 1, 1, iSi * 0.675, iSi * 0.252); + c.lineTo(iSi * 0.595, iSi * 0.325); + c.lineTo(iSi * 0.99, iSi * 0.415); + c.lineTo(iSi * 0.9, iSi * 0.04); + c.lineTo(iSi * 0.815, iSi * 0.12); + c.arcTo(iSi * 0.49, iSi * 0.49, 0, 1, 0, iSi * 0.92, iSi * 0.8); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBrowserWindow.prototype.cst.SHAPE_BROWSER_WINDOW, mxShapeMockupBrowserWindow); + +//********************************************************************************************************************************************************** +//User, Male +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupUserMale(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupUserMale, mxShape); + +mxShapeMockupUserMale.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + SHAPE_MALE_USER : 'mxgraph.mockup.containers.userMale' +}; + +mxShapeMockupUserMale.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupUserMale.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupUserMale.prototype.cst.STROKE_COLOR2, '#008cff'); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, insideColor, frameColor); +}; + +mxShapeMockupUserMale.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupUserMale.prototype.otherShapes = function(c, x, y, w, h, insideColor, frameColor) +{ + //head left + c.setStrokeColor(insideColor); + c.setLineCap('round'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.5, h * 0.6721); + c.curveTo(w * 0.3891, h * 0.6721, w * 0.31, h * 0.5648, w * 0.31, h * 0.3962); + c.curveTo(w * 0.31, h * 0.3656, w * 0.3012, h * 0.3473, w * 0.3051, h * 0.3227); + c.curveTo(w * 0.3126, h * 0.2762, w * 0.3124, h * 0.2212, w * 0.332, h * 0.1939); + c.curveTo(w * 0.354, h * 0.1633, w * 0.4382, h * 0.12, w * 0.5, h * 0.12); + c.stroke(); + + //left ear + c.begin(); + c.moveTo(w * 0.3046, h * 0.3716); + c.curveTo(w * 0.3046, h * 0.3716, w * 0.3046, h * 0.341, w * 0.2826, h * 0.3594); + c.curveTo(w * 0.2606, h * 0.3778, w * 0.2661, h * 0.4452, w * 0.266, h * 0.4452); + c.quadTo(w * 0.2715, h * 0.4942, w * 0.277, h * 0.5065); + c.curveTo(w * 0.2825, h * 0.5187, w * 0.277, h * 0.5187, w * 0.2935, h * 0.5371); + c.curveTo(w * 0.31, h * 0.5554, w * 0.3375, h * 0.5615, w * 0.3375, h * 0.5616); + c.stroke(); + + // left shoulder + c.begin(); + c.moveTo(w * 0.3829, h * 0.6213); + c.curveTo(w * 0.3829, h * 0.6213, w * 0.405, h * 0.7704, w * 0.2921, h * 0.7888); + c.curveTo(w * 0.2536, h * 0.795, w * 0.1328, h * 0.85, w * 0.1052, h * 0.8745); + c.curveTo(w * 0.0776, h * 0.899, w * 0.0641, h * 0.9316, w * 0.0571, h * 0.9622); + c.quadTo(w * 0.05, h, w * 0.05, h); + c.stroke(); + + // left hairline + c.begin(); + c.moveTo(w * 0.3427, h * 0.4185); + c.curveTo(w * 0.3427, h * 0.4185, w * 0.3427, h * 0.3839, w * 0.3427, h * 0.3593); + c.curveTo(w * 0.3427, h * 0.3348, w * 0.3663, h * 0.3103, w * 0.3718, h * 0.3041); + c.curveTo(w * 0.3773, h * 0.298, w * 0.3822, h * 0.2673, w * 0.3877, h * 0.2551); + c.curveTo(w * 0.3932, h * 0.2429, w * 0.4095, h * 0.2429, w * 0.4259, h * 0.2367); + c.curveTo(w * 0.4424, h * 0.2306, w * 0.4984, h * 0.2357, w * 0.4984, h * 0.2357); + c.stroke(); + + //shirt + c.begin(); + c.moveTo(w * 0.365, h * 0.7427); + c.curveTo(w * 0.365, h * 0.7427, w * 0.3772, h * 0.8076, w * 0.4286, h * 0.8224); + c.curveTo(w * 0.4816, h * 0.8377, w * 0.5028, h * 0.8347, w * 0.5028, h * 0.8347); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.3322, h * 0.7764); + c.curveTo(w * 0.3322, h * 0.7764, w * 0.3556, h * 0.8386, w * 0.4038, h * 0.8684); + c.curveTo(w * 0.4533, h * 0.8991, w * 0.5029, h * 0.8929, w * 0.5029, h * 0.8929); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.2717, h * 0.9); + c.lineTo(w * 0.2717, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.1671, h * 0.8991); + c.curveTo(w * 0.1671, h * 0.8991, w * 0.1726, h * 0.9114, w * 0.1836, h * 0.9481); + c.curveTo(w * 0.1946, h * 0.9849, w * 0.2, h, w * 0.2, h); + c.stroke(); + + //head right + c.begin(); + c.moveTo(w * 0.5, h * 0.6721); + c.curveTo(w * 0.6109, h * 0.6721, w * 0.69, h * 0.5648, w * 0.69, h * 0.3962); + c.curveTo(w * 0.69, h * 0.3656, w * 0.6988, h * 0.3473, w * 0.6949, h * 0.3227); + c.curveTo(w * 0.6847, h * 0.2762, w * 0.6876, h * 0.2212, w * 0.668, h * 0.1939); + c.curveTo(w * 0.646, h * 0.1633, w * 0.5618, h * 0.12, w * 0.5, h * 0.12); + c.stroke(); + + //right ear + c.begin(); + c.moveTo(w * 0.6954, h * 0.3716); + c.curveTo(w * 0.6954, h * 0.3716, w * 0.6954, h * 0.341, w * 0.7174, h * 0.3594); + c.curveTo(w * 0.7394, h * 0.3778, w * 0.7339, h * 0.4452, w * 0.734, h * 0.4452); + c.quadTo(w * 0.7285, h * 0.4942, w * 0.723, h * 0.5065); + c.curveTo(w * 0.7175, h * 0.5187, w * 0.723, h * 0.5187, w * 0.7065, h * 0.5371); + c.curveTo(w * 0.69, h * 0.5554, w * 0.6625, h * 0.5615, w * 0.6625, h * 0.5616); + c.stroke(); + + // right shoulder + c.begin(); + c.moveTo(w * 0.6171, h * 0.6213); + c.curveTo(w * 0.6171, h * 0.6213, w * 0.595, h * 0.7704, w * 0.7079, h * 0.7888); + c.curveTo(w * 0.7464, h * 0.795, w * 0.8672, h * 0.85, w * 0.8948, h * 0.8745); + c.curveTo(w * 0.9224, h * 0.899, w * 0.9359, h * 0.9316, w * 0.9429, h * 0.9622); + c.quadTo(w * 0.95, h, w * 0.95, h); + c.stroke(); + + // right hairline + c.begin(); + c.moveTo(w * 0.6573, h * 0.4185); + c.curveTo(w * 0.6573, h * 0.4185, w * 0.6573, h * 0.3839, w * 0.6573, h * 0.3593); + c.curveTo(w * 0.6573, h * 0.3348, w * 0.6337, h * 0.3103, w * 0.6282, h * 0.3041); + c.curveTo(w * 0.6227, h * 0.298, w * 0.6178, h * 0.2673, w * 0.6123, h * 0.2551); + c.curveTo(w * 0.6068, h * 0.2429, w * 0.5905, h * 0.2429, w * 0.5741, h * 0.2367); + c.curveTo(w * 0.5576, h * 0.2306, w * 0.5016, h * 0.2357, w * 0.5016, h * 0.2357); + c.stroke(); + + //shirt, right + c.begin(); + c.moveTo(w * 0.635, h * 0.7427); + c.curveTo(w * 0.635, h * 0.7427, w * 0.6228, h * 0.8076, w * 0.5714, h * 0.8224); + c.curveTo(w * 0.5184, h * 0.8377, w * 0.4972, h * 0.8347, w * 0.4972, h * 0.8347); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6678, h * 0.7764); + c.curveTo(w * 0.6678, h * 0.7764, w * 0.6444, h * 0.8386, w * 0.5962, h * 0.8684); + c.curveTo(w * 0.5467, h * 0.8991, w * 0.4971, h * 0.8929, w * 0.4971, h * 0.8929); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.7283, h * 0.9); + c.lineTo(w * 0.7283, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.8329, h * 0.8991); + c.curveTo(w * 0.8329, h * 0.8991, w * 0.8274, h * 0.9114, w * 0.8164, h * 0.9481); + c.curveTo(w * 0.8054, h * 0.9849, w * 0.8, h, w * 0.8, h); + c.stroke(); + + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupUserMale.prototype.cst.SHAPE_MALE_USER, mxShapeMockupUserMale); + +//********************************************************************************************************************************************************** +//User, Female +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupUserFemale(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupUserFemale, mxShape); + +mxShapeMockupUserFemale.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + SHAPE_FEMALE_USER : 'mxgraph.mockup.containers.userFemale' +}; + +mxShapeMockupUserFemale.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupUserFemale.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupUserFemale.prototype.cst.STROKE_COLOR2, '#008cff'); + c.translate(x, y); + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, insideColor, frameColor); +}; + +mxShapeMockupUserFemale.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupUserFemale.prototype.otherShapes = function(c, x, y, w, h, insideColor, frameColor) +{ + //head left + c.setStrokeColor(insideColor); + c.setLineCap('round'); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.3148, h * 0.468); + c.curveTo(w * 0.3045, h * 0.3195, w * 0.3176, h * 0.2383, w * 0.3302, h * 0.2069); + c.curveTo(w * 0.3508, h * 0.1557, w * 0.44, h * 0.1156, w * 0.5026, h * 0.1156); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5029, h * 0.6728); + c.curveTo(w * 0.4616, h * 0.6728, w * 0.4018, h * 0.6177, w * 0.3663, h * 0.5653); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.3108, h * 0.4021); + c.curveTo(w * 0.3108, h * 0.4021, w * 0.3091, h * 0.3765, w * 0.2891, h * 0.3933); + c.curveTo(w * 0.2691, h * 0.4101, w * 0.2782, h * 0.4661, w * 0.2782, h * 0.4661); + c.quadTo(w * 0.2862, h * 0.5067, w * 0.2922, h * 0.5166); + c.curveTo(w * 0.2982, h * 0.5265, w * 0.2929, h * 0.5268, w * 0.3097, h * 0.5412); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.4038, h * 0.6176); + c.curveTo(w * 0.4038, h * 0.6176, w * 0.4324, h * 0.7778, w * 0.3375, h * 0.7963); + c.curveTo(w * 0.3054, h * 0.8026, w * 0.1753, h * 0.8578, w * 0.15, h * 0.8826); + c.curveTo(w * 0.1247, h * 0.9074, w * 0.1126, h * 0.9412, w * 0.1063, h * 0.9722); + c.curveTo(w * 0.10, h * 1.0032, w * 0.1, h, w * 0.1, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6377, h * 0.3365); + c.curveTo(w * 0.5927, h * 0.2634, w * 0.5206, h * 0.2634, w * 0.5206, h * 0.2634); + c.quadTo(w * 0.3769, h * 0.2591, w * 0.3713, h * 0.2659); + c.curveTo(w * 0.3657, h * 0.2727, w * 0.3405, h * 0.3674, w * 0.3405, h * 0.3946); + c.curveTo(w * 0.3405, h * 0.4218, w * 0.3405, h * 0.4602, w * 0.3405, h * 0.4602); + c.quadTo(w * 0.3546, h * 0.6401, w * 0.3546, h * 0.6626); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.2931, h * 0.818); + c.curveTo(w * 0.2931, h * 0.818, w * 0.3224, h * 0.9159, w * 0.3826, h * 0.9677); + c.curveTo(w * 0.4446, h * 1.01, w * 0.5065, h, w * 0.5065, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.2995, h * 0.9106); + c.lineTo(w * 0.2995, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.2081, h * 0.907); + c.curveTo(w * 0.2081, h * 0.907, w * 0.2131, h * 0.9194, w * 0.2232, h * 0.9565); + c.curveTo(w * 0.2333, h * 0.9936, w * 0.24, h, w * 0.24, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6951, h * 0.4988); + c.curveTo(w * 0.6951, h * 0.4662, w * 0.7042, h * 0.3453, w * 0.7, h * 0.32); + c.curveTo(w * 0.6923, h * 0.273, w * 0.6926, h * 0.2175, w * 0.6727, h * 0.19); + c.curveTo(w * 0.6504, h * 0.159, w * 0.5651, h * 0.1157, w * 0.5025, h * 0.1157); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5029, h * 0.6728); + c.curveTo(w * 0.5546, h * 0.6728, w * 0.6107, h * 0.6316, w * 0.6461, h * 0.5602); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.696, h * 0.4022); + c.curveTo(w * 0.696, h * 0.4022, w * 0.6983, h * 0.3766, w * 0.7179, h * 0.4106); + c.curveTo(w * 0.7375, h * 0.4278, w * 0.7273, h * 0.4836, w * 0.7273, h * 0.4836); + c.quadTo(w * 0.7184, h * 0.5241, w * 0.7123, h * 0.5338); + c.curveTo(w * 0.7062, h * 0.5436, w * 0.7114, h * 0.544, w * 0.6943, h * 0.558); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5995, h * 0.6278); + c.curveTo(w * 0.5995, h * 0.6278, w * 0.5724, h * 0.7777, w * 0.6663, h * 0.7963); + c.curveTo(w * 0.6984, h * 0.8026, w * 0.8386, h * 0.8578, w * 0.8638, h * 0.8826); + c.curveTo(w * 0.8891, h * 0.9074, w * 0.9016, h * 0.9412, w * 0.9079, h * 0.9722); + c.curveTo(w * 0.9142, h * 1.0032, w * 0.91, h, w * 0.91, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6545, h * 0.6802); + c.lineTo(w * 0.6545, h * 0.3986); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.7132, h * 0.8078); + c.curveTo(w * 0.7132, h * 0.8078, w * 0.6839, h * 0.916, w * 0.6237, h * 0.9678); + c.curveTo(w * 0.5617, h * 1.01, w * 0.4998, h, w * 0.4998, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.7111, h * 0.9106); + c.lineTo(w * 0.7111, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.8075, h * 0.907); + c.curveTo(w * 0.8075, h * 0.907, w * 0.8025, h * 0.9194, w * 0.7924, h * 0.9565); + c.curveTo(w * 0.7823, h * 0.9936, w * 0.775, h, w * 0.775, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.3148, h * 0.5448); + c.curveTo(w * 0.3148, h * 0.5448, w * 0.32, h * 0.6216, w * 0.3148, h * 0.6677); + c.quadTo(w * 0.2891, h * 0.7343, w * 0.2891, h * 0.7343); + c.lineTo(w * 0.3303, h * 0.7625); + c.lineTo(w * 0.39, h * 0.7625); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6852, h * 0.5448); + c.curveTo(w * 0.6852, h * 0.5448, w * 0.68, h * 0.6216, w * 0.6852, h * 0.6677); + c.quadTo(w * 0.7109, h * 0.7343, w * 0.7109, h * 0.7343); + c.lineTo(w * 0.6697, h * 0.7625); + c.lineTo(w * 0.62, h * 0.7625); + c.stroke(); + + c.setStrokeColor(frameColor); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupUserFemale.prototype.cst.SHAPE_FEMALE_USER, mxShapeMockupUserFemale); + +//********************************************************************************************************************************************************** +//Group +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupGroup, mxShape); + +mxShapeMockupGroup.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + FILL_COLOR2 : 'fillColor2', + SHAPE_GROUP : 'mxgraph.mockup.containers.group' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var groupString = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.MAIN_TEXT, 'Group').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.TEXT_SIZE, '17'); + + var textWidth = mxUtils.getSizeForString(groupString, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (textWidth === 0) + { + textWidth = Math.max(80, textWidth); + } + + c.translate(x, y); + + w = Math.max(w, textWidth + 15); + h = Math.max(h, fontSize + 10); + + this.background(c, w, h, textWidth, fontSize); + c.setShadow(false); + this.foreground(c, w, h, textWidth, fontSize); + this.buttonText(c, w, h, groupString, fontSize); +}; + +mxShapeMockupGroup.prototype.background = function(c, w, h, textWidth, fontSize) +{ + c.roundrect(0, fontSize * 0.5, w, h - fontSize * 0.5, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupGroup.prototype.foreground = function(c, w, h, textWidth, fontSize) +{ + var fillColor = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.FILL_COLOR2, '#000000'); + c.setFillColor(fillColor); + c.roundrect(3, 0, textWidth + 6, fontSize * 1.5, fontSize * 0.25, fontSize * 0.25); + c.fill(); +}; + +mxShapeMockupGroup.prototype.buttonText = function(c, w, h, textString, fontSize) +{ + var fontColor = mxUtils.getValue(this.style, mxShapeMockupGroup.prototype.cst.TEXT_COLOR, '#ffffff'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(6, 0, 0, 0, textString, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_TOP, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupGroup.prototype.cst.SHAPE_GROUP, mxShapeMockupGroup); + +//********************************************************************************************************************************************************** +//Window +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupWindow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupWindow, mxShape); + +mxShapeMockupWindow.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SHAPE_WINDOW : 'mxgraph.mockup.containers.window' +}; + +mxShapeMockupWindow.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Stroke3 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupWindow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + c.translate(x, y); + + h = Math.max(h, 30); + w = Math.max(w, 90); + + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.otherShapes(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupWindow.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupWindow.prototype.otherShapes = function(c, x, y, w, h, frameColor, insideColor, closeColor) +{ + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + //window buttons + c.setStrokeColor(frameColor); + c.ellipse(w - 75, 5, 20, 20); + c.stroke(); + + c.ellipse(w - 50, 5, 20, 20); + c.stroke(); + + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + + c.setStrokeColor(insideColor); + //lines + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + + //text + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.MAIN_TEXT, 'Window Title'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWindow.prototype.cst.TEXT_SIZE, '17').toString(); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupWindow.prototype.cst.SHAPE_WINDOW, mxShapeMockupWindow); + +//********************************************************************************************************************************************************** +//Horizontal Tab Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupHorTabBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupHorTabBar, mxShape); + +mxShapeMockupHorTabBar.prototype.cst = { + BLOCK : 'block', + CONE : 'cone', + HALF_CONE : 'halfCone', + ROUND : 'round', + TEXT_SIZE : 'textSize', + TAB_NAMES : 'tabs', + TAB_STYLE : 'tabStyle', + STYLE_FILLCOLOR2 : 'fillColor2', + TEXT_COLOR : 'textColor', + SEL_TEXT_COLOR : 'textColor2', + SHAPE_HOR_TAB_BAR : 'mxgraph.mockup.containers.horTabBar' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +//TODO tab widths are fixed, so tab text length is a bit of an issue. Cannot be fixed while we use labels for tab names +mxShapeMockupHorTabBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var minW = 2 * startOffset + (tabCount - 1) * tabOffset + tabCount * 2 * labelOffset; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + + for (var i = 0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if(currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) + { + labelWidths[i] = 40; + } + else + { + labelWidths[i] = currW; + }; + + minW = minW + labelWidths[i]; + } + + w = Math.max(w, minW); + h = Math.max(h, tabH + rSize); + + c.translate(x, y); + + this.background(c, w, h, rSize, tabH); + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupHorTabBar.prototype.background = function(c, w, h, rSize, tabH) +{ + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupHorTabBar.prototype.backTabs = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_STYLE, mxShapeMockupHorTabBar.prototype.cst.BLOCK); + + var currW = startOffset; + for (var i=0; i < tabCount; i++) + { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab !== i) + { + if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.BLOCK) + { + c.rect(currW, 0, tabW, tabH); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.HALF_CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupHorTabBar.prototype.focusTab = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TAB_STYLE, mxShapeMockupHorTabBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + + var currW = startOffset; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + for (var i=0; i <= selectedTab; i++) + { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab === i) + { + if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.BLOCK) + { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.CONE) + { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.HALF_CONE) + { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } + else if (tabStyle === mxShapeMockupHorTabBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(0, tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, tabH); + c.lineTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + c.lineTo(w - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 1, w, tabH + rSize); + c.close(); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupHorTabBar.prototype.tabText = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) +{ + var fontColor = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupHorTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + var currW = startOffset; + + for (var i=0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if (i === selectedTab) + { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + } + + var tabW = labelWidths[i] + 2 * labelOffset; + + c.text(currW + labelOffset, tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + currW = currW + tabW + tabOffset; + + if (i === selectedTab) + { + c.setFontColor(fontColor); + } + } + +}; + +mxCellRenderer.registerShape(mxShapeMockupHorTabBar.prototype.cst.SHAPE_HOR_TAB_BAR, mxShapeMockupHorTabBar); + +//********************************************************************************************************************************************************** +//Vertical Tab Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +//TODO tab widths are fixed, so tab text length is a bit of an issue. Cannot be fixed while we use labels for tab names +function mxShapeMockupVerTabBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupVerTabBar, mxShape); + +mxShapeMockupVerTabBar.prototype.cst = { + BLOCK : 'block', + ROUND : 'round', + TEXT_SIZE : 'textSize', + TAB_NAMES : 'tabs', + TAB_STYLE : 'tabStyle', + STYLE_FILLCOLOR2 : 'fillColor2', + TEXT_COLOR : 'textColor', + SEL_TEXT_COLOR : 'textColor2', + SHAPE_VER_TAB_BAR : 'mxgraph.mockup.containers.verTabBar' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupVerTabBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + for (var i = 0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if(currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + var currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) + { + labelWidths[i] = 42; + } + else + { + labelWidths[i] = currW; + } + } + + var tabW = 2 * labelOffset + Math.max.apply(Math, labelWidths); + var minW = tabW + rSize; + w = Math.max(w, minW); + h = Math.max(h, 2 * startOffset + tabCount * tabH + (tabCount - 1) * tabOffset); + + c.translate(x, y); + + this.background(c, w, h, rSize, tabW); + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupVerTabBar.prototype.background = function(c, w, h, rSize, tabW) +{ + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupVerTabBar.prototype.backTabs = function(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_STYLE, mxShapeMockupVerTabBar.prototype.cst.BLOCK); + + var currH = startOffset; + + for (var i=0; i < tabCount; i++) + { + if (selectedTab !== i) + { + if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.BLOCK) + { + c.rect(0, currH, tabW, tabH); + } + else if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(tabW, currH + tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 0, tabW - rSize, currH + tabH); + c.lineTo(rSize, currH + tabH); + c.arcTo(rSize, rSize, 0, 0, 1, 0, currH + tabH - rSize); + c.lineTo(0, currH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, currH); + c.lineTo(tabW - rSize, currH); + c.arcTo(rSize, rSize, 0, 0, 0, tabW, currH - rSize); + } + + c.fillAndStroke(); + } + + currH = currH + tabH + tabOffset; + } +}; + +mxShapeMockupVerTabBar.prototype.focusTab = function(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TAB_STYLE, mxShapeMockupVerTabBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + + if (selectedTab !== -1) + { + + var currH = startOffset + (tabH + tabOffset) * selectedTab; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.BLOCK) + { + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, currH + tabH); + c.lineTo(0, currH + tabH); + c.lineTo(0, currH); + c.lineTo(tabW, currH); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.close(); + } + else if (tabStyle === mxShapeMockupVerTabBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(tabW + rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, tabW, h - rSize); + c.lineTo(tabW, currH + tabH + rSize); + c.arcTo(rSize, rSize, 0, 0, 0, tabW - rSize, currH + tabH); + c.lineTo(rSize, currH + tabH); + c.arcTo(rSize, rSize, 0, 0, 1, 0, currH + tabH - rSize); + c.lineTo(0, currH + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, currH); + c.lineTo(tabW - rSize, currH); + c.arcTo(rSize, rSize, 0, 0, 0, tabW, currH - rSize); + c.lineTo(tabW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, tabW + rSize, 0); + c.close(); + } + + c.fillAndStroke(); + } + +}; + +mxShapeMockupVerTabBar.prototype.tabText = function(c, w, h, rSize, tabH, tabW, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) +{ + var fontColor = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupVerTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + var currH = startOffset; + + for (var i=0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if (i === selectedTab) + { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + } + + c.text(tabW * 0.5, currH + tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + currH = currH + tabH + tabOffset; + + if (i === selectedTab) + { + c.setFontColor(fontColor); + } + } + +}; + +mxCellRenderer.registerShape(mxShapeMockupVerTabBar.prototype.cst.SHAPE_VER_TAB_BAR, mxShapeMockupVerTabBar); + +//********************************************************************************************************************************************************** +//Alert Box (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupAlertBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupAlertBox, mxShape); + +mxShapeMockupAlertBox.prototype.cst = { + MAIN_TEXT : 'mainText', + SUB_TEXT : 'subText', + BUTTON_TEXT : 'buttonText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SHAPE_ALERT_BOX : 'mxgraph.mockup.containers.alertBox' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupAlertBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var closeColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.STROKE_COLOR2, '#008cff'); + var insideColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.STROKE_COLOR3, '#c4c4c4'); + c.translate(x, y); + + h = Math.max(h, 75); + w = Math.max(w, 90); + + this.background(c, x, y, w, h, bgColor, frameColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, frameColor, insideColor, closeColor); +}; + +mxShapeMockupAlertBox.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupAlertBox.prototype.foreground = function(c, x, y, w, h, frameColor, insideColor, closeColor) +{ + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + c.setStrokeColor(closeColor); + c.ellipse(w - 25, 5, 20, 20); + c.stroke(); + + c.setStrokeColor(insideColor); + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + + //buttons + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.MAIN_TEXT, 'Window Title').toString(); + var subText = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.SUB_TEXT, 'Sub Text').toString().split(','); + var buttonText = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.BUTTON_TEXT, 'OK,Cancel').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupAlertBox.prototype.cst.TEXT_SIZE, '17').toString(); + + var buttonCount = buttonText.length; + var buttonOffset = 10; + var buttonW = (w - buttonOffset * (buttonCount + 1)) / buttonCount; + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var currW = buttonOffset; + + for (var i = 0; i < buttonText.length; i++) + { + if (buttonText[i] !== '') + { + c.rect(currW, h - 10 - fontSize * 1.5, buttonW, fontSize * 1.5); + c.stroke(); + c.text(currW + buttonW * 0.5, h - 10 - fontSize * 0.75, 0, 0, buttonText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currW = currW + buttonW + buttonOffset; + } + + + for (var i = 0; i < subText.length; i++) + { + c.text(w * 0.5, 30 + fontSize * (i * 1.5 + 0.75), 0, 0, subText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupAlertBox.prototype.cst.SHAPE_ALERT_BOX, mxShapeMockupAlertBox); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContainersRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContainersRRect, mxShape); + +mxShapeMockupContainersRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.containers.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupContainersRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContainersRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContainersRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersRRect.prototype.cst.RRECT, mxShapeMockupContainersRRect); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContainersAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContainersAnchor, mxShape); + +mxShapeMockupContainersAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.containers.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContainersAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersAnchor.prototype.cst.ANCHOR, mxShapeMockupContainersAnchor); + +//********************************************************************************************************************************************************** +//Top Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContrainersTopButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContrainersTopButton, mxShape); + +mxShapeMockupContrainersTopButton.prototype.cst = { + TOP_BUTTON : 'mxgraph.mockup.containers.topButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupContrainersTopButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContrainersTopButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContrainersTopButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContrainersTopButton.prototype.cst.TOP_BUTTON, mxShapeMockupContrainersTopButton); + +//********************************************************************************************************************************************************** +//Left Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContainersLeftButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContainersLeftButton, mxShape); + +mxShapeMockupContainersLeftButton.prototype.cst = { + LEFT_BUTTON : 'mxgraph.mockup.containers.leftButton', + R_SIZE : 'rSize' +}; + +mxShapeMockupContainersLeftButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContainersLeftButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupContainersLeftButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersLeftButton.prototype.cst.LEFT_BUTTON, mxShapeMockupContainersLeftButton); + +//********************************************************************************************************************************************************** +//rect with margins +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContainersMarginRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContainersMarginRect, mxShape); + +mxShapeMockupContainersMarginRect.prototype.cst = { + SHAPE_MARGIN_RECT : 'mxgraph.mockup.containers.marginRect', + MARGIN : 'rectMargin', + MARGIN_TOP : 'rectMarginTop', + MARGIN_LEFT : 'rectMarginLeft', + MARGIN_BOTTOM : 'rectMarginBottom', + MARGIN_RIGHT : 'rectMarginRight' +}; + +mxShapeMockupContainersMarginRect.prototype.customProperties = [ + {name: 'rectMargin', dispName: 'Global Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginTop', dispName: 'Top Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginLeft', dispName: 'Left Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginBottom', dispName: 'Bottom Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginRight', dispName: 'Right Margin', type: 'float', min:0, defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContainersMarginRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupContainersMarginRect.prototype.background = function(c, x, y, w, h, state) +{ + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect.prototype.cst.MARGIN_RIGHT, '0')); + + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 >0 && h1 > 0) + { + c.begin(); + c.roundrect(x1, y1, w1, h1, 10, 10); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersMarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeMockupContainersMarginRect); + +//********************************************************************************************************************************************************** +//rect with margins (not rounded) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupContainersMarginRect2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupContainersMarginRect2, mxShape); + +mxShapeMockupContainersMarginRect2.prototype.cst = { + SHAPE_MARGIN_RECT : 'mxgraph.mockup.containers.marginRect2', + MARGIN : 'rectMargin', + MARGIN_TOP : 'rectMarginTop', + MARGIN_LEFT : 'rectMarginLeft', + MARGIN_BOTTOM : 'rectMarginBottom', + MARGIN_RIGHT : 'rectMarginRight' +}; + +mxShapeMockupContainersMarginRect2.prototype.customProperties = [ + {name: 'rectMargin', dispName: 'Global Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginTop', dispName: 'Top Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginLeft', dispName: 'Left Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginBottom', dispName: 'Bottom Margin', type: 'float', min:0, defVal:0}, + {name: 'rectMarginRight', dispName: 'Right Margin', type: 'float', min:0, defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupContainersMarginRect2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupContainersMarginRect2.prototype.background = function(c, x, y, w, h, state) +{ + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeMockupContainersMarginRect2.prototype.cst.MARGIN_RIGHT, '0')); + + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 >0 && h1 > 0) + { + c.begin(); + c.rect(x1, y1, w1, h1); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupContainersMarginRect2.prototype.cst.SHAPE_MARGIN_RECT, mxShapeMockupContainersMarginRect2); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupForms.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupForms.js new file mode 100644 index 0000000000000..48bda8f615ed0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupForms.js @@ -0,0 +1,2503 @@ +/** + * $Id: mxMockupForms.js,v 1.11 2013/05/24 05:21:33 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Checkbox Group (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupCheckboxGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupCheckboxGroup, mxShape); + +mxShapeMockupCheckboxGroup.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SELECTED : '+', // must be 1 char + SHAPE_CHECKBOX_GROUP : 'mxgraph.mockup.forms.checkboxGroup' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupCheckboxGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.TEXT_SIZE, '17').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeMockupCheckboxGroup.prototype.cst.MAIN_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 15; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeMockupCheckboxGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.rect(0, 0, trueW, trueH); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeMockupCheckboxGroup.prototype.cst.SELECTED) + { + c.setFontColor(fontColor[1]); + currText = optionText[i].substring(1); + selected = i; + } + else + { + c.setFontColor(fontColor[0]); + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#999999'); + + if (selected === i) + { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setStrokeColor('#333333'); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } + else + { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape(mxShapeMockupCheckboxGroup.prototype.cst.SHAPE_CHECKBOX_GROUP, mxShapeMockupCheckboxGroup); + +//********************************************************************************************************************************************************** +//Radio Button Group +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupRadioGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupRadioGroup, mxShape); + +mxShapeMockupRadioGroup.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SELECTED : '+', // must be 1 char + SHAPE_RADIO_GROUP : 'mxgraph.mockup.forms.radioGroup' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupRadioGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.TEXT_SIZE, '17').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeMockupRadioGroup.prototype.cst.MAIN_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 15; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeMockupRadioGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.rect(0, 0, trueW, trueH); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeMockupRadioGroup.prototype.cst.SELECTED) + { + c.setFontColor(fontColor[1]); + currText = optionText[i].substring(1); + selected = i; + } + else + { + c.setFontColor(fontColor[0]); + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setStrokeColor('#999999'); + + if (selected === i) + { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setFillColor('#333333'); + c.setStrokeColor('#333333'); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } + else + { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRadioGroup.prototype.cst.SHAPE_RADIO_GROUP, mxShapeMockupRadioGroup); + +//********************************************************************************************************************************************************** +//Color Picker +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupColorPicker(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupColorPicker, mxShape); + +mxShapeMockupColorPicker.prototype.cst = { + COLOR : 'chosenColor', + SHAPE_COLOR_PICKER : 'mxgraph.mockup.forms.colorPicker' +}; + +mxShapeMockupColorPicker.prototype.customProperties = [ + {name: 'chosenColor', dispName: 'Current Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupColorPicker.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var chosenColor = mxUtils.getValue(this.style, mxShapeMockupColorPicker.prototype.cst.COLOR, '#aaddff'); + + c.translate(x, y); + + c.setStrokeColor('#999999'); + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + c.setShadow(false); + + c.setFillColor(chosenColor); + c.rect(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.fill(); + + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.75, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.95, h); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 0, w, h * 0.95); + c.lineTo(w, h * 0.75); + c.close(); + c.fill(); + + c.setFillColor('#999999'); + c.begin(); + c.moveTo(w * 0.77, h * 0.77); + c.lineTo(w * 0.875, h * 0.98); + c.lineTo(w * 0.98, h * 0.77); + c.close(); + c.fill(); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupColorPicker.prototype.cst.SHAPE_COLOR_PICKER, mxShapeMockupColorPicker); + +//********************************************************************************************************************************************************** +//Combo box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupComboBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupComboBox, mxShape); + +mxShapeMockupComboBox.prototype.cst = { + MAIN_TEXT : 'mainText', + FILL_COLOR2 : 'fillColor2', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_COMBO_BOX : 'mxgraph.mockup.forms.comboBox' +}; + +mxShapeMockupComboBox.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupComboBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); + this.mainText(c, x, y, w, h); +}; + +mxShapeMockupComboBox.prototype.background = function(c, x, y, w, h) +{ + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupComboBox.prototype.foreground = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.FILL_COLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, w - 30, 0, 30, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 30, 0); + c.lineTo(w - 5, 0); + c.arcTo(5, 5, 0, 0, 1, w, 5); + c.lineTo(w, h - 5); + c.arcTo(5, 5, 0, 0, 1, w - 5, h); + c.lineTo(w - 30, h); + c.close(); + c.fillAndStroke(); + + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 22, h * 0.5 - 5); + c.lineTo(w - 15, h * 0.5 + 5); + c.lineTo(w - 8, h * 0.5 - 5); + c.fill(); +}; + +mxShapeMockupComboBox.prototype.mainText = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.MAIN_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupComboBox.prototype.cst.TEXT_SIZE, '17').toString(); + + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupComboBox.prototype.cst.SHAPE_COMBO_BOX, mxShapeMockupComboBox); + +//********************************************************************************************************************************************************** +//Spinner +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupSpinner(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupSpinner, mxShape); + +mxShapeMockupSpinner.prototype.cst = { + LAYOUT : 'spinLayout', + SPINNER_STYLE : 'spinStyle', + ADJ_STYLE : 'adjStyle', + LAYOUT_RIGHT : 'right', + LAYOUT_LEFT : 'left', + LAYOUT_TOP : 'top', + LAYOUT_BOTTOM : 'bottom', + LAYOUT_VERTICAL : 'vertical', + LAYOUT_HORIZONTAL : 'horizontal', + SPINNER_MERGED : 'merged', + SPINNER_NORMAL : 'normal', + ADJ_TRIANGLE : 'triangle', + ADJ_PLUSMINUS : 'plusMinus', + ADJ_ARROW : 'arrow', + + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_SPINNER : 'mxgraph.mockup.forms.spinner' +}; + +mxShapeMockupSpinner.prototype.customProperties = [ + {name: 'spinLayout', dispName: 'Layout', type: 'enum', + enumList: [{val: 'right', dispName: 'Right'}, {val: 'left', dispName: 'Left'}, {val: 'top', dispName: 'Top'}, {val: 'bottom', dispName: 'Bottom'}, {val: 'vertical', dispName: 'Vertical'}, {val: 'horizontal', dispName: 'Horizontal'}] + }, + {name: 'spinStyle', dispName: 'Spinner Style', type: 'enum', + enumList: [{val: 'merged', dispName: 'Merged'}, {val: 'normal', dispName: 'Normal'}] + }, + {name: 'adjStyle', dispName: 'Button Style', type: 'enum', + enumList: [{val: 'triangle', dispName: 'Triangle'}, {val: 'plusMinus', dispName: '+/-'}, {val: 'arrow', dispName: 'Arrow'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupSpinner.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var spinnerLayout = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.LAYOUT, mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT); + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, spinnerLayout); + this.mainText(c, w, h, spinnerLayout); +}; + +mxShapeMockupSpinner.prototype.background = function(c, w, h) +{ + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeMockupSpinner.prototype.foreground = function(c, w, h, spinnerLayout) +{ + + var spinnerStyle = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.SPINNER_STYLE, mxShapeMockupSpinner.prototype.cst.SPINNER_NORMAL); + var adjStyle = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.ADJ_STYLE, mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + + c.setFillColor(fillColor); + + if (spinnerStyle === mxShapeMockupSpinner.prototype.cst.SPINNER_NORMAL) + { + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) + { + c.begin(); + c.moveTo(w - 20, 0); + c.lineTo(w - 20, h); + c.moveTo(w - 20, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) + { + c.begin(); + c.moveTo(20, 0); + c.lineTo(20, h); + c.moveTo(20, h * 0.5); + c.lineTo(0, h * 0.5); + c.stroke(); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.moveTo(w * 0.5, 15); + c.lineTo(w * 0.5, 0); + c.stroke(); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) + { + c.begin(); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.moveTo(w * 0.5, h - 15); + c.lineTo(w * 0.5, h); + c.stroke(); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.stroke(); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) + { + c.begin(); + c.moveTo(20, 0); + c.lineTo(20, h); + c.moveTo(w - 20, 0); + c.lineTo(w - 20, h); + c.stroke(); + } + } + + c.setStrokeColor(fillColor); + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w - 14, h * 0.25 + 4.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.lineTo(w - 6, h * 0.25 + 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w - 10, h * 0.25 - 4); + c.lineTo(w - 10, h * 0.25 + 4); + c.moveTo(w - 14, h * 0.25); + c.lineTo(w - 6, h * 0.25); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w - 14, h * 0.25 + 1.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.lineTo(w - 6, h * 0.25 + 1.5); + c.close(); + c.moveTo(w - 10, h * 0.25 + 4.5); + c.lineTo(w - 10, h * 0.25 - 2.5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(14, h * 0.25 + 4.5); + c.lineTo(10, h * 0.25 - 2.5); + c.lineTo(6, h * 0.25 + 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(10, h * 0.25 - 4); + c.lineTo(10, h * 0.25 + 4); + c.moveTo(14, h * 0.25); + c.lineTo(6, h * 0.25); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(14, h * 0.25 + 1.5); + c.lineTo(10, h * 0.25 - 2.5); + c.lineTo(6, h * 0.25 + 1.5); + c.close(); + c.moveTo(10, h * 0.25 + 4.5); + c.lineTo(10, h * 0.25 - 2.5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.75 + 4, 12); + c.lineTo(w * 0.75, 5); + c.lineTo(w * 0.75 - 4, 12); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.75, 3.5); + c.lineTo(w * 0.75, 11.5); + c.moveTo(w * 0.75 + 4, 7.5); + c.lineTo(w * 0.75 - 4, 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.75 + 4, 9); + c.lineTo(w * 0.75, 5); + c.lineTo(w * 0.75 - 4, 9); + c.close(); + c.moveTo(w * 0.75, 12); + c.lineTo(w * 0.75, 5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.75 + 4, h - 5); + c.lineTo(w * 0.75, h - 12); + c.lineTo(w * 0.75 - 4, h - 5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.75, h - 3.5); + c.lineTo(w * 0.75, h - 11.5); + c.moveTo(w * 0.75 + 4, h - 7.5); + c.lineTo(w * 0.75 - 4, h - 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.75 + 4, h - 6); + c.lineTo(w * 0.75, h - 10); + c.lineTo(w * 0.75 - 4, h - 6); + c.close(); + c.moveTo(w * 0.75, h - 3); + c.lineTo(w * 0.75, h - 10); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.5 + 4, 12); + c.lineTo(w * 0.5, 5); + c.lineTo(w * 0.5 - 4, 12); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.5, 3.5); + c.lineTo(w * 0.5, 11.5); + c.moveTo(w * 0.5 + 4, 7.5); + c.lineTo(w * 0.5 - 4, 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.5 + 4, 9); + c.lineTo(w * 0.5, 5); + c.lineTo(w * 0.5 - 4, 9); + c.close(); + c.moveTo(w * 0.5, 12); + c.lineTo(w * 0.5, 5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w - 6, h * 0.5 + 4.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.lineTo(w - 14, h * 0.5 + 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w - 10, h * 0.5 - 4); + c.lineTo(w - 10, h * 0.5 + 4); + c.moveTo(w - 14, h * 0.5); + c.lineTo(w - 6, h * 0.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w - 14, h * 0.5 + 1.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.lineTo(w - 6, h * 0.5 + 1.5); + c.close(); + c.moveTo(w - 10, h * 0.5 + 4.5); + c.lineTo(w - 10, h * 0.5 - 2.5); + c.fillAndStroke(); + } + } + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w - 14, h * 0.75 - 4.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.lineTo(w - 6, h * 0.75 - 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w - 14, h * 0.75); + c.lineTo(w - 6, h * 0.75); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w - 14, h * 0.75 - 1.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.lineTo(w - 6, h * 0.75 - 1.5); + c.close(); + c.moveTo(w - 10, h * 0.75 - 4.5); + c.lineTo(w - 10, h * 0.75 + 2.5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(14, h * 0.75 - 4.5); + c.lineTo(10, h * 0.75 + 2.5); + c.lineTo(6, h * 0.75 - 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(14, h * 0.75); + c.lineTo(6, h * 0.75); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(14, h * 0.75 - 1.5); + c.lineTo(10, h * 0.75 + 2.5); + c.lineTo(6, h * 0.75 - 1.5); + c.close(); + c.moveTo(10, h * 0.75 - 4.5); + c.lineTo(10, h * 0.75 + 2.5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.25 + 4, 5); + c.lineTo(w * 0.25, 12); + c.lineTo(w * 0.25 - 4, 5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.25 + 4, 7.5); + c.lineTo(w * 0.25 - 4, 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.25 + 4, 6); + c.lineTo(w * 0.25, 10); + c.lineTo(w * 0.25 - 4, 6); + c.close(); + c.moveTo(w * 0.25, 3); + c.lineTo(w * 0.25, 10); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 12); + c.lineTo(w * 0.25, h - 5); + c.lineTo(w * 0.25 - 4, h - 12); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 7.5); + c.lineTo(w * 0.25 - 4, h - 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.25 + 4, h - 9); + c.lineTo(w * 0.25, h - 5); + c.lineTo(w * 0.25 - 4, h - 9); + c.close(); + c.moveTo(w * 0.25, h - 12); + c.lineTo(w * 0.25, h - 5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 12); + c.lineTo(w * 0.5, h - 5); + c.lineTo(w * 0.5 - 4, h - 12); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 7.5); + c.lineTo(w * 0.5 - 4, h - 7.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(w * 0.5 + 4, h - 9); + c.lineTo(w * 0.5, h - 5); + c.lineTo(w * 0.5 - 4, h - 9); + c.close(); + c.moveTo(w * 0.5, h - 12); + c.lineTo(w * 0.5, h - 5); + c.fillAndStroke(); + } + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) + { + if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_TRIANGLE) + { + c.begin(); + c.moveTo(6, h * 0.5 - 4.5); + c.lineTo(10, h * 0.5 + 2.5); + c.lineTo(14, h * 0.5 - 4.5); + c.close(); + c.fillAndStroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_PLUSMINUS) + { + c.begin(); + c.moveTo(14, h * 0.5); + c.lineTo(6, h * 0.5); + c.stroke(); + } + else if(adjStyle === mxShapeMockupSpinner.prototype.cst.ADJ_ARROW) + { + c.begin(); + c.moveTo(14, h * 0.5 - 1.5); + c.lineTo(10, h * 0.5 + 2.5); + c.lineTo(6, h * 0.5 - 1.5); + c.close(); + c.moveTo(10, h * 0.5 - 4.5); + c.lineTo(10, h * 0.5 + 2.5); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupSpinner.prototype.mainText = function(c, w, h, spinnerLayout) +{ + var spinnerText = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.MAIN_TEXT, '100').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.TEXT_SIZE, '17'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSpinner.prototype.cst.TEXT_COLOR, '#666666'); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_RIGHT) + { + c.text((w - 20) * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_LEFT) + { + c.text((w + 20) * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_TOP) + { + c.text(w * 0.5, (h + 15) * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_BOTTOM) + { + c.text(w * 0.5, (h - 15) * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_VERTICAL) + { + c.text(w * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (spinnerLayout === mxShapeMockupSpinner.prototype.cst.LAYOUT_HORIZONTAL) + { + c.text(w * 0.5, h * 0.5, 0, 0, spinnerText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupSpinner.prototype.cst.SHAPE_SPINNER, mxShapeMockupSpinner); + +//********************************************************************************************************************************************************** +//Menu Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupMenuBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupMenuBar, mxShape); + +mxShapeMockupMenuBar.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_MENU_BAR : 'mxgraph.mockup.forms.menuBar', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', //must be 1 char + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupMenuBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.MAIN_TEXT, '+Menu 1, Menu 2, Menu 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupMenuBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; //rounding size + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupMenuBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupMenuBar.prototype.background = function(c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) +{ + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + //draw the selected menu + if (selectedButton !== -1) + { + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } + + //draw the frame again, for a nicer effect + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupMenuBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxShapeMockupMenuBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupMenuBar.prototype.cst.SHAPE_MENU_BAR, mxShapeMockupMenuBar); + +//********************************************************************************************************************************************************** +//Horizontal Slider +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupHorSlider(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupHorSlider, mxShape); + +mxShapeMockupHorSlider.prototype.cst = { + STYLE : 'sliderStyle', + SLIDER_BASIC : 'basic', + SLIDER_FANCY : 'fancy', + SLIDER_POS : 'sliderPos', + HANDLE_TRIANGLE : 'triangle', + HANDLE_CIRCLE : 'circle', + HANDLE_HANDLE : 'handle', + HANDLE_STYLE : 'handleStyle', + FILL_COLOR2 : 'fillColor2', + SHAPE_HOR_SLIDER : 'mxgraph.mockup.forms.horSlider' +}; + +mxShapeMockupHorSlider.prototype.customProperties = [ + {name: 'sliderStyle', dispName: 'Slider Style', type: 'enum', + enumList: [{val: 'basic', dispName: 'Basic'}, {val: 'fancy', dispName: 'Fancy'}] + }, + {name: 'handleStyle', dispName: 'Handle Style', type: 'enum', + enumList: [{val: 'triangle', dispName: 'Triangle'}, {val: 'circle', dispName: 'Circle'}, {val: 'handle', dispName: 'Handle'}] + }, + {name: 'sliderPos', dispName: 'Handle Position', type: 'float'}, + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupHorSlider.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var sliderStyle = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.STYLE, mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC); + var rSize = 5; + + c.translate(x, y); + this.background(c, w, h, rSize, sliderStyle); + c.setShadow(false); + this.foreground(c, w, h, rSize, sliderStyle); + this.sliderPos = 20; +}; + +mxShapeMockupHorSlider.prototype.background = function(c, w, h, rSize, sliderStyle) +{ + + if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_FANCY) + { + c.roundrect(0, h * 0.5 - rSize, w, 2 * rSize, rSize, rSize); + c.fillAndStroke(); + } +}; + +mxShapeMockupHorSlider.prototype.foreground = function(c, w, h, rSize, sliderStyle) +{ + var sliderPos = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.SLIDER_POS, '20'); + var handleStyle = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.HANDLE_STYLE, mxShapeMockupHorSlider.prototype.cst.HANDLE_CIRCLE); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupHorSlider.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + sliderPos = Math.min(100, sliderPos); + sliderPos = Math.max(0, sliderPos); + + if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_BASIC) + { + c.setStrokeColor(fillColor2); + var barCenterPos = w * sliderPos / 100; + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barCenterPos, h * 0.5); + c.stroke(); + c.setStrokeColor(strokeColor); + } + else if (sliderStyle === mxShapeMockupHorSlider.prototype.cst.SLIDER_FANCY) + { + var barCenterPos = 10 + (w - 10) * sliderPos / 100; + c.setFillColor(fillColor2); + c.roundrect(0, h * 0.5 - rSize, barCenterPos, 2 * rSize, rSize, rSize); + c.fillAndStroke(); + c.setFillColor(fillColor); + } + + var handleCenterPos = 5 + (w - 10) * sliderPos / 100; + + if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_CIRCLE) + { + c.ellipse(handleCenterPos - 10, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + } + else if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_TRIANGLE) + { + c.begin(); + c.moveTo(handleCenterPos - 10, h * 0.5 + 10); + c.lineTo(handleCenterPos, h * 0.5 - 10); + c.lineTo(handleCenterPos + 10, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); + } + else if (handleStyle === mxShapeMockupHorSlider.prototype.cst.HANDLE_HANDLE) + { + c.begin(); + c.moveTo(handleCenterPos - 7, h * 0.5 + 10); + c.lineTo(handleCenterPos - 7, h * 0.5); + c.lineTo(handleCenterPos, h * 0.5 - 10); + c.lineTo(handleCenterPos + 7, h * 0.5); + c.lineTo(handleCenterPos + 7, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupHorSlider.prototype.cst.SHAPE_HOR_SLIDER, mxShapeMockupHorSlider); + +Graph.handleFactory[mxShapeMockupHorSlider.prototype.cst.SHAPE_HOR_SLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['sliderPos'], function(bounds) + { + var sliderPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'sliderPos', this.sliderPos)))); + + return new mxPoint(bounds.x + ((bounds.width - 10) * sliderPos / bounds.width) / 100 * bounds.width + 5, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['sliderPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//List Box (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupListBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupListBox, mxShape); + +mxShapeMockupListBox.prototype.cst = { + MAIN_TEXT : 'mainText', + SUB_TEXT : 'subText', + BUTTON_TEXT : 'buttonText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SELECTED_COLOR : 'selectedColor', + SELECTED : '+', //must be 1 char + SHAPE_LIST_BOX : 'mxgraph.mockup.forms.listBox' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupListBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.TEXT_SIZE, '17').toString(); + + var selectedButton = -1; + var maxShapeWidth = w; + var subText = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.SUB_TEXT, 'Sub Text').toString().split(','); + + for (var i = 0; i < subText.length; i++) + { + var itemText = subText[i]; + + if(itemText.charAt(0) === mxShapeMockupListBox.prototype.cst.SELECTED) + { + itemText = subText[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(itemText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxShapeWidth) + { + maxShapeWidth = currWidth; + } + } + + + + c.translate(x, y); + + w = Math.min(w, maxShapeWidth); + h = Math.max(h, 30 + subText.length * fontSize * 1.5); + + this.background(c, w, h, bgColor, frameColor); + c.setShadow(false); + this.foreground(c, w, h, frameColor, selectedButton, subText, fontSize); +}; + +mxShapeMockupListBox.prototype.background = function(c, w, h, bgColor, frameColor) +{ + c.setFillColor(bgColor); + c.setStrokeColor(frameColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupListBox.prototype.foreground = function(c, w, h, frameColor, selectedButton, subText, fontSize) +{ + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var selectedColor = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.SELECTED_COLOR, '#ddeeff'); + + if(selectedButton !== -1) + { + c.setFillColor(selectedColor); + c.rect(0, 30 + selectedButton * fontSize * 1.5, w, fontSize * 1.5); + c.fill(); + } + + c.begin(); + c.moveTo(0, 30); + c.lineTo(w, 30); + c.stroke(); + + //buttons + var windowTitle = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.MAIN_TEXT, 'Window Title').toString(); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupListBox.prototype.cst.TEXT_COLOR, '#666666,#008cff').toString().split(','); + + c.setFontColor(fontColor[1]); + c.setFontSize(fontSize); + c.text(10, 15, 0, 0, windowTitle, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor(fontColor[0]); + + for (var i = 0; i < subText.length; i++) + { + var currText = subText[i]; + + if(currText.charAt(0) === mxShapeMockupListBox.prototype.cst.SELECTED) + { + currText = subText[i].substring(1); + } + + c.text(10, 30 + fontSize * (i * 1.5 + 0.75), 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupListBox.prototype.cst.SHAPE_LIST_BOX, mxShapeMockupListBox); + +//********************************************************************************************************************************************************** +//Password Field +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupPwField(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupPwField, mxShape); + +mxShapeMockupPwField.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_PW_FIELD : 'mxgraph.mockup.forms.pwField' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupPwField.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupPwField.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPwField.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.MAIN_TEXT, '******'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupPwField.prototype.cst.TEXT_SIZE, '17'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupPwField.prototype.cst.SHAPE_PW_FIELD, mxShapeMockupPwField); + +//********************************************************************************************************************************************************** +//Splitter +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupSplitter(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupSplitter, mxShape); + +mxShapeMockupSplitter.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_SPLITTER : 'mxgraph.mockup.forms.splitter' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupSplitter.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(w, 35); + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSplitter.prototype.background = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.5 - 5); + c.lineTo(w, h * 0.5 - 5); + c.lineTo(w, h * 0.5 + 5); + c.lineTo(0, h * 0.5 + 5); + c.close(); + c.fill(); +}; + +mxShapeMockupSplitter.prototype.foreground = function(c, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.begin(); + c.moveTo(0, h * 0.5 - 5); + c.lineTo(w, h * 0.5 - 5); + c.moveTo(w, h * 0.5 + 5); + c.lineTo(0, h * 0.5 + 5); + c.stroke(); + + c.setFillColor(strokeColor); + c.ellipse(w * 0.5 - 17, h * 0.5 - 2, 4, 4); + c.fill(); + c.ellipse(w * 0.5 - 2, h * 0.5 - 2, 4, 4); + c.fill(); + c.ellipse(w * 0.5 + 13, h * 0.5 - 2, 4, 4); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSplitter.prototype.cst.SHAPE_SPLITTER, mxShapeMockupSplitter); + +//********************************************************************************************************************************************************** +//Wedge Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupWedgeBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupWedgeBar, mxShape); + +mxShapeMockupWedgeBar.prototype.cst = { + BLOCK : 'block', + CONE : 'cone', + HALF_CONE : 'halfCone', + ROUND : 'round', + TEXT_SIZE : 'textSize', + TAB_NAMES : 'tabs', + TAB_STYLE : 'tabStyle', + STYLE_FILLCOLOR2 : 'fillColor2', + TEXT_COLOR : 'textColor', + SEL_TEXT_COLOR : 'textColor2', + SHAPE_WEDGE_BAR : 'mxgraph.mockup.forms.wedgeBar' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupWedgeBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_SIZE, '17').toString(); + var tabNames = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_NAMES, 'Tab 1,+Tab 2,Tab 3').toString().split(','); + + var tabH = fontSize * 1.5; + var startOffset = 10; + var tabOffset = 5; + var labelOffset = 10; + var tabCount = tabNames.length; + var minW = 2 * startOffset + (tabCount - 1) * tabOffset + tabCount * 2 * labelOffset; + var rSize = 5; + var labelWidths = new Array(); + var selectedTab = -1; + + for (var i = 0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if(currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + selectedTab = i; + } + + var currW = mxUtils.getSizeForString(currLabel, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) + { + labelWidths[i] = 42; + } + else + { + labelWidths[i] = currW; + } + + minW = minW + labelWidths[i]; + } + + w = Math.max(w, minW); + h = Math.max(h, tabH + rSize); + + c.translate(x, y); + + c.setShadow(false); + this.backTabs(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.focusTab(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab); + this.tabText(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames); +}; + +mxShapeMockupWedgeBar.prototype.backTabs = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_STYLE, mxShapeMockupWedgeBar.prototype.cst.BLOCK); + + var currW = startOffset; + for (var i=0; i < tabCount; i++) + { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab !== i) + { + if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.BLOCK) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.HALF_CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupWedgeBar.prototype.focusTab = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab) +{ + var tabStyle = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TAB_STYLE, mxShapeMockupWedgeBar.prototype.cst.BLOCK); + var selectedFill = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.STYLE_FILLCOLOR2, '#008cff'); + + var currW = startOffset; + c.setStrokeColor(selectedFill); + c.setFillColor(selectedFill); + + for (var i=0; i <= selectedTab; i++) + { + var tabW = labelWidths[i] + 2 * labelOffset; + + if (selectedTab === i) + { + if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.BLOCK) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW - labelOffset * 0.5, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.HALF_CONE) + { + c.begin(); + c.moveTo(currW, tabH); + c.lineTo(currW + labelOffset * 0.5, 0); + c.lineTo(currW + tabW, 0); + c.lineTo(currW + tabW, tabH); + } + else if (tabStyle === mxShapeMockupWedgeBar.prototype.cst.ROUND) + { + c.begin(); + c.moveTo(currW - rSize, tabH); + c.arcTo(rSize, rSize, 0, 0, 0, currW, tabH - rSize); + c.lineTo(currW, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, currW + rSize, 0); + c.lineTo(currW + tabW - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, currW + tabW, rSize); + c.lineTo(currW + tabW, tabH - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, currW + tabW + rSize, tabH); + } + + c.fillAndStroke(); + } + + currW = currW + tabW + tabOffset; + } +}; + +mxShapeMockupWedgeBar.prototype.tabText = function(c, w, h, rSize, tabH, startOffset, tabOffset, labelOffset, tabCount, labelWidths, selectedTab, tabNames) +{ + var fontColor = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_COLOR, '#666666'); + var selFontColor = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.SEL_TEXT_COLOR, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupWedgeBar.prototype.cst.TEXT_SIZE, '17').toString(); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + var currW = startOffset; + + for (var i=0; i < tabCount; i++) + { + var currLabel = tabNames[i]; + + if (i === selectedTab) + { + c.setFontColor(selFontColor); + } + + if (currLabel.charAt(0) === '+') + { + currLabel = currLabel.substring(1); + } + + var tabW = labelWidths[i] + 2 * labelOffset; + + c.text(currW + labelOffset, tabH * 0.5, 0, 0, currLabel, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + currW = currW + tabW + tabOffset; + + if (i === selectedTab) + { + c.setFontColor(fontColor); + } + } + +}; + +mxCellRenderer.registerShape(mxShapeMockupWedgeBar.prototype.cst.SHAPE_WEDGE_BAR, mxShapeMockupWedgeBar); + +//********************************************************************************************************************************************************** +//Search Box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupSearchBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupSearchBox, mxShape); + +mxShapeMockupSearchBox.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + STROKE_COLOR2 : 'strokeColor2', + SHAPE_SEARCH_BOX : 'mxgraph.mockup.forms.searchBox' +}; + +mxShapeMockupSearchBox.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Icon Color', type: 'color'}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupSearchBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSearchBox.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupSearchBox.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.MAIN_TEXT, 'Search'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.TEXT_COLOR, '#666666'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.STROKE_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSearchBox.prototype.cst.TEXT_SIZE, '17'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + c.text(5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeColor(strokeColor2); + c.ellipse(w - 15, h * 0.5 - 8, 10, 10); + c.stroke(); + c.begin(); + c.moveTo(w - 19, h * 0.5 + 9); + c.lineTo(w - 13, h * 0.5 + 1); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSearchBox.prototype.cst.SHAPE_SEARCH_BOX, mxShapeMockupSearchBox); + +//********************************************************************************************************************************************************** +//Sign In (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupSignIn(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupSignIn, mxShape); + +mxShapeMockupSignIn.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + TEXT_SIZE : 'textSize', + TEXT_SIZE2 : 'textSize2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SHAPE_SIGN_IN : 'mxgraph.mockup.forms.signIn' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupSignIn.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupSignIn.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupSignIn.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.MAIN_TEXT, 'Sign In,User Name:,johndoe,Password:,********,Forgot Password?,New User,SIGN IN,SIGN UP').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_COLOR, '#666666'); + var fontColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_SIZE, '12'); + var fontSize2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.TEXT_SIZE2, '15'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.STROKE_COLOR2, '#ddeeff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupSignIn.prototype.cst.FILL_COLOR2, '#66bbff'); + + c.setFillColor(fillColor2); + c.roundrect(w * 0.09, h * 0.52, w * 0.36, h * 0.09, 5, 5); + c.fill(); + + c.roundrect(w * 0.09, h * 0.84, w * 0.36, h * 0.09, 5, 5); + c.fill(); + + c.rect(w * 0.05, h * 0.22, w * 0.75, h * 0.08); + c.stroke(); + + c.rect(w * 0.05, h * 0.4, w * 0.75, h * 0.08); + c.stroke(); + + + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(2); + + c.begin(); + c.moveTo(w * 0.05, h * 0.12); + c.lineTo(w * 0.95, h * 0.12); + c.moveTo(w * 0.05, h * 0.72); + c.lineTo(w * 0.95, h * 0.72); + c.stroke(); + + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + c.text(w * 0.05, h * 0.1, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.2, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.075, h * 0.26, 0, 0, mainText[2], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.38, 0, 0, mainText[3], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + c.text(w * 0.075, h * 0.44, 0, 0, mainText[4], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.05, h * 0.8, 0, 0, mainText[6], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeWidth(1); + c.setFontColor('#9999ff'); + c.setStrokeColor('#9999ff'); + var forgotW = mxUtils.getSizeForString(mainText[5], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.text(w * 0.05, h * 0.7, 0, 0, mainText[5], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM, 0, null, 0, 0, 0); + + c.begin(); + c.moveTo(w * 0.05, h * 0.7); + c.lineTo(w * 0.05 + forgotW, h * 0.7); + c.stroke(); + + c.setFontColor(fontColor2); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(fontSize2); + c.text(w * 0.27, h * 0.565, 0, 0, mainText[7], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.27, h * 0.885, 0, 0, mainText[8], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupSignIn.prototype.cst.SHAPE_SIGN_IN, mxShapeMockupSignIn); + +//********************************************************************************************************************************************************** +//Calendar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupCalendar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupCalendar, mxShape); + +mxShapeMockupCalendar.prototype.cst = { + SHAPE_CALENDAR : 'mxgraph.mockup.forms.calendar', + DAYS : 'days', + SELECTED_DAY : 'selDay', + PREV_DAYS : 'prevDays', + FIRST_DAY : 'firstDay', + START_ON : 'startOn', + DAY_NAMES : 'dayNames', + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupCalendar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupCalendar.prototype.background = function(c, w, h) +{ + c.roundrect(0, 0, w, h, w * 0.0312, h * 0.0286); + c.fillAndStroke(); +}; + +mxShapeMockupCalendar.prototype.foreground = function(c, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.STROKE_COLOR2, '#008cff'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.MAIN_TEXT, ''); + var textSize = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_SIZE, '15'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_COLOR, '#999999'); + var textColor2 = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var days = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.DAYS, '30'), 10); + var prevDays = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.PREV_DAYS, '31'), 10); + //month starts on Monday + var firstDay = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.FIRST_DAY, '0'), 10); + //week starts with Monday + var startOn = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.START_ON, '6', 10)); + var dayNames = mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.DAY_NAMES, 'Mo,Tu,We,Th,Fr,Sa,Su').toString().split(','); + var selDay = parseInt(mxUtils.getValue(this.style, mxShapeMockupCalendar.prototype.cst.SELECTED_DAY, '24'), 10); + + fistDay = Math.max(firstDay, 0); + startOn = Math.max(startOn, 0); + fistDay = Math.min(firstDay, 6); + startOn = Math.min(startOn, 6); + + //buttons + c.roundrect(w * 0.05, h * 0.0457, w * 0.1438, h * 0.1029, w * 0.025, h * 0.0229); + c.stroke(); + c.roundrect(w * 0.8125, h * 0.0457, w * 0.1438, h * 0.1029, w * 0.025, h * 0.0229); + c.stroke(); + + //button markers + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor2); + c.begin(); + c.moveTo(w * 0.1438, h * 0.0743); + c.lineTo(w * 0.1, h * 0.0971); + c.lineTo(w * 0.1438, h * 0.12); + c.moveTo(w * 0.8625, h * 0.0743); + c.lineTo(w * 0.9062, h * 0.0971); + c.lineTo(w * 0.8625, h * 0.12); + c.stroke(); + + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.0971, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + //write day names + var range = w * 0.875; + var cellSize = range / 7; + + for (var i = 0; i < 7; i++) + { + var currX = w * 0.0625 + cellSize * 0.5 + i * cellSize; + var j = i + startOn; + + if (j > 6) + { + j = j - 7; + } + + c.text(currX, h * 0.2114, 0, 0, dayNames[j], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.setStrokeWidth(1); + //1st day is on first weekday as default + var x = 0; + var selX = -1; + var selY = -1; + + //check if we need to write days from previous month + if (firstDay !== startOn) + { + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor2); + + var diff = firstDay - startOn; + if (diff < 0) + { + diff = diff + 7; + } + + for (var i = 0; i < diff; i++) + { + var currX = w * 0.0625 + i * cellSize; + c.rect(currX, h * 0.2686, cellSize, h * 0.1143); + c.fillAndStroke(); + var tmp = prevDays - diff + i + 1; + + c.text(currX + cellSize * 0.5, h * 0.2686 + cellSize * 0.5, 0, 0, tmp.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + x = diff; + } + + //now we need to write the actual month days... + c.setFillColor(fillColor); + c.setStrokeColor(strokeColor); + //week begins in first row + var y = 0; + + for (var i = 0; i < days; i++) + { + var d = i + 1; + var currX = w * 0.0625 + x * cellSize; + var currY = h * 0.2686 + y * h * 0.1143; + + if (d === selDay) + { + selX = currX; + selY = currY; + } + else + { + c.rect(currX, currY, cellSize, h * 0.1143); + c.fillAndStroke(); + c.text(currX + cellSize * 0.5, currY + cellSize * 0.5, 0, 0, d.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (x < 6) + { + x++; + } + else + { + x = 0; + y++; + } + } + + var i = 1; + c.setFillColor(fillColor2); + + while (y < 6) + { + var currX = w * 0.0625 + x * cellSize; + var currY = h * 0.2686 + y * h * 0.1143; + c.rect(currX, currY, cellSize, h * 0.1143); + c.fillAndStroke(); + + c.text(currX + cellSize * 0.5, currY + cellSize * 0.5, 0, 0, i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + if (x < 6) + { + x++; + } + else + { + x = 0; + y++; + } + + i++; + } + + if (selX >= 0) + { + c.setStrokeColor('#ff0000'); + c.setStrokeWidth(2); + c.setFillColor(strokeColor2); + c.setFontColor(textColor2); + + c.rect(selX, selY, cellSize, h * 0.1143); + c.fillAndStroke(); + c.text(selX + cellSize * 0.5, selY + cellSize * 0.5, 0, 0, selDay.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupCalendar.prototype.cst.SHAPE_CALENDAR, mxShapeMockupCalendar); + +//********************************************************************************************************************************************************** +//Email Form +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupEmailForm(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupEmailForm, mxShape); + +mxShapeMockupEmailForm.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + SHOW_CC : 'showCC', + SHOW_BCC : 'showBCC', + TEXT_SIZE : 'textSize', + SHAPE_EMAIL_FORM : 'mxgraph.mockup.forms.emailForm' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupEmailForm.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontSize = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.TEXT_SIZE, '12'); + var showCC = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.SHOW_CC, 'true'); + var showBCC = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.SHOW_BCC, 'true'); + var tabX = fontSize * 4; + + var optCount = 0; + + if (showCC === 'true') + { + optCount++; + } + + if (showBCC === 'true') + { + optCount++; + } + + w = Math.max(w, fontSize * 5); + h = Math.max(h, fontSize * 10.5 + optCount * fontSize * 3); + + c.translate(x, y); + this.background(c, w, h, fontSize, tabX, showCC, showBCC); + c.setShadow(false); + this.foreground(c, w, h, fontSize, tabX, showCC, showBCC); +}; + +mxShapeMockupEmailForm.prototype.background = function(c, w, h, fontSize, tabX, showCC, showBCC) +{ + var messX = fontSize * 9; + + if (showCC === 'true') + { + messX = messX + fontSize * 3; + c.rect(tabX, fontSize * 9, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + } + + if (showBCC === 'true') + { + c.rect(tabX, messX, w - tabX, fontSize * 1.5); + messX = messX + fontSize * 3; + c.fillAndStroke(); + } + + c.rect(tabX, 0, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(tabX, fontSize * 3, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(tabX, fontSize * 6, w - tabX, fontSize * 1.5); + c.fillAndStroke(); + c.rect(0, messX, w, h - messX); + c.fillAndStroke(); +}; + +mxShapeMockupEmailForm.prototype.foreground = function(c, w, h, fontSize, tabX, showCC, showBCC) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.MAIN_TEXT, 'john@jgraph.com,Greeting,fred@jgraph.com,,,Lorem ipsum').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupEmailForm.prototype.cst.TEXT_COLOR, '#666666'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + c.text(tabX - fontSize * 0.5, fontSize * 0.75, 0, 0, 'From', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX - fontSize * 0.5, fontSize * 3.75, 0, 0, 'Subject', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX - fontSize * 0.5, fontSize * 6.75, 0, 0, 'To', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(tabX + fontSize * 0.5, fontSize * 0.75, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 3.75, 0, 0, mainText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 6.75, 0, 0, mainText[2], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var messX = fontSize * 9; + + if (showCC === 'true') + { + messX = messX + fontSize * 3; + c.text(tabX - fontSize * 0.5, fontSize * 9.75, 0, 0, 'CC', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, fontSize * 9.75, 0, 0, mainText[3], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (showBCC === 'true') + { + c.text(tabX - fontSize * 0.5, messX + fontSize * 0.75, 0, 0, 'BCC', mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(tabX + fontSize * 0.5, messX + fontSize * 0.75, 0, 0, mainText[4], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + messX = messX + fontSize * 3; + } + + c.text(fontSize * 0.5, messX + fontSize * 0.75, 0, 0, mainText[5], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupEmailForm.prototype.cst.SHAPE_EMAIL_FORM, mxShapeMockupEmailForm); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupFormsRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupFormsRRect, mxShape); + +mxShapeMockupFormsRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.forms.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupFormsRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupFormsRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupFormsRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsRRect.prototype.cst.RRECT, mxShapeMockupFormsRRect); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupFormsAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupFormsAnchor, mxShape); + +mxShapeMockupFormsAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.forms.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupFormsAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsAnchor.prototype.cst.ANCHOR, mxShapeMockupFormsAnchor); + +//********************************************************************************************************************************************************** +//Checkbox +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupFormsCheckbox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupFormsCheckbox, mxShape); + +mxShapeMockupFormsCheckbox.prototype.cst = { + CHECKBOX : 'mxgraph.mockup.forms.checkbox' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupFormsCheckbox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsCheckbox.prototype.cst.CHECKBOX, mxShapeMockupFormsCheckbox); + +//********************************************************************************************************************************************************** +//U Rect +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupFormsURect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupFormsURect, mxShape); + +mxShapeMockupFormsURect.prototype.cst = { + U_RECT : 'mxgraph.mockup.forms.uRect' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupFormsURect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFormsURect.prototype.cst.U_RECT, mxShapeMockupFormsURect); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupGraphics.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupGraphics.js new file mode 100644 index 0000000000000..63d079ac2d30c --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupGraphics.js @@ -0,0 +1,1235 @@ +/** + * $Id: mxMockupGraphics.js,v 1.5 2013/05/22 12:28:49 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Bar Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupBarChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupBarChart, mxShape); + +mxShapeMockupBarChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + FILL_COLOR2 : 'fillColor2', + FILL_COLOR3 : 'fillColor3', + SHAPE_BAR_CHART : 'mxgraph.mockup.graphics.barChart' +}; + +mxShapeMockupBarChart.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Stroke3 Color', type: 'color'}, + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Fill3 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupBarChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, x, y, w, h); + + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') + { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupBarChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBarChart.prototype.bars = function(c, x, y, w, h) +{ + var barStroke = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupBarChart.prototype.cst.FILL_COLOR3, '#dddddd'); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + c.rect(0, h * 0.2, w * 0.75, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.45, w * 0.6, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.7, w * 0.95, h * 0.05); + c.fillAndStroke(); + + c.setFillColor(barFill2); + c.rect(0, h * 0.25, w * 0.85, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.5, w * 0.65, h * 0.05); + c.fillAndStroke(); + c.rect(0, h * 0.75, w * 0.8, h * 0.05); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + + c.setShadow(false); + c.begin(); + c.moveTo(0,0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBarChart.prototype.cst.SHAPE_BAR_CHART, mxShapeMockupBarChart); + +//********************************************************************************************************************************************************** +//Column Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupColumnChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupColumnChart, mxShape); + +mxShapeMockupColumnChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + FILL_COLOR2 : 'fillColor2', + FILL_COLOR3 : 'fillColor3', + SHAPE_COLUMN_CHART : 'mxgraph.mockup.graphics.columnChart' +}; + +mxShapeMockupColumnChart.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Bar Stroke Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Coord System Color', type: 'color'}, + {name: 'fillColor2', dispName: 'Bar1 Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Bar2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupColumnChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, x, y, w, h); + + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') + { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupColumnChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupColumnChart.prototype.bars = function(c, x, y, w, h) +{ + var barStroke = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupColumnChart.prototype.cst.FILL_COLOR3, '#dddddd'); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + c.rect(w * 0.2, h * 0.25, w * 0.05, h * 0.75); + c.fillAndStroke(); + c.rect(w * 0.45, h * 0.4, w * 0.05, h * 0.6); + c.fillAndStroke(); + c.rect(w * 0.7, h * 0.05, w * 0.05, h * 0.95); + c.fillAndStroke(); + + c.setFillColor(barFill2); + c.rect(w * 0.25, h * 0.15, w * 0.05, h * 0.85); + c.fillAndStroke(); + c.rect(w * 0.5, h * 0.35, w * 0.05, h * 0.65); + c.fillAndStroke(); + c.rect(w * 0.75, h * 0.2, w * 0.05, h * 0.8); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + + c.setShadow(false); + + c.begin(); + c.moveTo(0,0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupColumnChart.prototype.cst.SHAPE_COLUMN_CHART, mxShapeMockupColumnChart); + +//********************************************************************************************************************************************************** +//Line Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupLineChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupLineChart, mxShape); + +mxShapeMockupLineChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + STROKE_COLOR4 : 'strokeColor4', + SHAPE_LINE_CHART : 'mxgraph.mockup.graphics.lineChart' +}; + +mxShapeMockupLineChart.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Coord. System Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Line1 Color', type: 'color'}, + {name: 'strokeColor4', dispName: 'Line2 Color', type: 'color'}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupLineChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, x, y, w, h); + + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') + { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupLineChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupLineChart.prototype.bars = function(c, x, y, w, h) +{ + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR2, '#666666'); + var line1Stroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR3, '#008cff'); + var line2Stroke = mxUtils.getValue(this.style, mxShapeMockupLineChart.prototype.cst.STROKE_COLOR4, '#dddddd'); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(line2Stroke); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3, h * 0.5); + c.lineTo(w * 0.6, h * 0.74); + c.lineTo(w * 0.9, h * 0.24); + c.stroke(); + + c.setStrokeColor(line1Stroke); + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.3, h * 0.65); + c.lineTo(w * 0.6, h * 0.6); + c.lineTo(w * 0.9, h * 0.35); + c.stroke(); + + c.setStrokeColor(coordStroke); + c.setShadow(false); + + c.begin(); + c.moveTo(0,0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLineChart.prototype.cst.SHAPE_LINE_CHART, mxShapeMockupLineChart); + +//********************************************************************************************************************************************************** +//Pie Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupPieChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupPieChart, mxShape); + +mxShapeMockupPieChart.prototype.cst = { + PARTS : 'parts', + PART_COLORS : 'partColors', + SHAPE_PIE_CHART : 'mxgraph.mockup.graphics.pieChart' +}; + +mxShapeMockupPieChart.prototype.customProperties = [ + {name: 'partsCount', dispName: 'partsCount', type: 'int', defVal: 4, dependentProps: ['partColors', 'parts']}, + {name: 'partColors', dispName: 'Part Colors', type: 'staticArr', subType: 'color', sizeProperty: 'partsCount', subDefVal: '#FFFFFF'}, + {name: 'parts', dispName: 'Part Sizes', type: 'staticArr', subType: 'int', sizeProperty: 'partsCount', subDefVal: '10'}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupPieChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupPieChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPieChart.prototype.foreground = function(c, x, y, w, h) +{ + var parts = mxUtils.getValue(this.style, mxShapeMockupPieChart.prototype.cst.PARTS, '10,20,30').toString().split(','); + var partNum = parts.length; + var partColors = mxUtils.getValue(this.style, mxShapeMockupPieChart.prototype.cst.PART_COLORS, '#333333,#666666,#999999').toString().split(','); + var total = 0; + + for (var i = 0; i < partNum; i++) + { + total = total + parseInt(parts[i], 10); + } + + + for (var i = 0; i < partNum; i++) + { + if (partColors.length > i) + { + c.setFillColor(partColors[i]); + } + else + { + c.setFillColor('#ff0000'); + } + + var beginPerc = 0; + var endPerc = 0; + var currPerc = parseInt(parts[i], 10) / total; + + if (currPerc === 0.5) + { + currPerc = 0.501; + } + + for (var j = 0; j < i; j++) + { + beginPerc = beginPerc + parseInt(parts[j], 10) / total; + } + + endPerc = currPerc + beginPerc; + var startAngle = 2 * Math.PI * beginPerc; + var endAngle = 2 * Math.PI * endPerc; + + var x1 = w * 0.5 - w * Math.sin(startAngle) * 0.5; + var y1 = h * 0.5 - h * Math.cos(startAngle) * 0.5; + var x2 = w * 0.5 - w * Math.sin(endAngle) * 0.5; + var y2 = h * 0.5 - h * Math.cos(endAngle) * 0.5; + var largeArc = 1; + var sweep = 1; + + if (endPerc - beginPerc < 0.5) + { + largeArc = 0; + } + + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(x2, y2); + c.arcTo(w * 0.5, h * 0.5, 0, largeArc, 1, x1, y1); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupPieChart.prototype.cst.SHAPE_PIE_CHART, mxShapeMockupPieChart); + +//********************************************************************************************************************************************************** +//Icon Grid (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupIconGrid(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupIconGrid, mxShape); + +mxShapeMockupIconGrid.prototype.cst = { + GRID_SIZE : 'gridSize', + SHAPE_ICON_GRID : 'mxgraph.mockup.graphics.iconGrid' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupIconGrid.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxShapeMockupIconGrid.prototype.cst.GRID_SIZE, '3,3').toString().split(','); + this.background(c, w, h, gridSize); + c.setShadow(false); + + this.foreground(c, w, h, gridSize); +}; + +mxShapeMockupIconGrid.prototype.background = function(c, w, h, gridSize) +{ + var boxSizeX = w / (parseInt(gridSize[0],10) + (gridSize[0]-1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1],10) + (gridSize[1]-1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) + { + for (var j = 0; j < gridSize[1]; j++) + { + c.rect(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j, boxSizeX, boxSizeY); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupIconGrid.prototype.foreground = function(c, w, h, gridSize) +{ + var boxSizeX = w / (parseInt(gridSize[0],10) + (gridSize[0]-1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1],10) + (gridSize[1]-1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) + { + for (var j = 0; j < gridSize[1]; j++) + { + c.begin(); + c.moveTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j + boxSizeY); + c.moveTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j + boxSizeY); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupIconGrid.prototype.cst.SHAPE_ICON_GRID, mxShapeMockupIconGrid); + +//********************************************************************************************************************************************************** +//Bubble Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupBubbleChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupBubbleChart, mxShape); + +mxShapeMockupBubbleChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + FILL_COLOR2 : 'fillColor2', + FILL_COLOR3 : 'fillColor3', + SHAPE_BUBBLE_CHART : 'mxgraph.mockup.graphics.bubbleChart' +}; + +mxShapeMockupBubbleChart.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Bubble Stroke Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Coord. System Color', type: 'color'}, + {name: 'fillColor2', dispName: 'Bubble1 Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Bubble2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupBubbleChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, x, y, w, h); + + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') + { + c.setShadow(false); + } + + this.bars(c, x, y, w, h); +}; + +mxShapeMockupBubbleChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBubbleChart.prototype.bars = function(c, x, y, w, h) +{ + var barStroke = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.STROKE_COLOR2, 'none'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.STROKE_COLOR3, '#666666'); + var barFill1 = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.FILL_COLOR2, '#008cff'); + var barFill2 = mxUtils.getValue(this.style, mxShapeMockupBubbleChart.prototype.cst.FILL_COLOR3, '#dddddd'); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + c.setStrokeColor(barStroke); + c.setFillColor(barFill1); + + var cx = w * 0.4; + var cy = h * 0.45; + var r = Math.min(h, w) * 0.14; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + cx = w * 0.1; + cy = h * 0.8; + r = Math.min(h, w) * 0.1; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + cx = w * 0.7; + cy = h * 0.7; + r = Math.min(h, w) * 0.22; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + c.setFillColor(barFill2); + cx = w * 0.15; + cy = h * 0.25; + r = Math.min(h, w) * 0.19; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + cx = w * 0.48; + cy = h * 0.7; + r = Math.min(h, w) * 0.12; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + cx = w * 0.74; + cy = h * 0.17; + r = Math.min(h, w) * 0.1; + c.ellipse(cx - r, cy - r, 2 * r, 2 * r); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + + c.setShadow(false); + c.begin(); + c.moveTo(0,0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupBubbleChart.prototype.cst.SHAPE_BUBBLE_CHART, mxShapeMockupBubbleChart); + +//********************************************************************************************************************************************************** +//Gauge +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupGauge(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.gaugePos = 25; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupGauge, mxShape); + +mxShapeMockupGauge.prototype.cst = { + SCALE_COLORS : 'scaleColors', + GAUGE_LABELS : 'gaugeLabels', + NEEDLE_COLOR : 'needleColor', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + GAUGE_POS : 'gaugePos', + SHAPE_GAUGE : 'mxgraph.mockup.graphics.gauge' +}; + +mxShapeMockupGauge.prototype.customProperties = [ + {name: 'scaleColors', dispName: 'Scale Colors', type: 'String'}, + {name: 'needleColor', dispName: 'Needle Color', type: 'color'}, + {name: 'gaugePos', dispName: 'Needle Position', type: 'float', min:0, max:100, defVal:25} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupGauge.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupGauge.prototype.background = function(c, w, h) +{ + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupGauge.prototype.foreground = function(c, w, h) +{ + var gaugePos = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.GAUGE_POS, '0'); + var scaleColors = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.SCALE_COLORS, '#888888,#aaaaaa,#444444').toString().split(','); + var gaugeLabels = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.GAUGE_LABELS, 'CPU[%],0,100').toString().split(','); + var needleColor = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.NEEDLE_COLOR, '#008cff'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.TEXT_COLOR, '#666666'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupGauge.prototype.cst.TEXT_SIZE, '12'); + + gaugePos = Math.max(0, gaugePos); + gaugePos = Math.min(100, gaugePos); + + c.setFillColor(scaleColors[1]); + c.begin(); + c.moveTo(w * 0.05, h * 0.5); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.95, h * 0.5); + c.lineTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 0, 0, h * 0.5); + c.close(); + c.fill(); + + c.setFillColor(scaleColors[0]); + c.begin(); + c.moveTo(w * 0.05, h * 0.5); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 0, w * 0.182, h * 0.818); + c.lineTo(w * 0.146, h * 0.854); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.close(); + c.fill(); + + c.setFillColor(scaleColors[2]); + c.begin(); + c.moveTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.854, h * 0.854); + c.lineTo(w * 0.818, h * 0.818); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 0, w * 0.95, h * 0.5); + c.close(); + c.fill(); + + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.3, 0, 0, gaugeLabels[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.2, h * 0.85, 0, 0, gaugeLabels[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8, h * 0.85, 0, 0, gaugeLabels[2], mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var needlePos = (0.75 * (2 * Math.PI * parseFloat(gaugePos) / 100) + 1.25 * Math.PI); + + var x1 = w * 0.5 + w * 0.38 * Math.sin(needlePos); + var y1 = h * 0.5 - h * 0.38 * Math.cos(needlePos); + var x2 = 0; + var y2 = 0; + c.setFillColor(needleColor); + c.begin(); + c.moveTo(x1, y1); + + x1 = w * 0.5 + w * 0.05 * Math.cos(needlePos); + y1 = h * 0.5 + h * 0.05 * Math.sin(needlePos); + c.lineTo(x1, y1); + + x2 = w * 0.5 + w * (-0.05) * Math.sin(needlePos); + y2 = h * 0.5 - h * (-0.05) * Math.cos(needlePos); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 1, x2, y2); + + x1 = x2; + y1 = y2; + x2 = w * 0.5 - w * 0.05 * Math.cos(needlePos); + y2 = h * 0.5 - h * 0.05 * Math.sin(needlePos); + c.arcTo(w * 0.05, h * 0.05, 0, 0, 1, x2, y2); + c.close(); + c.fill(); + + c.setFillColor(fillColor); + c.begin(); + c.moveTo(w * 0.49, h * 0.49); + c.lineTo(w * 0.51, h * 0.49); + c.lineTo(w * 0.51, h * 0.51); + c.lineTo(w * 0.49, h * 0.51); + c.close(); + c.fill(); + + c.begin(); + c.ellipse(0, 0, w, h); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.146, h * 0.854); + c.lineTo(w * 0.219, h * 0.781); + c.moveTo(w * 0.854, h * 0.854); + c.lineTo(w * 0.781, h * 0.781); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGauge.prototype.cst.SHAPE_GAUGE, mxShapeMockupGauge); + +Graph.handleFactory[mxShapeMockupGauge.prototype.cst.SHAPE_GAUGE] = function(state) +{ + var handles = [Graph.createHandle(state, ['gaugePos'], function(bounds) + { + var gaugePos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'gaugePos', this.gaugePos)))); + + return new mxPoint(bounds.x + bounds.width * 0.2 + gaugePos * 0.6 * bounds.width / 100, bounds.y + bounds.height * 0.8); + }, function(bounds, pt) + { + this.state.style['gaugePos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Plot Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupPlotChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupPlotChart, mxShape); + +mxShapeMockupPlotChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SHAPES_COLORS : 'fillColor2', + SHAPE_PLOT_CHART : 'mxgraph.mockup.graphics.plotChart' +}; + +mxShapeMockupPlotChart.prototype.customProperties = [ + {name: 'strokeColor2', dispName: 'Bubble Stroke Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Coord. System Color', type: 'color'}, + {name: 'fillColor2', dispName: 'Shapes Color', type: 'string'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupPlotChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, x, y, w, h); + + var bgFill = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + + if (bgFill !== 'none') + { + c.setShadow(false); + } + + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupPlotChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupPlotChart.prototype.foreground = function(c, x, y, w, h) +{ + var shapeStroke = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.STROKE_COLOR2, '#dddddd'); + var coordStroke = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.STROKE_COLOR3, '#666666'); + var shapesColors = mxUtils.getValue(this.style, mxShapeMockupPlotChart.prototype.cst.SHAPES_COLORS, '#00aaff,#0044ff,#008cff').toString().split(','); + + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + var shapeSize = Math.min(w, h) * 0.03; + + c.setStrokeColor(shapeStroke); + c.setFillColor(shapesColors[0]); + + var cx = w * 0.2; + var cy = h * 0.8; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + cx = w * 0.3; + cy = h * 0.65; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + cx = w * 0.6; + cy = h * 0.44; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + cx = w * 0.85; + cy = h * 0.9; + c.begin(); + c.moveTo(cx - shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + c.setFillColor(shapesColors[1]); + cx = w * 0.08; + cy = h * 0.65; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + cx = w * 0.58; + cy = h * 0.85; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + cx = w * 0.72; + cy = h * 0.92; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.5); + c.lineTo(cx + shapeSize * 0.5, cy + shapeSize * 0.5); + c.lineTo(cx - shapeSize * 0.5, cy + shapeSize * 0.5); + c.close(); + c.fillAndStroke(); + + c.setFillColor(shapesColors[2]); + cx = w * 0.32; + cy = h * 0.28; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + + cx = w * 0.92; + cy = h * 0.45; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + + cx = w * 0.81; + cy = h * 0.37; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + + cx = w * 0.51; + cy = h * 0.7; + c.begin(); + c.moveTo(cx, cy - shapeSize * 0.75); + c.lineTo(cx + shapeSize * 0.75, cy); + c.lineTo(cx, cy + shapeSize * 0.75); + c.lineTo(cx - shapeSize * 0.75, cy); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth * 2); + c.setStrokeColor(coordStroke); + + c.setShadow(false); + c.begin(); + c.moveTo(0,0); + c.lineTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPlotChart.prototype.cst.SHAPE_PLOT_CHART, mxShapeMockupPlotChart); + +//********************************************************************************************************************************************************** +//Gantt Chart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupGanttChart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupGanttChart, mxShape); + +mxShapeMockupGanttChart.prototype.cst = { + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3', + SHAPES_COLORS : 'fillColor2', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_GANTT_CHART : 'mxgraph.mockup.graphics.ganttChart' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupGanttChart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupGanttChart.prototype.background = function(c, x, y, w, h, bgColor, frameColor) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupGanttChart.prototype.foreground = function(c, x, y, w, h) +{ + var shapesColors = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.SHAPES_COLORS, '#888888,#bbbbbb').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.TEXT_COLOR, '#666666'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupGanttChart.prototype.cst.TEXT_SIZE, '#12'); + + c.begin(); + c.moveTo(0, h * 0.13); + c.lineTo(w, h * 0.13); + c.moveTo(w * 0.4, 0); + c.lineTo(w * 0.4, h); + c.moveTo(w * 0.4, h * 0.065); + c.lineTo(w, h * 0.065); + c.moveTo(w * 0.03, 0); + c.lineTo(w * 0.03, h * 0.13); + c.moveTo(w * 0.1, 0); + c.lineTo(w * 0.1, h * 0.13); + c.moveTo(w * 0.315, 0); + c.lineTo(w * 0.315, h * 0.13); + c.moveTo(w * 0.45, h * 0.065); + c.lineTo(w * 0.45, h * 0.13); + c.moveTo(w * 0.5, h * 0.065); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.55, h * 0.065); + c.lineTo(w * 0.55, h * 0.13); + c.moveTo(w * 0.6, h * 0.065); + c.lineTo(w * 0.6, h); + c.moveTo(w * 0.65, h * 0.065); + c.lineTo(w * 0.65, h * 0.13); + c.moveTo(w * 0.7, h * 0.065); + c.lineTo(w * 0.7, h); + c.moveTo(w * 0.75, 0); + c.lineTo(w * 0.75, h * 0.13); + c.moveTo(w * 0.8, h * 0.065); + c.lineTo(w * 0.8, h); + c.moveTo(w * 0.85, h * 0.065); + c.lineTo(w * 0.85, h * 0.13); + c.moveTo(w * 0.9, h * 0.065); + c.lineTo(w * 0.9, h); + c.moveTo(w * 0.95, h * 0.065); + c.lineTo(w * 0.95, h * 0.13); + c.stroke(); + + c.setFillColor(shapesColors[0]); + c.begin(); + c.moveTo(w * 0.41, h * 0.15); + c.lineTo(w * 0.64, h * 0.15); + c.lineTo(w * 0.64, h * 0.18); + c.lineTo(w * 0.625, h * 0.21); + c.lineTo(w * 0.61, h * 0.18); + c.lineTo(w * 0.44, h * 0.18); + c.lineTo(w * 0.425, h * 0.21); + c.lineTo(w * 0.41, h * 0.18); + c.close(); + c.moveTo(w * 0.41, h * 0.24); + c.lineTo(w * 0.49, h * 0.24); + c.lineTo(w * 0.49, h * 0.275); + c.lineTo(w * 0.41, h * 0.275); + c.close(); + c.moveTo(w * 0.46, h * 0.31); + c.lineTo(w * 0.64, h * 0.31); + c.lineTo(w * 0.64, h * 0.345); + c.lineTo(w * 0.46, h * 0.345); + c.close(); + c.moveTo(w * 0.56, h * 0.39); + c.lineTo(w * 0.69, h * 0.39); + c.lineTo(w * 0.69, h * 0.425); + c.lineTo(w * 0.56, h * 0.425); + c.close(); + c.fill(); + + c.setFillColor(shapesColors[1]); + c.begin(); + c.moveTo(w * 0.46, h * 0.32); + c.lineTo(w * 0.58, h * 0.32); + c.lineTo(w * 0.58, h * 0.335); + c.lineTo(w * 0.46, h * 0.335); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGanttChart.prototype.cst.SHAPE_GANTT_CHART, mxShapeMockupGanttChart); + +//********************************************************************************************************************************************************** +//Simple Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupSimpleIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupSimpleIcon, mxShape); + +mxShapeMockupSimpleIcon.prototype.cst = { + SIMPLE_ICON : 'mxgraph.mockup.graphics.simpleIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupSimpleIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.moveTo(0, h); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupSimpleIcon.prototype.cst.SIMPLE_ICON, mxShapeMockupSimpleIcon); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupGraphicsAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupGraphicsAnchor, mxShape); + +mxShapeMockupGraphicsAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.graphics.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupGraphicsAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupGraphicsAnchor.prototype.cst.ANCHOR, mxShapeMockupGraphicsAnchor); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupGraphicsRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupGraphicsRRect, mxShape); + +mxShapeMockupGraphicsRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.graphics.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupGraphicsRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupGraphicsRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupGraphicsRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupGraphicsRRect.prototype.cst.RRECT, mxShapeMockupGraphicsRRect); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMarkup.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMarkup.js new file mode 100644 index 0000000000000..dceb14347269c --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMarkup.js @@ -0,0 +1,200 @@ +/** + * $Id: mxMockupMarkup.js,v 1.5 2013/02/27 14:30:39 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Horizontal Curly Brace +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupCurlyBrace(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupCurlyBrace, mxShape); + +mxShapeMockupCurlyBrace.prototype.cst = { + SHAPE_CURLY_BRACE : 'mxgraph.mockup.markup.curlyBrace' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupCurlyBrace.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupCurlyBrace.prototype.background = function(c, x, y, w, h) +{ + var midY = h * 0.5; + var rSize = Math.min(w * 0.125, midY); + c.begin(); + c.moveTo(0, midY + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, midY); + c.lineTo(w * 0.5 - rSize, midY); + c.arcTo(rSize, rSize, 0, 0, 0, w * 0.5, midY - rSize); + c.arcTo(rSize, rSize, 0, 0, 0, w * 0.5 + rSize, midY); + c.lineTo(w - rSize, midY); + c.arcTo(rSize, rSize, 0, 0, 1, w, midY + rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCurlyBrace.prototype.cst.SHAPE_CURLY_BRACE, mxShapeMockupCurlyBrace); + +//********************************************************************************************************************************************************** +//Line +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupLine(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupLine, mxShape); + +mxShapeMockupLine.prototype.cst = { + SHAPE_LINE : 'mxgraph.mockup.markup.line' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupLine.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLine.prototype.cst.SHAPE_LINE, mxShapeMockupLine); + +//********************************************************************************************************************************************************** +//Scratch Out +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupScratchOut(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupScratchOut, mxShape); + +mxShapeMockupScratchOut.prototype.cst = { + SHAPE_SCRATCH_OUT : 'mxgraph.mockup.markup.scratchOut' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupScratchOut.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.038, h * 0.095); + c.curveTo(w * 0.038, h * 0.095, w * 0.289, h * -0.045, w * 0.186, h * 0.05); + c.curveTo(w * 0.084, h * 0.145, w * -0.046, h * 0.251, w * 0.072, h * 0.208); + c.curveTo(w * 0.191, h * 0.164, w * 0.522, h * -0.09, w * 0.366, h * 0.062); + c.curveTo(w * 0.21, h * 0.215, w * -0.094, h * 0.38, w * 0.108, h * 0.304); + c.curveTo(w * 0.309, h * 0.228, w * 0.73, h * -0.126, w * 0.544, h * 0.096); + c.curveTo(w * 0.358, h * 0.319, w * -0.168, h * 0.592, w * 0.108, h * 0.476); + c.curveTo(w * 0.382, h * 0.36, w * 0.972, h * -0.138, w * 0.779, h * 0.114); + c.curveTo(w * 0.585, h * 0.365, w * -0.12, h * 0.688, w * 0.071, h * 0.639); + c.curveTo(w * 0.262, h * 0.59, w * 1.174, h * 0.012, w * 0.936, h * 0.238); + c.curveTo(w * 0.699, h * 0.462, w * -0.216, h * 0.855, w * 0.085, h * 0.806); + c.curveTo(w * 0.386, h * 0.758, w * 1.185, h * 0.26, w * 0.935, h * 0.534); + c.curveTo(w * 0.685, h * 0.808, w * -0.186, h * 0.94, w * 0.236, h * 0.895); + c.curveTo(w * 0.659, h * 0.85, w * 1.095, h * 0.608, w * 0.905, h * 0.769); + c.curveTo(w * 0.715, h * 0.93, w * 0.286, h * 0.962, w * 0.661, h * 0.931); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupScratchOut.prototype.cst.SHAPE_SCRATCH_OUT, mxShapeMockupScratchOut); + +//********************************************************************************************************************************************************** +//Red X +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRedX(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRedX, mxShape); + +mxShapeMockupRedX.prototype.cst = { + SHAPE_RED_X : 'mxgraph.mockup.markup.redX' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRedX.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.9, 0); + c.lineTo(w, h * 0.1); + c.lineTo(w * 0.6, h * 0.5); + c.lineTo(w, h * 0.9); + c.lineTo(w * 0.9, h); + c.lineTo(w * 0.5, h * 0.6); + c.lineTo(w * 0.1, h); + c.lineTo(0, h * 0.9); + c.lineTo(w * 0.4, h * 0.5); + c.lineTo(0, h * 0.1); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRedX.prototype.cst.SHAPE_RED_X, mxShapeMockupRedX); \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMisc.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMisc.js new file mode 100644 index 0000000000000..b774719e764de --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupMisc.js @@ -0,0 +1,1680 @@ +/** + * $Id: mxMockupMisc.js,v 1.5 2013/02/28 13:50:11 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Playback Controls +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupPlaybackControls(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupPlaybackControls, mxShape); + +mxShapeMockupPlaybackControls.prototype.cst = { + SHAPE_PLAYBACK_CONTROLS : 'mxgraph.mockup.misc.playbackControls', + FILL_COLOR2 : 'fillColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR3 : 'fillColor3', + STROKE_COLOR3 : 'strokeColor3' +}; + +mxShapeMockupPlaybackControls.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Outline Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Symbol Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Outline Stroke Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Symbol Stroke Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupPlaybackControls.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var controlBarHeight = 30; + var buttonSize = 22; + var h = Math.max(h, controlBarHeight); + var w = Math.max(225, w); + + c.translate(x, y); + this.background(c, w, h, controlBarHeight); + c.setShadow(false); + this.foreground(c, w, h, controlBarHeight, buttonSize); +}; + +mxShapeMockupPlaybackControls.prototype.background = function(c, w, h, controlBarHeight) +{ + c.rect(0, (h - controlBarHeight) * 0.5, w, controlBarHeight); + c.fillAndStroke(); +} + +mxShapeMockupPlaybackControls.prototype.foreground = function(c, w, h, controlBarHeight, buttonSize) +{ + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.STROKE_COLOR2, 'none'); + var fillColor3 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.FILL_COLOR3, '#ffffff'); + var strokeColor3 = mxUtils.getValue(this.style, mxShapeMockupPlaybackControls.prototype.cst.STROKE_COLOR3, 'none'); + + c.setStrokeColor(strokeColor2); + c.setFillColor(fillColor2); + c.ellipse(10, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(40, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(70, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(100, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(130, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(160, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + c.ellipse(190, h * 0.5 - buttonSize * 0.5, buttonSize, buttonSize); + c.fillAndStroke(); + + + c.setStrokeColor(strokeColor3); + c.setFillColor(fillColor3); + // start + var t = h * 0.5 - controlBarHeight * 0.5; + c.begin(); + c.moveTo(16, t + 10); + c.lineTo(16, t + 20); + c.lineTo(18, t + 20); + c.lineTo(18, t + 10); + c.close(); + c.moveTo(20, t + 15); + c.lineTo(25, t + 20); + c.lineTo(25, t + 10); + c.close(); + c.fillAndStroke(); + // rewind + c.begin(); + c.moveTo(44, t + 15); + c.lineTo(49, t + 20); + c.lineTo(49, t + 10); + c.close(); + c.moveTo(51, t + 15); + c.lineTo(56, t + 20); + c.lineTo(56, t + 10); + c.close(); + c.fillAndStroke(); + // back + c.begin(); + c.moveTo(77, t + 15); + c.lineTo(82, t + 20); + c.lineTo(82, t + 10); + c.close(); + c.fillAndStroke(); + // play/pause + c.begin(); + c.moveTo(108, t + 10); + c.lineTo(108, t + 20); + c.lineTo(110, t + 20); + c.lineTo(110, t + 10); + c.close(); + c.moveTo(117, t + 15); + c.lineTo(112, t + 20); + c.lineTo(112, t + 10); + c.close(); + c.fillAndStroke(); + // forward + c.begin(); + c.moveTo(144, t + 15); + c.lineTo(139, t + 20); + c.lineTo(139, t + 10); + c.close(); + c.fillAndStroke(); + // fast forward + c.begin(); + c.moveTo(171, t + 15); + c.lineTo(166, t + 20); + c.lineTo(166, t + 10); + c.close(); + c.moveTo(178, t + 15); + c.lineTo(173, t + 20); + c.lineTo(173, t + 10); + c.close(); + c.fillAndStroke(); + // end + c.begin(); + c.moveTo(203, t + 10); + c.lineTo(203, t + 20); + c.lineTo(205, t + 20); + c.lineTo(205, t + 10); + c.close(); + c.moveTo(201, t + 15); + c.lineTo(196, t + 20); + c.lineTo(196, t + 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPlaybackControls.prototype.cst.SHAPE_PLAYBACK_CONTROLS, mxShapeMockupPlaybackControls); + +//********************************************************************************************************************************************************** +//Progress Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupProgressBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.barPos = 20; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupProgressBar, mxShape); + +mxShapeMockupProgressBar.prototype.cst = { + SHAPE_PROGRESS_BAR : 'mxgraph.mockup.misc.progressBar', + BAR_POS : 'barPos', + FILL_COLOR2 : 'fillColor2' +}; + +mxShapeMockupProgressBar.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Outline Color', type: 'color'}, + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:80} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupProgressBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupProgressBar.prototype.background = function(c, w, h) +{ + c.roundrect(0, h * 0.5 - 5, w, 10, 5, 5); + c.fillAndStroke(); +}; + +mxShapeMockupProgressBar.prototype.foreground = function(c, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupProgressBar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var barPos = mxUtils.getValue(this.style, mxShapeMockupProgressBar.prototype.cst.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setFillColor(fillColor2); + c.roundrect(0, h * 0.5 - 5, truePos, 10, 5, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupProgressBar.prototype.cst.SHAPE_PROGRESS_BAR, mxShapeMockupProgressBar); + +Graph.handleFactory[mxShapeMockupProgressBar.prototype.cst.SHAPE_PROGRESS_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Shopping Cart +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupShoppingCart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupShoppingCart, mxShape); + +mxShapeMockupShoppingCart.prototype.cst = { + SHAPE_SHOPPING_CART : 'mxgraph.mockup.misc.shoppingCart' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupShoppingCart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.translate(x, y); + + c.setStrokeWidth(3); + c.begin(); + c.moveTo(w * 0.975, h * 0.025); + c.lineTo(w * 0.82, h * 0.055); + c.lineTo(w * 0.59, h * 0.66); + c.lineTo(w * 0.7, h * 0.765); + c.arcTo(w * 0.06, h * 0.06, 0, 0, 1, w * 0.665, h * 0.86); + c.lineTo(w * 0.05, h * 0.86); + c.moveTo(w * 0.74, h * 0.26); + c.lineTo(w * 0.03, h * 0.28); + c.lineTo(w * 0.065, h * 0.61); + c.lineTo(w * 0.59, h * 0.66); + c.stroke(); + + c.setStrokeWidth(1); + c.begin(); + c.moveTo(w * 0.15, h * 0.28); + c.lineTo(w * 0.15, h * 0.62); + c.moveTo(w * 0.265, h * 0.275); + c.lineTo(w * 0.265, h * 0.63); + c.moveTo(w * 0.38, h * 0.27); + c.lineTo(w * 0.38, h * 0.64); + c.moveTo(w * 0.495, h * 0.265); + c.lineTo(w * 0.495, h * 0.65); + c.moveTo(w * 0.61, h * 0.265); + c.lineTo(w * 0.61, h * 0.61); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.69, h * 0.405); + c.lineTo(w * 0.045, h * 0.405); + c.moveTo(w * 0.645, h * 0.52); + c.lineTo(w * 0.055, h * 0.52); + c.stroke(); + c.setFillColor(strokeColor); + c.ellipse(w * 0.075, h * 0.89, w * 0.1, h * 0.1); + c.fillAndStroke(); + c.ellipse(w * 0.62, h * 0.89, w * 0.1, h * 0.1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupShoppingCart.prototype.cst.SHAPE_SHOPPING_CART, mxShapeMockupShoppingCart); + +//********************************************************************************************************************************************************** +//Rating +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupRating(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupRating, mxShape); + +mxShapeMockupRating.prototype.cst = { + SHAPE_RATING : 'mxgraph.mockup.misc.rating', + RATING_STYLE : 'ratingStyle', + RATING_SCALE : 'ratingScale', + RATING_HEART : 'heart', + RATING_STAR : 'star', + EMPTY_FILL_COLOR : 'emptyFillColor', + GRADE : 'grade' +}; + +mxShapeMockupRating.prototype.customProperties = [ + {name: 'ratingStyle', dispName: 'Style', type: 'enum', + enumList: [{val: 'heart', dispName: 'Heart'}, {val: 'star', dispName: 'Star'}] + }, + {name: 'ratingScale', dispName: 'Max. Rating', type: 'int'}, + {name: 'grade', dispName: 'Current Rating', type: 'int'}, + {name: 'emptyFillColor', dispName: 'Fill2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupRating.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var ratingStyle = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.RATING_STYLE, mxShapeMockupRating.prototype.cst.RATING_STAR); + var grade = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.GRADE, '5'); + var ratingScale = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.RATING_SCALE, '10'); + + c.translate(x, y); + + if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_STAR) + { + for (var i = 0; i < grade; i++) + { + c.begin(); + c.moveTo(i * h * 1.5, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0); + c.lineTo(i * h * 1.5 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.5 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.5 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } + else if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_HEART) + { + for (var i = 0; i < grade; i++) + { + c.begin(); + c.moveTo(i * h * 1.5 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.5 + h * 0.558, h * 0.908, i * h * 1.5 + h * 0.778, h * 0.682, i * h * 1.5 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.5 + h * 1.039, h * 0.414, i * h * 1.5 + h * 1.036, h * 0.229, i * h * 1.5 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.812, 0, i * h * 1.5 + h * 0.631, 0, i * h * 1.5 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.408, 0, i * h * 1.5 + h * 0.227, 0, i * h * 1.5 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.03, h * 0.229, i * h * 1.5, h * 0.414, i * h * 1.5 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } + + var emptyFillColor = mxUtils.getValue(this.style, mxShapeMockupRating.prototype.cst.EMPTY_FILL_COLOR, '#ffffff'); + c.setFillColor(emptyFillColor); + + if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_STAR) + { + for (var i = grade; i < ratingScale; i++) + { + c.begin(); + c.moveTo(i * h * 1.5, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0); + c.lineTo(i * h * 1.5 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.5 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.5 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.5 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.5 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } + else if (ratingStyle === mxShapeMockupRating.prototype.cst.RATING_HEART) + { + for (var i = grade; i < ratingScale; i++) + { + c.begin(); + c.moveTo(i * h * 1.5 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.5 + h * 0.558, h * 0.908, i * h * 1.5 + h * 0.778, h * 0.682, i * h * 1.5 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.5 + h * 1.039, h * 0.414, i * h * 1.5 + h * 1.036, h * 0.229, i * h * 1.5 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.812, 0, i * h * 1.5 + h * 0.631, 0, i * h * 1.5 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.408, 0, i * h * 1.5 + h * 0.227, 0, i * h * 1.5 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.5 + h * 0.03, h * 0.229, i * h * 1.5, h * 0.414, i * h * 1.5 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRating.prototype.cst.SHAPE_RATING, mxShapeMockupRating); + +//********************************************************************************************************************************************************** +//Mail +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupMail(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupMail, mxShape); + +mxShapeMockupMail.prototype.cst = { + SHAPE_MAIL : 'mxgraph.mockup.misc.mail2' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupMail.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMail.prototype.cst.SHAPE_MAIL, mxShapeMockupMail); + +//********************************************************************************************************************************************************** +//Volume Slider +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupVolumeSlider(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.barPos = 80; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupVolumeSlider, mxShape); + +mxShapeMockupVolumeSlider.prototype.cst = { + SHAPE_VOLUME_SLIDER : 'mxgraph.mockup.misc.volumeSlider', + BAR_POS : 'barPos', + FILL_COLOR2 : 'fillColor2' +}; + +mxShapeMockupVolumeSlider.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'barPos', dispName: 'Handle Position', type: 'float'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupVolumeSlider.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var barPos = mxUtils.getValue(this.style, mxShapeMockupVolumeSlider.prototype.cst.BAR_POS, '80'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupVolumeSlider.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + //only the progress bar handle needs to be drawn + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var controlBarHeight = 25; + var h = Math.max(h, controlBarHeight); + var w = Math.max(w, 3.5 * controlBarHeight); + + var speakerStartX = w - controlBarHeight; + var speakerStartY = (h - controlBarHeight) * 0.5; + c.begin(); + c.moveTo(speakerStartX + controlBarHeight * 0.05, speakerStartY + controlBarHeight * 0.35); + c.lineTo(speakerStartX + controlBarHeight * 0.15, speakerStartY + controlBarHeight * 0.35); + c.lineTo(speakerStartX + controlBarHeight * 0.3, speakerStartY + controlBarHeight * 0.2); + c.lineTo(speakerStartX + controlBarHeight * 0.3, speakerStartY + controlBarHeight * 0.8); + c.lineTo(speakerStartX + controlBarHeight * 0.15, speakerStartY + controlBarHeight * 0.65); + c.lineTo(speakerStartX + controlBarHeight * 0.05, speakerStartY + controlBarHeight * 0.65); + c.close(); + c.fill(); + + //draw the handle based on barPos + var barMin = 0; + var barMax = w - controlBarHeight * 1.3; + var videoBarStartY = (h - controlBarHeight) * 0.5; + var barRange = barMax - barMin; + var barPos = barRange * barPos / 100; + var barEnd = barMin + barPos; + + var soundStartX = w - controlBarHeight; + var soundStartY = (h - controlBarHeight) * 0.5; + c.begin(); + c.moveTo(soundStartX + controlBarHeight * 0.4, soundStartY + controlBarHeight * 0.35); + c.arcTo(controlBarHeight * 0.2, controlBarHeight * 0.3, 0, 0, 1, soundStartX + controlBarHeight * 0.4, soundStartY + controlBarHeight * 0.65); + c.moveTo(soundStartX + controlBarHeight * 0.425, soundStartY + controlBarHeight * 0.25); + c.arcTo(controlBarHeight * 0.225, controlBarHeight * 0.35, 0, 0, 1, soundStartX + controlBarHeight * 0.425, soundStartY + controlBarHeight * 0.75); + c.moveTo(soundStartX + controlBarHeight * 0.5, soundStartY + controlBarHeight * 0.2); + c.arcTo(controlBarHeight * 0.25, controlBarHeight * 0.4, 0, 0, 1, soundStartX + controlBarHeight * 0.5, soundStartY + controlBarHeight * 0.8); + c.fillAndStroke(); + + //now we draw the video progress bar + var videoBarStartX = 0; + var videoBarStartY = (h - controlBarHeight) * 0.5; + var videoBarEndX = w - controlBarHeight * 1.3; + c.roundrect(videoBarStartX, videoBarStartY + controlBarHeight * 0.35, videoBarEndX, controlBarHeight * 0.3, 5, 5); + c.fill(); + c.setShadow(false); + c.setFillColor(fillColor2); + c.roundrect(barMin, videoBarStartY + controlBarHeight * 0.35, barEnd, controlBarHeight * 0.3, 5, 5); + c.fill(); + + + c.ellipse(barEnd - controlBarHeight * 0.25, videoBarStartY + controlBarHeight * 0.25, controlBarHeight * 0.5, controlBarHeight * 0.5); + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeMockupVolumeSlider.prototype.cst.SHAPE_VOLUME_SLIDER, mxShapeMockupVolumeSlider); + +Graph.handleFactory[mxShapeMockupVolumeSlider.prototype.cst.SHAPE_VOLUME_SLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + return new mxPoint(bounds.x + barPos * (bounds.width - 32.5) / 100, bounds.y + bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Edit Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupEdit(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupEdit, mxShape); + +mxShapeMockupEdit.prototype.cst = { + SHAPE_EDIT : 'mxgraph.mockup.misc.editIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupEdit.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.11, h * 0.8); + c.lineTo(w * 0.2, h * 0.89); + c.lineTo(w * 0.05, h * 0.95); + c.close(); + c.moveTo(w * 0.74, h * 0.16); + c.lineTo(w * 0.84, h * 0.26); + c.lineTo(w * 0.22, h * 0.88); + c.lineTo(w * 0.12, h * 0.78); + c.close(); + c.moveTo(w * 0.755, h * 0.145); + c.lineTo(w * 0.82, h * 0.08); + c.lineTo(w * 0.92, h * 0.18); + c.lineTo(w * 0.855, h * 0.245); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupEdit.prototype.cst.SHAPE_EDIT, mxShapeMockupEdit); + +//********************************************************************************************************************************************************** +//Print Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupPrint(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupPrint, mxShape); + +mxShapeMockupPrint.prototype.cst = { + SHAPE_PRINT : 'mxgraph.mockup.misc.printIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupPrint.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.15, h * 0.58); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.18, h * 0.55); + c.lineTo(w * 0.82, h * 0.55); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.85, h * 0.58); + c.lineTo(w * 0.85, h * 0.82); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.82, h * 0.85); + c.lineTo(w * 0.18, h * 0.85); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.15, h * 0.82); + c.close(); + c.moveTo(w * 0.7, h * 0.52); + c.lineTo(w * 0.3, h * 0.52); + c.lineTo(w * 0.3, h * 0.15); + c.lineTo(w * 0.55, h * 0.15); + c.lineTo(w * 0.55, h * 0.3); + c.lineTo(w * 0.7, h * 0.3); + c.close(); + c.moveTo(w * 0.57, h * 0.15); + c.lineTo(w * 0.7, h * 0.28); + c.lineTo(w * 0.57, h * 0.28); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPrint.prototype.cst.SHAPE_PRINT, mxShapeMockupPrint); + +//********************************************************************************************************************************************************** +//Print Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupShare(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupShare, mxShape); + +mxShapeMockupShare.prototype.cst = { + SHAPE_SHARE : 'mxgraph.mockup.misc.shareIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupShare.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.15, h * 0.18); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.18, h * 0.15); + c.lineTo(w * 0.82, h * 0.15); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.85, h * 0.18); + c.lineTo(w * 0.85, h * 0.82); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.82, h * 0.85); + c.lineTo(w * 0.18, h * 0.85); + c.arcTo(w * 0.03, h * 0.03, 0, 0, 1, w * 0.15, h * 0.82); + c.close(); + c.fill(); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(w * 0.563, h * 0.34); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.603, h * 0.42); + c.lineTo(w * 0.44, h * 0.5); + c.lineTo(w * 0.602, h * 0.582); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.563, h * 0.653); + c.lineTo(w * 0.403, h * 0.575); + c.arcTo(w * 0.095, h * 0.095, 0, 1, 1, w * 0.4, h * 0.42); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupShare.prototype.cst.SHAPE_SHARE, mxShapeMockupShare); + +//********************************************************************************************************************************************************** +//Trashcan Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupTrashcan(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupTrashcan, mxShape); + +mxShapeMockupTrashcan.prototype.cst = { + SHAPE_TRASHCAN : 'mxgraph.mockup.misc.trashcanIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupTrashcan.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.24, h * 0.24); + c.arcTo(w * 0.04, h * 0.04, 0, 0, 1, w * 0.24, h * 0.16); + c.lineTo(w * 0.4, h * 0.16); + c.lineTo(w * 0.4, h * 0.12); + c.lineTo(w * 0.6, h * 0.12); + c.lineTo(w * 0.6, h * 0.16); + c.lineTo(w * 0.76, h * 0.16); + c.arcTo(w * 0.04, h * 0.04, 0, 0, 1, w * 0.76, h * 0.24); + c.close(); + c.fill(); + + c.roundrect(w * 0.26, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); + c.roundrect(w * 0.44, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); + c.roundrect(w * 0.62, h * 0.3, w * 0.1, h * 0.6, w * 0.06, h * 0.06); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTrashcan.prototype.cst.SHAPE_TRASHCAN, mxShapeMockupTrashcan); + +//********************************************************************************************************************************************************** +//Copyright Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupCopyright(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupCopyright, mxShape); + +mxShapeMockupCopyright.prototype.cst = { + SHAPE_COPYRIGHT : 'mxgraph.mockup.misc.copyrightIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupCopyright.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.713, h * 0.288); + c.arcTo(w * 0.3, h * 0.3, 0, 1, 0, w * 0.713, h * 0.712); + c.lineTo(w * 0.784, h * 0.783); + c.arcTo(w * 0.4, h * 0.4, 0, 1, 1, w * 0.784, h * 0.217); + c.close(); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeMockupCopyright.prototype.cst.SHAPE_COPYRIGHT, mxShapeMockupCopyright); + +//********************************************************************************************************************************************************** +//Registered Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRegistered(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRegistered, mxShape); + +mxShapeMockupRegistered.prototype.cst = { + SHAPE_REGISTERED : 'mxgraph.mockup.misc.registeredIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRegistered.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.29, h * 0.9); + c.lineTo(w * 0.29, h * 0.09); + c.lineTo(w * 0.5, h * 0.09); + c.arcTo(w * 0.2195, h * 0.2195, 0, 0, 1, w * 0.545, h * 0.525); + c.lineTo(w * 0.738, h * 0.91); + c.lineTo(w * 0.674, h * 0.91); + c.lineTo(w * 0.4825, h * 0.53); + c.lineTo(w * 0.35, h * 0.53); + c.lineTo(w * 0.35, h * 0.9); + c.close(); + c.moveTo(w * 0.35, h * 0.47); + c.lineTo(w * 0.5, h * 0.47); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.5, h * 0.15); + c.lineTo(w * 0.35, h * 0.15); + c.close(); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeMockupRegistered.prototype.cst.SHAPE_REGISTERED, mxShapeMockupRegistered); + +//********************************************************************************************************************************************************** +//Volume Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupVolume(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupVolume, mxShape); + +mxShapeMockupVolume.prototype.cst = { + SHAPE_VOLUME : 'mxgraph.mockup.misc.volumeIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupVolume.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#999999'); + + c.translate(x, y); + + c.roundrect(0, 0, w, h, w * 0.05, h * 0.05); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1, h * 0.3); + c.lineTo(w * 0.3, h * 0.3); + c.lineTo(w * 0.5, h * 0.15); + c.lineTo(w * 0.5, h * 0.85); + c.lineTo(w * 0.3, h * 0.7); + c.lineTo(w * 0.1, h * 0.7); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w * 0.6, h * 0.4); + c.arcTo(w * 0.2, h * 0.2, 0, 0, 1, w * 0.6, h * 0.6); + + c.moveTo(w * 0.7, h * 0.3); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.7, h * 0.7); + + c.moveTo(w * 0.8, h * 0.2); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.8, h * 0.8); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxShapeMockupVolume.prototype.cst.SHAPE_VOLUME, mxShapeMockupVolume); + +//********************************************************************************************************************************************************** +//Ruler +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRuler(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRuler, mxShape); + +mxShapeMockupRuler.prototype.cst = { + SHAPE_RULER : 'mxgraph.mockup.misc.ruler', + ORIENTATION : 'rulerOrient', + UNIT_SIZE : 'unitSize', + FACE_UP : 'up', + FACE_DOWN : 'down' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRuler.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupRuler.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRuler.prototype.foreground = function(c, w, h) +{ + var facing = mxUtils.getValue(this.style, mxShapeMockupRuler.prototype.cst.ORIENTATION, mxShapeMockupRuler.prototype.cst.FACE_DOWN); + var unitSize = mxUtils.getValue(this.style, mxShapeMockupRuler.prototype.cst.UNIT_SIZE, '10'); + + unitSize = Math.max(unitSize, 1); + + var currX = unitSize; + var i = 1; + + if (facing === mxShapeMockupRuler.prototype.cst.FACE_DOWN) + { + c.begin(); + + while (currX < w) + { + var remainder = i % 10; + + if (remainder === 0) + { + c.moveTo(currX, h * 0.5); + c.lineTo(currX, h); + } + else if ( remainder === 5) + { + c.moveTo(currX, h * 0.7); + c.lineTo(currX, h); + } + else + { + c.moveTo(currX, h * 0.8); + c.lineTo(currX, h); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } + else if (facing === mxShapeMockupRuler.prototype.cst.FACE_UP) + { + c.begin(); + + while (currX < w) + { + var remainder = i % 10; + + if (remainder === 0) + { + c.moveTo(currX, h * 0.5); + c.lineTo(currX, 0); + } + else if ( remainder === 5) + { + c.moveTo(currX, h * 0.3); + c.lineTo(currX, 0); + } + else + { + c.moveTo(currX, h * 0.2); + c.lineTo(currX, 0); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRuler.prototype.cst.SHAPE_RULER, mxShapeMockupRuler); + +//********************************************************************************************************************************************************** +//Advanced Ruler +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRuler2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRuler2, mxShape); + +mxShapeMockupRuler2.prototype.cst = { + SHAPE_RULER : 'mxgraph.mockup.misc.ruler2', + ORIENTATION : 'rulerOrient', + UNIT_SIZE : 'dx', + FACE_UP : 'up', + FACE_DOWN : 'down' +}; + +mxShapeMockupRuler2.prototype.customProperties = [ + {name: 'rulerOrient', dispName: 'Orientation', defVal:'up', type: 'enum', + enumList: [{val: 'up', dispName: 'Up'}, {val: 'down', dispName: 'Down'}] + }, + {name: 'dx', dispName: 'Unit Size', type: 'float', min:0, defVal:100} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRuler2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupRuler2.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRuler2.prototype.foreground = function(c, x, y, w, h) +{ + var facing = mxUtils.getValue(this.style, mxShapeMockupRuler2.prototype.cst.ORIENTATION, mxShapeMockupRuler2.prototype.cst.FACE_DOWN); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + var dx = mxUtils.getValue(this.style, 'dx', '100'); + var unitSize = dx / 10; + this.state.style['spacingLeft'] = Math.round(1000 * Math.max(0, Math.min(w, dx))) / 1000 - 4; + + unitSize = Math.max(unitSize, 1); + + c.setFontColor(fontColor); + + var currX = unitSize; + var i = 1; + + if (facing === mxShapeMockupRuler2.prototype.cst.FACE_DOWN) + { + c.begin(); + + while (currX < w) + { + var remainder = i % 10; + + if (remainder === 0) + { + c.moveTo(currX, h - 10); + c.lineTo(currX, h); + + var unit = this.state.view.graph.getLabel(this.state.cell); + + if (!isNaN(unit)) + { + c.stroke(); + + var num = i * Math.round(100 * unit) / 1000; + + if (i != 10 && num != 0) + { + c.text(currX, (h - 10) * 0.5, 0, 0, num.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + c.begin(); + } + } + else if ( remainder === 5) + { + c.moveTo(currX, h - 6); + c.lineTo(currX, h); + } + else + { + c.moveTo(currX, h - 4); + c.lineTo(currX, h); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } + else if (facing === mxShapeMockupRuler2.prototype.cst.FACE_UP) + { + c.begin(); + + while (currX < w) + { + var remainder = i % 10; + + if (remainder === 0) + { + c.moveTo(currX, 10); + c.lineTo(currX, 0); + + var unit = this.state.view.graph.getLabel(this.state.cell); + + if (!isNaN(unit)) + { + c.stroke(); + + var num = i * Math.round(100 * unit) / 1000; + + if (i != 10 && num != 0) + { + c.text(currX, (h + 10) * 0.5, 0, 0, num.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + c.begin(); + } + } + else if ( remainder === 5) + { + c.moveTo(currX, 6); + c.lineTo(currX, 0); + } + else + { + c.moveTo(currX, 4); + c.lineTo(currX, 0); + } + + currX = currX + unitSize; + i = i + 1; + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupRuler2.prototype.cst.SHAPE_RULER, mxShapeMockupRuler2); + +Graph.handleFactory[mxShapeMockupRuler2.prototype.cst.SHAPE_RULER] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'spacingLeft', 'align', 'varticalAlign', 'spacingBottom', 'spacingTop', 'spacingRight', 'spacing'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - 10); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(1000 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 1000; + this.state.style['spacingLeft'] = Math.round(1000 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 1000 - 4; + this.state.style['align'] = 'left'; + this.state.style['verticalAlign'] = 'middle'; + + var facing = mxUtils.getValue(this.state.style, 'rulerOrient', '1'); + + if (facing == 'down') + { + this.state.style['spacingBottom'] = 10; + this.state.style['spacingTop'] = 0; + } + else + { + this.state.style['spacingBottom'] = 0; + this.state.style['spacingTop'] = 10; + } + + this.state.style['spacingRight'] = 0; + this.state.style['spacing'] = 0; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Revision Table +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRevisionTable(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRevisionTable, mxShape); + +mxShapeMockupRevisionTable.prototype.cst = { + SHAPE_REVISION_TABLE : 'mxgraph.mockup.misc.revisionTable', + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRevisionTable.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupRevisionTable.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupRevisionTable.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.MAIN_TEXT, '').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.TEXT_COLOR, '#999999'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupRevisionTable.prototype.cst.TEXT_SIZE, '17'); + + c.begin(); + c.moveTo(0, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(0, h * 0.67); + c.lineTo(w, h * 0.67); + c.moveTo(w * 0.125, h * 0.33); + c.lineTo(w * 0.125, h); + c.moveTo(w * 0.5, h * 0.33); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.setFontSize(textSize); + c.setFontColor(textColor); + + c.text(w * 0.5, h * 0.165, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.0625, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.3125, h * 0.5, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.5, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.0625, h * 0.835, 0, 0, mainText[4], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.3125, h * 0.835, 0, 0, mainText[5], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h * 0.835, 0, 0, mainText[6], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + +}; + +mxCellRenderer.registerShape(mxShapeMockupRevisionTable.prototype.cst.SHAPE_REVISION_TABLE, mxShapeMockupRevisionTable); + +//********************************************************************************************************************************************************** +//Status Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupStatusBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupStatusBar, mxShape); + +mxShapeMockupStatusBar.prototype.cst = { + SHAPE_STATUS_BAR : 'mxgraph.mockup.misc.statusBar', + MAIN_TEXT : 'mainText', + FILL_COLOR2 : 'fillColor2', + STROKE_COLOR2 : 'strokeColor2', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupStatusBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + w = Math.max(w, 105); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupStatusBar.prototype.background = function(c, w, h) +{ + c.rect(0, h * 0.5 - 15, w, 30); + c.fillAndStroke(); +}; + +mxShapeMockupStatusBar.prototype.foreground = function(c, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.FILL_COLOR2, '#ddeeff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.STROKE_COLOR2, '#008cff'); + var mainText = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.MAIN_TEXT, '').toString().split(','); + var textColor = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.TEXT_COLOR, '#999999'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupStatusBar.prototype.cst.TEXT_SIZE, '17'); + + c.setFillColor(fillColor2); + c.roundrect(5, h * 0.5 - 10, (w - 75) * 0.46, 20, 5, 5); + c.fill(); + + c.roundrect(10 + (w - 75) * 0.46, h * 0.5 - 10, (w - 75) * 0.23, 20, 5, 5); + c.fill(); + c.roundrect(15 + (w - 75) * 0.69, h * 0.5 - 10, (w - 75) * 0.276, 20, 5, 5); + c.fill(); + + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(10, h * 0.5, 0, 0, mainText[0], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(10 + (w - 75) * 0.575, h * 0.5, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(15 + (w - 75) * 0.828, h * 0.5, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeColor(strokeColor2); + c.ellipse(w - 25, h * 0.5 - 10, 20, 20); + c.stroke(); + c.begin(); + c.moveTo(w - 55, h * 0.5 + 10); + c.lineTo(w - 35, h * 0.5 + 10); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupStatusBar.prototype.cst.SHAPE_STATUS_BAR, mxShapeMockupStatusBar); + +//********************************************************************************************************************************************************** +//Pin +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupPin(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupPin, mxShape); + +mxShapeMockupPin.prototype.cst = { + SHAPE_PIN : 'mxgraph.mockup.misc.pin', + FILL_COLOR2 : 'fillColor2', + FILL_COLOR3 : 'fillColor3' +}; + +mxShapeMockupPin.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Fill3 Color', type: 'color'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupPin.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupPin.prototype.cst.FILL_COLOR2, '#000000'); + var fillColor3 = mxUtils.getValue(this.style, mxShapeMockupPin.prototype.cst.FILL_COLOR3, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setShadow(false); + c.translate(x, y); + + c.setStrokeWidth(3); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor); + c.setGradient(fillColor2, fillColor3, 0, 0, w, h * 0.4, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.9); + c.ellipse(0, 0, w, h * 0.4); + c.fillAndStroke(); + + c.setFillColor('#ffffff'); + c.setAlpha(0.5); + c.ellipse(w * 0.2, h * 0.08, w * 0.3, h * 0.12); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPin.prototype.cst.SHAPE_PIN, mxShapeMockupPin); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupMiscRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupMiscRRect, mxShape); + +mxShapeMockupMiscRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.misc.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupMiscRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupMiscRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupMiscRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMiscRRect.prototype.cst.RRECT, mxShapeMockupMiscRRect); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupMiscAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupMiscAnchor, mxShape); + +mxShapeMockupMiscAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.misc.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupMiscAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupMiscAnchor.prototype.cst.ANCHOR, mxShapeMockupMiscAnchor); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupNavigation.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupNavigation.js new file mode 100644 index 0000000000000..4afe075e49996 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupNavigation.js @@ -0,0 +1,845 @@ +/** + * $Id: mxMockupNavigation.js,v 1.5 2014/01/21 13:11:15 gaudenz Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Breadcrumb (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupBreadcrumb(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupBreadcrumb, mxShape); + +mxShapeMockupBreadcrumb.prototype.cst = { + SHAPE_BREADCRUMB : 'mxgraph.mockup.navigation.breadcrumb', + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupBreadcrumb.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.MAIN_TEXT, 'Layer 1, Layer 2, Layer 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupBreadcrumb.prototype.cst.TEXT_SIZE, '17').toString(); + var separatorColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#c4c4c4'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var labelOffset = 10; + + for (var i = 0; i < buttonNum; i++) + { + buttonWidths[i] = mxUtils.getSizeForString(textStrings[i], fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + c.setShadow(false); + + this.separators(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, separatorColor); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i + 1 === buttonNum) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupBreadcrumb.prototype.separators = function(c, w, h, buttonNum, buttonWidths, labelOffset, minW, separatorColor) +{ + //draw the button separators + c.setStrokeColor(separatorColor); + var midY = h * 0.5; + var size = 5; + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth - size * 0.5, midY - size); + c.lineTo(currWidth + size * 0.5, midY); + c.lineTo(currWidth - size * 0.5, midY + size); + } + c.stroke(); +}; + +mxShapeMockupBreadcrumb.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupBreadcrumb.prototype.cst.SHAPE_BREADCRUMB, mxShapeMockupBreadcrumb); + +//********************************************************************************************************************************************************** +//Step Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupStepBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupStepBar, mxShape); + +mxShapeMockupStepBar.prototype.cst = { + SHAPE_STEP_BAR : 'mxgraph.mockup.navigation.stepBar', + SELECTED : '+', //must be 1 char + MAIN_TEXT : 'mainText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2' +}; + +mxShapeMockupStepBar.prototype.customProperties = [ + {name: 'mainText', dispName: 'Text', type: 'string'}, + {name: 'textSize', dispName: 'Text Size', type: 'float'}, + {name: 'textColor', dispName: 'Text Color', type: 'color'}, + {name: 'textColor2', dispName: 'Text2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupStepBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.MAIN_TEXT, 'Step 1, Step 2, Step 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_COLOR, '#666666'); + var currColor = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_COLOR2, '#008cff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupStepBar.prototype.cst.TEXT_SIZE, '17').toString(); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#c4c4c4'); + var doneColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#666666'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var labelOffset = 10; + var selectedButton = -1; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupStepBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + c.translate(x, y); + + this.stepLineBg(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, bgColor, fontSize, trueW); + c.setShadow(false); + + this.stepLineFg(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, bgColor, doneColor, currColor, fontSize, trueW, selectedButton); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i >= selectedButton) + { + c.setFontColor(currColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupStepBar.prototype.stepLineBg = function(c, w, h, buttonNum, buttonWidths, labelOffset, minW, bgColor, fontSize, trueW) +{ + //draw the button separators + c.setStrokeColor(bgColor); + c.setFillColor(bgColor); + var midY = fontSize * 2; + var size = 10; + var startX = 0; + var endX = 0; + + for (var i = 0; i < buttonNum; i++) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + + currWidth = currWidth * w / minW; + + if (i === 0) + { + startX = currWidth; + } + else if (i + 1 === buttonNum) + { + endX = currWidth; + } + + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + } + + c.begin(); + c.rect(startX, midY - size * 0.2, endX - startX, size * 0.4); + c.fillAndStroke(); +}; + +mxShapeMockupStepBar.prototype.stepLineFg = function(c, w, h, buttonNum, buttonWidths, labelOffset, minW, bgColor, doneColor, currColor, fontSize, trueW, selectedButton) +{ + //draw the button separators + c.setStrokeColor(doneColor); + var midY = fontSize * 2; + var size = 10 * 0.75; + var startX = 0; + var endX = 0; + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + + for (var i = 0; i <= selectedButton; i++) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + + currWidth = currWidth * w / minW; + + if (i === 0) + { + startX = currWidth; + } + else if (i === selectedButton) + { + endX = currWidth; + } + } + + c.setFillColor(doneColor); + c.begin(); + c.rect(startX, midY - size * 0.15, endX - startX, size * 0.3); + c.fill(); + c.setFillColor(bgColor); + + for (var i = 0; i <= selectedButton; i++) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth += buttonWidths[i] * 0.5 + labelOffset; + + currWidth = currWidth * w / minW; + + if (i === 0) + { + startX = currWidth; + } + else if (i + 1 === selectedButton) + { + endX = currWidth; + } + + if (i < selectedButton) + { + c.setStrokeWidth(strokeWidth); + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.ellipse(currWidth - size * 0.6, midY - size * 0.6, 2 * size * 0.6, 2 * size * 0.6); + c.fillAndStroke(); + } + else + { + c.setStrokeWidth(strokeWidth); + c.setFillColor(bgColor); + c.setStrokeColor(bgColor); + c.begin(); + c.ellipse(currWidth - size / 0.75, midY - size / 0.75, 2 * size / 0.75, 2 * size / 0.75); + c.fillAndStroke(); + + c.setStrokeWidth(strokeWidth); + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + c.begin(); + c.ellipse(currWidth - size, midY - size, 2 * size, 2 * size); + c.fillAndStroke(); + + c.setFillColor(currColor); + c.setStrokeColor(currColor); + c.setStrokeWidth(strokeWidth * 0.5); + c.begin(); + c.ellipse(currWidth - size * 0.7, midY - size * 0.7, 2 * size * 0.7, 2 * size * 0.7); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupStepBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxShapeMockupStepBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, fontSize * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeMockupStepBar.prototype.cst.SHAPE_STEP_BAR, mxShapeMockupStepBar); + +//********************************************************************************************************************************************************** +//Cover Flow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupCoverFlow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupCoverFlow, mxShape); + +mxShapeMockupCoverFlow.prototype.cst = { + SHAPE_COVER_FLOW : 'mxgraph.mockup.navigation.coverFlow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupCoverFlow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w * 0.0924, h * 0.07); + c.lineTo(w * 0.005, h * 0.01); + c.lineTo(w * 0.005, h * 0.99); + c.lineTo(w * 0.0924, h * 0.93); + + c.moveTo(w * 0.1774, h * 0.09); + c.lineTo(w * 0.0924, h * 0.01); + c.lineTo(w * 0.0924, h * 0.99); + c.lineTo(w * 0.1774, h * 0.91); + + c.moveTo(w * 0.3373, h * 0.22); + c.lineTo(w * 0.1774, h * 0.01); + c.lineTo(w * 0.1774, h * 0.99); + c.lineTo(w * 0.3373, h * 0.78); + + c.moveTo(w * 0.912, h * 0.07); + c.lineTo(w * 0.998, h * 0.01); + c.lineTo(w * 0.998, h * 0.99); + c.lineTo(w * 0.912, h * 0.93); + + c.moveTo(w * 0.8271, h * 0.09); + c.lineTo(w * 0.912, h * 0.01); + c.lineTo(w * 0.912, h * 0.99); + c.lineTo(w * 0.8271, h * 0.91); + + c.moveTo(w * 0.6672, h * 0.22); + c.lineTo(w * 0.8271, h * 0.01); + c.lineTo(w * 0.8271, h * 0.99); + c.lineTo(w * 0.6672, h * 0.78); + + c.moveTo(w * 0.3373, h * 0.005); + c.lineTo(w * 0.3373, h * 0.995); + c.lineTo(w * 0.6672, h * 0.995); + c.lineTo(w * 0.6672, h * 0.005); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCoverFlow.prototype.cst.SHAPE_COVER_FLOW, mxShapeMockupCoverFlow); + +//********************************************************************************************************************************************************** +//Scroll Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupScrollBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupScrollBar, mxShape); + +mxShapeMockupScrollBar.prototype.cst = { + SHAPE_SCROLL_BAR : 'mxgraph.mockup.navigation.scrollBar', + FILL_COLOR2 : 'fillColor2', + STROKE_COLOR2 : 'strokeColor2', + BAR_POS : 'barPos' +}; + +mxShapeMockupScrollBar.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float'}, + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupScrollBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + h = 20; + var buttonX = 20; + w = Math.max(w, 2 * buttonX); + + c.translate(x, y); + this.background(c, w, h, buttonX); + c.setShadow(false); + this.foreground(c, w, h, buttonX); + this.barPos = 20; +}; + +mxShapeMockupScrollBar.prototype.background = function(c, w, h, buttonX) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.begin(); + c.moveTo(buttonX, 0); + c.lineTo(buttonX, h); + c.moveTo(w - buttonX, 0); + c.lineTo(w - buttonX, h); + c.stroke(); +} + +mxShapeMockupScrollBar.prototype.foreground = function(c, w, h, buttonX) +{ + var barPos = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.BAR_POS, '20'); + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupScrollBar.prototype.cst.STROKE_COLOR2, 'none'); + + barPos = Math.max(0, barPos); + barPos = Math.min(100, barPos); + + c.setStrokeColor(strokeColor2); + c.setFillColor(fillColor2); + + c.begin(); + c.moveTo(buttonX * 0.2, h * 0.5); + c.lineTo(buttonX * 0.8, h * 0.2); + c.lineTo(buttonX * 0.8, h * 0.8); + c.close(); + c.moveTo(w - buttonX * 0.2, h * 0.5); + c.lineTo(w - buttonX * 0.8, h * 0.2); + c.lineTo(w - buttonX * 0.8, h * 0.8); + c.close(); + c.fillAndStroke(); + + //draw the handle based on arg.barPos + var barWidth = 60; + var barMin = buttonX; + var barMax = w - buttonX; + barWidth = Math.min(barWidth, barMax - barMin); + var barCenterMin = barMin + barWidth / 2; + var barCenterMax = barMax - barWidth / 2; + var barCenterRange = barCenterMax - barCenterMin; + var barCenterPos = barCenterRange * barPos / 100; + var barStart = barMin + barCenterPos; + + c.roundrect(barStart, h * 0.15, barWidth, h * 0.7, 5, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupScrollBar.prototype.cst.SHAPE_SCROLL_BAR, mxShapeMockupScrollBar); + +Graph.handleFactory[mxShapeMockupScrollBar.prototype.cst.SHAPE_SCROLL_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'barPos', this.barPos)))); + + return new mxPoint(bounds.x + ((bounds.width - 100) * barPos / bounds.width) / 100 * bounds.width + 50, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(1000 * Math.max(0, Math.min(100, (pt.x - bounds.x - 50) * 100 / (bounds.width - 100)))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Pagination +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupPagination(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupPagination, mxShape); + +mxShapeMockupPagination.prototype.cst = { + MAIN_TEXT : 'linkText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SHAPE_PAGINATION : 'mxgraph.mockup.navigation.pagination' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupPagination.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.MAIN_TEXT, '0-9 A B C D E F G H I J K L M N O P Q R S T U V X Y Z'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupPagination.prototype.cst.TEXT_COLOR, '#0000ff'); + + c.translate(x, y); + var width = mxUtils.getSizeForString(mainText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPagination.prototype.cst.SHAPE_PAGINATION, mxShapeMockupPagination); + +//********************************************************************************************************************************************************** +//Page Control +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupPageControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupPageControl, mxShape); + +mxShapeMockupPageControl.prototype.cst = { + SHAPE_PAGE_CONTROL : 'mxgraph.mockup.navigation.pageControl' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupPageControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeMockupPageControl.prototype.cst.SHAPE_PAGE_CONTROL, mxShapeMockupPageControl); + +//********************************************************************************************************************************************************** +//Map Navigator +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupMapNavigator(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupMapNavigator, mxShape); + +mxShapeMockupMapNavigator.prototype.cst = { + SHAPE_MAP_NAVIGATOR : 'mxgraph.mockup.navigation.mapNavigator', + FILL_COLOR2 : 'fillColor2', + STROKE_COLOR2 : 'strokeColor2', + STROKE_COLOR3 : 'strokeColor3' +}; + +mxShapeMockupMapNavigator.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'}, + {name: 'strokeColor3', dispName: 'Stroke3 Color', type: 'color'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupMapNavigator.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupMapNavigator.prototype.background = function(c, w, h) +{ + c.ellipse(0, 0, w, h * 0.6); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.35, h * 0.584); + c.lineTo(w * 0.35, h * 0.95); + c.arcTo(w * 0.083, h * 0.05, 0, 0, 0, w * 0.43, h); + c.lineTo(w * 0.56, h); + c.arcTo(w * 0.083, h * 0.05, 0, 0, 0, w * 0.65, h * 0.95); + c.lineTo(w * 0.65, h * 0.584); + c.fillAndStroke(); +} + +mxShapeMockupMapNavigator.prototype.foreground = function(c, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.FILL_COLOR2, '#99ddff'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.STROKE_COLOR2, 'none'); + var strokeColor3 = mxUtils.getValue(this.style, mxShapeMockupMapNavigator.prototype.cst.STROKE_COLOR3, '#ffffff'); + + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.ellipse(w * 0.4, h * 0.65, w * 0.2, h * 0.12); + c.fillAndStroke(); + c.ellipse(w * 0.4, h * 0.85, w * 0.2, h * 0.12); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1806, h * 0.34); + c.lineTo(w * 0.1357, h * 0.366); + c.lineTo(w * 0.0228, h * 0.3); + c.lineTo(w * 0.1357, h * 0.234); + c.lineTo(w * 0.1806, h * 0.26); + c.lineTo(w * 0.1142, h * 0.3); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.433, h * 0.108); + c.lineTo(w * 0.3881, h * 0.08); + c.lineTo(w * 0.4994, h * 0.012); + c.lineTo(w * 0.6123, h * 0.08); + c.lineTo(w * 0.5658, h * 0.108); + c.lineTo(w * 0.4994, h * 0.068); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8198, h * 0.262); + c.lineTo(w * 0.868, h * 0.233); + c.lineTo(w * 0.9776, h * 0.3); + c.lineTo(w * 0.868, h * 0.367); + c.lineTo(w * 0.8198, h * 0.341); + c.lineTo(w * 0.8863, h * 0.3); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5641, h * 0.493); + c.lineTo(w * 0.6123, h * 0.522); + c.lineTo(w * 0.4994, h * 0.588); + c.lineTo(w * 0.3881, h * 0.521); + c.lineTo(w * 0.4363, h * 0.493); + c.lineTo(w * 0.4994, h * 0.533); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3333, h * 0.32); + c.lineTo(w * 0.3333, h * 0.28); + c.lineTo(w * 0.4163, h * 0.3); + c.close(); + c.moveTo(w * 0.4662, h * 0.2); + c.lineTo(w * 0.5326, h * 0.2); + c.lineTo(w * 0.4994, h * 0.25); + c.close() + c.moveTo(w * 0.6654, h * 0.28); + c.lineTo(w * 0.6654, h * 0.32); + c.lineTo(w * 0.5824, h * 0.3); + c.close(); + c.moveTo(w * 0.5326, h * 0.4); + c.lineTo(w * 0.4662, h * 0.4); + c.lineTo(w * 0.4994, h * 0.35); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth(2); + c.setStrokeColor(strokeColor3); + + c.begin(); + c.moveTo(w * 0.5, h * 0.67); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(w * 0.43, h * 0.71); + c.lineTo(w * 0.57, h * 0.71); + c.moveTo(w * 0.43, h * 0.91); + c.lineTo(w * 0.57, h * 0.91); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupMapNavigator.prototype.cst.SHAPE_MAP_NAVIGATOR, mxShapeMockupMapNavigator); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupNavigationAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupNavigationAnchor, mxShape); + +mxShapeMockupNavigationAnchor.prototype.cst = { + ANCHOR : 'mxgraph.mockup.navigation.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupNavigationAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeMockupNavigationAnchor.prototype.cst.ANCHOR, mxShapeMockupNavigationAnchor); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupText.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupText.js new file mode 100644 index 0000000000000..6b53a743c2e4a --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupText.js @@ -0,0 +1,867 @@ +/** + * $Id: mxMockupText.js,v 1.4 2013/05/24 07:12:36 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Link +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupLink(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupLink, mxShape); + +mxShapeMockupLink.prototype.cst = { + LINK_TEXT : 'linkText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SHAPE_LINK : 'mxgraph.mockup.text.link' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupLink.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var linkText = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.LINK_TEXT, 'Link'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupLink.prototype.cst.TEXT_COLOR, '#0000ff'); + + c.translate(x, y); + var width = mxUtils.getSizeForString(linkText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + + c.text(w * 0.5, h * 0.5, 0, 0, linkText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupLink.prototype.cst.SHAPE_LINK, mxShapeMockupLink); + +//********************************************************************************************************************************************************** +//Link Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupLinkBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupLinkBar, mxShape); + +mxShapeMockupLinkBar.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_LINK_BAR : 'mxgraph.mockup.text.linkBar', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', //must be 1 char + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupLinkBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.MAIN_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_COLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_COLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.STROKE_COLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeMockupLinkBar.prototype.cst.FILL_COLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 10; //rounding size + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeMockupLinkBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currW = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currW === 0) + { + buttonWidths[i] = 42; + } + else + { + buttonWidths[i] = currW; + } + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 20); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + c.setStrokeColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + c.setStrokeColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupLinkBar.prototype.background = function(c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + //draw the selected button + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) + { + c.rect(0, 0, buttonRight, h); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } + else if (selectedButton !== -1) + { + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + } + + //draw the frame again, to achieve a nicer effect + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupLinkBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxShapeMockupLinkBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var textW = mxUtils.getSizeForString(textString, fontSize, mxConstants.DEFAULT_FONTFAMILY).width * 0.5; + + if (textString !== null && textString !== '') + { + c.begin(); + c.moveTo((w + buttonWidth * 0.5) * trueW / minW - textW, h * 0.5 + fontSize * 0.5); + c.lineTo((w + buttonWidth * 0.5) * trueW / minW + textW, h * 0.5 + fontSize * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupLinkBar.prototype.cst.SHAPE_LINK_BAR, mxShapeMockupLinkBar); + +//********************************************************************************************************************************************************** +//Callout +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupCallout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupCallout, mxShape); + +mxShapeMockupCallout.prototype.cst = { + CALLOUT_TEXT : 'linkText', + CALLOUT_DIR : 'callDir', + CALLOUT_STYLE : 'callStyle', + STYLE_LINE : 'line', + STYLE_RECT : 'rect', + STYLE_ROUNDRECT : 'roundRect', + DIR_NW : 'NW', + DIR_NE : 'NE', + DIR_SE : 'SE', + DIR_SW : 'SW', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SHAPE_CALLOUT : 'mxgraph.mockup.text.callout' +}; + +mxShapeMockupCallout.prototype.customProperties = [ + {name: 'callDir', dispName: 'Direction', type: 'enum', + enumList:[{val: 'NW', dispName:'North-West'}, + {val: 'NE', dispName:'North-East'}, + {val: 'SE', dispName:'South-East'}, + {val: 'SW', dispName:'South-West'}]}, + {name: 'callStyle', dispName: 'Style', type: 'enum', + enumList:[{val: 'line', dispName:'Line'}, + {val: 'rect', dispName:'Rectangle'}]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupCallout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var calloutText = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_TEXT, 'Callout'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.TEXT_COLOR, '#666666'); + var callStyle = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_STYLE, mxShapeMockupCallout.prototype.cst.STYLE_LINE); + var callDir = mxUtils.getValue(this.style, mxShapeMockupCallout.prototype.cst.CALLOUT_DIR, mxShapeMockupCallout.prototype.cst.DIR_NW); + var textWidth = mxUtils.getSizeForString(calloutText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + textWidth = textWidth * 1.2; + + if (textWidth == 0) + { + textWidth = 70; + } + + c.translate(x, y); + c.setFontSize(textSize); + c.setFontColor(textColor); + var callH = textSize * 1.5; + + if (callDir === mxShapeMockupCallout.prototype.cst.DIR_NW) + { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) + { + c.begin(); + c.moveTo(0, callH); + c.lineTo(textWidth, callH); + c.lineTo(w, h); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) + { + c.rect(0,0, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, callH); + c.lineTo(w, h); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) + { + c.roundrect(0, 0, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, callH); + c.lineTo(w, h); + c.stroke(); + } + + c.text(textWidth * 0.5, callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_NE) + { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) + { + c.begin(); + c.moveTo(w, callH); + c.lineTo(w - textWidth, callH); + c.lineTo(0, h); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) + { + c.rect(w - textWidth,0, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, callH); + c.lineTo(0, h); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) + { + c.roundrect(w - textWidth,0, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, callH); + c.lineTo(0, h); + c.stroke(); + } + + c.text(w - textWidth * 0.5, callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_SE) + { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) + { + c.begin(); + c.moveTo(w, h); + c.lineTo(w - textWidth, h); + c.lineTo(0, 0); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) + { + c.rect(w - textWidth, h - callH, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, h - callH); + c.lineTo(0, 0); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) + { + c.roundrect(w - textWidth,h - callH, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(w - textWidth * 0.5, h - callH); + c.lineTo(0, 0); + c.stroke(); + } + + c.text(w - textWidth * 0.5, h - callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (callDir === mxShapeMockupCallout.prototype.cst.DIR_SW) + { + if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_LINE) + { + c.begin(); + c.moveTo(0, h); + c.lineTo(textWidth, h); + c.lineTo(w, 0); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_RECT) + { + c.rect(0, h - callH, textWidth, callH); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, h - callH); + c.lineTo(w, 0); + c.stroke(); + } + else if (callStyle === mxShapeMockupCallout.prototype.cst.STYLE_ROUNDRECT) + { + c.roundrect(0, h - callH, textWidth, callH, callH * 0.25, callH * 0.25); + c.fillAndStroke(); + c.begin(); + c.moveTo(textWidth * 0.5, h - callH); + c.lineTo(w, 0); + c.stroke(); + } + + c.text(textWidth * 0.5, h - callH * 0.5, 0, 0, calloutText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + +}; + +mxCellRenderer.registerShape(mxShapeMockupCallout.prototype.cst.SHAPE_CALLOUT, mxShapeMockupCallout); + +//********************************************************************************************************************************************************** +//Sticky Note +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupStickyNote(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupStickyNote, mxShape); + +mxShapeMockupStickyNote.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_STICKY_NOTE : 'mxgraph.mockup.text.stickyNote' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupStickyNote.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupStickyNote.prototype.background = function(c, w, h) +{ + c.setFillColor('#ffffcc'); + c.begin(); + c.moveTo(w * 0.03, h * 0.07); + c.lineTo(w * 0.89, h * 0.06); + c.arcTo(2.81 * w, 2.92 * h, 1, 0, 0, w * 0.99, h * 0.98); + c.lineTo(w * 0.09, h * 0.99); + c.arcTo(2.81 * w, 2.92 * h, 1, 0, 1, w * 0.03, h * 0.07); + c.close(); + c.fill(); +}; + +mxShapeMockupStickyNote.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.MAIN_TEXT, 'Note line 1,Note line 2,Note line 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.TEXT_COLOR, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupStickyNote.prototype.cst.TEXT_SIZE, '17').toString(); + + c.setFillColor('#ff3300'); + c.begin(); + c.moveTo(w * 0.28 , 0); + c.lineTo(w * 0.59, 0); + c.lineTo(w * 0.6, h * 0.12); + c.lineTo(w * 0.28, h * 0.13); + c.close(); + c.fill(); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var lineNum = mainText.length; + var textH = lineNum * fontSize * 1.5; + + for (var i = 0; i < mainText.length; i++) + { + c.text(w / 2, (h - textH) / 2 + i * fontSize * 1.5 + fontSize * 0.75, 0, 0, mainText[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupStickyNote.prototype.cst.SHAPE_STICKY_NOTE, mxShapeMockupStickyNote); + +//********************************************************************************************************************************************************** +//Bulleted List +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupBulletedList(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupBulletedList, mxShape); + +mxShapeMockupBulletedList.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + BULLET_STYLE : 'bulletStyle', + STYLE_HYPHEN : 'hyphen', + STYLE_NUM : 'number', + STYLE_DOT : 'dot', + SHAPE_BULLETED_LIST : 'mxgraph.mockup.text.bulletedList' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupBulletedList.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupBulletedList.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupBulletedList.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.MAIN_TEXT, 'Note line 1,Note line 2,Note line 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.TEXT_SIZE, '17'); + var bulletStyle = mxUtils.getValue(this.style, mxShapeMockupBulletedList.prototype.cst.BULLET_STYLE, 'none'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + var bullet = ''; + + for (var i = 0; i < mainText.length; i++) + { + var currText = ''; + + if (bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_NUM) + { + currText = (i + 1) + ') ' + mainText[i]; + } + else if (bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_HYPHEN) + { + currText = '- ' + mainText[i]; + } + else if(bulletStyle === mxShapeMockupBulletedList.prototype.cst.STYLE_DOT) + { + currText = String.fromCharCode(8226) + ' ' + mainText[i]; + } + else + { + currText = ' ' + mainText[i]; + } + + c.text(10, i * fontSize * 1.5 + fontSize * 0.75, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupBulletedList.prototype.cst.SHAPE_BULLETED_LIST, mxShapeMockupBulletedList); + +//********************************************************************************************************************************************************** +//Text Box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupTextBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupTextBox, mxShape); + +mxShapeMockupTextBox.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_TEXT_BOX : 'mxgraph.mockup.text.textBox' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupTextBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupTextBox.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupTextBox.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.MAIN_TEXT, 'Note line 1').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupTextBox.prototype.cst.TEXT_SIZE, '17'); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + for (var i = 0; i < mainText.length; i++) + { + c.text(5, i * fontSize * 1.5 + fontSize * 0.75, 0, 0, mainText[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeMockupTextBox.prototype.cst.SHAPE_TEXT_BOX, mxShapeMockupTextBox); + +//********************************************************************************************************************************************************** +//Captcha +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupCaptcha(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupCaptcha, mxShape); + +mxShapeMockupCaptcha.prototype.cst = { + MAIN_TEXT : 'mainText', + TEXT_COLOR : 'textColor', + TEXT_SIZE : 'textSize', + SHAPE_CAPTCHA : 'mxgraph.mockup.text.captcha' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupCaptcha.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxShapeMockupCaptcha.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupCaptcha.prototype.foreground = function(c, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.MAIN_TEXT, 'Note line 1'); + var fontColor = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.TEXT_COLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxShapeMockupCaptcha.prototype.cst.TEXT_SIZE, '25'); + + c.setFillColor('#88aaff'); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.35, 0); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.4, h * 0.75); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w * 0.7, h * 0.1); + c.lineTo(w * 0.95, h * 0.23); + c.lineTo(w, h * 0.4); + c.lineTo(w, h * 0.9); + c.lineTo(w, h); + c.lineTo(w * 0.8, h); + c.close(); + c.fill(); + + c.setFontColor(fontColor); + c.setFontSize(fontSize); + + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupCaptcha.prototype.cst.SHAPE_CAPTCHA, mxShapeMockupCaptcha); + +//********************************************************************************************************************************************************** +//Alphanumeric +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupAlphanumeric(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupAlphanumeric, mxShape); + +mxShapeMockupAlphanumeric.prototype.cst = { + MAIN_TEXT : 'linkText', + TEXT_SIZE : 'textSize', + TEXT_COLOR : 'textColor', + SHAPE_ALPHANUMERIC : 'mxgraph.mockup.text.alphanumeric' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupAlphanumeric.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.MAIN_TEXT, '0-9 A B C D E F G H I J K L M N O P Q R S T U V X Y Z'); + var textSize = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.TEXT_SIZE, '17'); + var textColor = mxUtils.getValue(this.style, mxShapeMockupAlphanumeric.prototype.cst.TEXT_COLOR, '#0000ff'); + + c.translate(x, y); + var width = mxUtils.getSizeForString(mainText, textSize, mxConstants.DEFAULT_FONTFAMILY).width; + c.setStrokeColor(textColor); + c.setFontSize(textSize); + c.setFontColor(textColor); + c.text(w * 0.5, h * 0.5, 0, 0, mainText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.begin(); + c.moveTo(w * 0.5 - width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.lineTo(w * 0.5 + width * 0.5, (h + parseInt(textSize, 10)) * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupAlphanumeric.prototype.cst.SHAPE_ALPHANUMERIC, mxShapeMockupAlphanumeric); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupTextRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupTextRRect, mxShape); + +mxShapeMockupTextRRect.prototype.cst = { + RRECT : 'mxgraph.mockup.text.rrect', + R_SIZE : 'rSize' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupTextRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupTextRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupTextRRect.prototype.cst.RRECT, mxShapeMockupTextRRect); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupiOS.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupiOS.js new file mode 100644 index 0000000000000..15cf29ac18fe9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mockup/mxMockupiOS.js @@ -0,0 +1,6691 @@ +/** + * $Id: mxMockupiOS.js,v 1.5 2013/11/12 06:25:46 mate Exp $ + * Copyright (c) 2006-2010, JGraph Ltd + */ + +var mxMockupC = +{ + BAR_HEIGHT : 'barHeight', + BAR_POS : 'barPos', + BG_STYLE : 'bgStyle', + BG_FLAT_GREEN : 'bgGreen', + BG_FLAT_WHITE : 'bgWhite', + BG_FLAT_GRAY : 'bgGray', + BG_FLAT_CUSTOM : 'bgFlat', + BG_MAP : 'bgMap', + BG_STRIPED : 'bgStriped', + BUTTON_STYLE : 'buttonStyle', + BUTTON_TEXT : 'buttonText', + BUTTON_STATE : 'buttonState', + CHEVRON : 'chevron', + GRID_SIZE : 'gridSize', + POINTER_BOTTOM : 'bottom', + POINTER_POS : 'pointerPos', + POINTER_TOP : 'top', + ROUND : 'round', + SELECTED : '+', //has to be one character long + STATE_ON : 'on', + STATE_OFF : 'off', + SUB_TEXT : 'subText', + + SHAPE_IADD_ICON : 'mxgraph.ios.iAddIcon', + SHAPE_IALERT_BOX : 'mxgraph.ios.iAlertBox', + SHAPE_IALPHA_LIST : 'mxgraph.ios.iAlphaList', + SHAPE_IAPP_BAR : 'mxgraph.ios.iAppBar', + SHAPE_IARROW_ICON : 'mxgraph.ios.iArrowIcon', + SHAPE_IBG_FLAT : 'mxgraph.ios.iBgFlat', + SHAPE_IBG_MAP : 'mxgraph.ios.iBgMap', + SHAPE_IBG_STRIPED : 'mxgraph.ios.iBgStriped', + SHAPE_IBUTTON : 'mxgraph.ios.iButton', + SHAPE_IBUTTON_BACK : 'mxgraph.ios.iButtonBack', + SHAPE_IBUTTON_FORWARD : 'mxgraph.ios.iButtonFw', + SHAPE_IBUTTON_BAR : 'mxgraph.ios.iButtonBar', + SHAPE_ICALL_BUTTONS : 'mxgraph.ios.iCallButtons', + SHAPE_ICALL_DIALOG : 'mxgraph.ios.iCallDialog', + SHAPE_ICHECKBOX_GROUP : 'mxgraph.ios.iCheckboxGroup', + SHAPE_ICHECK_ICON : 'mxgraph.ios.iCheckIcon', + SHAPE_ICLOUD_PROGRESS_BAR : 'mxgraph.ios.iCloudProgressBar', + SHAPE_ICOMBO_BOX : 'mxgraph.ios.iComboBox', + SHAPE_ICOPY : 'mxgraph.ios.iCopy', + SHAPE_ICOPY_AREA : 'mxgraph.ios.iCopyArea', + SHAPE_IICON_GRID : 'mxgraph.ios.iIconGrid', + SHAPE_IDELETE_APP : 'mxgraph.ios.iDeleteApp', + SHAPE_IDELETE_ICON : 'mxgraph.ios.iDeleteIcon', + SHAPE_IDOWNLOAD_BAR : 'mxgraph.ios.iDownloadBar', + SHAPE_IDIALOG_BOX : 'mxgraph.ios.iDialogBox', + SHAPE_IDIRECTION : 'mxgraph.ios.iDir', + SHAPE_IHOME_PAGE_CONTROL : 'mxgraph.ios.iHomePageControl', + SHAPE_IKEYB_LETTERS : 'mxgraph.ios.iKeybLett', + SHAPE_IKEYB_NUMBERS : 'mxgraph.ios.iKeybNumb', + SHAPE_IKEYB_SYMBOLS : 'mxgraph.ios.iKeybSymb', + SHAPE_ILOCATION_BAR : 'mxgraph.ios.iLocBar', + SHAPE_ILOCK_BUTTON : 'mxgraph.ios.iLockButton', + SHAPE_IHOR_BUTTON_BAR : 'mxgraph.ios.iHorButtonBar', + SHAPE_IINFO_ICON : 'mxgraph.ios.iInfoIcon', + SHAPE_ION_OFF_BUTTON : 'mxgraph.ios.iOnOffButton', + SHAPE_IOPTION : 'mxgraph.ios.iOption', + SHAPE_IPAGE_CONTROL : 'mxgraph.ios.iPageControl', + SHAPE_IPAD : 'mxgraph.ios.iPad', + SHAPE_IPHONE : 'mxgraph.ios.iPhone', + SHAPE_IPIN : 'mxgraph.ios.iPin', + SHAPE_IPREV_NEXT : 'mxgraph.ios.iPrevNext', + SHAPE_IPROGRESS_BAR : 'mxgraph.ios.iProgressBar', + SHAPE_IRADIO_GROUP : 'mxgraph.ios.iRadioGroup', + SHAPE_ISLIDER : 'mxgraph.ios.iSlider', + SHAPE_ISORT_FIND_ICON : 'mxgraph.ios.iSortFindIcon', + SHAPE_ITEXT_INPUT : 'mxgraph.ios.iTextInput', + SHAPE_ITOP_BAR : 'mxgraph.ios.iTopBar', + SHAPE_ITOP_BAR_LOCKED : 'mxgraph.ios.iTopBarLocked', + SHAPE_IURL_BAR : 'mxgraph.ios.iURLBar', + SHAPE_IVIDEO_CONTROLS : 'mxgraph.ios.iVideoControls', + SHAPE_ISCREEN_NAME_BAR: 'mxgraph.ios.iScreenNameBar', + + STYLE_FILLCOLOR2 : 'fillColor2', + STYLE_FILLCOLOR3 : 'fillColor3', + STYLE_TEXTCOLOR : 'textColor', + STYLE_TEXTCOLOR2 : 'textColor2', + STYLE_STROKECOLOR2 : 'strokeColor2', + STYLE_STROKECOLOR3 : 'strokeColor3' +}; + +//********************************************************************************************************************************************************** +//iPhone Vertical +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiPhone(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiPhone, mxShape); + +mxShapeMockupiPhone.prototype.customProperties = [ + {name: 'bgStyle', dispName: 'Background', type: 'enum', + enumList: [{val: 'bgGreen', dispName: 'Green'}, + {val: 'bgWhite', dispName: 'White'}, + {val: 'bgGray', dispName: 'Gray'}, + {val: 'bgFlat', dispName: 'Flat'}, + {val: 'bgMap', dispName: 'Map'}, + {val: 'bgStriped', dispName: 'Striped'}]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiPhone.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 25; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiPhone.prototype.background = function(c, x, y, w, h, rSize) +{ + c.setFillColor('#000000'); + c.setStrokeColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiPhone.prototype.foreground = function(c, x, y, w, h, rSize) +{ + c.setStrokeWidth(1.5); + + c.begin(); + c.setGradient('#808080', '#000000', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(w * 0.325, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.close(); + c.fill(); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, ''); + var bgStyle = mxUtils.getValue(this.style, mxMockupC.BG_STYLE, mxMockupC.BG_FLAT_GREEN); + + c.setStrokeWidth(1); + if (bgStyle === mxMockupC.BG_FLAT_WHITE) + { + c.setFillColor('#ffffff'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_GREEN) + { + c.setFillColor('#1f2923'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_GRAY) + { + c.setFillColor('#dddddd'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_CUSTOM) + { + c.setFillColor(fillColor); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_STRIPED) + { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0625, h * 0.15); + w = w * 0.875; + h = h * 0.7; + + c.setFillColor('#5D7585'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var strokeColor = '#18211b'; + var strokeColor2 = '#657E8F'; + + c.setStrokeColor(strokeColor2); + var i = 5; + c.begin(); + + while (i < w) + { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 5; + } + + c.stroke(); + + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); + + w = wOld; + h = hOld; + c.translate( - w * 0.0625, - h * 0.15); + } + else if (bgStyle === mxMockupC.BG_MAP) + { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0625, h * 0.15); + w = w * 0.875; + h = h * 0.7; + + c.setFillColor('#ffffff'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var fillColor2 = '#96D1FF'; + var strokeColor = '#18211b'; + var strokeColor2 = '#008cff'; + + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(1); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + + w = wOld; + h = hOld; + c.translate( - w * 0.0625, - h * 0.15); + } + + c.setStrokeWidth(1); + c.setStrokeColor('#18211b'); + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + + c.setStrokeWidth(1.5); + c.setAlpha(0.8); + c.setStrokeColor('#dddddd'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + + rSize = 22.5; + c.begin(); + c.setStrokeColor('#666666'); + c.roundrect(5, 5, w - 10, h - 10, rSize, rSize); + c.stroke(); + + c.setAlpha(1); + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.setStrokeWidth(2.5); + c.setStrokeColor('#000000'); + c.setFillColor('#000099'); + c.fillAndStroke(); + + c.begin(); + c.setStrokeWidth(1.5); + c.setFillColor('#444444'); + c.setStrokeColor('#333333'); + rSize = 4; + + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.fillAndStroke(); + + c.setGradient('#bbbbbb', '#000000', w * 0.4, h * 0.875, w * 0.2, h * 0.1, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.fill(); + + c.setAlpha(0.5); + c.ellipse(w * 0.404, h * 0.876, w * 0.19, h * 0.095); + c.stroke(); + + c.begin(); + c.setAlpha(0.85); + c.setFillColor('#000000'); + c.moveTo(w * 0.4025, h * 0.925); + c.arcTo(w * 0.0975, h * 0.04625, 0, 0, 1, w * 0.5975, h * 0.925); + c.arcTo(w * 0.2, h * 0.1, 0, 0, 1, w * 0.4025, h * 0.925); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.setAlpha(0.7); + c.setStrokeWidth(1.5); + c.setStrokeColor('#dddddd'); + rSize = 4; + c.roundrect(w * 0.4575, h * 0.905, w * 0.0875, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPHONE, mxShapeMockupiPhone); + +//********************************************************************************************************************************************************** +//iPhone flat colored background +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiBgFlat(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiBgFlat, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiBgFlat.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeMockupiBgFlat.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_FLAT, mxShapeMockupiBgFlat); + +//********************************************************************************************************************************************************** +//iPhone striped background +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiBgStriped(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiBgStriped, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiBgStriped.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiBgStriped.prototype.background = function(c, x, y, w, h) +{ + c.setStrokeWidth(1); + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiBgStriped.prototype.foreground = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, ''); + var strokeColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, ''); + + c.setStrokeColor(strokeColor2); + var i = 5; + c.begin(); + + while (i < w) + { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 5; + } + + c.stroke(); + + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_STRIPED, mxShapeMockupiBgStriped); + +//********************************************************************************************************************************************************** +//iPhone map background +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiBgMap(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiBgMap, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiBgMap.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiBgMap.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiBgMap.prototype.foreground = function(c, x, y, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, ''); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, ''); + var strokeColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, ''); + + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(0.5); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth(1); + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBG_MAP, mxShapeMockupiBgMap); + +//********************************************************************************************************************************************************** +//Vertical Button Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiButtonBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiButtonBar, mxShape); + +mxShapeMockupiButtonBar.prototype.customProperties = [ + {name: 'buttonText', dispName: 'Labels', type: 'string'}, + {name: 'textColor', dispName: 'Text Color', type: 'color'}, + {name: 'textColor2', dispName: 'Text2 Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiButtonBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var selectedButton = -1; + var rSize = 2.5; //rounding size + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxMockupC.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) + { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + + this.background(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight); + c.setShadow(false); + + this.foreground(c, trueW, trueH, rSize, buttonNum, labelOffset, buttonNum * minButtonHeight, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + this.buttonText(c, trueW, currHeight, textStrings[i], fontSize, separatorColor); + } +}; + +mxShapeMockupiButtonBar.prototype.background = function(c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight) +{ + c.begin(); + c.setStrokeWidth(1); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiButtonBar.prototype.foreground = function(c, w, h, rSize, buttonNum, labelOffset, minH, frameColor, separatorColor, bgColor, selectedButton, minButtonHeight) +{ + //draw the button separators + var strokeWidth = mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1'); + c.setStrokeWidth(strokeWidth); + c.setStrokeColor(separatorColor); + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currHeight = i * minButtonHeight * h / minH; + + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + } + + c.stroke(); + + //draw the selected button + c.setStrokeColor(mxConstants.NONE); + + if (selectedButton === 0) + { + // we draw a path for the first button + c.begin(); + var buttonBottom = minButtonHeight * h / minH; + c.setGradient('#5D7585', '#008cff', 0, 0, w, buttonBottom, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + // we draw a path for the last button + c.begin(); + var buttonTop = h - minButtonHeight * h / minH; + c.setGradient('#5D7585', '#008cff', 0, buttonTop, w, h - buttonTop, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } + else if (selectedButton !== -1) + { + // we draw a path rectangle for one of the buttons in the middle + c.begin(); + var buttonTop = minButtonHeight * selectedButton * h / minH; + var buttonBottom = minButtonHeight * (selectedButton + 1) * h / minH; + c.setGradient('#5D7585', '#008cff', 0, buttonTop, w, buttonBottom - buttonTop, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(0, buttonTop); + c.lineTo(w, buttonTop); + c.lineTo(w, buttonBottom); + c.lineTo(0, buttonBottom); + c.close(); + c.fill(); + } + +// //draw the frame again, to achieve a nicer effect + c.begin(); + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupiButtonBar.prototype.buttonText = function(c, w, h, textString, fontSize, separatorColor) +{ + if(textString.charAt(0) === mxMockupC.SELECTED) + { + textString = textString.substring(1); + } + + c.setFontSize(fontSize); + c.text(10, h, 0, 0, textString, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var mSize = fontSize * 0.5; + c.setStrokeWidth(fontSize * 0.3); + c.setStrokeColor(separatorColor); + c.begin(); + c.moveTo(w - 20 - mSize, h - mSize); + c.lineTo(w - 20, h); + c.lineTo(w - 20 - mSize, h + mSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_BAR, mxShapeMockupiButtonBar); + +//********************************************************************************************************************************************************** +//iPhone Application Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiAppBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiAppBar, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiAppBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiAppBar.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#eeeeee', '#999999', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiAppBar.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#0099ff'); + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + + c.setFillColor('#999999'); + c.ellipse(w - 56.5, h * 0.5 - 4, 8, 8); + c.fill(); + + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w - 52.5, h * 0.5 - 3); + c.lineTo(w - 52.5, h * 0.5); + c.lineTo(w - 54.5, h * 0.5); + c.stroke(); + + c.setStrokeWidth(0.5); + c.setStrokeColor('#333333'); + c.setFillColor('#990000'); + c.begin(); + c.moveTo(w - 45.5, h * 0.5); + c.lineTo(w - 37.5, h * 0.5 - 5); + c.lineTo(w - 41.5, h * 0.5 + 4); + c.lineTo(w - 42, h * 0.5 + 0.5); + c.close(); + c.fillAndStroke(); + + c.setFillColor('#999999'); + c.setStrokeColor('#999999'); + c.begin(); + c.moveTo(w - 28.5, h * 0.5 + 3.5); + c.arcTo(3.5, 3.5, 0, 1, 1, w - 26.5, h * 0.5 + 1); + c.stroke(); + + c.begin(); + c.moveTo(w - 27.25, h * 0.5 + 0.25); + c.lineTo(w - 25.75, h * 0.5 + 0.25); + c.lineTo(w - 26.5, h * 0.5 + 1.5); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w - 31, h * 0.5 - 0.5); + c.arcTo(1, 1.5, 0, 0, 1, w - 29, h * 0.5 - 0.5); + c.stroke(); + + c.rect(w - 31.5, h * 0.5 - 0.5, 3, 2); + c.fillAndStroke(); + + c.setGradient('#eeeeee', '#444444', w - 20, h * 0.5 - 3, 16.5, 6, mxConstants.DIRECTION_NORTH, 1, 1); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.fill(); + + c.setGradient('#E2FFEB', '#008215', w - 20, h * 0.5 - 3, 10, 6, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 10, h * 0.5 - 3); + c.lineTo(w - 10, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.fill(); + + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IAPP_BAR, mxShapeMockupiAppBar); + +//********************************************************************************************************************************************************** +//iPhone Top Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiTopBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiTopBar, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiTopBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiTopBar.prototype.background = function(c, x, y, w, h) +{ + c.setAlpha(0.5); + c.setFillColor('#999999'); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBar.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#cccccc'); + c.setStrokeColor('#cccccc'); + c.setFontColor('#cccccc'); + c.setFontSize(7.5); + + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + + c.text(18, h * 0.5, 0, 0, 'CARRIER', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5, 0, 0, '11:15AM', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITOP_BAR, mxShapeMockupiTopBar); + +//********************************************************************************************************************************************************** +//iPhone Top Bar 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupiTopBar2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupiTopBar2, mxShape); + +mxShapeMockupiTopBar2.prototype.cst = { + SHAPE_ITOP_BAR2 : 'mxgraph.ios.iTopBar2' +}; + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupiTopBar2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; +mxShapeMockupiTopBar2.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBar2.prototype.foreground = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor(strokeColor); + + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupiTopBar2.prototype.cst.SHAPE_ITOP_BAR2, mxShapeMockupiTopBar2); + +//********************************************************************************************************************************************************** +//iPhone Top Bar Locked +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiTopBarLocked(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiTopBarLocked, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiTopBarLocked.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiTopBarLocked.prototype.background = function(c, x, y, w, h) +{ + c.setFillColor('#000000'); + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiTopBarLocked.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#cccccc'); + c.setStrokeColor('#cccccc'); + + c.rect(5, h * 0.5 + 1.75, 1.5, 2.5); + c.fill(); + + c.rect(7, h * 0.5 + 0.75, 1.5, 3.5); + c.fill(); + + c.rect(9, h * 0.5 - 0.25, 1.5, 4.5); + c.fill(); + + c.rect(11, h * 0.5 - 1.25, 1.5, 5.5); + c.fill(); + + c.rect(13, h * 0.5 - 2.25, 1.5, 6.5); + c.fill(); + + c.rect(15, h * 0.5 - 3.25, 1.5, 7.5); + c.fill(); + + c.begin(); + c.moveTo(w * 0.5 - 2, h * 0.5 - 1); + c.arcTo(2, 3, 0, 0, 1, w * 0.5 + 2, h * 0.5 - 1); + c.stroke(); + + c.rect(w * 0.5 - 3, h * 0.5 - 1, 6, 4); + c.fillAndStroke(); + + + c.begin(); + c.moveTo(w - 19, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 - 2); + c.lineTo(w - 10, h * 0.5 + 2); + c.lineTo(w - 19, h * 0.5 + 2); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w - 20, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 3); + c.lineTo(w - 5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 - 1); + c.lineTo(w - 3.5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 1); + c.lineTo(w - 5, h * 0.5 + 3); + c.lineTo(w - 20, h * 0.5 + 3); + c.close(); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITOP_BAR_LOCKED, mxShapeMockupiTopBarLocked); + +//********************************************************************************************************************************************************** +//Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiButton, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButton.prototype.background = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fill(); +}; + +mxShapeMockupiButton.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w / 2, h / 2, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON, mxShapeMockupiButton); + +//********************************************************************************************************************************************************** +//Button Back +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiButtonBack(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiButtonBack, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiButtonBack.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButtonBack.prototype.background = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + rSize = 2.5; + c.begin(); + c.moveTo(w, rSize); + c.arcTo(rSize, rSize, 0, 0, 0, w - rSize, 0); + c.lineTo(10, 0); + c.lineTo(0.87, h * 0.5 - 0.75); + c.arcTo(rSize, rSize, 0, 0, 0, 0.87, h * 0.5 + 0.75); + c.lineTo(10, h); + c.lineTo(w - rSize, h); + c.arcTo(rSize, rSize, 0, 0, 0, w, h - rSize); + c.close(); + c.fill(); +}; + +mxShapeMockupiButtonBack.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5 + 2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_BACK, mxShapeMockupiButtonBack); + +//********************************************************************************************************************************************************** +//Button Forward +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiButtonForward(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiButtonForward, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiButtonForward.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '17').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiButtonForward.prototype.background = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + rSize = 2.5; + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - 10, 0); + c.lineTo(w - 0.87, h * 0.5 - 0.75); + c.arcTo(rSize, rSize, 0, 0, 1, w - 0.87, h * 0.5 + 0.75); + c.lineTo(w - 10, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); +}; + +mxShapeMockupiButtonForward.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(w * 0.5 - 2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IBUTTON_FORWARD, mxShapeMockupiButtonForward); + +//********************************************************************************************************************************************************** +//Prev/Next Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiPrevNextButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiPrevNextButton, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiPrevNextButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiPrevNextButton.prototype.background = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + var rSize = 5; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fill(); + + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapeMockupiPrevNextButton.prototype.foreground = function(c, x, y, w, h) +{ + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '').toString(); + c.setFillColor(fillColor3); + + c.begin(); + c.moveTo(w * 0.25, h * 0.25); + c.lineTo(w * 0.35, h * 0.75); + c.lineTo(w * 0.15, h * 0.75); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w * 0.75, h * 0.75); + c.lineTo(w * 0.85, h * 0.25); + c.lineTo(w * 0.65, h * 0.25); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPREV_NEXT, mxShapeMockupiPrevNextButton); + +//********************************************************************************************************************************************************** +//Text Input +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiTextInput(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiTextInput, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiTextInput.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#000000').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiTextInput.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fillAndStroke(); +}; + +mxShapeMockupiTextInput.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(2, h * 0.5, 0, 0, text, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ITEXT_INPUT, mxShapeMockupiTextInput); + +//********************************************************************************************************************************************************** +//Radio Button Group (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiRadioGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiRadioGroup, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiRadioGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxMockupC.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxMockupC.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#000000'); + + if (selected === i) + { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setFillColor('#333333'); + c.setStrokeColor('#333333'); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } + else + { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IRADIO_GROUP, mxShapeMockupiRadioGroup); + +//********************************************************************************************************************************************************** +//Checkbox Group (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCheckboxGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCheckboxGroup, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCheckboxGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Option 1').toString().split(','); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxMockupC.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxMockupC.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + c.setFillColor('#dddddd'); + c.setStrokeColor('#000000'); + + if (selected === i) + { + c.setGradient('#aaaaaa', '#666666', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.setStrokeColor('#333333'); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } + else + { + c.setGradient('#eeeeee', '#cccccc', iconX, iconY, buttonSize, buttonSize, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICHECKBOX_GROUP, mxShapeMockupiCheckboxGroup); + +//********************************************************************************************************************************************************** +//Combo box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiComboBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiComboBox, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiComboBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text'); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#666666').toString(); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); + this.mainText(c, x, y, w, h, mainText, fontSize, fontColor); +}; + +mxShapeMockupiComboBox.prototype.background = function(c, x, y, w, h) +{ + c.setFillColor('#ffffff'); + c.roundrect(0, 0, w, h, 2.5, 2.5); + c.fillAndStroke(); +}; + +mxShapeMockupiComboBox.prototype.foreground = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, w - 30, 0, 30, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w - 15, 0); + c.lineTo(w - 2.5, 0); + c.arcTo(2.5, 2.5, 0, 0, 1, w, 2.5); + c.lineTo(w, h - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, w - 2.5, h); + c.lineTo(w - 15, h); + c.close(); + c.fillAndStroke(); + + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 11, 5); + c.lineTo(w - 7.5, 10); + c.lineTo(w - 4, 5); + c.fill(); +}; + +mxShapeMockupiComboBox.prototype.mainText = function(c, x, y, w, h, text, fontSize, fontColor) +{ + c.begin(); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.text(2.5, h * 0.5, 0, 0, text, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOMBO_BOX, mxShapeMockupiComboBox); + +//********************************************************************************************************************************************************** +//On-Off Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiOnOffButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiOnOffButton, mxShape); + +mxShapeMockupiOnOffButton.prototype.customProperties = [ + { name: 'buttonState', dispName: 'State', type: 'enum', + enumList: [{val: 'on', dispName: 'On'}, {val: 'off', dispName: 'Off'}]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiOnOffButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + w = Math.max(w, 2 * h); + var state = mxUtils.getValue(this.style, mxMockupC.BUTTON_STATE, mxMockupC.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(false); + this.foreground(c, x, y, w, h, state); + this.mainText(c, x, y, w, h, state); +}; + +mxShapeMockupiOnOffButton.prototype.background = function(c, x, y, w, h, state) +{ + if (state === mxMockupC.STATE_ON) + { + c.setGradient('#E2FFEB', '#008215', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } + else if (state === mxMockupC.STATE_OFF) + { + c.setGradient('#cc9999', '#881100', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, 0, w, h, h * 0.5, h * 0.5); + c.fillAndStroke(); + } +}; + +mxShapeMockupiOnOffButton.prototype.foreground = function(c, x, y, w, h, state) +{ + if (state === mxMockupC.STATE_ON) + { + c.setGradient('#ffffff', '#888888', w - h, 0, h, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w - h, 0, h, h); + c.fillAndStroke(); + } + else + { + c.setGradient('#ffffff', '#888888', 0, 0, h, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(0, 0, h, h); + c.fillAndStroke(); + } +}; + +mxShapeMockupiOnOffButton.prototype.mainText = function(c, x, y, w, h, state) +{ + var mainText = mxUtils.getValue(this.style, 'mainText', null); + c.setFontColor('#ffffff'); + c.setFontSize(8.5); + + if (mainText != '') + { + if(state === mxMockupC.STATE_ON) + { + c.text(w * 0.5 - h * 0.4, h * 0.5, 0, 0, mainText || 'ON', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (state === mxMockupC.STATE_OFF) + { + c.text(w * 0.5 + h * 0.4, h * 0.5, 0, 0, mainText || 'OFF', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ION_OFF_BUTTON, mxShapeMockupiOnOffButton); + +//********************************************************************************************************************************************************** +//Alert Box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiAlertBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiAlertBox, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiAlertBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(w, 15); + h = Math.max(h, 15); + c.translate(x, y); + rSize = 7.5; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiAlertBox.prototype.background = function(c, x, y, w, h, rSize) +{ + c.setGradient('#497198', '#193168', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.8); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiAlertBox.prototype.foreground = function(c, x, y, w, h, rSize) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text').toString().split(','); + + c.setStrokeColor('#497198'); + c.setGradient('#497198', '#c5cee1', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.5); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + + c.setAlpha(0.8); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + + c.setGradient('#497198', '#c5cee1', 5, h - 50, w - 20, 20, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(5, h - 25, w - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + + c.setAlpha(0.9); + c.setFontSize(9.5); + c.setFontColor('#ffffff'); + c.text(w * 0.5, h * 0.15, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(8); + c.text(w * 0.5, h * 0.4, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.55, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(8.5); + c.text(w * 0.5, h - 15, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IALERT_BOX, mxShapeMockupiAlertBox); + +//********************************************************************************************************************************************************** +//Dialog Box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiDialogBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiDialogBox, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiDialogBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(w, 15); + h = Math.max(h, 15); + c.translate(x, y); + rSize = 7.5; + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiDialogBox.prototype.background = function(c, x, y, w, h, rSize) +{ + c.setGradient('#497198', '#193168', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.8); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiDialogBox.prototype.foreground = function(c, x, y, w, h, rSize) +{ + var mainText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Main Text').toString().split(','); + + c.setStrokeColor('#497198'); + c.setGradient('#497198', '#c5cee1', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.5); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + + c.setAlpha(0.8); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); + + c.setGradient('#497198', '#c5cee1', 5, h - 25, w * 0.5 - 10, 20, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(5, h - 25, w * 0.5 - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + + c.roundrect(w * 0.5 + 2.5, h - 25, w * 0.5 - 10, 20, 2.5, 2.5); + c.fillAndStroke(); + + c.setAlpha(0.9); + c.setFontSize(9.5); + c.setFontColor('#ffffff'); + c.text(w * 0.5, h * 0.15, 0, 0, mainText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(8); + c.text(w * 0.5, h * 0.4, 0, 0, mainText[3], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.55, 0, 0, mainText[4], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(8.5); + c.text(w * 0.25, h - 15, 0, 0, mainText[1], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.75, h - 15, 0, 0, mainText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDIALOG_BOX, mxShapeMockupiDialogBox); + +//********************************************************************************************************************************************************** +//Lock Button +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiLockButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiLockButton, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiLockButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + + c.setAlpha(0.7); + c.setGradient('#4A4F56', '#70757B', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + + c.setAlpha(0.8); + c.setGradient('#18232D', '#1F2933', 10, 10, 154, 30, mxConstants.DIRECTION_NORTH, 1, 1); + c.roundrect(10, h * 0.5 - 15, w - 20, 30, 7.5, 7.5); + c.fill(); + + c.setAlpha(1); + c.setGradient('#E9F3FD', '#ADB7C1', 12.5, 12.5, 40, 25, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(12.5, h * 0.5 - 12.5, 40, 25, 5, 5); + c.fill(); + + c.setAlpha(0.8); + c.setStrokeWidth(0.5); + c.setStrokeColor('#aabbbb'); + c.setGradient('#AEB7C1', '#667079', 20, 17.5, 25, 15, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(20, h * 0.5 - 3.5); + c.lineTo(35, h * 0.5 - 3.5); + c.lineTo(35, h * 0.5 - 7.5); + c.lineTo(45, h * 0.5); + c.lineTo(35, h * 0.5 + 7.5); + c.lineTo(35, h * 0.5 + 3.5); + c.lineTo(20, h * 0.5 + 3.5); + c.close(); + c.fillAndStroke(); + + var mainText = mxUtils.getValue(this.style, 'mainText', null); + + if (mainText != '') + { + c.setFontSize(12.5); + c.setFontColor('#cccccc'); + c.text(w / 2 + 20.5, h / 2, 0, 0, 'slide to unlock', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ILOCK_BUTTON, mxShapeMockupiLockButton); + +//********************************************************************************************************************************************************** +//Arrow Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiArrowIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiArrowIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiArrowIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiArrowIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiArrowIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.4, h * 0.22); + c.lineTo(w * 0.65, h * 0.5); + c.lineTo(w * 0.4, h * 0.78); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IARROW_ICON, mxShapeMockupiArrowIcon); + +//********************************************************************************************************************************************************** +//Delete Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiDeleteIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiDeleteIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiDeleteIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiDeleteIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiDeleteIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.75, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDELETE_ICON, mxShapeMockupiDeleteIcon); + +//********************************************************************************************************************************************************** +//Add Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiAddIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiAddIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiAddIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeColor(strokeColor); + + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiAddIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(1.5); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiAddIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.75, h * 0.5); + c.moveTo(w * 0.5, h * 0.25); + c.lineTo(w * 0.5, h * 0.75); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IADD_ICON, mxShapeMockupiAddIcon); + +//********************************************************************************************************************************************************** +//Info Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiInfoIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiInfoIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiInfoIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiInfoIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiInfoIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.setFillColor('#ffffff'); + c.moveTo(w * 0.47, h * 0.334); + c.arcTo(w * 0.1, h * 0.15, 60, 0, 1, w * 0.61, h * 0.42); + c.lineTo(w * 0.51, h * 0.7); + c.arcTo(w * 0.026, h * 0.03, 30, 0, 0, w * 0.54, h * 0.74); + c.lineTo(w * 0.608, h * 0.684); + c.arcTo(w * 0.02, h * 0.015, 0, 0, 1, w * 0.638, h * 0.706); + c.arcTo(w * 0.45, h * 0.45, 0, 0, 1, w * 0.42, h * 0.865); + c.arcTo(w * 0.1, h * 0.08, -15, 0, 1, w * 0.325, h * 0.77); + c.lineTo(w * 0.358, h * 0.66); + c.lineTo(w * 0.435, h * 0.46); + c.arcTo(w * 0.023, h * 0.03, 0, 0, 0, w * 0.4, h * 0.43); + c.lineTo(w * 0.338, h * 0.484); + c.arcTo(w * 0.01, h * 0.015, 45, 0, 1, w * 0.31, h * 0.47); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.47, h * 0.334); + c.fill(); + + c.begin(); + c.moveTo(w * 0.5438, h * 0.141); + c.arcTo(w * 0.0776, h * 0.0898, 40, 0, 1, w * 0.6671, h * 0.2308); + c.arcTo(w * 0.0776, h * 0.0898, 40, 0, 1, w * 0.5438, h * 0.141); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IINFO_ICON, mxShapeMockupiInfoIcon); + + +//********************************************************************************************************************************************************** +//Sort/Find Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiSortFindIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiSortFindIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiSortFindIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiSortFindIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.roundrect(0, 0, w, h, w * 0.1, h * 0.1); + c.fillAndStroke(); +}; + +mxShapeMockupiSortFindIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth((Math.min(h, w)) / 20); + c.begin(); + c.setFillColor('#ffffff'); + c.moveTo(w * 0.1, h * 0.25); + c.lineTo(w * 0.9, h * 0.25); + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.9, h * 0.4); + c.moveTo(w * 0.1, h * 0.55); + c.lineTo(w * 0.6, h * 0.55); + c.moveTo(w * 0.1, h * 0.7); + c.lineTo(w * 0.5, h * 0.7); + c.stroke(); + + c.begin(); + c.ellipse(w * 0.6, h * 0.6, w * 0.2, h * 0.2); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.77, h * 0.77); + c.lineTo(w * 0.85, h * 0.85); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISORT_FIND_ICON, mxShapeMockupiSortFindIcon); + +//********************************************************************************************************************************************************** +//Check Icon +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCheckIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCheckIcon, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCheckIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h, strokeColor); +}; + +mxShapeMockupiCheckIcon.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiCheckIcon.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.25, h * 0.5); + c.lineTo(w * 0.5, h * 0.65); + c.lineTo(w * 0.75, h * 0.25); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICHECK_ICON, mxShapeMockupiCheckIcon); + +//********************************************************************************************************************************************************** +//Keyboard (letters) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiKeybLetters(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiKeybLetters, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiKeybLetters.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybLetters.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybLetters.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, 'Q', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, 'W', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, 'E', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, 'T', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, 'Y', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, 'U', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, 'I', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, 'O', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.0632, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.102, h * 0.375, 0, 0, 'A', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1638, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2026, h * 0.375, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2644, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3032, h * 0.375, 0, 0, 'D', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3649, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4037, h * 0.375, 0, 0, 'F', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4655, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.375, 0, 0, 'G', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5661, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6049, h * 0.375, 0, 0, 'H', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6667, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7055, h * 0.375, 0, 0, 'J', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7672, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.806, h * 0.375, 0, 0, 'K', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8678, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9066, h * 0.375, 0, 0, 'L', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + + c.roundrect(w * 0.1638, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2026, h * 0.625, 0, 0, 'Z', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2644, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3032, h * 0.625, 0, 0, 'X', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3649, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4037, h * 0.625, 0, 0, 'C', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4655, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, 'V', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5661, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6049, h * 0.625, 0, 0, 'B', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6667, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7055, h * 0.625, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7672, h * 0.53, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.806, h * 0.625, 0, 0, 'M', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontColor('#ffffff'); + + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + + c.setGradient('#8B98A8', '#677488', w * 0.8736, h * 0.53, w * 0.115, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setGradient('#8B98A8', '#677488', w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.1264, h * 0.875, 0, 0, '.?123', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.0402, h * 0.635); + c.lineTo(w * 0.0718, h * 0.58); + c.lineTo(w * 0.1034, h * 0.635); + c.lineTo(w * 0.0862, h * 0.635); + c.lineTo(w * 0.0862, h * 0.67); + c.lineTo(w * 0.0575, h * 0.67); + c.lineTo(w * 0.0575, h * 0.635); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_LETTERS, mxShapeMockupiKeybLetters); + +//********************************************************************************************************************************************************** +//Keyboard (numbers) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiKeybNumbers(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiKeybNumbers, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiKeybNumbers.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybNumbers.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybNumbers.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, '2', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, '4', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, '5', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, '6', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, '7', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, '8', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, '9', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.0086, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.375, 0, 0, '-', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1092, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.375, 0, 0, '/', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2098, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.375, 0, 0, ':', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3103, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.375, 0, 0, ';', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4109, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.375, 0, 0, '(', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5115, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.375, 0, 0, ')', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6121, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.375, 0, 0, '$', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7126, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.375, 0, 0, '&', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8132, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.375, 0, 0, '@', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.9138, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.375, 0, 0, '\"', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1638, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2227, h * 0.625, 0, 0, '.', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3046, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3635, h * 0.625, 0, 0, ',', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4454, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, '?', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5862, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6451, h * 0.625, 0, 0, '!', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.727, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7859, h * 0.625, 0, 0, '\'', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setFontColor('#ffffff'); + + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0718, h * 0.625, 0, 0, '#+=', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1264, h * 0.875, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_NUMBERS, mxShapeMockupiKeybNumbers); + +//********************************************************************************************************************************************************** +//Keyboard (symbols) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiKeybSymbols(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiKeybSymbols, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiKeybSymbols.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiKeybSymbols.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#8A97A7', '#425163', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeMockupiKeybSymbols.prototype.foreground = function(c, x, y, w, h, strokeColor) +{ + c.setGradient('#EEF3F9', '#DBE2E9', w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + rSizeX = w * 0.0144; + rSizeY = h * 0.025; + c.setFontSize(10.5); + c.setFontColor('#000000'); + + c.roundrect(w * 0.0086, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.125, 0, 0, '[', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1092, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.125, 0, 0, ']', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2098, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.125, 0, 0, '{', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3103, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.125, 0, 0, '}', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4109, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.125, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5115, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.125, 0, 0, '%', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6121, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.125, 0, 0, '^', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7126, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.125, 0, 0, '*', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8132, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.125, 0, 0, '+', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.9138, h * 0.03, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.125, 0, 0, '=', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.0086, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0474, h * 0.375, 0, 0, '_', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1092, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.148, h * 0.375, 0, 0, '\\', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2098, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2486, h * 0.375, 0, 0, '|', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3103, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3491, h * 0.375, 0, 0, '~', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4109, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.4497, h * 0.375, 0, 0, '<', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5115, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5503, h * 0.375, 0, 0, '>', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.6121, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6509, h * 0.375, 0, 0, String.fromCharCode(128), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.7126, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7514, h * 0.375, 0, 0, String.fromCharCode(parseInt('00A3', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.8132, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.852, h * 0.375, 0, 0, String.fromCharCode(parseInt('00A5', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.9138, h * 0.28, w * 0.0776, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.9526, h * 0.375, 0, 0, String.fromCharCode(parseInt('0095', 16)), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.1638, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.2227, h * 0.625, 0, 0, '.', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.3046, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.3635, h * 0.625, 0, 0, ',', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.4454, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.5043, h * 0.625, 0, 0, '?', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.5862, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.6451, h * 0.625, 0, 0, '!', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.727, h * 0.53, w * 0.1178, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.7859, h * 0.625, 0, 0, '\'', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.roundrect(w * 0.2644, h * 0.78, w * 0.4799, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.setFontColor('#666666'); + c.text(w * 0.5043, h * 0.875, 0, 0, 'space', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setGradient('#8B98A8', '#677488', w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setFontColor('#ffffff'); + + c.roundrect(w * 0.0115, h * 0.53, w * 0.1207, h * 0.19, rSizeX, rSizeY); + c.fill(); + + c.roundrect(w * 0.8736, h * 0.53, w * 0.115, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.0115, h * 0.78, w * 0.2299, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.roundrect(w * 0.7672, h * 0.78, w * 0.2213, h * 0.19, rSizeX, rSizeY); + c.fill(); + c.text(w * 0.0718, h * 0.625, 0, 0, '123', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1264, h * 0.875, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8779, h * 0.875, 0, 0, 'return', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setShadow(false); + c.setLineJoin('round'); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.9109, h * 0.585); + c.lineTo(w * 0.9655, h * 0.585); + c.lineTo(w * 0.9655, h * 0.665); + c.lineTo(w * 0.9109, h * 0.665); + c.lineTo(w * 0.8879, h * 0.625); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor('#677488'); + c.begin(); + c.moveTo(w * 0.9224, h * 0.605); + c.lineTo(w * 0.9454, h * 0.645); + c.moveTo(w * 0.9224, h * 0.645); + c.lineTo(w * 0.9454, h * 0.605); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IKEYB_SYMBOLS, mxShapeMockupiKeybSymbols); + +//********************************************************************************************************************************************************** +//Delete App +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiDeleteApp(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiDeleteApp, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiDeleteApp.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '').toString(); + + c.translate(x, y); + this.background(c, x, y, w, h, strokeColor); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiDeleteApp.prototype.background = function(c, x, y, w, h, strokeColor) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '').toString(); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '').toString(); + c.setGradient(fillColor, fillColor2, 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor(strokeColor); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiDeleteApp.prototype.foreground = function(c, x, y, w, h) +{ + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.3, h * 0.3); + c.lineTo(w * 0.7, h * 0.7); + c.moveTo(w * 0.3, h * 0.7); + c.lineTo(w * 0.7, h * 0.3); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDELETE_APP, mxShapeMockupiDeleteApp); + +//********************************************************************************************************************************************************** +//Direction +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiDirection(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiDirection, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiDirection.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiDirection.prototype.background = function(c, x, y, w, h) +{ + c.setStrokeWidth(0.5); + c.setStrokeColor('#008cff'); + c.ellipse(0, 0, w, h); + c.stroke(); +}; + +mxShapeMockupiDirection.prototype.foreground = function(c, x, y, w, h) +{ + c.setAlpha(1); + c.setGradient('#ffffff', '#ffffff', w * 0.29, h * 0.2, w * 0.42, h * 0.3, mxConstants.DIRECTION_NORTH, 1, 0); + c.begin(); + c.moveTo(w * 0.29, h * 0.2); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.71, h * 0.2); + c.fillAndStroke(); + + c.setStrokeColor('#006cdf'); + c.setGradient('#ffffff', '#007cef', w * 0.47, h * 0.47, w * 0.06, h * 0.06, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(1); + c.ellipse(w * 0.47, h * 0.47, w * 0.06, h * 0.06); + c.fillAndStroke(); + + c.setFillColor('#ffffff'); + c.setAlpha(0.8); + c.ellipse(w * 0.4825, h * 0.4825, w * 0.015, h * 0.015); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDIRECTION, mxShapeMockupiDirection); + +//********************************************************************************************************************************************************** +//Location Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiLocationBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiLocationBar, mxShape); + +mxShapeMockupiLocationBar.prototype.customProperties = [ + {name: 'buttonText', dispName: 'Text', type: 'string'}, + {name: 'barPos', dispName: 'Callout Position', type: 'float', min:0, defVal:80}, + {name: 'pointerPos', dispName: 'Callout Orientation', type: 'enum', + enumList: [{val: 'bottom', dispName: 'Bottom'}, {val: 'top', dispName: 'Top'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiLocationBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiLocationBar.prototype.background = function(c, x, y, w, h) +{ + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var rSize = 2.5; + var deadzone = rSize + 7.5; // rounding + pointer width / 2 + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeWidth(0.5); + c.setStrokeColor('#000000'); + c.setAlpha(0.7); + c.begin(); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) + { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(truePos + 7.5, h - 7.5); + c.lineTo(truePos, h); + c.lineTo(truePos - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + } + else if (pointerPos === mxMockupC.POINTER_TOP) + { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize + 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 7.5); + c.lineTo(truePos - 7.5, 7.5); + c.lineTo(truePos, 0); + c.lineTo(truePos + 7.5, 7.5); + c.lineTo(w - rSize, 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize + 7.5); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiLocationBar.prototype.foreground = function(c, x, y, w, h) +{ + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var locText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Some Location'); + c.setAlpha(1); + c.setFontColor('#ffffff'); + c.setFontSize(9.5); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) + { + c.text(5, (h - 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.translate(w - 20, (h - 7.5) * 0.5 - 7.5); + } + else + { + c.text(5, (h + 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.translate(w - 20, (h + 7.5) * 0.5 - 7.5); + } + + w = 15; + h = 15; + + c.setGradient('#8BbEff', '#135Ec8', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + + c.setStrokeWidth(1.5); + c.setStrokeColor('#ffffff'); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.setStrokeWidth(2.5); + c.begin(); + c.moveTo(w * 0.4, h * 0.22); + c.lineTo(w * 0.65, h * 0.5); + c.lineTo(w * 0.4, h * 0.78); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ILOCATION_BAR, mxShapeMockupiLocationBar); + +//********************************************************************************************************************************************************** +//Call Dialog +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCallDialog(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCallDialog, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCallDialog.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var rSize = 5; + c.translate(x, y); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiCallDialog.prototype.background = function(c, x, y, w, h, rSize) +{ + c.setAlpha(0.8); + c.setStrokeColor('#888888'); + c.setStrokeWidth(1.5); + c.setFillColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiCallDialog.prototype.foreground = function(c, x, y, w, h, rSize) +{ + + c.begin(); + c.moveTo(w * 0.33, 0); + c.lineTo(w * 0.33, h); + c.moveTo(w * 0.67, 0); + c.lineTo(w * 0.67, h); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.setStrokeColor('#000000'); + c.setFillColor('#ffffff'); + c.setStrokeWidth(0.5); + c.roundrect(w * 0.1433, h * 0.104, w * 0.0417, h * 0.148, w * 0.02, h * 0.024); + c.fill(); + + c.begin(); + c.moveTo(w * 0.14, h * 0.188); + c.lineTo(w * 0.14, h * 0.228); + c.arcTo(w * 0.025, h * 0.03, 0, 0, 0, w * 0.19, h * 0.228); + c.lineTo(w * 0.19, h * 0.188); + c.lineTo(w * 0.2, h * 0.188); + c.lineTo(w * 0.2, h * 0.228); + c.arcTo(w * 0.0367, h * 0.044, 0, 0, 1, w * 0.17, h * 0.27); + c.lineTo(w * 0.17, h * 0.296); + c.lineTo(w * 0.195, h * 0.296); + c.lineTo(w * 0.195, h * 0.308); + c.lineTo(w * 0.1367, h * 0.308); + c.lineTo(w * 0.1367, h * 0.296); + c.lineTo(w * 0.16, h * 0.296); + c.lineTo(w * 0.16, h * 0.27); + c.arcTo(w * 0.0367, h * 0.044, 0, 0, 1, w * 0.13, h * 0.228); + c.lineTo(w * 0.13, h * 0.188); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1033, h * 0.108); + c.lineTo(w * 0.24, h * 0.286); + c.lineTo(w * 0.2317, h * 0.298); + c.lineTo(w * 0.095, h * 0.12); + c.close(); + c.fillAndStroke(); + + c.rect(w * 0.44, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.128, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.44, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.186, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.44, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.485, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + c.rect(w * 0.53, h * 0.244, w * 0.033, h * 0.04); + c.fill(); + + c.begin(); + c.moveTo(w * 0.7567, h * 0.18); + c.lineTo(w * 0.785, h * 0.18); + c.lineTo(w * 0.825, h * 0.128); + c.lineTo(w * 0.825, h * 0.28); + c.lineTo(w * 0.79, h * 0.234); + c.lineTo(w * 0.7567, h * 0.234); + c.close(); + c.fill(); + + c.setStrokeWidth(1.5); + c.setStrokeColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.8383, h * 0.16); + c.arcTo(w * 0.0533, h * 0.064, 0, 0, 1, w * 0.8383, h * 0.252); + c.moveTo(w * 0.8583, h * 0.134); + c.arcTo(w * 0.0817, h * 0.098, 0, 0, 1, w * 0.8583, h * 0.276); + c.moveTo(w * 0.8767, h * 0.11); + c.arcTo(w * 0.1133, h * 0.136, 0, 0, 1, w * 0.8767, h * 0.304); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.1467, h * 0.62); + c.lineTo(w * 0.1833, h * 0.62); + c.lineTo(w * 0.1833,h * 0.676); + c.lineTo(w * 0.2267,h * 0.676); + c.lineTo(w * 0.2267,h * 0.724); + c.lineTo(w * 0.1833,h * 0.724); + c.lineTo(w * 0.1833,h * 0.78); + c.lineTo(w * 0.1467,h * 0.78); + c.lineTo(w * 0.1467,h * 0.724); + c.lineTo(w * 0.105,h * 0.724); + c.lineTo(w * 0.105,h * 0.676); + c.lineTo(w * 0.1467,h * 0.676); + c.close(); + c.fill(); + + c.rect(w * 0.4517, h * 0.624, w * 0.0333, h * 0.152); + c.fill(); + + c.rect(w * 0.5183, h * 0.624, w * 0.0333, h * 0.152); + c.fill(); + + c.begin(); + c.moveTo(w * 0.76, h * 0.752); + c.arcTo(w * 0.1, h * 0.12, 0, 0, 1, w * 0.8033, h * 0.728); + c.arcTo(w * 0.0167, h * 0.02, 0, 0, 0, w * 0.8167, h * 0.712); + c.lineTo(w * 0.8175, h * 0.7); + c.arcTo(w * 0.0267, h * 0.06, 0, 0, 1, w * 0.8067, h * 0.644); + c.arcTo(w * 0.0287, h * 0.0344, 0, 0, 1, w * 0.8633, h * 0.644); + c.arcTo(w * 0.0267, h * 0.06, 0, 0, 1, w * 0.855, h * 0.7); + c.arcTo(w * 0.05, h * 0.724, 0, 0, 1, w * 0.8633, h * 0.724); + c.arcTo(w * 0.1667, h * 0.75, 0, 0, 1, w * 0.9083, h * 0.75); + c.lineTo(w * 0.9083, h * 0.78); + c.lineTo(w * 0.76, h * 0.78); + c.close(); + c.fill(); + + c.setFontColor('#ffffff'); + c.setFontSize(8.5); + c.text(w * 0.1667, h * 0.35, 0, 0, 'mute', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.35, 0, 0, 'keypad', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.35, 0, 0, 'speaker', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.1667, h * 0.85, 0, 0, 'add', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.85, 0, 0, 'pause', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.85, 0, 0, 'contacts', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setGradient('#808080', '#ffffff', 0, 0, w, h * 0.308, mxConstants.DIRECTION_NORTH, 1, 1); + c.setAlpha(0.4); + c.begin(); + c.moveTo(0, h * 0.308); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.308); + c.arcTo(w * 1.5, h * 1.8, 0, 0, 1, 0, h * 0.308); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICALL_DIALOG, mxShapeMockupiCallDialog); + +//********************************************************************************************************************************************************** +//Call Buttons +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCallButtons(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCallButtons, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCallButtons.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiCallButtons.prototype.background = function(c, x, y, w, h) +{ + c.setStrokeWidth(0.5); + c.setStrokeColor('#008cff'); + c.setGradient('#0F1B2B', '#4F5B6B', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeMockupiCallButtons.prototype.foreground = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.1667); + c.lineTo(w, h * 0.1667); + c.moveTo(0, h * 0.3333); + c.lineTo(w, h * 0.3333); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(0, h * 0.6667); + c.lineTo(w, h * 0.6667); + c.moveTo(0, h * 0.8333); + c.lineTo(w, h * 0.8333); + c.moveTo(w * 0.3333, h * 0.1667); + c.lineTo(w * 0.3333, h); + c.moveTo(w * 0.6667, h * 0.1667); + c.lineTo(w * 0.6667, h); + c.stroke(); + + c.setFontSize(15.5); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + + c.text(w * 0.5, h * 0.0834, 0, 0, '(123) 456-7890', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.1667, h * 0.22, 0, 0, '1', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.22, 0, 0, '2', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.22, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.1667, h * 0.3867, 0, 0, '3', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3867, 0, 0, '4', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.3867, 0, 0, '5', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.1667, h * 0.5534, 0, 0, '6', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5534, 0, 0, '7', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.5534, 0, 0, '8', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontSize(27.5); + c.text(w * 0.1667, h * 0.76, 0, 0, '*', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontSize(15.5); + c.text(w * 0.5, h * 0.72, 0, 0, '0', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.75, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setGradient('#E2FFEB', '#008215', w * 0.3333, h * 0.8333, w * 0.3333, h * 0.1667, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(w * 0.3333, h * 0.8333, w * 0.3333, h * 0.1667); + c.fillAndStroke(); + + c.text(w * 0.5, h * 0.9168, 0, 0, 'Call', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontStyle(0); + c.setFontSize(8); + c.setFontColor('#bbbbbb'); + + c.text(w * 0.5, h * 0.28, 0, 0, 'ABC', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.28, 0, 0, 'DEF', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.1667, h * 0.4467, 0, 0, 'GHI', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.4467, 0, 0, 'JKL', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.4467, 0, 0, 'MNO', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.1667, h * 0.6134, 0, 0, 'PQRS', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.6134, 0, 0, 'TUV', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.8333, h * 0.6134, 0, 0, 'WXYZ', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.text(w * 0.5, h * 0.78, 0, 0, '+', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.1028, h * 0.9464); + c.arcTo(w * 0.0862, h * 0.0652, 0, 0, 1, w * 0.1402, h * 0.9333); + c.arcTo(w * 0.0144, h * 0.0109, 0, 0, 0, w * 0.1517, h * 0.9246); + c.lineTo(w * 0.1524, h * 0.9181); + c.arcTo(w * 0.023, h * 0.0326, 0, 0, 1, w * 0.143, h * 0.8877); + c.arcTo(w * 0.0247, h * 0.0187, 0, 0, 1, w * 0.1919, h * 0.8877); + c.arcTo(w * 0.023, h * 0.0326, 0, 0, 1, w * 0.1847, h * 0.9181); + c.arcTo(w * 0.0431, h * 0.0174, 0, 0, 0, w * 0.1919, h * 0.9311); + c.arcTo(w * 0.1437, h * 0.1087, 0, 0, 1, w * 0.2307, h * 0.9453); + c.lineTo(w * 0.2307, h * 0.9616); + c.lineTo(w * 0.1028, h * 0.9616); + c.close(); + c.fill(); + + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(2.5); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.79, h * 0.89); + c.lineTo(w * 0.9, h * 0.89); + c.lineTo(w * 0.9, h * 0.95); + c.lineTo(w * 0.79, h * 0.95); + c.lineTo(w * 0.76, h * 0.92); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor('#0F1B2B'); + c.begin(); + c.moveTo(w * 0.82, h * 0.907); + c.lineTo(w * 0.85, h * 0.933); + c.moveTo(w * 0.82, h * 0.933); + c.lineTo(w * 0.85, h * 0.907); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICALL_BUTTONS, mxShapeMockupiCallButtons); + +//********************************************************************************************************************************************************** +//Option +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiOption(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiOption, mxShape); + +mxShapeMockupiOption.prototype.customProperties = [ + {name: 'buttonText', dispName: 'Text', type: 'string'}, + {name: 'barPos', dispName: 'Callout Position', type: 'float', min:0, defVal:80}, + {name: 'pointerPos', dispName: 'Callout Orientation', type: 'enum', + enumList: [{val: 'bottom', dispName: 'Bottom'}, {val: 'top', dispName: 'Top'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiOption.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeMockupiOption.prototype.background = function(c, x, y, w, h) +{ + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + var rSize = 2.5; + var deadzone = rSize + 7.5; // rounding + pointer width / 2 + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + c.setStrokeWidth(0.5); + c.setStrokeColor('#000000'); + c.setAlpha(0.9); + c.begin(); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) + { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(truePos + 7.5, h - 7.5); + c.lineTo(truePos, h); + c.lineTo(truePos - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + } + else if (pointerPos === mxMockupC.POINTER_TOP) + { + c.setGradient('#000000', '#888888', 0, 0, w, h, mxConstants.DIRECTION_NORTH, 1, 1); + c.moveTo(0, rSize + 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 7.5); + c.lineTo(truePos - 7.5, 7.5); + c.lineTo(truePos, 0); + c.lineTo(truePos + 7.5, 7.5); + c.lineTo(w - rSize, 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize + 7.5); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + } + + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiOption.prototype.foreground = function(c, x, y, w, h) +{ + var locText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, 'Some Location'); + var pointerPos = mxUtils.getValue(this.style, mxMockupC.POINTER_POS, mxMockupC.POINTER_BOTTOM); + c.setAlpha(1); + c.setFontColor('#ffffff'); + c.setFontSize(9.5); + + if (pointerPos === mxMockupC.POINTER_BOTTOM) + { + c.text(w * 0.5, (h - 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else + { + c.text(w * 0.5, (h + 7.5) * 0.5, 0, 0, locText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IOPTION, mxShapeMockupiOption); + +//********************************************************************************************************************************************************** +//Alpha List +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiAlphaList(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiAlphaList, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiAlphaList.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8'); + + c.setFontColor('#999999'); + c.setFontSize(fontSize); + c.text(w * 0.5, h * 0.069, 0, 0, 'A', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.1035, 0, 0, 'B', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.138, 0, 0, 'C', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.1725, 0, 0, 'D', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.207, 0, 0, 'E', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.2415, 0, 0, 'F', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.276, 0, 0, 'G', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3105, 0, 0, 'H', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.345, 0, 0, 'I', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.3795, 0, 0, 'J', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.414, 0, 0, 'K', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.4485, 0, 0, 'L', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.483, 0, 0, 'M', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5175, 0, 0, 'N', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.552, 0, 0, 'O', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.5865, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.621, 0, 0, 'Q', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.6555, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.69, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.7245, 0, 0, 'T', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.759, 0, 0, 'U', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.7935, 0, 0, 'V', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.828, 0, 0, 'W', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.8625, 0, 0, 'X', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.897, 0, 0, 'Y', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.9315, 0, 0, 'Z', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.text(w * 0.5, h * 0.966, 0, 0, '#', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setStrokeColor('#999999'); + c.ellipse(w * 0.5 - 2.25, h * 0.0345 - 3.5, 4.5, 4.5); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5 - 4.25, h * 0.0345 + 3); + c.lineTo(w * 0.5 - 1.75, h * 0.0345); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IALPHA_LIST, mxShapeMockupiAlphaList); + +//********************************************************************************************************************************************************** +//Horizontal Button Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiHorButtonBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiHorButtonBar, mxShape); + +mxShapeMockupiHorButtonBar.prototype.customProperties = [ + {name: 'buttonText', dispName: 'Labels', type: 'string'}, + {name: 'textColor', dispName: 'Text Color', type: 'color'}, + {name: 'textColor2', dispName: 'Text2 Color', type: 'color'}, + {name: 'strokeColor2', dispName: 'Stroke2 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiHorButtonBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '+Button 1, Button 2, Button 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#666666'); + var selectedFontColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR2, '#ffffff'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8.5').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#666666'); + var separatorColor = mxUtils.getValue(this.style, mxMockupC.STYLE_STROKECOLOR2, '#c4c4c4'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var selectedFillColor = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#008cff'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var rSize = 2.5; //rounding size + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxMockupC.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 10); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeMockupiHorButtonBar.prototype.background = function(c, w, h, rSize, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, 0); + c.lineTo(currWidth, h); + } + } + + c.stroke(); + + //draw the selected button + var buttonLeft = 0; + c.setStrokeColor(mxConstants.NONE); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + if (selectedButton === 0) + { + c.setGradient('#5D7585', '#008cff', 0, 0, buttonRight, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + // we draw a path for the first button + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fill(); + } + else if (selectedButton === buttonNum - 1) + { + c.setGradient('#5D7585', '#008cff', buttonLeft, 0, buttonRight - buttonLeft, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + // we draw a path for the last button + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight, rSize); + c.lineTo(buttonRight, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, buttonRight - rSize, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + else if (selectedButton !== -1) + { + c.setGradient('#5D7585', '#008cff', buttonLeft, 0, buttonRight - buttonLeft, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + // we draw a path rectangle for one of the buttons in the middle + c.moveTo(buttonLeft, 0); + c.lineTo(buttonRight, 0); + c.lineTo(buttonRight, h); + c.lineTo(buttonLeft, h); + c.close(); + c.fill(); + } + + //draw the frame again, to achieve a nicer effect + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); +}; + +mxShapeMockupiHorButtonBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxMockupC.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IHOR_BUTTON_BAR, mxShapeMockupiHorButtonBar); + +//********************************************************************************************************************************************************** +//Pin +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiPin(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiPin, mxShape); + +mxShapeMockupiPin.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Fill2 Color', type: 'color'}, + {name: 'fillColor3', dispName: 'Fill3 Color', type: 'color'} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiPin.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#000000'); + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setShadow(false); + c.translate(x, y); + + c.setStrokeWidth(1.5); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(w * 0.5, h * 0.4); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.setStrokeWidth(1); + c.setStrokeColor(strokeColor); + c.setGradient(fillColor2, fillColor3, 0, 0, w, h * 0.4, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.9); + c.ellipse(0, 0, w, h * 0.4); + c.fillAndStroke(); + + c.setFillColor('#ffffff'); + c.setAlpha(0.5); + c.ellipse(w * 0.2, h * 0.08, w * 0.3, h * 0.12); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPIN, mxShapeMockupiPin); + +//********************************************************************************************************************************************************** +//Video Controls +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiVideoControls(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiVideoControls, mxShape); + +mxShapeMockupiVideoControls.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:20} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiVideoControls.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 5; + c.setStrokeWidth(1); + c.setFillColor('#000000'); + c.setStrokeColor('#bbbbbb'); + c.setAlpha(0.7); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + c.setShadow(false); + + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiVideoControls.prototype.foreground = function(c, w, h, rSize) +{ + c.setGradient('#ffffff', '#ffffff', 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(0, h * 0.5); + c.close(); + c.fill(); + + c.setAlpha(1); + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + var iconX = w * 0.1; + var iconY = h * 0.35; + + c.begin(); + c.moveTo(iconX - 7.5, iconY - 2.5); + c.arcTo(6, 6, 0, 0, 1, iconX, iconY - 2.5); + c.arcTo(6, 6, 0, 0, 1, iconX + 7.5, iconY - 2.5); + c.lineTo(iconX + 7.5, iconY + 4); + c.arcTo(6, 6, 0, 0, 0, iconX, iconY + 4); + c.arcTo(6, 6, 0, 0, 0, iconX - 7.5, iconY + 4); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(iconX, iconY - 2.5); + c.lineTo(iconX, iconY + 4); + c.stroke(); + + iconX = w * 0.3; + c.rect(iconX - 7.5, iconY - 5, 1, 10); + c.fill(); + + c.begin(); + c.moveTo(iconX - 6.5, iconY); + c.lineTo(iconX + 0.5, iconY - 5); + c.lineTo(iconX + 0.5, iconY + 5); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(iconX + 0.5, iconY); + c.lineTo(iconX + 7.5, iconY - 5); + c.lineTo(iconX + 7.5, iconY + 5); + c.close(); + c.fill(); + + iconX = w * 0.5; + c.begin(); + c.moveTo(iconX - 6, iconY - 5); + c.lineTo(iconX + 6, iconY); + c.lineTo(iconX - 6, iconY + 5); + c.close(); + c.fill(); + + iconX = w * 0.7; + c.begin(); + c.moveTo(iconX - 7.5, iconY - 5); + c.lineTo(iconX - 0.5, iconY); + c.lineTo(iconX - 7.5, iconY + 5); + c.close(); + c.fill(); + c.begin(); + c.moveTo(iconX - 0.5, iconY - 5); + c.lineTo(iconX + 6.5, iconY); + c.lineTo(iconX - 0.5, iconY + 5); + c.close(); + c.fill(); + c.rect(iconX + 6.5, iconY - 5, 1, 10); + c.fill(); + + iconX = w * 0.9; + c.rect(iconX - 7.5, iconY - 4, 15, 8); + c.stroke(); + c.setStrokeWidth(0.5); + c.begin(); + c.moveTo(iconX - 7.5, iconY - 4); + c.lineTo(iconX, iconY + 1.5); + c.lineTo(iconX + 7.5, iconY - 4); + c.stroke(); + c.begin(); + c.moveTo(iconX - 7.5, iconY + 4); + c.lineTo(iconX - 2, iconY); + c.stroke(); + c.begin(); + c.moveTo(iconX + 7.5, iconY + 4); + c.lineTo(iconX + 2, iconY); + c.stroke(); + + c.setGradient('#444444', '#ffffff', w * 0.1, h * 0.75 - 2.5, w * 0.8, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(w * 0.1, h * 0.75 - 2.5, w * 0.8, 5, 2.5, 2.5); + c.fill(); + + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = w * 0.1; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setGradient('#96D1FF', '#003377', w * 0.1, h * 0.75 - 5, truePos - w * 0.1, 10, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.75 - 2.5); + c.lineTo(truePos, h * 0.75 + 2.5); + c.lineTo(w * 0.1 + 2.5, h * 0.75 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, w * 0.1 + 2.5, h * 0.75 - 2.5); + c.close(); + c.fill(); + + c.setStrokeColor('#999999'); + c.setGradient('#444444', '#ffffff', truePos - 5, h * 0.75 - 5, 10, 10, mxConstants.DIRECTION_NORTH, 1, 1); + c.ellipse(truePos - 5, h * 0.75 - 5, 10, 10); + c.fillAndStroke(); + + c.setStrokeColor('#dddddd'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IVIDEO_CONTROLS, mxShapeMockupiVideoControls); + +Graph.handleFactory[mxMockupC.SHAPE_IVIDEO_CONTROLS] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 40)))); + + return new mxPoint(bounds.x + bounds.width * 0.1 + barPos * bounds.width * 0.8 / 100, bounds.y + bounds.height * 0.75); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.width * 0.1 - bounds.x) * 100 / (bounds.width * 0.8)))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//URL Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiURLBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiURLBar, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiURLBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setGradient('#cccccc', '#003377', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeMockupiURLBar.prototype.foreground = function(c, w, h) +{ + c.setStrokeWidth(0.5); + c.setFillColor('#ffffff'); + c.setStrokeColor('#008cff'); + c.roundrect(w * 0.0287, h * 0.625 - 6.25, w * 0.7184, 12.5, 6.25, 6.25); + c.fillAndStroke(); + + c.setGradient('#cccccc', '#001144', w * 0.7816, h * 0.625 - 6.25, w * 0.1868, 12.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setStrokeColor('#000000'); + c.roundrect(w * 0.7816, h * 0.625 - 6.25, w * 0.1868, 12.5, 2.5, 2.5); + c.fillAndStroke(); + + c.setFillColor('#bbbbbb'); + c.ellipse(w * 0.7471 - 11.5, h * 0.625 - 5, 10, 10); + c.fill(); + + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(1.5); + c.begin(); + c.moveTo(w * 0.7471 - 8.5, h * 0.625 - 2.5); + c.lineTo(w * 0.7471 - 3.5, h * 0.625 + 2.5); + c.moveTo(w * 0.7471 - 8.5, h * 0.625 + 2.5); + c.lineTo(w * 0.7471 - 3.5, h * 0.625 - 2.5); + c.stroke(); + + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, '').toString().split(','); + c.setFontColor('#425664'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText[0], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor('#000000'); + c.text(w * 0.06, h * 0.625, 0, 0, fieldText[1], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + c.setFontColor('#ffffff'); + c.text(w * 0.875, h * 0.625, 0, 0, fieldText[2], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IURL_BAR, mxShapeMockupiURLBar); + +//********************************************************************************************************************************************************** +//Slider +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiSlider(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiSlider, mxShape); + +mxShapeMockupiSlider.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:20}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiSlider.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeMockupiSlider.prototype.foreground = function(c, w, h) +{ + c.setStrokeWidth(0.5); + c.setGradient('#444444', '#ffffff', 0, h * 0.5 - 2.5, w, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, h * 0.5 - 2.5, w, 5, 2.5, 2.5); + c.fill(); + + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setGradient('#96D1FF', '#003377', 2.5, h * 0.5 - 2.5, truePos - 2.5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.5 - 2.5); + c.lineTo(truePos, h * 0.5 + 2.5); + c.lineTo(2.5, h * 0.5 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, 2.5, h * 0.5 - 2.5); + c.close(); + c.fill(); + + c.setStrokeColor('#999999'); + c.setGradient('#444444', '#ffffff', truePos - 5, h * 0.5 - 5, 10, 10, mxConstants.DIRECTION_NORTH, 1, 1); + c.ellipse(truePos - 5, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISLIDER, mxShapeMockupiSlider); + +Graph.handleFactory[mxMockupC.SHAPE_ISLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + + +//********************************************************************************************************************************************************** +//Progress Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiProgressBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiProgressBar, mxShape); + +mxShapeMockupiProgressBar.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:40}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiProgressBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeMockupiProgressBar.prototype.foreground = function(c, w, h) +{ + c.setStrokeWidth(0.5); + c.setGradient('#444444', '#ffffff', 0, h * 0.5 - 2.5, w, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.roundrect(0, h * 0.5 - 2.5, w, 5, 2.5, 2.5); + c.fill(); + + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setGradient('#96D1FF', '#003377', 2.5, h * 0.5 - 2.5, truePos - 2.5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.5 - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, truePos, h * 0.5 + 2.5); + c.lineTo(2.5, h * 0.5 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, 2.5, h * 0.5 - 2.5); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPROGRESS_BAR, mxShapeMockupiProgressBar); + +Graph.handleFactory[mxMockupC.SHAPE_IPROGRESS_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//iCloud Progress Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCloudProgressBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCloudProgressBar, mxShape); + +mxShapeMockupiCloudProgressBar.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:20}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCloudProgressBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeMockupiCloudProgressBar.prototype.foreground = function(c, w, h) +{ + c.setStrokeWidth(0.5); + c.setFillColor('#5C6E86'); + c.rect(0, h * 0.5 - 2.5, w, 5); + c.fill(); + + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = 0; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setFillColor('#8AD155'); + c.rect(0, h * 0.5 - 2.5, truePos, 5); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICLOUD_PROGRESS_BAR, mxShapeMockupiCloudProgressBar); + +Graph.handleFactory[mxMockupC.SHAPE_ICLOUD_PROGRESS_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Download Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiDownloadBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiDownloadBar, mxShape); + +mxShapeMockupiDownloadBar.prototype.customProperties = [ + {name: 'barPos', dispName: 'Handle Position', type: 'float', min:0, defVal:30}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiDownloadBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setGradient('#00ccff', '#0066cc', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + + this.foreground(c, w, h); +}; + +mxShapeMockupiDownloadBar.prototype.foreground = function(c, w, h) +{ + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.setFontSize(8); + c.text(w * 0.5, h * 0.2, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var barPos = mxUtils.getValue(this.style, mxMockupC.BAR_POS, '80'); + barPos = Math.min(barPos, 100); + barPos = Math.max(barPos, 0); + var deadzone = w * 0.1; + var virRange = w - 2 * deadzone; + var truePos = deadzone + virRange * barPos / 100; + + c.setStrokeWidth(0.5); + c.setGradient('#96D1FF', '#003377', deadzone, h * 0.65 - 2.5, w - 2 * deadzone, 5, mxConstants.DIRECTION_NORTH, 1, 1); + c.roundrect(deadzone, h * 0.65 - 2.5, w - 2 * deadzone, 5, 2.5, 2.5); + c.fill(); + + c.setGradient('#aaaaaa', '#ffffff', deadzone + 2.5, h * 0.65 - 2.5, truePos - deadzone - 2.5, 5, mxConstants.DIRECTION_NORTH, 1, 1); + c.begin(); + c.moveTo(truePos, h * 0.65 - 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, truePos, h * 0.65 + 2.5); + c.lineTo(deadzone + 2.5, h * 0.65 + 2.5); + c.arcTo(2.5, 2.5, 0, 0, 1, deadzone + 2.5, h * 0.65 - 2.5); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IDOWNLOAD_BAR, mxShapeMockupiDownloadBar); + +Graph.handleFactory[mxMockupC.SHAPE_IDOWNLOAD_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 40)))); + + return new mxPoint(bounds.x + bounds.width * 0.1 + barPos * bounds.width * 0.8 / 100, bounds.y + bounds.height * 0.65); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.width * 0.1 - bounds.x) * 100 / (bounds.width * 0.8)))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Screen Name Bar +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiScreenNameBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiScreenNameBar, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiScreenNameBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 5; + c.setStrokeWidth(0.5); + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#00ff00'); + c.setFillColor(fillColor2); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiScreenNameBar.prototype.foreground = function(c, w, h, rSize) +{ + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.rect(0, 0, w, h * 0.5); + c.fill(); + + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(9.5); + c.text(w * 0.5, h * 0.45, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ISCREEN_NAME_BAR, mxShapeMockupiScreenNameBar); + +//********************************************************************************************************************************************************** +//Icon Grid +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiIconGrid(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiIconGrid, mxShape); + +mxShapeMockupiIconGrid.prototype.customProperties = [ + {name: 'gridSize', dispName: 'Grid Size', type: 'string'}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiIconGrid.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var gridSize = mxUtils.getValue(this.style, mxMockupC.GRID_SIZE, '3,3').toString().split(','); + this.background(c, w, h, gridSize); + c.setShadow(false); + + this.foreground(c, w, h, gridSize); +}; + +mxShapeMockupiIconGrid.prototype.background = function(c, w, h, gridSize) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#00ff00'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#00ff00'); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + + var boxSizeX = w / (parseInt(gridSize[0],10) + (gridSize[0]-1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1],10) + (gridSize[1]-1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) + { + for (var j = 0; j < gridSize[1]; j++) + { + c.rect(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j, boxSizeX, boxSizeY); + c.fillAndStroke(); + } + } +}; + +mxShapeMockupiIconGrid.prototype.foreground = function(c, w, h, gridSize) +{ + var boxSizeX = w / (parseInt(gridSize[0],10) + (gridSize[0]-1) * 0.5); + var boxSizeY = h / (parseInt(gridSize[1],10) + (gridSize[1]-1) * 0.5); + + for (var i = 0; i < gridSize[0]; i++) + { + for (var j = 0; j < gridSize[1]; j++) + { + c.begin(); + c.moveTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j + boxSizeY); + c.moveTo(boxSizeX * 1.5 * i + boxSizeX, boxSizeY * 1.5 * j); + c.lineTo(boxSizeX * 1.5 * i, boxSizeY * 1.5 * j + boxSizeY); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IICON_GRID, mxShapeMockupiIconGrid); + +//********************************************************************************************************************************************************** +//Copy +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCopy(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCopy, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCopy.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var rSize = 5; + c.translate(x, y); + this.background(c, w, h, rSize); + c.setShadow(false); + + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiCopy.prototype.background = function(c, w, h, rSize) +{ + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h - 7.5); + c.lineTo(w * 0.5 + 7.5, h - 7.5); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - 7.5, h - 7.5); + c.lineTo(rSize, h - 7.5); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize - 7.5); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiCopy.prototype.foreground = function(c, w, h, rSize) +{ + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, 0, 0, w, h * 0.5, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, (h - 7.5) * 0.5); + c.lineTo(0, (h - 7.5) * 0.5); + c.close(); + c.fill(); + + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(8.5); + c.text(w * 0.5, (h - 7.5)* 0.45, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOPY, mxShapeMockupiCopy); + +//********************************************************************************************************************************************************** +//Copy Area +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiCopyArea(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiCopyArea, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiCopyArea.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var rSize = 5; + c.translate(x, y); + this.background(c, w, h, rSize); + c.setShadow(false); + + this.foreground(c, w, h, rSize); +}; + +mxShapeMockupiCopyArea.prototype.background = function(c, w, h, rSize) +{ + c.begin(); + c.moveTo(w * 0.5 - 20, 0 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 20 - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20 - rSize, 20); + c.lineTo(w * 0.5 + 7.5, 20); + c.lineTo(w * 0.5, 27.5); + c.lineTo(w * 0.5 - 7.5, 20); + c.lineTo(w * 0.5 - 20 + rSize, 20); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20, 20 - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxShapeMockupiCopyArea.prototype.foreground = function(c, w, h, rSize) +{ + c.setAlpha(0.3); + c.setFillColor('#2266ff'); + c.rect(2.5, 27.5, w - 5, h - 30); + c.fill(); + c.setAlpha(1); + + if (h > 27.5) + { + c.setStrokeColor('#ffffff'); + c.setGradient('#88ddff', '#2266ff', w * 0.5 - 2.5, 25, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.5 - 2.5, 25, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', w * 0.5 - 2.5, h - 5, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.5 - 2.5, h - 5, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', 0, h * 0.5 + 10, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(0, h * 0.5 + 10, 5, 5); + c.fillAndStroke(); + c.setGradient('#88ddff', '#2266ff', w - 5, h * 0.5 + 10, 5, 5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w - 5, h * 0.5 + 10, 5, 5); + c.fillAndStroke(); + } + + var fillColor2 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR2, '#00ff00'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#00ff00'); + + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor); + c.begin(); + c.moveTo(w * 0.5 - 20, 0 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 20 - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20 - rSize, 20); + c.lineTo(w * 0.5 + 7.5, 20); + c.lineTo(w * 0.5, 27.5); + c.lineTo(w * 0.5 - 7.5, 20); + c.lineTo(w * 0.5 - 20 + rSize, 20); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20, 20 - rSize); + c.close(); + c.fillAndStroke(); + + var fillColor3 = mxUtils.getValue(this.style, mxMockupC.STYLE_FILLCOLOR3, '#00ff00'); + c.setGradient(fillColor3, fillColor3, w * 0.5 - 20, 0, 40, 10, mxConstants.DIRECTION_SOUTH, 0.8, 0.1); + c.begin(); + c.moveTo(w * 0.5 - 20, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 - 20 + rSize, 0); + c.lineTo(w * 0.5 + 20 - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w * 0.5 + 20, rSize); + c.lineTo(w * 0.5 + 20, 10); + c.lineTo(w * 0.5 - 20, 10); + c.close(); + c.fill(); + + var fieldText = mxUtils.getValue(this.style, mxMockupC.BUTTON_TEXT, ''); + var textColor = mxUtils.getValue(this.style, mxMockupC.STYLE_TEXTCOLOR, '#00ff00'); + c.setFontColor(textColor); + c.setFontSize(8.5); + + c.text(w * 0.5, 8.75, 0, 0, fieldText, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_ICOPY_AREA, mxShapeMockupiCopyArea); + +//********************************************************************************************************************************************************** +//Home Page Control +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiHomePageControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiHomePageControl, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiHomePageControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setStrokeColor(strokeColor); + c.setFillColor(fillColor); + + var rSize = Math.min(h * 0.5, w * 0.05); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + + c.ellipse(rSize * 0.2, h * 0.5 - rSize * 0.8, rSize * 1.2, rSize * 1.2); + c.stroke(); + c.begin(); + c.moveTo(rSize * 1.15, h * 0.5 + rSize * 0.25); + c.lineTo(rSize * 1.6, h * 0.5 + rSize * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IHOME_PAGE_CONTROL, mxShapeMockupiHomePageControl); + +//********************************************************************************************************************************************************** +//Page Control +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiPageControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiPageControl, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiPageControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var rSize = Math.min(h * 0.5, w * 0.05); + c.setFillColor(strokeColor); + c.ellipse(0, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.setFillColor(fillColor); + c.ellipse(w * 0.35 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w * 0.65 - rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); + c.ellipse(w - 2 * rSize, h * 0.5 - rSize, 2 * rSize, 2 * rSize); + c.fill(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPAGE_CONTROL, mxShapeMockupiPageControl); + +//********************************************************************************************************************************************************** +//iPad +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeMockupiPad(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeMockupiPad, mxShape); + +mxShapeMockupiPad.prototype.customProperties = [ + {name: 'bgStyle', dispName: 'Background', type: 'enum', + enumList: [{val: 'bgGreen', dispName: 'Green'}, {val: 'bgWhite', dispName: 'White'}, {val: 'bgGray', dispName: 'Gray'}, {val: 'bgFlat', dispName: 'Flat'}, {val: 'bgMap', dispName: 'Map'}, {val: 'bgStriped', dispName: 'Striped'}] + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeMockupiPad.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var rSize = 25; + c.translate(x, y); + this.background(c, x, y, w, h, rSize); + c.setShadow(false); + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeMockupiPad.prototype.background = function(c, x, y, w, h, rSize) +{ + c.setFillColor('#000000'); + c.setStrokeColor('#000000'); + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); +}; + +mxShapeMockupiPad.prototype.foreground = function(c, x, y, w, h, rSize) +{ + c.setStrokeWidth(1.5); + c.setStrokeColor('#999999'); + + c.begin(); + c.setStrokeColor('none'); + c.setFillColor('#808080'); + c.setGradient('#808080', '#000000', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.moveTo(w * 0.325, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.setFillColor('#1f2923'); + c.setStrokeColor('#18211b'); + c.setStrokeWidth(1); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, ''); + var bgStyle = mxUtils.getValue(this.style, mxMockupC.BG_STYLE, mxMockupC.BG_FLAT_GREEN); + + c.setStrokeWidth(1); + + if (bgStyle === mxMockupC.BG_FLAT_WHITE) + { + c.setFillColor('#ffffff'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_GREEN) + { + c.setFillColor('#1f2923'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_GRAY) + { + c.setFillColor('#dddddd'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_FLAT_CUSTOM) + { + c.setFillColor(fillColor); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.fill(); + } + else if (bgStyle === mxMockupC.BG_STRIPED) + { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0928, h * 0.08); + w = w * 0.8144; + h = h * 0.816; + + c.setFillColor('#5D7585'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var strokeColor = '#18211b'; + var strokeColor2 = '#657E8F'; + + c.setStrokeColor(strokeColor2); + var i = 7; + c.begin(); + + while (i < w) + { + c.moveTo(i, 0); + c.lineTo(i, h); + i = i + 7; + } + + c.stroke(); + + c.setStrokeColor(strokeColor); + c.begin(); + c.rect(0, 0, w, h); + c.stroke(); + + w = wOld; + h = hOld; + c.translate( - w * 0.0928, - h * 0.08); + } + else if (bgStyle === mxMockupC.BG_MAP) + { + var xOld = x; + var yOld = y; + var wOld = w; + var hOld = h; + c.translate(w * 0.0928, h * 0.08); + w = w * 0.8144; + h = h * 0.816; + + c.setFillColor('#ffffff'); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var fillColor2 = '#96D1FF'; + var strokeColor = '#18211b'; + var strokeColor2 = '#008cff'; + + c.setFillColor(fillColor2); + c.setStrokeColor(strokeColor2); + c.setStrokeWidth(0.5); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.1171, 0); + c.lineTo(w * 0.1136, h * 0.0438); + c.lineTo(w * 0.0993, h * 0.054); + c.lineTo(0, h * 0.0446); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1993, 0); + c.lineTo(w * 0.1914, h * 0.03884); + c.lineTo(w * 0.1536, h * 0.0362); + c.lineTo(w * 0.1586, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.24, 0); + c.lineTo(w * 0.2257, h * 0.054); + c.lineTo(w * 0.2414, h * 0.0674); + c.lineTo(w * 0.4707, h * 0.0835); + c.lineTo(w * 0.5264, h * 0.0906); + c.lineTo(w * 0.6429, h * 0.0929); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.7193, h * 0.0621); + c.arcTo(w * 0.48, h * 0.2143, 0, 0, 0, w * 0.7286, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.7886, h * 0.04554); + c.arcTo(w * 0.0857, h * 0.0536, 0, 0, 0, w * 0.8164, h * 0.0875); + c.arcTo(w * 0.1429, h * 0.0893, 0, 0, 0, w * 0.88, h * 0.1036); + c.lineTo(w, h * 0.1112); + c.lineTo(w, 0); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.0933); + c.lineTo(w * 0.08, h * 0.1036); + c.lineTo(w * 0.1021, h * 0.1246); + c.lineTo(w * 0.1007, h * 0.1768); + c.lineTo(w * 0.0471, h * 0.2241); + c.lineTo(0, h * 0.2527); + c.close(); + c.fillAndStroke(); + + c.ellipse(w * 0.1214, h * 0.0603, w * 0.0843, h * 0.0576); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1293, h * 0.1924); + c.lineTo(w * 0.1729, h * 0.142); + c.lineTo(w * 0.1407, h * 0.1411); + c.lineTo(w * 0.14, h * 0.1777); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4586, h * 0.1241); + c.lineTo(w * 0.455, h * 0.1835); + c.lineTo(w * 0.3893, h * 0.2246); + c.lineTo(w * 0.2171, h * 0.1362); + c.lineTo(w * 0.2171, h * 0.1308); + c.lineTo(w * 0.2293, h * 0.1214); + c.lineTo(w * 0.2857, h * 0.1174); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5079, h * 0.1134); + c.lineTo(w * 0.7307, h * 0.1223); + c.lineTo(w * 0.7279, h * 0.1625); + c.lineTo(w * 0.715, h * 0.1772); + c.lineTo(w * 0.6929, h * 0.1688); + c.lineTo(w * 0.625, h * 0.1795); + c.lineTo(w * 0.4779, h * 0.2835); + c.lineTo(w * 0.395, h * 0.2299); + c.lineTo(w * 0.4657, h * 0.1826); + c.lineTo(w * 0.4707, h * 0.1223); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.1362); + c.lineTo(w * 0.7643, h * 0.1237); + c.lineTo(w * 0.7543, h * 0.1562); + c.lineTo(w * 0.7643, h * 0.1585); + c.lineTo(w * 0.9186, h * 0.2366); + c.lineTo(w, h * 0.1732); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2079, h * 0.1545); + c.lineTo(w * 0.3886, h * 0.2536); + c.lineTo(w * 0.3414, h * 0.2933); + c.lineTo(w * 0.1743, h * 0.1969); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1579, h * 0.2134); + c.lineTo(w * 0.3221, h * 0.3067); + c.lineTo(w * 0.2957, h * 0.3237); + c.lineTo(w * 0.1157, h * 0.2424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.405, h * 0.2656); + c.lineTo(w * 0.31, h * 0.3353); + c.lineTo(w * 0.3693, h * 0.3661); + c.lineTo(w * 0.4571, h * 0.2982); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.7121, h * 0.1848); + c.lineTo(w * 0.6879, h * 0.1754); + c.lineTo(w * 0.6329, h * 0.1844); + c.lineTo(w * 0.61, h * 0.2018); + c.lineTo(w * 0.6207, h * 0.2085); + c.lineTo(w * 0.4986, h * 0.2982); + c.lineTo(w * 0.535, h * 0.3237); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5557, h * 0.3379); + c.lineTo(w * 0.7464, h * 0.1826); + c.lineTo(w * 0.8036, h * 0.2076); + c.lineTo(w * 0.595, h * 0.3616); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8293, h * 0.2188); + c.lineTo(w * 0.8979, h * 0.2509); + c.lineTo(w * 0.6936, h * 0.4125); + c.lineTo(w * 0.6171, h * 0.3737); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.2138); + c.lineTo(w * 0.6821, h * 0.4603); + c.lineTo(w * 0.815, h * 0.5277); + c.lineTo(w, h * 0.4); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.317); + c.lineTo(w * 0.0971, h * 0.2554); + c.lineTo(w * 0.4121, h * 0.4143); + c.lineTo(w * 0.3736, h * 0.4415); + c.lineTo(w * 0.315, h * 0.4076); + c.lineTo(w * 0.3093, h * 0.4116); + c.lineTo(w * 0.3686, h * 0.4455); + c.lineTo(w * 0.285, h * 0.5045); + c.lineTo(w * 0.1114, h * 0.4134); + c.lineTo(w * 0.025, h * 0.4603); + c.lineTo(w * 0.0371, h * 0.4723); + c.lineTo(w * 0.1114, h * 0.4371); + c.lineTo(w * 0.2871, h * 0.5312); + c.lineTo(w * 0.1929, h * 0.6058); + c.lineTo(w * 0.2271, h * 0.6705); + c.lineTo(w * 0.17, h * 0.7147); + c.lineTo(w * 0.0314, h * 0.6321); + c.lineTo(0, h * 0.6246); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.48, h * 0.3121); + c.lineTo(w * 0.5157, h * 0.3375); + c.lineTo(w * 0.4314, h * 0.3982); + c.lineTo(w * 0.3929, h * 0.3786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3086, h * 0.5179); + c.lineTo(w * 0.53, h * 0.3518); + c.lineTo(w * 0.5757, h * 0.3745); + c.lineTo(w * 0.3479, h * 0.5411); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5964, h * 0.3884); + c.lineTo(w * 0.6736, h * 0.4277); + c.lineTo(w * 0.445, h * 0.5991); + c.lineTo(w * 0.3664, h * 0.5531); + c.lineTo(w * 0.5057, h * 0.4545); + c.lineTo(w * 0.5507, h * 0.4754); + c.lineTo(w * 0.5571, h * 0.4723); + c.lineTo(w * 0.5114, h * 0.4504); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4793, h * 0.6161); + c.lineTo(w * 0.6771, h * 0.4643); + c.lineTo(w * 0.8086, h * 0.5326); + c.lineTo(w * 0.7471, h * 0.5817); + c.lineTo(w * 0.7214, h * 0.567); + c.lineTo(w * 0.715, h * 0.571); + c.lineTo(w * 0.7421, h * 0.5871); + c.lineTo(w * 0.6014, h * 0.6933); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.4371); + c.lineTo(w * 0.8443, h * 0.546); + c.lineTo(w * 0.9071, h * 0.5701); + c.lineTo(w, h * 0.5022); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8407, h * 0.5504); + c.lineTo(w * 0.8993, h * 0.5759); + c.lineTo(w * 0.6757, h * 0.7416); + c.lineTo(w * 0.6286, h * 0.7139); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.5321); + c.lineTo(w * 0.6979, h * 0.7549); + c.lineTo(w * 0.7457, h * 0.7781); + c.lineTo(w * 0.9814, h * 0.6094); + c.lineTo(w, h * 0.6067); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, h * 0.6254); + c.lineTo(w * 0.7664, h * 0.792); + c.lineTo(w * 0.9586, h * 0.9062); + c.lineTo(w, h * 0.8786); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3093, h * 0.5464); + c.lineTo(w * 0.4271, h * 0.6152); + c.lineTo(w * 0.245, h * 0.7643); + c.lineTo(w * 0.185, h * 0.7228); + c.lineTo(w * 0.2493, h * 0.6728); + c.lineTo(w * 0.2214, h * 0.6143); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.2179, h * 0.7826); + c.lineTo(w * 0.1136, h * 0.8424); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.7272); + c.lineTo(w * 0.0821, h * 0.859); + c.lineTo(0, h * 0.9085); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4529, h * 0.6366); + c.lineTo(w * 0.575, h * 0.7143); + c.lineTo(w * 0.39, h * 0.8621); + c.lineTo(w * 0.2657, h * 0.7902); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.9415); + c.lineTo(w * 0.1036, h * 0.8821); + c.lineTo(w * 0.2343, h * 0.959); + c.lineTo(w * 0.1721, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2586, h * 0.7951); + c.lineTo(w * 0.3829, h * 0.8674); + c.lineTo(w * 0.2543, h * 0.9451); + c.lineTo(w * 0.1279, h * 0.8692); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2836, h * 0.9639); + c.lineTo(w * 0.4207, h * 0.8772); + c.lineTo(w * 0.605, h * 0.7321); + c.lineTo(w * 0.6521, h * 0.7634); + c.lineTo(w * 0.3486, h); + c.lineTo(w * 0.3393, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3879, h); + c.lineTo(w * 0.6721, h * 0.7759); + c.lineTo(w * 0.7171, h * 0.7982); + c.lineTo(w * 0.4564, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.4986, h); + c.lineTo(w * 0.7386, h * 0.8125); + c.lineTo(w * 0.9307, h * 0.925); + c.lineTo(w * 0.8264, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8671, h); + c.lineTo(w * 0.9464, h * 0.9491); + c.lineTo(w, h * 0.975); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.2295, h); + c.lineTo(w * 0.2648, h * 0.9792); + c.lineTo(w * 0.2981, h); + c.close(); + c.fillAndStroke(); + + w = wOld; + h = hOld; + c.translate( - w * 0.0928, - h * 0.08); + } + + c.setStrokeWidth(1); + c.setStrokeColor('#18211b'); + c.rect(w * 0.0928, h * 0.08, w * 0.8144, h * 0.816); + c.stroke(); + + c.setStrokeWidth(1.5); + c.setAlpha(0.8); + c.setStrokeColor('#dddddd'); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); + + rSize = 22.5; + c.begin(); + c.setStrokeColor('#666666'); + c.begin(); + c.moveTo(2.5, 2.5 + rSize); + c.arcTo(rSize, rSize, 0, 0, 1, 2.5 + rSize, 2.5); + c.lineTo(w - rSize - 5, 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - 2.5, rSize + 2.5); + c.lineTo(w - 2.5, h - rSize - 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize - 2.5, h - 2.5); + c.lineTo(rSize + 2.5, h - 2.5); + c.arcTo(rSize, rSize, 0, 0, 1, 2.5, h - rSize - 2.5); + c.close(); + c.stroke(); + + c.setAlpha(1); + c.ellipse(w * 0.4948, h * 0.0444, w * 0.0103, h * 0.008); + c.setStrokeWidth(2.5); + c.setStrokeColor('#000000'); + c.setFillColor('#000099'); + c.fillAndStroke(); + + c.setGradient('#bbbbbb', '#000000', w * 0.4588, h * 0.912, w * 0.0825, h * 0.064, mxConstants.DIRECTION_SOUTH, 1, 1); + c.ellipse(w * 0.4588, h * 0.912, w * 0.0825, h * 0.064); + c.fill(); + + c.setAlpha(0.5); + c.ellipse(w * 0.4588, h * 0.912, w * 0.0825, h * 0.064); + c.stroke(); + + c.begin(); + c.setAlpha(0.85); + c.setFillColor('#000000'); + c.moveTo(w * 0.4598, h * 0.944); + c.arcTo(w * 0.0402, h * 0.0296, 0, 0, 1, w * 0.5402, h * 0.944); + c.arcTo(w * 0.0825, h * 0.064, 0, 0, 1, w * 0.4598, h * 0.944); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.setAlpha(0.7); + c.setStrokeWidth(1.5); + c.setStrokeColor('#dddddd'); + rSize = 4; + c.roundrect(w * 0.4814, h * 0.9296, w * 0.0371, h * 0.0288, h * 0.00515, h * 0.004); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxMockupC.SHAPE_IPAD, mxShapeMockupiPad); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupRRect, mxShape); + +mxShapeMockupRRect.prototype.cst = { + RRECT : 'mxgraph.ios.rrect', + R_SIZE : 'rSize' +}; + +mxShapeMockupRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:5}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupRRect.prototype.cst.RRECT, mxShapeMockupRRect); + +//********************************************************************************************************************************************************** +//Top Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIosTopButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIosTopButton, mxShape); + +mxShapeIosTopButton.prototype.cst = { + TOP_BUTTON : 'mxgraph.ios.topButton', + R_SIZE : 'rSize' +}; + +mxShapeIosTopButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:5}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIosTopButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIosTopButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosTopButton.prototype.cst.TOP_BUTTON, mxShapeIosTopButton); + +//********************************************************************************************************************************************************** +//Bottom Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIosBottomButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIosBottomButton, mxShape); + +mxShapeIosBottomButton.prototype.cst = { + BOTTOM_BUTTON : 'mxgraph.ios.bottomButton', + R_SIZE : 'rSize' +}; + +mxShapeIosBottomButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:5}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIosBottomButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeIosBottomButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeIosBottomButton); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIosAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIosAnchor, mxShape); + +mxShapeIosAnchor.prototype.cst = { + ANCHOR : 'mxgraph.ios.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIosAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeIosAnchor.prototype.cst.ANCHOR, mxShapeIosAnchor); + +//********************************************************************************************************************************************************** +//Checkbox +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeIosCheckbox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeIosCheckbox, mxShape); + +mxShapeIosCheckbox.prototype.cst = { + CHECKBOX : 'mxgraph.ios.checkbox' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeIosCheckbox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeIosCheckbox.prototype.cst.CHECKBOX, mxShapeIosCheckbox); + +//********************************************************************************************************************************************************** +//Fancy Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeMockupFancyRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeMockupFancyRRect, mxShape); + +mxShapeMockupFancyRRect.prototype.cst = { + FANCY_RRECT : 'mxgraph.ios.fancyRRect', + R_SIZE : 'rSize' +}; + +mxShapeMockupFancyRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:8} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeMockupFancyRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeMockupFancyRRect.prototype.cst.R_SIZE, '10')); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + +// c.setAlpha(0.8); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); + + c.setShadow(false); + + c.setStrokeColor(fillColor); + c.setGradient(fillColor, '#ffffff', 0, 0, w, 22.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.setAlpha(0.3); + c.begin(); + c.moveTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, 17.5); + c.arcTo(w * 1.67, h * 2.5, 0, 0, 1, 0, 17.5); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); + + c.setAlpha(0.8); + c.setStrokeColor(strokeColor); + c.setStrokeWidth(1); + c.roundrect(0, 0, w, h, rSize, rSize); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeMockupFancyRRect.prototype.cst.FANCY_RRECT, mxShapeMockupFancyRRect); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS3D.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS3D.js new file mode 100644 index 0000000000000..39e0044b86851 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS3D.js @@ -0,0 +1,9169 @@ +/** + * $Id: mxAws3d.js,v 1.0 2015/10/11 07:05:39 mate Exp $ + * Copyright (c) 2006-2015, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Arrow NE +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dArrowNE(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dArrowNE, mxShape); + +mxShapeAws3dArrowNE.prototype.cst = { + ARROW_NE : 'mxgraph.aws3d.arrowNE' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dArrowNE.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w - 17, 8); + c.lineTo(w - 21, 5.5); + c.lineTo(w, 0); + c.lineTo(w - 9.7, 12.2); + c.lineTo(w - 13.9, 9.8); + c.lineTo(9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowNE.prototype.cst.ARROW_NE, mxShapeAws3dArrowNE); + +//********************************************************************************************************************************************************** +//Arrow SE +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dArrowSE(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dArrowSE, mxShape); + +mxShapeAws3dArrowSE.prototype.cst = { + ARROW_SE : 'mxgraph.aws3d.arrowSE' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dArrowSE.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w - 17, h - 8); + c.lineTo(w - 21, h - 5.5); + c.lineTo(w, h); + c.lineTo(w - 9.7, h - 12.2); + c.lineTo(w - 13.9, h - 9.8); + c.lineTo(9.7, 3.5); + c.arcTo(6, 3, 0, 0, 0, 9, 0.4); + c.arcTo(5.2, 3, 0, 0, 0, 1, 1.4); + c.arcTo(6, 2.8, 0, 0, 0, 3, 5.4); + c.arcTo(5, 3, 0, 0, 0, 6.7, 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowSE.prototype.cst.ARROW_SE, mxShapeAws3dArrowSE); + +//********************************************************************************************************************************************************** +//Arrow SW +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dArrowSW(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dArrowSW, mxShape); + +mxShapeAws3dArrowSW.prototype.cst = { + ARROW_SW : 'mxgraph.aws3d.arrowSW' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dArrowSW.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(17, h - 8); + c.lineTo(21, h - 5.5); + c.lineTo(0, h); + c.lineTo(9.7, h - 12.2); + c.lineTo(13.9, h - 9.8); + c.lineTo(w - 9.7, 3.5); + c.arcTo(6, 3, 0, 0, 1, w - 9, 0.4); + c.arcTo(5.2, 3, 0, 0, 1, w - 1, 1.4); + c.arcTo(6, 2.8, 0, 0, 1, w - 3, 5.4); + c.arcTo(5, 3, 0, 0, 1, w - 6.7, 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowSW.prototype.cst.ARROW_SW, mxShapeAws3dArrowSW); + +//********************************************************************************************************************************************************** +//Arrow NW +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dArrowNW(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dArrowNW, mxShape); + +mxShapeAws3dArrowNW.prototype.cst = { + ARROW_NW : 'mxgraph.aws3d.arrowNW' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dArrowNW.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(17, 8); + c.lineTo(21, 5.5); + c.lineTo(0, 0); + c.lineTo(9.7, 12.2); + c.lineTo(13.9, 9.8); + c.lineTo(w - 9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 0, w - 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 0, w - 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 0, w - 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 0, w - 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowNW.prototype.cst.ARROW_NW, mxShapeAws3dArrowNW); + +//********************************************************************************************************************************************************** +//Arrowless NE +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dArrowlessNE(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dArrowlessNE, mxShape); + +mxShapeAws3dArrowlessNE.prototype.cst = { + ARROWLESS_NE : 'mxgraph.aws3d.arrowlessNE' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dArrowlessNE.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w - 3.1, 0); + c.lineTo(w, 1.8); + c.lineTo(9.7, h - 3.5); + c.arcTo(6, 3, 0, 0, 1, 9, h - 0.4); + c.arcTo(5.2, 3, 0, 0, 1, 1, h - 1.4); + c.arcTo(6, 2.8, 0, 0, 1, 3, h - 5.4); + c.arcTo(5, 3, 0, 0, 1, 6.7, h - 5.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dArrowlessNE.prototype.cst.ARROWLESS_NE, mxShapeAws3dArrowlessNE); + +//********************************************************************************************************************************************************** +//Dashed edge with double arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDashedEdgeDouble(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDashedEdgeDouble, mxShape); + +mxShapeAws3dDashedEdgeDouble.prototype.cst = { + DASHED_EDGE_DOUBLE : 'mxgraph.aws3d.dashedEdgeDouble' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDashedEdgeDouble.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setFillColor('#2D6195'); + c.save(); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(21, 5.5); + c.lineTo(0, 0); + c.lineTo(9.7, 12.2); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w - 21, h - 5.5); + c.lineTo(w, h); + c.lineTo(w - 9.7, h - 12.2); + c.fillAndStroke(); + + c.restore(); + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + + c.begin(); + c.moveTo(7.675, 4.425); + c.lineTo(w - 7.675, h - 4.425); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedEdgeDouble.prototype.cst.DASHED_EDGE_DOUBLE, mxShapeAws3dDashedEdgeDouble); + +//********************************************************************************************************************************************************** +//Dashed arrowless edge +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDashedArrowlessEdge(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDashedArrowlessEdge, mxShape); + +mxShapeAws3dDashedArrowlessEdge.prototype.cst = { + DASHED_ARROWLESS_EDGE : 'mxgraph.aws3d.dashedArrowlessEdge' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDashedArrowlessEdge.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedArrowlessEdge.prototype.cst.DASHED_ARROWLESS_EDGE, mxShapeAws3dDashedArrowlessEdge); + +//********************************************************************************************************************************************************** +//Dashed edge +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDashedEdge(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDashedEdge, mxShape); + +mxShapeAws3dDashedEdge.prototype.cst = { + DASHED_EDGE : 'mxgraph.aws3d.dashedEdge' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDashedEdge.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setFillColor('#2D6195'); + c.save(); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(w - 21, 5.5); + c.lineTo(w, 0); + c.lineTo(w - 9.7, 12.2); + c.fillAndStroke(); + + c.restore(); + c.setStrokeColor('#2D6195'); + c.setStrokeWidth('4'); + c.setDashed('true'); + c.setLineCap('round'); + + c.begin(); + c.moveTo(w - 7.675, 4.425); + c.lineTo(0, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDashedEdge.prototype.cst.DASHED_EDGE, mxShapeAws3dDashedEdge); + +//********************************************************************************************************************************************************** +//Flat edge +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dFlatEdge(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dFlatEdge, mxShape); + +mxShapeAws3dFlatEdge.prototype.cst = { + FLAT_EDGE : 'mxgraph.aws3d.flatEdge' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dFlatEdge.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setFillColor('#F4B934'); + c.setStrokeColor('none'); + c.begin(); + c.moveTo(w - 46, 8.8); + c.lineTo(w - 61.2, 0); + c.lineTo(w, 0); + c.lineTo(w, 35.5); + c.lineTo(w - 15.4, 26.5); + c.lineTo(30.7, h); + c.lineTo(0, h - 17.7); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dFlatEdge.prototype.cst.FLAT_EDGE, mxShapeAws3dFlatEdge); + +//********************************************************************************************************************************************************** +//Flat double edge +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dFlatDoubleEdge(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dFlatDoubleEdge, mxShape); + +mxShapeAws3dFlatDoubleEdge.prototype.cst = { + FLAT_DOUBLE_EDGE : 'mxgraph.aws3d.flatDoubleEdge' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dFlatDoubleEdge.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setFillColor('#F4B934'); + c.setStrokeColor('none'); + + c.begin(); + c.moveTo(15.3, 61.9); + c.lineTo(30.8, 53.2); + c.lineTo(15.4, 44.2); + c.lineTo(0, 53.2); + c.lineTo(15.4, 8.8); + c.lineTo(92.1, 0); + c.lineTo(76.5, 8.8); + c.lineTo(92.1, 17.7); + c.lineTo(107.4, 8.8); + + c.lineTo(w - 15.3, h - 61.9); + c.lineTo(w - 30.8, h - 53.2); + c.lineTo(w - 15.4, h - 44.2); + c.lineTo(w, h - 53.2); + c.lineTo(w - 15.4, h - 8.8); + c.lineTo(w - 92.1, h); + c.lineTo(w - 76.5, h - 8.8); + c.lineTo(w - 92.1, h - 17.7); + c.lineTo(w - 107.4, h - 8.8); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dFlatDoubleEdge.prototype.cst.FLAT_DOUBLE_EDGE, mxShapeAws3dFlatDoubleEdge); + +//********************************************************************************************************************************************************** +//AMI +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dAMI(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dAMI, mxShape); + +mxShapeAws3dAMI.prototype.cst = { + AMI : 'mxgraph.aws3d.ami', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dAMI.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6483); + c.lineTo(w * 0.0684, h * 0.4133); + c.lineTo(w * 0.5326, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w * 0.9359, h * 0.2367); + c.lineTo(w, h * 0.465); + c.lineTo(w * 0.4, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.0652, h * 0.5); + c.lineTo(w * 0.3326, h * 0.7667); + c.lineTo(w * 0.4663, h * 0.7667); + c.lineTo(w * 0.4, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4, h); + c.lineTo(w * 0.4641, h * 0.77); + c.lineTo(w * 0.9326, h * 0.355); + c.lineTo(w * 0.9347, h * 0.24); + c.lineTo(w, h * 0.4667); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.65); + c.lineTo(w * 0.0652, h * 0.5); + c.lineTo(w * 0.3326, h * 0.7667); + c.lineTo(w * 0.4663, h * 0.7667); + c.lineTo(w * 0.4, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.4, h); + c.lineTo(w * 0.4641, h * 0.77); + c.lineTo(w * 0.9326, h * 0.355); + c.lineTo(w * 0.9347, h * 0.24); + c.lineTo(w, h * 0.4667); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.0652, h * 0.42); + c.lineTo(w * 0.0652, h * 0.5); + c.moveTo(w * 0.3337, h * 0.7667); + c.lineTo(w * 0.4, h); + c.moveTo(w * 0.9348, h * 0.355); + c.lineTo(w, h * 0.4733); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1935, h * 0.42); + c.lineTo(w * 0.5543, h * 0.0967); + c.lineTo(w * 0.6652, h * 0.1967); + c.lineTo(w * 0.3, h * 0.5133); + c.close(); + c.moveTo(w * 0.2967, h * 0.4633); + c.lineTo(w * 0.3837, h * 0.3883); + c.lineTo(w * 0.3326, h * 0.3417); + c.lineTo(w * 0.2467, h * 0.42); + c.close(); + c.moveTo(w * 0.362, h * 0.32); + c.lineTo(w * 0.412, h * 0.3633); + c.lineTo(w * 0.5054, h * 0.2867); + c.lineTo(w * 0.4522, h * 0.24); + c.close(); + c.moveTo(w * 0.5293, h * 0.26); + c.lineTo(w * 0.6109, h * 0.1933); + c.lineTo(w * 0.5511, h * 0.145); + c.lineTo(w * 0.4739, h * 0.2133); + c.close(); + c.moveTo(w * 0.3528, h * 0.557); + c.lineTo(w * 0.7137, h * 0.2337); + c.lineTo(w * 0.8246, h * 0.3337); + c.lineTo(w * 0.4593, h * 0.6503); + c.close(); + c.moveTo(w * 0.4561, h * 0.6003); + c.lineTo(w * 0.543, h * 0.5253); + c.lineTo(w * 0.492, h * 0.4787); + c.lineTo(w * 0.4061, h * 0.557); + c.close(); + c.moveTo(w * 0.5213, h * 0.457); + c.lineTo(w * 0.5713, h * 0.5003); + c.lineTo(w * 0.6648, h * 0.4237); + c.lineTo(w * 0.6115, h * 0.377); + c.close(); + c.moveTo(w * 0.6887, h * 0.397); + c.lineTo(w * 0.7702, h * 0.3303); + c.lineTo(w * 0.7104, h * 0.282); + c.lineTo(w * 0.6333, h * 0.3503); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6483); + c.lineTo(w * 0.0684, h * 0.4133); + c.lineTo(w * 0.5326, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w * 0.9359, h * 0.2367); + c.lineTo(w, h * 0.465); + c.lineTo(w * 0.4, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dAMI.prototype.cst.AMI, mxShapeAws3dAMI); + +//********************************************************************************************************************************************************** +//Snapshot +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSnapshot(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSnapshot, mxShape); + +mxShapeAws3dSnapshot.prototype.cst = { + SNAPSHOT : 'mxgraph.aws3d.snapshot', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSnapshot.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if(isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(w, h * 0.6483); + c.lineTo(w * 0.9316, h * 0.4133); + c.lineTo(w * 0.4674, 0); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.0641, h * 0.2367); + c.lineTo(0, h * 0.465); + c.lineTo(w * 0.6, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSnapshot.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + + c.begin(); + c.moveTo(w, h * 0.65); + c.lineTo(w * 0.9348, h * 0.52); + c.lineTo(w * 0.6674, h * 0.7667); + c.lineTo(w * 0.5337, h * 0.7667); + c.lineTo(w * 0.6, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.6, h); + c.lineTo(w * 0.5359, h * 0.77); + c.lineTo(w * 0.0674, h * 0.355); + c.lineTo(w * 0.0653, h * 0.24); + c.lineTo(0, h * 0.4667); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w, h * 0.65); + c.lineTo(w * 0.9348, h * 0.52); + c.lineTo(w * 0.6674, h * 0.7667); + c.lineTo(w * 0.5337, h * 0.7667); + c.lineTo(w * 0.6, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6, h); + c.lineTo(w * 0.5359, h * 0.77); + c.lineTo(w * 0.0674, h * 0.355); + c.lineTo(w * 0.0653, h * 0.24); + c.lineTo(0, h * 0.4667); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.9348, h * 0.42); + c.lineTo(w * 0.9348, h * 0.52); + c.moveTo(w * 0.6663, h * 0.7667); + c.lineTo(w * 0.6, h); + c.moveTo(w * 0.0652, h * 0.355); + c.lineTo(0, h * 0.4733); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w, h * 0.6483); + c.lineTo(w * 0.9316, h * 0.4133); + c.lineTo(w * 0.4674, 0); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.0641, h * 0.2367); + c.lineTo(0, h * 0.465); + c.lineTo(w * 0.6, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSnapshot.prototype.cst.SNAPSHOT, mxShapeAws3dSnapshot); + +//********************************************************************************************************************************************************** +//Application +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dApplication(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dApplication, mxShape); + +mxShapeAws3dApplication.prototype.cst = { + APPLICATION : 'mxgraph.aws3d.application', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dApplication.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 62; + var strokeWidth2 = strokeWidth * h / 68.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, h * 0.5015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.5015); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, h * 0.5015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.5015); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.6694, h * 0.0872); + c.lineTo(w * 0.7629, h * 0.1337); + c.lineTo(w * 0.2661, h * 0.3882); + c.lineTo(w * 0.2661, h * 0.5407); + c.lineTo(w * 0.1742, h * 0.4953); + c.lineTo(w * 0.1742, h * 0.3459); + c.close(); + c.moveTo(w * 0.8629, h * 0.1846); + c.lineTo(w * 0.379, h * 0.4331); + c.lineTo(w * 0.379, h * 0.5945); + c.lineTo(w * 0.2855, h * 0.5494); + c.lineTo(w * 0.2855, h * 0.3953); + c.lineTo(w * 0.7839, h * 0.1439); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2544); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2544); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplication.prototype.cst.APPLICATION, mxShapeAws3dApplication); + +//********************************************************************************************************************************************************** +//Application Server +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dApplicationServer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dApplicationServer, mxShape); + +mxShapeAws3dApplicationServer.prototype.cst = { + APPLICATION_SERVER : 'mxgraph.aws3d.application_server', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dApplicationServer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 124; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dApplicationServer.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7236); + c.lineTo(0, h * 0.2863); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2863); + c.lineTo(w, h * 0.7236); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dApplicationServer.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplicationServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7177); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(w, h * 0.7177); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7177); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w, h * 0.2863); + c.lineTo(w * 0.5, h * 0.5726); + c.lineTo(w * 0.5, h); + c.lineTo(w, h * 0.7177); + c.close(); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.4435); + c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.374, h * 0.4153); + c.lineTo(w * 0.4797, h * 0.3548); + c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.5203, h * 0.3548); + c.lineTo(w * 0.626, h * 0.4153); + c.arcTo(w * 0.0325, h * 0.0202, 0, 0, 1, w * 0.626, h * 0.4411); + c.lineTo(w * 0.5203, h * 0.5016); + c.arcTo(w * 0.0325, h * 0.0161, 0, 0, 1, w * 0.4797, h * 0.5016); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7236); + c.lineTo(0, h * 0.2863); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2863); + c.lineTo(w, h * 0.7236); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplicationServer.prototype.cst.APPLICATION_SERVER, mxShapeAws3dApplicationServer); + +//********************************************************************************************************************************************************** +//CloudFront +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dCloudFront(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dCloudFront, mxShape); + +mxShapeAws3dCloudFront.prototype.cst = { + CLOUDFRONT : 'mxgraph.aws3d.cloudfront', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dCloudFront.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 103.8; + var strokeWidth2 = strokeWidth * h / 169.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.lineTo(w * 0.0588, h * 0.1036); + c.lineTo(w * 0.3526, 0); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8316); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.5877, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCloudFront.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.0588, h * 0.106); + c.lineTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.6474, h * 0.9352); + c.lineTo(w * 0.7052, h); + c.lineTo(w * 0.5915, h); + c.lineTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8363); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.6474, h * 0.9305); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(w * 0.0559, h * 0.7291); + c.lineTo(w * 0.6474, h * 0.9364); + c.lineTo(w * 0.5896, h); + c.moveTo(w * 0.6493, h * 0.9364); + c.lineTo(w * 0.9412, h * 0.8333); + c.lineTo(w, h * 0.894); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.0588, h * 0.106); + c.lineTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.6474, h * 0.9352); + c.lineTo(w * 0.7052, h); + c.lineTo(w * 0.5915, h); + c.lineTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6474, h * 0.3121); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8363); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.6474, h * 0.9305); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.3333, h * 0.6643); + c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.2351, h * 0.6042); + c.arcTo(w * 0.4528, h * 0.2768, 0, 0, 1, w * 0.1724, h * 0.523); + c.lineTo(w * 0.2428, h * 0.5677); + c.lineTo(w * 0.2427, h * 0.5895); + c.lineTo(w * 0.2765, h * 0.5995); + c.close(); + c.moveTo(w * 0.1599, h * 0.4935); + c.arcTo(w * 0.3372, h * 0.2061, 0, 0, 1, w * 0.1522, h * 0.4146); + c.arcTo(w * 0.1156, h * 0.0883, 0, 0, 1, w * 0.2071, h * 0.3486); + c.lineTo(w * 0.2013, h * 0.4187); + c.lineTo(w * 0.1859, h * 0.4146); + c.lineTo(w * 0.1859, h * 0.4464); + c.lineTo(w * 0.1907, h * 0.4493); + c.close(); + c.moveTo(w * 0.2235, h * 0.3445); + c.arcTo(w * 0.1927, h * 0.1767, 0, 0, 1, w * 0.368, h * 0.361); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.468, h * 0.4299); + c.lineTo(w * 0.368, h * 0.4034); + c.lineTo(w * 0.368, h * 0.394); + c.lineTo(w * 0.3256, h * 0.3799); + c.lineTo(w * 0.3256, h * 0.3887); + c.close(); + c.moveTo(w * 0.4855, h * 0.4499); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5337, h * 0.5395); + c.arcTo(w * 0.3854, h * 0.2356, 0, 0, 1, w * 0.5328, h * 0.6302); + c.lineTo(w * 0.4952, h * 0.5589); + c.lineTo(w * 0.5019, h * 0.5595); + c.lineTo(w * 0.5019, h * 0.5265); + c.lineTo(w * 0.4855, h * 0.5194); + c.close(); + c.moveTo(w * 0.5241, h * 0.6455); + c.arcTo(w * 0.0963, h * 0.0589, 0, 0, 1, w * 0.4663, h * 0.682); + c.arcTo(w * 0.1445, h * 0.0883, 0, 0, 1, w * 0.3642, h * 0.6761); + c.lineTo(w * 0.4239, h * 0.6525); + c.lineTo(w * 0.4566, h * 0.6643); + c.lineTo(w * 0.4566, h * 0.6413); + c.close(); + c.moveTo(w * 0.3507, h * 0.6667); + c.lineTo(w * 0.2871, h * 0.5919); + c.lineTo(w * 0.4123, h * 0.6366); + c.close(); + c.moveTo(w * 0.2563, h * 0.5595); + c.lineTo(w * 0.1753, h * 0.5088); + c.lineTo(w * 0.2052, h * 0.4594); + c.close(); + c.moveTo(w * 0.2139, h * 0.4229); + c.lineTo(w * 0.2197, h * 0.3528); + c.lineTo(w * 0.3256, h * 0.4028); + c.lineTo(w * 0.2283, h * 0.4252); + c.close(); + c.moveTo(w * 0.2264, h * 0.4417); + c.lineTo(w * 0.3218, h * 0.4146); + c.lineTo(w * 0.3353, h * 0.4181); + c.lineTo(w * 0.3353, h * 0.4971); + c.lineTo(w * 0.3208, h * 0.4912); + c.lineTo(w * 0.3208, h * 0.4965); + c.lineTo(w * 0.2264, h * 0.4482); + c.close(); + c.moveTo(w * 0.2697, h * 0.5618); + c.lineTo(w * 0.2245, h * 0.4635); + c.lineTo(w * 0.2331, h * 0.4588); + c.lineTo(w * 0.3256, h * 0.5112); + c.lineTo(w * 0.3237, h * 0.5241); + c.close(); + c.moveTo(w * 0.2852, h * 0.576); + c.lineTo(w * 0.2852, h * 0.5654); + c.lineTo(w * 0.3391, h * 0.53); + c.lineTo(w * 0.3516, h * 0.5347); + c.lineTo(w * 0.4133, h * 0.6213); + c.close(); + c.moveTo(w * 0.368, h * 0.5141); + c.lineTo(w * 0.368, h * 0.5088); + c.lineTo(w * 0.3526, h * 0.5029); + c.lineTo(w * 0.3526, h * 0.4234); + c.lineTo(w * 0.3622, h * 0.4276); + c.lineTo(w * 0.4547, h * 0.5177); + c.lineTo(w * 0.4557, h * 0.5277); + c.close(); + c.moveTo(w * 0.3671, h * 0.417); + c.lineTo(w * 0.4692, h * 0.4411); + c.lineTo(w * 0.4721, h * 0.52); + c.close(); + c.moveTo(w * 0.368, h * 0.5253); + c.lineTo(w * 0.4566, h * 0.5359); + c.lineTo(w * 0.4566, h * 0.5453); + c.lineTo(w * 0.4663, h * 0.5465); + c.lineTo(w * 0.4335, h * 0.6201); + c.lineTo(w * 0.422, h * 0.616); + c.lineTo(w * 0.368, h * 0.5389); + c.close(); + c.moveTo(w * 0.4798, h * 0.5583); + c.lineTo(w * 0.5183, h * 0.629); + c.lineTo(w * 0.4557, h * 0.6313); + c.lineTo(w * 0.4557, h * 0.6237); + c.lineTo(w * 0.447, h * 0.6225); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7915); + c.lineTo(0, h * 0.7491); + c.lineTo(w * 0.0588, h * 0.7279); + c.lineTo(w * 0.0588, h * 0.1036); + c.lineTo(w * 0.3526, 0); + c.lineTo(w * 0.9422, h * 0.2073); + c.lineTo(w * 0.9422, h * 0.8316); + c.lineTo(w, h * 0.8539); + c.lineTo(w, h * 0.894); + c.lineTo(w * 0.7013, h); + c.lineTo(w * 0.5877, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dCloudFront.prototype.cst.CLOUDFRONT, mxShapeAws3dCloudFront); + +//********************************************************************************************************************************************************** +//Data Center +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDataCenter(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDataCenter, mxShape); + +mxShapeAws3dDataCenter.prototype.cst = { + DATA_CENTER : 'mxgraph.aws3d.dataCenter', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDataCenter.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 142; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7465); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataCenter.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.7465); + c.lineTo(w, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w, h * 0.7465); + c.lineTo(w, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineCap('round'); + c.setStrokeWidth(3 * strokeWidth); + + c.begin(); + c.moveTo(w * 0.0894, h * 0.3838); + c.lineTo(w * 0.4187, h * 0.5493); + c.moveTo(w * 0.0894, h * 0.4331); + c.lineTo(w * 0.4187, h * 0.5986); + c.moveTo(w * 0.0894, h * 0.4824); + c.lineTo(w * 0.4187, h * 0.6479); + c.moveTo(w * 0.5854, h * 0.5493); + c.lineTo(w * 0.9146, h * 0.3838); + c.moveTo(w * 0.5854, h * 0.5986); + c.lineTo(w * 0.9146, h * 0.4331); + c.moveTo(w * 0.5854, h * 0.6479); + c.lineTo(w * 0.9146, h * 0.4824); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7465); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7465); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDataCenter.prototype.cst.DATA_CENTER, mxShapeAws3dDataCenter); + +//********************************************************************************************************************************************************** +//Data Server +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDataServer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDataServer, mxShape); + +mxShapeAws3dDataServer.prototype.cst = { + DATA_SERVER : 'mxgraph.aws3d.dataServer', + SHADINC_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDataServer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 106; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDataServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6698); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineCap('round'); + c.setStrokeWidth(3 * strokeWidth); + + c.begin(); + c.moveTo(w * 0.0878, h * 0.4858); + c.lineTo(w * 0.4187, h * 0.7094); + c.moveTo(w * 0.587, h * 0.7094); + c.lineTo(w * 0.9187, h * 0.4858); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDataServer.prototype.cst.DATA_SERVER, mxShapeAws3dDataServer); + +//********************************************************************************************************************************************************** +//Elastic Load Balancing +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dElasticLoadBalancing(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dElasticLoadBalancing, mxShape); + +mxShapeAws3dElasticLoadBalancing.prototype.cst = { + ELASTIC_LOAD_BALANCING : 'mxgraph.aws3d.elasticLoadBalancing', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dElasticLoadBalancing.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 88.17; + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.7996); + c.lineTo(0, h * 0.1985); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w, h * 0.1985); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticLoadBalancing.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.4026); + c.lineTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.6685, h * 0.6011); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.lineTo(0, h * 0.7996); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6685, h * 0.6011); + c.lineTo(w, h * 0.4026); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + c.begin(); + c.moveTo(0, h * 0.4026); + c.lineTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.6685, h * 0.6011); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.lineTo(0, h * 0.7996); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.6685, h * 0.6011); + c.lineTo(w, h * 0.4026); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.close(); + c.moveTo(w * 0.3315, h * 0.6011); + c.lineTo(w * 0.3315, h); + c.stroke(); + + c.restore(); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.337, h * 0.1395); + c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.5, h * 0.1191); + c.arcTo(w * 0.3043, h * 0.1928, 0, 0, 1, w * 0.6739, h * 0.1645); + c.arcTo(w * 0.3261, h * 0.2155, 0, 0, 1, w * 0.8152, h * 0.3176); + c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.75, h * 0.4367); + c.arcTo(w * 0.3261, h * 0.3403, 0, 0, 1, w * 0.6033, h * 0.4854); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.4348, h * 0.4741); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2848, h * 0.4094); + c.arcTo(w * 0.3261, h * 0.2268, 0, 0, 1, w * 0.2065, h * 0.3062); + c.arcTo(w * 0.3261, h * 0.1701, 0, 0, 1, w * 0.2446, h * 0.1928); + c.arcTo(w * 0.2717, h * 0.1701, 0, 0, 1, w * 0.337, h * 0.1395); + c.fill(); + + c.restore(); + c.begin(); + c.moveTo(w * 0.2826, h * 0.372); + c.lineTo(w * 0.362, h * 0.3232); + c.lineTo(w * 0.4054, h * 0.3482); + c.lineTo(w * 0.4457, h * 0.2654); + c.lineTo(w * 0.4185, h * 0.2643); + c.lineTo(w * 0.4728, h * 0.2132); + c.lineTo(w * 0.4348, h * 0.1928); + c.lineTo(w * 0.5141, h * 0.144); + c.lineTo(w * 0.5837, h * 0.1883); + c.lineTo(w * 0.5043, h * 0.2348); + c.lineTo(w * 0.4848, h * 0.2223); + c.lineTo(w * 0.4967, h * 0.2688); + c.lineTo(w * 0.463, h * 0.2665); + c.lineTo(w * 0.4304, h * 0.3346); + c.lineTo(w * 0.4946, h * 0.2949); + c.lineTo(w * 0.4761, h * 0.2858); + c.lineTo(w * 0.5511, h * 0.2631); + c.lineTo(w * 0.5261, h * 0.2472); + c.lineTo(w * 0.6043, h * 0.1996); + c.lineTo(w * 0.6761, h * 0.2404); + c.lineTo(w * 0.5978, h * 0.2892); + c.lineTo(w * 0.5652, h * 0.2699); + c.lineTo(w * 0.5293, h * 0.3198); + c.lineTo(w * 0.5087, h * 0.3051); + c.lineTo(w * 0.4543, h * 0.3391); + c.lineTo(w * 0.563, h * 0.3221); + c.lineTo(w * 0.5598, h * 0.3017); + c.lineTo(w * 0.6326, h * 0.3096); + c.lineTo(w * 0.6163, h * 0.2994); + c.lineTo(w * 0.6957, h * 0.2529); + c.lineTo(w * 0.7674, h * 0.2938); + c.lineTo(w * 0.687, h * 0.3425); + c.lineTo(w * 0.6489, h * 0.321); + c.lineTo(w * 0.5707, h * 0.3539); + c.lineTo(w * 0.5674, h * 0.3369); + c.lineTo(w * 0.4293, h * 0.3618); + c.lineTo(w * 0.4641, h * 0.3834); + c.lineTo(w * 0.3859, h * 0.4299); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7996); + c.lineTo(0, h * 0.1985); + c.lineTo(w * 0.3315, 0); + c.lineTo(w * 0.6685, 0); + c.lineTo(w, h * 0.1985); + c.lineTo(w, h * 0.7996); + c.lineTo(w * 0.6685, h); + c.lineTo(w * 0.3315, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticLoadBalancing.prototype.cst.ELASTIC_LOAD_BALANCING, mxShapeAws3dElasticLoadBalancing); + +//********************************************************************************************************************************************************** +//Instance +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dInstance(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dInstance, mxShape); + +mxShapeAws3dInstance.prototype.cst = { + INSTANCE : 'mxgraph.aws3d.instance', + SHADIG_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dInstance.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 97; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dInstance.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.634); + c.lineTo(0, h * 0.2732); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.622, 0); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.634); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dInstance.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInstance.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2732); + c.lineTo(w * 0.5, h * 0.6392); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.634); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6392); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.6392); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2732); + c.lineTo(w * 0.5, h * 0.6392); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.634); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.6392); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.6392); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.4742); + c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.374, h * 0.4381); + c.lineTo(w * 0.4797, h * 0.3608); + c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.5203, h * 0.3608); + c.lineTo(w * 0.626, h * 0.4381); + c.arcTo(w * 0.0325, h * 0.0258, 0, 0, 1, w * 0.626, h * 0.4711); + c.lineTo(w * 0.5203, h * 0.5485); + c.arcTo(w * 0.0325, h * 0.0206, 0, 0, 1, w * 0.4797, h * 0.5485); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.634); + c.lineTo(0, h * 0.2732); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.622, 0); + c.lineTo(w, h * 0.2732); + c.lineTo(w, h * 0.634); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dInstance.prototype.cst.INSTANCE, mxShapeAws3dInstance); + +//********************************************************************************************************************************************************** +//Internet Gateway +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dInternetGateway(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dInternetGateway, mxShape); + +mxShapeAws3dInternetGateway.prototype.cst = { + INTERNET_GATEWAY : 'mxgraph.aws3d.internetGateway', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dInternetGateway.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dInternetGateway.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dInternetGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dInternetGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7849, h * 0.5039); + c.arcTo(w * 0.0343, h * 0.0632, 0, 0, 1, w * 0.7481, h * 0.4796); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.7661, h * 0.3911); + c.arcTo(w * 0.06, h * 0.0681, 0, 0, 1, w * 0.7712, h * 0.3356); + c.arcTo(w * 0.0257, h * 0.0292, 0, 0, 1, w * 0.7952, h * 0.32); + c.arcTo(w * 0.1285, h * 0.1459, 0, 0, 1, w * 0.8166, h * 0.2461); + c.arcTo(w * 0.06, h * 0.0973, 0, 0, 1, w * 0.8595, h * 0.2238); + c.arcTo(w * 0.0514, h * 0.0973, 0, 0, 1, w * 0.8937, h * 0.2743); + c.arcTo(w * 0.0428, h * 0.0778, 0, 0, 1, w * 0.9323, h * 0.3093); + c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.928, h * 0.3716); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8972, h * 0.4125); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dInternetGateway.prototype.cst.INTERNET_GATEWAY, mxShapeAws3dInternetGateway); + +//********************************************************************************************************************************************************** +//Oracle Data Center +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dOracleDataCenter(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dOracleDataCenter, mxShape); + +mxShapeAws3dOracleDataCenter.prototype.cst = { + ORACLE_DATA_CENTER : 'mxgraph.aws3d.oracleDataCenter' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dOracleDataCenter.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /142; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleDataCenter.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleDataCenter.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.setFillColor('#ff0000'); + + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.lineTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.fill(); + + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.moveTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.0813, h * 0.7113); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549); + c.lineTo(w * 0.122, h * 0.6754); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232); + c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296); + c.close(); + c.moveTo(w * 0.1163, h * 0.7183); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831); + c.lineTo(w * 0.087, h * 0.6676); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697); + c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035); + c.close(); + c.moveTo(w * 0.1439, h * 0.743); + c.lineTo(w * 0.1439, h * 0.6866); + c.lineTo(w * 0.1846, h * 0.707); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738); + c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743); + c.lineTo(w * 0.1992, h * 0.769); + c.lineTo(w * 0.187, h * 0.7641); + c.lineTo(w * 0.1577, h * 0.7218); + c.lineTo(w * 0.1854, h * 0.7345); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155); + c.lineTo(w * 0.1528, h * 0.7007); + c.lineTo(w * 0.1528, h * 0.7472); + c.close(); + c.moveTo(w * 0.2008, h * 0.7711); + c.lineTo(w * 0.2293, h * 0.7338); + c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415); + c.lineTo(w * 0.2699, h * 0.8035); + c.lineTo(w * 0.2602, h * 0.8007); + c.lineTo(w * 0.252, h * 0.7859); + c.lineTo(w * 0.2293, h * 0.7754); + c.lineTo(w * 0.2244, h * 0.7634); + c.lineTo(w * 0.248, h * 0.7739); + c.lineTo(w * 0.235, h * 0.7444); + c.lineTo(w * 0.2122, h * 0.7768); + c.close(); + c.moveTo(w * 0.3244, h * 0.8225); + c.lineTo(w * 0.3171, h * 0.8289); + c.lineTo(w * 0.2854, h * 0.8127); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757); + c.lineTo(w * 0.3228, h * 0.7761); + c.lineTo(w * 0.3179, h * 0.7831); + c.lineTo(w * 0.2878, h * 0.7683); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042); + c.close(); + c.moveTo(w * 0.3276, h * 0.7789); + c.lineTo(w * 0.3366, h * 0.7831); + c.lineTo(w * 0.3366, h * 0.8289); + c.lineTo(w * 0.3805, h * 0.8507); + c.lineTo(w * 0.3748, h * 0.857); + c.lineTo(w * 0.3317, h * 0.8359); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275); + c.close(); + c.moveTo(w * 0.435, h * 0.8775); + c.lineTo(w * 0.4325, h * 0.8866); + c.lineTo(w * 0.3959, h * 0.8683); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563); + c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134); + c.lineTo(w * 0.435, h * 0.8324); + c.lineTo(w * 0.4285, h * 0.838); + c.lineTo(w * 0.4008, h * 0.8246); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831); + c.lineTo(w * 0.4333, h * 0.8542); + c.lineTo(w * 0.426, h * 0.8606); + c.lineTo(w * 0.3878, h * 0.8415); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585); + c.close(); + + c.moveTo(w * 0.6171, h * 0.8063); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592); + c.lineTo(w * 0.5894, h * 0.8761); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458); + c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246); + c.close(); + c.moveTo(w * 0.5886, h * 0.8296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676); + c.lineTo(w * 0.6163, h * 0.8528); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155); + c.close(); + + c.moveTo(w * 0.64, h * 0.85); + c.lineTo(w * 0.64, h * 0.7930); + c.lineTo(w * 0.6854, h * 0.7718); + c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127); + c.lineTo(w * 0.6992, h * 0.8218); + c.lineTo(w * 0.6854, h * 0.8282); + c.lineTo(w * 0.6569, h * 0.8141); + c.lineTo(w * 0.6805, h * 0.8021); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831); + c.lineTo(w * 0.6528, h * 0.7979); + c.lineTo(w * 0.6528, h * 0.8437); + c.close(); + c.moveTo(w * 0.7, h * 0.8204); + c.lineTo(w * 0.7301, h * 0.7507); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486); + c.lineTo(w * 0.7699, h * 0.7852); + c.lineTo(w * 0.7602, h * 0.7908); + c.lineTo(w * 0.7537, h * 0.7838); + c.lineTo(w * 0.7276, h * 0.7958); + c.lineTo(w * 0.7228, h * 0.788); + c.lineTo(w * 0.748, h * 0.7768); + c.lineTo(w * 0.7358, h * 0.7585); + c.lineTo(w * 0.7114, h * 0.8155); + c.close(); + c.moveTo(w * 0.8244, h * 0.7486); + c.lineTo(w * 0.8171, h * 0.762); + c.lineTo(w * 0.7894, h * 0.7761); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507); + c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162); + c.lineTo(w * 0.822, h * 0.7035); + c.lineTo(w * 0.8171, h * 0.7155); + c.lineTo(w * 0.7902, h * 0.7296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606); + c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767); + c.close(); + c.moveTo(w * 0.8366, h * 0.6949); + c.lineTo(w * 0.8366, h * 0.7423); + c.lineTo(w * 0.878, h * 0.7231); + c.lineTo(w * 0.874, h * 0.7338); + c.lineTo(w * 0.8333, h * 0.7535); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75); + c.lineTo(w * 0.8268, h * 0.7007); + c.close(); + c.moveTo(w * 0.9342, h * 0.6472); + c.lineTo(w * 0.9293, h * 0.6599); + c.lineTo(w * 0.9033, h * 0.6725); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817); + c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937); + c.lineTo(w * 0.9309, h * 0.6725); + c.lineTo(w * 0.9268, h * 0.6845); + c.lineTo(w * 0.887, h * 0.7035); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106); + c.lineTo(w * 0.935, h * 0.693); + c.lineTo(w * 0.9285, h * 0.7063); + c.lineTo(w * 0.9008, h * 0.7197); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.setStrokeWidth(3 * strokeWidth); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.0894, h * 0.3838); + c.lineTo(w * 0.4187, h * 0.5493); + c.moveTo(w * 0.0894, h * 0.4331); + c.lineTo(w * 0.4187, h * 0.5986); + c.moveTo(w * 0.0894, h * 0.4824); + c.lineTo(w * 0.4187, h * 0.6479); + c.moveTo(w * 0.5854, h * 0.5492); + c.lineTo(w * 0.9146, h * 0.3838); + c.moveTo(w * 0.5854, h * 0.5986); + c.lineTo(w * 0.9146, h * 0.4331); + c.moveTo(w * 0.5854, h * 0.6479); + c.lineTo(w * 0.9146, h * 0.4824); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleDataCenter.prototype.cst.ORACLE_DATA_CENTER, mxShapeAws3dOracleDataCenter); + +//********************************************************************************************************************************************************** +//Oracle Database Server +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dOracleDatabaseServer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dOracleDatabaseServer, mxShape); + +mxShapeAws3dOracleDatabaseServer.prototype.cst = { + ORACLE_DB_SERVER : 'mxgraph.aws3d.oracleDbServer' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dOracleDatabaseServer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /142; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleDatabaseServer.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleDatabaseServer.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.setFillColor('#ff0000'); + + c.begin(); + c.moveTo(0, h * 0.5586); + c.lineTo(w * 0.5, h * 0.8248); + c.lineTo(w, h * 0.5586); + c.lineTo(w, h * 0.6782); + c.lineTo(w * 0.5, h * 0.9453); + c.lineTo(0, h * 0.6782); + c.fill(); + + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + + c.begin(); + c.moveTo(0, h * 0.5586); + c.lineTo(w * 0.5, h * 0.8248); + c.lineTo(w, h * 0.5586); + c.moveTo(w, h * 0.6782); + c.lineTo(w * 0.5, h * 0.9453); + c.lineTo(0, h * 0.6782); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.0813, h * 0.6918); + c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.065, h * 0.6616); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.065, h * 0.6384); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.0797, h * 0.6315); + c.lineTo(w * 0.122, h * 0.6534); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.1358, h * 0.673); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.139, h * 0.7045); + c.arcTo(w * 0.0179, h * 0.0165, 0, 0, 1, w * 0.1187, h * 0.7113); + c.close(); + c.moveTo(w * 0.1163, h * 0.6992); + c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.1285, h * 0.6955); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1293, h * 0.6819); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.1179, h * 0.6616); + c.lineTo(w * 0.087, h * 0.6451); + c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.0764, h * 0.6473); + c.arcTo(w * 0.0325, h * 0.0376, 0, 0, 0, w * 0.078, h * 0.673); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.087, h * 0.6834); + c.close(); + c.moveTo(w * 0.1439, h * 0.7256); + c.lineTo(w * 0.1439, h * 0.6654); + c.lineTo(w * 0.1846, h * 0.6872); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.1967, h * 0.6992); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2, h * 0.7203); + c.arcTo(w * 0.0138, h * 0.0165, 0, 0, 1, w * 0.1813, h * 0.7256); + c.lineTo(w * 0.1992, h * 0.7534); + c.lineTo(w * 0.187, h * 0.7481); + c.lineTo(w * 0.1577, h * 0.7029); + c.lineTo(w * 0.1854, h * 0.7165); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.1911, h * 0.7135); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 0, w * 0.1894, h * 0.7037); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.1821, h * 0.6962); + c.lineTo(w * 0.1528, h * 0.6804); + c.lineTo(w * 0.1528, h * 0.7301); + c.close(); + c.moveTo(w * 0.2008, h * 0.7556); + c.lineTo(w * 0.2293, h * 0.7158); + c.arcTo(w * 0.0065, h * 0.006, 0, 0, 1, w * 0.2382, h * 0.7143); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2431, h * 0.724); + c.lineTo(w * 0.2699, h * 0.7902); + c.lineTo(w * 0.2602, h * 0.7872); + c.lineTo(w * 0.252, h * 0.7714); + c.lineTo(w * 0.2293, h * 0.7602); + c.lineTo(w * 0.2244, h * 0.7474); + c.lineTo(w * 0.248, h * 0.7586); + c.lineTo(w * 0.235, h * 0.7271); + c.lineTo(w * 0.2122, h * 0.7617); + c.close(); + c.moveTo(w * 0.3244, h * 0.8105); + c.lineTo(w * 0.3171, h * 0.8173); + c.lineTo(w * 0.2854, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2724, h * 0.785); + c.arcTo(w * 0.0569, h * 0.0526, 0, 0, 1, w * 0.265, h * 0.7593); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.2683, h * 0.7459); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.2829, h * 0.7405); + c.lineTo(w * 0.3228, h * 0.7609); + c.lineTo(w * 0.3179, h * 0.7684); + c.lineTo(w * 0.2878, h * 0.7526); + c.arcTo(w * 0.0081, h * 0.0075, 0, 0, 0, w * 0.2789, h * 0.7541); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.2748, h * 0.7684); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.2878, h * 0.7909); + c.close(); + c.moveTo(w * 0.3276, h * 0.7639); + c.lineTo(w * 0.3366, h * 0.7684); + c.lineTo(w * 0.3366, h * 0.8173); + c.lineTo(w * 0.3805, h * 0.8406); + c.lineTo(w * 0.3748, h * 0.8473); + c.lineTo(w * 0.3317, h * 0.8248); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3276, h * 0.8158); + c.close(); + c.moveTo(w * 0.435, h * 0.8692); + c.lineTo(w * 0.4325, h * 0.8789); + c.lineTo(w * 0.3959, h * 0.8594); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.3862, h * 0.8466); + c.arcTo(w * 0.0528, h * 0.0489, 0, 0, 1, w * 0.3805, h * 0.806); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.3951, h * 0.8008); + c.lineTo(w * 0.435, h * 0.821); + c.lineTo(w * 0.4285, h * 0.827); + c.lineTo(w * 0.4008, h * 0.8127); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.3878, h * 0.8196); + c.lineTo(w * 0.4333, h * 0.8443); + c.lineTo(w * 0.426, h * 0.8512); + c.lineTo(w * 0.3878, h * 0.8308); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.3976, h * 0.8489); + c.close(); + + c.moveTo(w * 0.6171, h * 0.7932); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.6366, h * 0.7963); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 1, w * 0.639, h * 0.8188); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.6211, h * 0.8497); + c.lineTo(w * 0.5894, h * 0.8677); + c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 1, w * 0.565, h * 0.8646); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.5659, h * 0.8354); + c.arcTo(w * 0.0488, h * 0.0451, 0, 0, 1, w * 0.5805, h * 0.8127); + c.close(); + c.moveTo(w * 0.5886, h * 0.8181); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.5748, h * 0.8368); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.574, h * 0.8527); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.587, h * 0.8586); + c.lineTo(w * 0.6163, h * 0.8428); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.6285, h * 0.8248); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6293, h * 0.8105); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 0, w * 0.6163, h * 0.803); + c.close(); + c.moveTo(w * 0.64, h * 0.8398); + c.lineTo(w * 0.64, h * 0.779); + c.lineTo(w * 0.6854, h * 0.7563); + c.arcTo(w * 0.0106, h * 0.0098, 0, 0, 1, w * 0.7008, h * 0.7632); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6959, h * 0.7865); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.6805, h * 0.8); + c.lineTo(w * 0.6992, h * 0.8097); + c.lineTo(w * 0.6854, h * 0.8166); + c.lineTo(w * 0.6569, h * 0.8015); + c.lineTo(w * 0.6805, h * 0.7887); + c.arcTo(w * 0.0203, h * 0.0188, 0, 0, 0, w * 0.6894, h * 0.7782); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 0, w * 0.6894, h * 0.7699); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 0, w * 0.6837, h * 0.7684); + c.lineTo(w * 0.6528, h * 0.7842); + c.lineTo(w * 0.6528, h * 0.8331); + c.close(); + c.moveTo(w * 0.7, h * 0.8082); + c.lineTo(w * 0.7301, h * 0.7338); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7358, h * 0.7271); + c.arcTo(w * 0.0098, h * 0.0091, 0, 0, 1, w * 0.7415, h * 0.7316); + c.lineTo(w * 0.7699, h * 0.7707); + c.lineTo(w * 0.7602, h * 0.7766); + c.lineTo(w * 0.7537, h * 0.7692); + c.lineTo(w * 0.7276, h * 0.782); + c.lineTo(w * 0.7228, h * 0.7736); + c.lineTo(w * 0.748, h * 0.7617); + c.lineTo(w * 0.7358, h * 0.7421); + c.lineTo(w * 0.7114, h * 0.803); + c.close(); + c.moveTo(w * 0.8244, h * 0.7316); + c.lineTo(w * 0.8171, h * 0.7459); + c.lineTo(w * 0.7894, h * 0.7609); + c.arcTo(w * 0.0244, h * 0.0225, 0, 0, 1, w * 0.7683, h * 0.7593); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.7667, h * 0.7338); + c.arcTo(w * 0.0488, h * 0.0452, 0, 0, 1, w * 0.7937, h * 0.697); + c.lineTo(w * 0.822, h * 0.6834); + c.lineTo(w * 0.8171, h * 0.6962); + c.lineTo(w * 0.7902, h * 0.7113); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.778, h * 0.7256); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 0, w * 0.7756, h * 0.7444); + c.arcTo(w * 0.0077, h * 0.0072, 0, 0, 0, w * 0.787, h * 0.7512); + c.close(); + c.moveTo(w * 0.8366, h * 0.6742); + c.lineTo(w * 0.8366, h * 0.7248); + c.lineTo(w * 0.878, h * 0.7043); + c.lineTo(w * 0.874, h * 0.7158); + c.lineTo(w * 0.8333, h * 0.7368); + c.arcTo(w * 0.0041, h * 0.0037, 0, 0, 1, w * 0.8268, h * 0.7324); + c.lineTo(w * 0.8268, h * 0.6804); + c.close(); + c.moveTo(w * 0.9342, h * 0.6233); + c.lineTo(w * 0.9293, h * 0.6369); + c.lineTo(w * 0.9033, h * 0.6503); + c.arcTo(w * 0.0325, h * 0.0301, 0, 0, 0, w * 0.8927, h * 0.6601); + c.arcTo(w * 0.0406, h * 0.0376, 0, 0, 0, w * 0.887, h * 0.6729); + c.lineTo(w * 0.9309, h * 0.6503); + c.lineTo(w * 0.9268, h * 0.6631); + c.lineTo(w * 0.887, h * 0.6834); + c.arcTo(w * 0.0089, h * 0.0082, 0, 0, 0, w * 0.8992, h * 0.691); + c.lineTo(w * 0.935, h * 0.6722); + c.lineTo(w * 0.9285, h * 0.6864); + c.lineTo(w * 0.9008, h * 0.7007); + c.arcTo(w * 0.0163, h * 0.0151, 0, 0, 1, w * 0.8829, h * 0.7015); + c.arcTo(w * 0.0407, h * 0.0376, 0, 0, 1, w * 0.8764, h * 0.6827); + c.arcTo(w * 0.065, h * 0.0601, 0, 0, 1, w * 0.8959, h * 0.6443); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleDatabaseServer.prototype.cst.ORACLE_DB_SERVER, mxShapeAws3dOracleDatabaseServer);//zzz + +//********************************************************************************************************************************************************** +//RDS Master +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dRdsMaster(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dRdsMaster, mxShape); + +mxShapeAws3dRdsMaster.prototype.cst = { + RDS_MASTER : 'mxgraph.aws3d.rdsMaster', + SHADIG_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dRdsMaster.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRdsMaster.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRdsMaster.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRdsMaster.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.1878, h * 0.1932); + c.lineTo(w * 0.4854, h * 0.0414); + c.lineTo(w * 0.5886, h * 0.094); + c.lineTo(w * 0.4455, h * 0.2308); + c.lineTo(w * 0.7122, h * 0.1579); + c.lineTo(w * 0.8171, h * 0.2098); + c.lineTo(w * 0.5187, h * 0.3617); + c.lineTo(w * 0.4537, h * 0.3293); + c.lineTo(w * 0.7016, h * 0.2053); + c.lineTo(w * 0.3854, h * 0.2947); + c.lineTo(w * 0.3187, h * 0.2602); + c.lineTo(w * 0.4959, h * 0.0992); + c.lineTo(w * 0.2504, h * 0.2256); + c.close(); + c.fill(); + + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRdsMaster.prototype.cst.RDS_MASTER, mxShapeAws3dRdsMaster); + +//********************************************************************************************************************************************************** +//RDS +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dRds(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dRds, mxShape); + +mxShapeAws3dRds.prototype.cst = { + RDS : 'mxgraph.aws3d.rds', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dRds.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRds.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRds.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRds.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + + c.setFillColor('#ffffff'); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.6053); + c.lineTo(w * 0.5, h * 0.8722); + c.lineTo(w, h * 0.6053); + c.lineTo(w, h * 0.6278); + c.lineTo(w * 0.5, h * 0.8947); + c.lineTo(0, h * 0.6278); + c.close(); + c.fill(); + + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRds.prototype.cst.RDS, mxShapeAws3dRds); + +//********************************************************************************************************************************************************** +//Route 53 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dRoute53(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dRoute53, mxShape); + +mxShapeAws3dRoute53.prototype.cst = { + ROUTE_53 : 'mxgraph.aws3d.route53', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dRoute53.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 117; + var strokeWidth2 = strokeWidth * h /134.4; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRoute53.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6994); + c.lineTo(0, h * 0.2009); + c.lineTo(w * 0.0427, h * 0.0781); + c.lineTo(w * 0.7974, 0); + c.lineTo(w, h * 0.1004); + c.lineTo(w, h * 0.5915); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5983, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRoute53.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRoute53.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2009); + c.lineTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.8376, h * 0.4799); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5966, h); + c.lineTo(0, h * 0.6979); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.8348, h * 0.4861); + c.lineTo(w * 0.9985, h * 0.0992); + c.lineTo(w, h * 0.5952); + c.lineTo(w * 0.8404, h * 0.9747); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.5855, h * 0.1079); + c.arcTo(w * 0.094, h * 0.0744, 0, 0, 0, w * 0.6863, h * 0.1548); + c.arcTo(w * 0.0855, h * 0.0446, 0, 0, 0, w * 0.7761, h * 0.2031); + c.lineTo(w * 0.7726, h * 0.2455); + c.arcTo(w * 0.0769, h * 0.0298, 0, 0, 0, w * 0.694, h * 0.2693); + c.arcTo(w * 0.0684, h * 0.0446, 0, 0, 1, w * 0.5897, h * 0.3051); + c.arcTo(w * 0.4274, h * 0.372, 0, 0, 0, w * 0.4573, h * 0.2753); + c.arcTo(w * 0.0855, h * 0.0744, 0, 0, 0, w * 0.4188, h * 0.2344); + c.lineTo(w * 0.3846, h * 0.2083); + c.arcTo(w * 0.0769, h * 0.0372, 0, 0, 1, w * 0.4103, h * 0.1525); + c.arcTo(w * 0.0855, h * 0.0409, 0, 0, 0, w * 0.4906, h * 0.1079); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, h * 0.2009); + c.lineTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.8376, h * 0.4799); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5966, h); + c.lineTo(0, h * 0.6979); + c.close(); + c.moveTo(w * 0.8348, h * 0.4861); + c.lineTo(w * 0.9985, h * 0.0992); + c.lineTo(w, h * 0.5952); + c.lineTo(w * 0.8404, h * 0.9747); + c.close(); + c.moveTo(w * 0.6009, h * 0.5007); + c.lineTo(w * 0.6009, h); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.6994); + c.lineTo(0, h * 0.2009); + c.lineTo(w * 0.0427, h * 0.0781); + c.lineTo(w * 0.7974, 0); + c.lineTo(w, h * 0.1004); + c.lineTo(w, h * 0.5915); + c.lineTo(w * 0.8376, h * 0.9784); + c.lineTo(w * 0.5983, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRoute53.prototype.cst.ROUTE_53, mxShapeAws3dRoute53); + +//********************************************************************************************************************************************************** +//S3 Bucket +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dS3Bucket(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dS3Bucket, mxShape); + +mxShapeAws3dS3Bucket.prototype.cst = { + S3_BUCKET : 'mxgraph.aws3d.s3Bucket', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dS3Bucket.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 61.5; + var strokeWidth2 = strokeWidth * h / 63.8; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.1951, h * 0.8307); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3Bucket.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, h * 0.5564); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.1984, h * 0.8307); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.5533); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5, h * 0.5564); + c.lineTo(w, h * 0.2774); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.5564); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2774); + c.lineTo(w * 0.5008, 0); + c.lineTo(w, h * 0.2774); + c.lineTo(w * 0.7967, h * 0.8307); + c.lineTo(w * 0.5008, h); + c.lineTo(w * 0.1951, h * 0.8307); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dS3Bucket.prototype.cst.S3_BUCKET, mxShapeAws3dS3Bucket); + +//********************************************************************************************************************************************************** +//S3 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dS3(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dS3, mxShape); + +mxShapeAws3dS3.prototype.cst = { + S3 : 'mxgraph.aws3d.s3', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dS3.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 231.5; + var strokeWidth2 = strokeWidth * h / 239; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dS3.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7782); + c.lineTo(0, h * 0.3406); + c.lineTo(w * 0.5974, 0); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6674); + c.lineTo(w * 0.3991, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dS3.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dS3.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.3406); + c.lineTo(w * 0.3991, h * 0.5548); + c.lineTo(w * 0.3991, h); + c.lineTo(0, h * 0.7782); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3991, h * 0.5548); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6661); + c.lineTo(w * 0.3991, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.3406); + c.lineTo(w * 0.3991, h * 0.5548); + c.lineTo(w, h * 0.2218); + c.moveTo(w * 0.3991, h * 0.5548); + c.lineTo(w * 0.3991, h); + c.moveTo(w * 0.3991, h * 0.3335); + c.lineTo(w * 0.2009, h * 0.448); + c.lineTo(w * 0.2009, h * 0.8891); + c.moveTo(w * 0.5983, h * 0.2209); + c.lineTo(w * 0.7948, h * 0.1109); + c.moveTo(w * 0.2022, h * 0.2218); + c.lineTo(w * 0.5991, h * 0.4448); + c.lineTo(w * 0.5991, h * 0.8891); + c.moveTo(w * 0.4004, h * 0.1117); + c.lineTo(w * 0.7978, h * 0.3335); + c.lineTo(w * 0.7978, h * 0.7791); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4773, h * 0.2155); + c.arcTo(w * 0.0086, h * 0.0046, 0, 0, 1, w * 0.4903, h * 0.2096); + c.arcTo(w * 0.2808, h * 0.272, 0, 0, 1, w * 0.6004, h * 0.2619); + c.arcTo(w * 0.108, h * 0.105, 0, 0, 1, w * 0.6177, h * 0.277); + c.arcTo(w * 0.0065, h * 0.0063, 0, 0, 1, w * 0.6099, h * 0.2879); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.5378, h * 0.2607); + c.arcTo(w * 0.216, h * 0.2092, 0, 0, 1, w * 0.4773, h * 0.2155); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w * 0.4687, h * 0.2138); + c.arcTo(w * 0.1512, h * 0.1464, 0, 0, 0, w * 0.4838, h * 0.2343); + c.arcTo(w * 0.2376, h * 0.2301, 0, 0, 0, w * 0.5529, h * 0.2774); + c.arcTo(w * 0.1728, h * 0.1674, 0, 0, 0, w * 0.6091, h * 0.2954); + c.lineTo(w * 0.4946, h * 0.3339); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.4549, h * 0.3205); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.419, h * 0.3004); + c.arcTo(w * 0.1944, h * 0.1883, 0, 0, 1, w * 0.3965, h * 0.2795); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7782); + c.lineTo(0, h * 0.3406); + c.lineTo(w * 0.5974, 0); + c.lineTo(w, h * 0.2218); + c.lineTo(w, h * 0.6674); + c.lineTo(w * 0.3991, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dS3.prototype.cst.S3, mxShapeAws3dS3); + +//********************************************************************************************************************************************************** +//SimpleDB +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSimpleDB(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSimpleDB, mxShape); + +mxShapeAws3dSimpleDB.prototype.cst = { + SIMPLE_DB : 'mxgraph.aws3d.simpleDb', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSimpleDB.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSimpleDB.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSimpleDB.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.1821, h * 0.182); + c.lineTo(w * 0.4659, h * 0.0308); + c.lineTo(w * 0.822, h * 0.2218); + c.lineTo(w * 0.539, h * 0.3714); + c.close(); + c.fill(); + + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.restore(); + c.setShadow(false); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setStrokeColor(fillColor); + c.setStrokeWidth(2.2 * strokeWidth); + c.begin(); + c.moveTo(w * 0.2382, h * 0.2218); + c.lineTo(w * 0.5415, h * 0.0602); + + c.moveTo(w * 0.3821, h * 0.0564); + c.lineTo(w * 0.7737, h * 0.2656); + + c.moveTo(w * 0.2967, h * 0.0915); + c.lineTo(w * 0.7114, h * 0.312); + + c.moveTo(w * 0.2209, h * 0.1316); + c.lineTo(w * 0.6179, h * 0.3434); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSimpleDB.prototype.cst.SIMPLE_DB, mxShapeAws3dSimpleDB); + +//********************************************************************************************************************************************************** +//SQS +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSqs(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSqs, mxShape); + +mxShapeAws3dSqs.prototype.cst = { + SQS : 'mxgraph.aws3d.sqs', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSqs.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 184; + var strokeWidth2 = strokeWidth * h / 212.75; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSqs.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.lineTo(w * 0.1658, h * 0.1666); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.8337, h * 0.1666); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSqs.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSqs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.1658, h * 0.1671); + c.lineTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.3344); + c.lineTo(w * 0.8332, h * 0.1671); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7509); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.6674, h * 0.0844); + c.lineTo(w * 0.3337, h * 0.2512); + c.lineTo(w * 0.25, h * 0.7109); + c.lineTo(w * 0.25, h * 0.8736); + + c.moveTo(w * 0.3326, h * 0.0839); + c.lineTo(w * 0.6674, h * 0.2512); + c.lineTo(w * 0.75, h * 0.7053); + c.lineTo(w * 0.75, h * 0.874); + + c.moveTo(0, h * 0.584); + c.lineTo(w * 0.5, h * 0.8331); + c.lineTo(w, h * 0.584); + + c.moveTo(w * 0.1658, h * 0.1671); + c.lineTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.8332, h * 0.1671); + + c.moveTo(w * 0.5, h * 0.334); + c.lineTo(w * 0.5, h); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3337, h * 0.1511); + c.lineTo(w * 0.4668, h * 0.0848); + c.lineTo(w * 0.6663, h * 0.184); + c.lineTo(w * 0.5337, h * 0.2503); + c.close(); + c.fill(); + + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000'); + c.setFillColor(fillColor); + + c.begin(); + c.moveTo(w * 0.3902, h * 0.153); + c.lineTo(w * 0.4701, h * 0.113); + c.lineTo(w * 0.4701, h * 0.153); + c.close(); + c.moveTo(w * 0.4402, h * 0.1784); + c.lineTo(w * 0.5196, h * 0.1384); + c.lineTo(w * 0.5196, h * 0.1784); + c.close(); + c.moveTo(w * 0.4908, h * 0.2033); + c.lineTo(w * 0.5701, h * 0.1633); + c.lineTo(w * 0.5701, h * 0.2033); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7485); + c.lineTo(0, h * 0.584); + c.lineTo(w * 0.1658, h * 0.1666); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.8337, h * 0.1666); + c.lineTo(w, h * 0.584); + c.lineTo(w, h * 0.7485); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSqs.prototype.cst.SQS, mxShapeAws3dSqs); + +//********************************************************************************************************************************************************** +//VPC Gateway +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dVpcGateway(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dVpcGateway, mxShape); + +mxShapeAws3dVpcGateway.prototype.cst = { + VPC_GATEWAY : 'mxgraph.aws3d.vpcGateway', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dVpcGateway.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dVpcGateway.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.1054, 0); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3188, h * 0.7247); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.3162, h * 0.2072); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.3162, h * 0.2072); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.3162, h * 0.2072); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.3162, h * 0.2072); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3162, h * 0.7247); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(w * 0.5801, h * 0.5447); + c.lineTo(w * 0.5801, h * 0.035); + c.lineTo(w * 0.1054, 0); + c.lineTo(0, h * 0.0691); + c.lineTo(0, h * 0.4134); + c.lineTo(w * 0.3188, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.6829, h * 0.1031); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.lineTo(w * 0.8946, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dVpcGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dVpcGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.8946, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.8946, h); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.8946, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.8946, h); + c.lineTo(w * 0.8946, h * 0.6537); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w, h * 0.929); + c.lineTo(w, h * 0.5866); + c.lineTo(w * 0.6829, h * 0.1031); + c.lineTo(w * 0.4216, h * 0.2753); + c.lineTo(w * 0.4216, h * 0.7928); + c.lineTo(w * 0.8946, h); + c.close(); + c.stroke(); + + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.5587, h * 0.7743); + c.lineTo(w * 0.5587, h * 0.6274); + c.lineTo(w * 0.5775, h * 0.6342); + c.lineTo(w * 0.5775, h * 0.57); + c.arcTo(w * 0.0428, h * 0.0486, 0, 0, 1, w * 0.6058, h * 0.5253); + c.arcTo(w * 0.0686, h * 0.0778, 0, 0, 1, w * 0.6564, h * 0.5447); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.6847, h * 0.607); + c.lineTo(w * 0.6847, h * 0.6877); + c.lineTo(w * 0.7001, h * 0.6946); + c.lineTo(w * 0.7001, h * 0.8405); + c.close(); + c.moveTo(w * 0.6564, h * 0.6741); + c.lineTo(w * 0.6564, h * 0.6177); + c.arcTo(w * 0.06, h * 0.0681, 0, 0, 0, w * 0.6392, h * 0.57); + c.arcTo(w * 0.0343, h * 0.0389, 0, 0, 0, w * 0.6195, h * 0.5574); + c.arcTo(w * 0.0111, h * 0.0126, 0, 0, 0, w * 0.6058, h * 0.5691); + c.lineTo(w * 0.6058, h * 0.6498); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dVpcGateway.prototype.cst.VPC_GATEWAY, mxShapeAws3dVpcGateway); + +//********************************************************************************************************************************************************** +//Web Server +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dWebServer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dWebServer, mxShape); + +mxShapeAws3dWebServer.prototype.cst = { + WEB_SERVER : 'mxgraph.aws3d.webServer', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dWebServer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h / 106; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dWebServer.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dWebServer.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWebServer.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6651); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6651); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.3349); + c.lineTo(w * 0.5, h * 0.6651); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6651); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.6651); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.5189); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.374, h * 0.4858); + c.lineTo(w * 0.4797, h * 0.4151); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.5203, h * 0.4151); + c.lineTo(w * 0.626, h * 0.4858); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.626, h * 0.516); + c.lineTo(w * 0.5203, h * 0.5868); + c.arcTo(w * 0.0325, h * 0.0236, 0, 0, 1, w * 0.4797, h * 0.5868); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6651); + c.lineTo(0, h * 0.3349); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3349); + c.lineTo(w, h * 0.6651); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWebServer.prototype.cst.WEB_SERVER, mxShapeAws3dWebServer); + +//********************************************************************************************************************************************************** +//DynamoDB +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDynamoDB(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDynamoDB, mxShape); + +mxShapeAws3dDynamoDB.prototype.cst = { + DYNAMO_DB : 'mxgraph.aws3d.dynamoDb', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDynamoDB.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dDynamoDB.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8333); + c.lineTo(0, h * 0.1667); + c.lineTo(w * 0.3333, h * 0.0014); + c.lineTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6639, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.8333); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5014, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dDynamoDB.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(0, h * 0.3333); + c.lineTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8333); + c.lineTo(0, h * 0.1714); + c.close(); + c.moveTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6667, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w * 0.832, h * 0.3348);// + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w * 0.5014, h * 0.5); + c.lineTo(w * 0.832, h * 0.3348); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.4986, h * 0.5); + c.lineTo(w * 0.4986, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.832, h * 0.3348); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.831); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(0, h * 0.3333); + c.lineTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8333); + c.lineTo(0, h * 0.1714); + c.close(); + c.moveTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6667, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w * 0.832, h * 0.3348); + c.lineTo(w, h * 0.3333); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w * 0.5014, h * 0.5); + c.lineTo(w * 0.832, h * 0.3348); + c.close(); + c.moveTo(w * 0.3333, h * 0.5); + c.lineTo(w * 0.4986, h * 0.5); + c.lineTo(w * 0.4986, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5); + c.lineTo(w, h * 0.3333); + c.lineTo(w, h * 0.831); + c.close(); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(w * 0.5, h * 0.1667); + c.moveTo(w * 0.168, h * 0.3333); + c.lineTo(w * 0.5014, h * 0.5); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4876, h * 0.2262); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5647, h * 0.25); + c.arcTo(w * 0.4407, h * 0.381, 0, 0, 1, w * 0.6419, h * 0.2905); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.6799, h * 0.32); + c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.6634, h * 0.3314); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.5978, h * 0.3119); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.508, h * 0.2667); + c.arcTo(w * 0.303, h * 0.2619, 0, 0, 1, w * 0.4711, h * 0.2343); + c.arcTo(w * 0.0132, h * 0.0076, 0, 0, 1, w * 0.4876, h * 0.2262); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(w * 0.5124, h * 0.4143); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.4683, h * 0.4095); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3829, h * 0.3757); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 1, w * 0.3196, h * 0.3371); + c.arcTo(w * 0.0661, h * 0.0357, 0, 0, 1, w * 0.3058, h * 0.3081); + c.lineTo(w * 0.4612, h * 0.2333); + c.arcTo(w * 0.0661, h * 0.0476, 0, 0, 0, w * 0.4744, h * 0.2548); + c.arcTo(w * 0.3306, h * 0.2857, 0, 0, 0, w * 0.53, h * 0.2905); + c.arcTo(w * 0.4408, h * 0.381, 0, 0, 0, w * 0.6198, h * 0.3295); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.665, h * 0.3367); + c.close(); + c.moveTo(w * 0.5052, h * 0.3714); + c.arcTo(w * 0.0275, h * 0.019, 0, 0, 1, w * 0.5135, h * 0.3581); + c.arcTo(w * 0.0275, h * 0.0238, 0, 0, 1, w * 0.5344, h * 0.3571); + c.lineTo(w * 0.5405, h * 0.3471); + c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.5278, h * 0.3381); + c.arcTo(w * 0.022, h * 0.0119, 0, 0, 1, w * 0.5372, h * 0.3271); + c.lineTo(w * 0.5306, h * 0.3186); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.5041, h * 0.3143); + c.arcTo(w * 0.0275, h * 0.0143, 0, 0, 1, w * 0.4975, h * 0.3029); + c.lineTo(w * 0.4777, h * 0.2995); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4628, h * 0.3033); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4408, h * 0.2967); + c.lineTo(w * 0.4187, h * 0.3); + c.arcTo(w * 0.011, h * 0.0081, 0, 0, 1, w * 0.4132, h * 0.3124); + c.arcTo(w * 0.0386, h * 0.0333, 0, 0, 1, w * 0.395, h * 0.3129); + c.lineTo(w * 0.3873, h * 0.3224); + c.arcTo(w * 0.0165, h * 0.0143, 0, 0, 1, w * 0.3994, h * 0.3333); + c.arcTo(w * 0.0138, h * 0.0119, 0, 0, 1, w * 0.3901, h * 0.3433); + c.lineTo(w * 0.3994, h * 0.3514); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4215, h * 0.3548); + c.arcTo(w * 0.0165, h * 0.0119, 0, 0, 1, w * 0.4298, h * 0.3667); + c.lineTo(w * 0.449, h * 0.3714); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4711, h * 0.3657); + c.arcTo(w * 0.0331, h * 0.0286, 0, 0, 1, w * 0.4887, h * 0.3724); + c.close(); + c.moveTo(w * 0.4986, h * 0.351); + c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 1, w * 0.4804, h * 0.3552); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 1, w * 0.443, h * 0.349); + c.lineTo(w * 0.4413, h * 0.3529); + c.lineTo(w * 0.4242, h * 0.3371); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4545, h * 0.3462); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4793, h * 0.3476); + c.arcTo(w * 0.0441, h * 0.0381, 0, 0, 0, w * 0.4986, h * 0.3448); + c.close(); + c.moveTo(w * 0.503, h * 0.3349); + c.arcTo(w * 0.1102, h * 0.0952, 0, 0, 0, w * 0.4766, h * 0.3233); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 0, w * 0.4529, h * 0.32); + c.arcTo(w * 0.0551, h * 0.0476, 0, 0, 0, w * 0.4325, h * 0.3238); + c.lineTo(w * 0.427, h * 0.3195); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4556, h * 0.3157); + c.arcTo(w * 0.0826, h * 0.0714, 0, 0, 1, w * 0.4851, h * 0.3232); + c.lineTo(w * 0.4876, h * 0.3181); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8333); + c.lineTo(0, h * 0.1667); + c.lineTo(w * 0.3333, h * 0.0014); + c.lineTo(w * 0.4986, h * 0.1667); + c.lineTo(w * 0.6639, 0); + c.lineTo(w, h * 0.169); + c.lineTo(w, h * 0.8333); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5014, h * 0.9162); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDynamoDB.prototype.cst.DYNAMO_DB, mxShapeAws3dDynamoDB); + +//********************************************************************************************************************************************************** +//Elastic MapReduce +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dElasticMapReduce(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dElasticMapReduce, mxShape); + +mxShapeAws3dElasticMapReduce.prototype.cst = { + ELASTIC_MAP_REDUCE : 'mxgraph.aws3d.elasticMapReduce', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dElasticMapReduce.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dElasticMapReduce.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dElasticMapReduce.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDynamoDB.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.3336, h * 0.1789); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.359, h * 0.1789); + c.lineTo(w * 0.4001, h * 0.2015); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4008, h * 0.2135); + c.lineTo(w * 0.3574, h * 0.2368); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.3352, h * 0.2368); + c.lineTo(w * 0.2934, h * 0.2143); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.2934, h * 0.2015); + c.close(); + c.moveTo(w * 0.3705, h * 0.1729); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3705, h * 0.1602); + c.lineTo(w * 0.4139, h * 0.1368); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4336, h * 0.1368); + c.lineTo(w * 0.4811, h * 0.1617); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4811, h * 0.1708); + c.lineTo(w * 0.4328, h * 0.1955); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4156, h * 0.1955); + c.close(); + c.moveTo(w * 0.4467, h * 0.1308); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.4467, h * 0.1203); + c.lineTo(w * 0.491, h * 0.0962); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5123, h * 0.0962); + c.lineTo(w * 0.559, h * 0.1203); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.559, h * 0.1293); + c.lineTo(w * 0.5123, h * 0.1549); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4918, h * 0.1549); + c.close(); + c.moveTo(w * 0.568, h * 0.1383); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5918, h * 0.1383); + c.lineTo(w * 0.6361, h * 0.1624); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6366, h * 0.1714); + c.lineTo(w * 0.5885, h * 0.1955); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.568, h * 0.1955); + c.lineTo(w * 0.523, h * 0.1714); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.523, h * 0.1616); + c.close(); + c.moveTo(w * 0.6451, h * 0.1789); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6697, h * 0.1789); + c.lineTo(w * 0.7123, h * 0.2023); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.7123, h * 0.2128); + c.lineTo(w * 0.6664, h * 0.2376); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.6492, h * 0.2376); + c.lineTo(w * 0.6016, h * 0.2135); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6016, h * 0.2023); + c.close(); + c.moveTo(w * 0.6369, h * 0.2451); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.6369, h * 0.2526); + c.lineTo(w * 0.5172, h * 0.3173); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.4893, h * 0.3173); + c.lineTo(w * 0.3697, h * 0.2541); + c.arcTo(w * 0.0074, h * 0.0068, 0, 0, 1, w * 0.3697, h * 0.2436); + c.lineTo(w * 0.4918, h * 0.1782); + c.arcTo(w * 0.0328, h * 0.0301, 0, 0, 1, w * 0.5131, h * 0.1782); + c.close(); + c.fill(); + + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.arcTo(w * 0., h * 0., 0, 0, 1, w * 0., h * 0.); + + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticMapReduce.prototype.cst.ELASTIC_MAP_REDUCE, mxShapeAws3dElasticMapReduce); + +//********************************************************************************************************************************************************** +//RDS Slave +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dRdsSlave(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dRdsSlave, mxShape); + +mxShapeAws3dRdsSlave.prototype.cst = { + RDS_SLAVE : 'mxgraph.aws3d.rdsSlave' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dRdsSlave.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRdsSlave.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRdsSlave.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.close(); + c.moveTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3308); + c.fill(); + + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w, h * 0.3308); + c.lineTo(w, h * 0.7331); + c.close(); + c.fill(); + + c.restore(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.2457, h * 0.2137); + c.lineTo(w * 0.5393, h * 0.0593); + c.lineTo(w * 0.6875, h * 0.1377); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.7137, h * 0.1625); + c.arcTo(w * 0.0348, h * 0.032, 0, 0, 1, w * 0.7076, h * 0.1968); + c.arcTo(w * 0.1743, h * 0.1599, 0, 0, 1, w * 0.6597, h * 0.2249); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5943, h * 0.232); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 1, w * 0.5542, h * 0.2225); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 1, w * 0.5673, h * 0.2353); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 1, w * 0.5611, h * 0.2729); + c.lineTo(w * 0.4889, h * 0.316); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.4766, h * 0.3352); + c.lineTo(w * 0.4052, h * 0.2992); + c.arcTo(w * 0.0173, h * 0.0159, 0, 0, 1, w * 0.4121, h * 0.2841); + c.lineTo(w * 0.4914, h * 0.2368); + c.arcTo(w * 0.0218, h * 0.02, 0, 0, 0, w * 0.4897, h * 0.2129); + c.lineTo(w * 0.4409, h * 0.1857); + c.lineTo(w * 0.3145, h * 0.2529); + c.close(); + c.moveTo(w * 0.4801, h * 0.1633); + c.lineTo(w * 0.5263, h * 0.1865); + c.arcTo(w * 0.0871, h * 0.0799, 0, 0, 0, w * 0.583, h * 0.1905); + c.arcTo(w * 0.1307, h * 0.1199, 0, 0, 0, w * 0.6196, h * 0.1721); + c.arcTo(w * 0.0261, h * 0.024, 0, 0, 0, w * 0.6117, h * 0.1441); + c.lineTo(w * 0.5655, h * 0.1193); + c.fill(); + + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.126, h * 0.267); + c.lineTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.622, h * 0.4023); + c.lineTo(w * 0.874, h * 0.267); + c.lineTo(w * 0.874, h * 0.1316); + c.moveTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.267); + c.moveTo(w * 0.5, h * 0.6015); + c.lineTo(w * 0.5, h); + c.moveTo(w, h * 0.3346); + c.lineTo(w * 0.87, h * 0.267); + c.moveTo(w * 0.378, h * 0.4023); + c.lineTo(w * 0.622, h * 0.4023); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7331); + c.lineTo(0, h * 0.3346); + c.lineTo(w * 0.126, h * 0.1316); + c.lineTo(w * 0.374, 0); + c.lineTo(w * 0.626, 0); + c.lineTo(w * 0.874, h * 0.1316); + c.lineTo(w, h * 0.3346); + c.lineTo(w, h * 0.7331); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRdsSlave.prototype.cst.RDS_SLAVE, mxShapeAws3dRdsSlave); + +//********************************************************************************************************************************************************** +//AMI +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dAMI2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dAMI2, mxShape); + +mxShapeAws3dAMI2.prototype.cst = { + AMI_2 : 'mxgraph.aws3d.ami2', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dAMI2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dAMI2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.2095, h * 0.376); + c.lineTo(w * 0.527, h * 0.104); + c.lineTo(w * 0.6338, h * 0.194); + c.lineTo(w * 0.3149, h * 0.468); + c.close(); + c.moveTo(w * 0.3716, h * 0.518); + c.lineTo(w * 0.6892, h * 0.246); + c.lineTo(w * 0.796, h * 0.336); + c.lineTo(w * 0.477, h * 0.61); + c.close(); + c.moveTo(w * 0.3108, h * 0.282); + c.lineTo(w * 0.4257, h * 0.38); + c.moveTo(w * 0.4189, h * 0.194); + c.lineTo(w * 0.5297, h * 0.288); + c.moveTo(w * 0.5838, h * 0.338); + c.lineTo(w * 0.6892, h * 0.426); + c.moveTo(w * 0.4757, h * 0.426); + c.lineTo(w * 0.5838, h * 0.518); + c.stroke(); + + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dAMI2.prototype.cst.AMI_2, mxShapeAws3dAMI2); + +//********************************************************************************************************************************************************** +//EBS +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dEbs(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dEbs, mxShape); + +mxShapeAws3dEbs.prototype.cst = { + EBS : 'mxgraph.aws3d.ebs', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dEbs.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if(isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.0033, h * 0.5276); + c.lineTo(w * 0.071, h * 0.2898); + c.moveTo(w * 0.5325, h * 0.9976); + c.lineTo(w * 0.603, h * 0.7593); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEbs.prototype.cst.EBS, mxShapeAws3dEbs); + +//********************************************************************************************************************************************************** +//Oracle Server +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dOracleServer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dOracleServer, mxShape); + +mxShapeAws3dOracleServer.prototype.cst = { + ORACLE_SERVER : 'mxgraph.aws3d.oracleServer' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dOracleServer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 123; + var strokeWidth2 = strokeWidth * h /133; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dOracleServer.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dOracleServer.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + c.setAlpha('0.1'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.setAlpha('0.3'); + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.setFillColor('#ff0000'); + + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.lineTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.fill(); + + c.setStrokeWidth(0.5 * strokeWidth); + c.setStrokeColor('#ffffff'); + c.setFillColor('#ffffff'); + + c.begin(); + c.moveTo(0, h * 0.5866); + c.lineTo(w * 0.5, h * 0.8359); + c.lineTo(w, h * 0.5866); + c.moveTo(w, h * 0.6986); + c.lineTo(w * 0.5, h * 0.9486); + c.lineTo(0, h * 0.6986); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.0813, h * 0.7113); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.065, h * 0.6831); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.065, h * 0.6613); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.0797, h * 0.6549); + c.lineTo(w * 0.122, h * 0.6754); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.1358, h * 0.6937); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.139, h * 0.7232); + c.arcTo(w * 0.0179, h * 0.0155, 0, 0, 1, w * 0.1187, h * 0.7296); + c.close(); + c.moveTo(w * 0.1163, h * 0.7183); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.1285, h * 0.7148); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1293, h * 0.7021); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.1179, h * 0.6831); + c.lineTo(w * 0.087, h * 0.6676); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.0764, h * 0.6697); + c.arcTo(w * 0.0325, h * 0.0352, 0, 0, 0, w * 0.078, h * 0.6937); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.087, h * 0.7035); + c.close(); + c.moveTo(w * 0.1439, h * 0.743); + c.lineTo(w * 0.1439, h * 0.6866); + c.lineTo(w * 0.1846, h * 0.707); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.1967, h * 0.7183); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2, h * 0.738); + c.arcTo(w * 0.0138, h * 0.0155, 0, 0, 1, w * 0.1813, h * 0.743); + c.lineTo(w * 0.1992, h * 0.769); + c.lineTo(w * 0.187, h * 0.7641); + c.lineTo(w * 0.1577, h * 0.7218); + c.lineTo(w * 0.1854, h * 0.7345); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.1911, h * 0.7317); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 0, w * 0.1894, h * 0.7225); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.1821, h * 0.7155); + c.lineTo(w * 0.1528, h * 0.7007); + c.lineTo(w * 0.1528, h * 0.7472); + c.close(); + c.moveTo(w * 0.2008, h * 0.7711); + c.lineTo(w * 0.2293, h * 0.7338); + c.arcTo(w * 0.0065, h * 0.0056, 0, 0, 1, w * 0.2382, h * 0.7324); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2431, h * 0.7415); + c.lineTo(w * 0.2699, h * 0.8035); + c.lineTo(w * 0.2602, h * 0.8007); + c.lineTo(w * 0.252, h * 0.7859); + c.lineTo(w * 0.2293, h * 0.7754); + c.lineTo(w * 0.2244, h * 0.7634); + c.lineTo(w * 0.248, h * 0.7739); + c.lineTo(w * 0.235, h * 0.7444); + c.lineTo(w * 0.2122, h * 0.7768); + c.close(); + c.moveTo(w * 0.3244, h * 0.8225); + c.lineTo(w * 0.3171, h * 0.8289); + c.lineTo(w * 0.2854, h * 0.8127); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2724, h * 0.7986); + c.arcTo(w * 0.0569, h * 0.0493, 0, 0, 1, w * 0.265, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.2683, h * 0.762); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.2829, h * 0.757); + c.lineTo(w * 0.3228, h * 0.7761); + c.lineTo(w * 0.3179, h * 0.7831); + c.lineTo(w * 0.2878, h * 0.7683); + c.arcTo(w * 0.0081, h * 0.007, 0, 0, 0, w * 0.2789, h * 0.7697); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.2748, h * 0.7831); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.2878, h * 0.8042); + c.close(); + c.moveTo(w * 0.3276, h * 0.7789); + c.lineTo(w * 0.3366, h * 0.7831); + c.lineTo(w * 0.3366, h * 0.8289); + c.lineTo(w * 0.3805, h * 0.8507); + c.lineTo(w * 0.3748, h * 0.857); + c.lineTo(w * 0.3317, h * 0.8359); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3276, h * 0.8275); + c.close(); + c.moveTo(w * 0.435, h * 0.8775); + c.lineTo(w * 0.4325, h * 0.8866); + c.lineTo(w * 0.3959, h * 0.8683); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.3862, h * 0.8563); + c.arcTo(w * 0.0528, h * 0.0458, 0, 0, 1, w * 0.3805, h * 0.8183); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.3951, h * 0.8134); + c.lineTo(w * 0.435, h * 0.8324); + c.lineTo(w * 0.4285, h * 0.838); + c.lineTo(w * 0.4008, h * 0.8246); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.3878, h * 0.831); + c.lineTo(w * 0.4333, h * 0.8542); + c.lineTo(w * 0.426, h * 0.8606); + c.lineTo(w * 0.3878, h * 0.8415); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.3976, h * 0.8585); + c.close(); + + c.moveTo(w * 0.6171, h * 0.8063); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.6366, h * 0.8092); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 1, w * 0.639, h * 0.8303); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.6211, h * 0.8592); + c.lineTo(w * 0.5894, h * 0.8761); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 1, w * 0.565, h * 0.8732); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.5659, h * 0.8458); + c.arcTo(w * 0.0488, h * 0.0422, 0, 0, 1, w * 0.5805, h * 0.8246); + c.close(); + c.moveTo(w * 0.5886, h * 0.8296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.5748, h * 0.8472); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.574, h * 0.862); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.587, h * 0.8676); + c.lineTo(w * 0.6163, h * 0.8528); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.6285, h * 0.8359); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6293, h * 0.8225); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 0, w * 0.6163, h * 0.8155); + c.close(); + + c.moveTo(w * 0.64, h * 0.85); + c.lineTo(w * 0.64, h * 0.7930); + c.lineTo(w * 0.6854, h * 0.7718); + c.arcTo(w * 0.0106, h * 0.0092, 0, 0, 1, w * 0.7008, h * 0.7782); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6959, h * 0.8); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.6805, h * 0.8127); + c.lineTo(w * 0.6992, h * 0.8218); + c.lineTo(w * 0.6854, h * 0.8282); + c.lineTo(w * 0.6569, h * 0.8141); + c.lineTo(w * 0.6805, h * 0.8021); + c.arcTo(w * 0.0203, h * 0.0176, 0, 0, 0, w * 0.6894, h * 0.7923); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 0, w * 0.6894, h * 0.7845); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 0, w * 0.6837, h * 0.7831); + c.lineTo(w * 0.6528, h * 0.7979); + c.lineTo(w * 0.6528, h * 0.8437); + c.close(); + c.moveTo(w * 0.7, h * 0.8204); + c.lineTo(w * 0.7301, h * 0.7507); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7358, h * 0.7444); + c.arcTo(w * 0.0098, h * 0.0085, 0, 0, 1, w * 0.7415, h * 0.7486); + c.lineTo(w * 0.7699, h * 0.7852); + c.lineTo(w * 0.7602, h * 0.7908); + c.lineTo(w * 0.7537, h * 0.7838); + c.lineTo(w * 0.7276, h * 0.7958); + c.lineTo(w * 0.7228, h * 0.788); + c.lineTo(w * 0.748, h * 0.7768); + c.lineTo(w * 0.7358, h * 0.7585); + c.lineTo(w * 0.7114, h * 0.8155); + c.close(); + c.moveTo(w * 0.8244, h * 0.7486); + c.lineTo(w * 0.8171, h * 0.762); + c.lineTo(w * 0.7894, h * 0.7761); + c.arcTo(w * 0.0244, h * 0.0211, 0, 0, 1, w * 0.7683, h * 0.7746); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.7667, h * 0.7507); + c.arcTo(w * 0.0488, h * 0.0423, 0, 0, 1, w * 0.7937, h * 0.7162); + c.lineTo(w * 0.822, h * 0.7035); + c.lineTo(w * 0.8171, h * 0.7155); + c.lineTo(w * 0.7902, h * 0.7296); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.778, h * 0.743); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 0, w * 0.7756, h * 0.7606); + c.arcTo(w * 0.0077, h * 0.0067, 0, 0, 0, w * 0.787, h * 0.767); + c.close(); + c.moveTo(w * 0.8366, h * 0.6949); + c.lineTo(w * 0.8366, h * 0.7423); + c.lineTo(w * 0.878, h * 0.7231); + c.lineTo(w * 0.874, h * 0.7338); + c.lineTo(w * 0.8333, h * 0.7535); + c.arcTo(w * 0.0041, h * 0.0035, 0, 0, 1, w * 0.8268, h * 0.75); + c.lineTo(w * 0.8268, h * 0.7007); + c.close(); + c.moveTo(w * 0.9342, h * 0.6472); + c.lineTo(w * 0.9293, h * 0.6599); + c.lineTo(w * 0.9033, h * 0.6725); + c.arcTo(w * 0.0325, h * 0.0282, 0, 0, 0, w * 0.8927, h * 0.6817); + c.arcTo(w * 0.0406, h * 0.0352, 0, 0, 0, w * 0.887, h * 0.6937); + c.lineTo(w * 0.9309, h * 0.6725); + c.lineTo(w * 0.9268, h * 0.6845); + c.lineTo(w * 0.887, h * 0.7035); + c.arcTo(w * 0.0089, h * 0.0077, 0, 0, 0, w * 0.8992, h * 0.7106); + c.lineTo(w * 0.935, h * 0.693); + c.lineTo(w * 0.9285, h * 0.7063); + c.lineTo(w * 0.9008, h * 0.7197); + c.arcTo(w * 0.0163, h * 0.0141, 0, 0, 1, w * 0.8829, h * 0.7204); + c.arcTo(w * 0.0407, h * 0.0352, 0, 0, 1, w * 0.8764, h * 0.7028); + c.arcTo(w * 0.065, h * 0.0563, 0, 0, 1, w * 0.8959, h * 0.6669); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.374, h * 0.3873); + c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.374, h * 0.3626); + c.lineTo(w * 0.4797, h * 0.3098); + c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.5203, h * 0.3098); + c.lineTo(w * 0.626, h * 0.3626); + c.arcTo(w * 0.0325, h * 0.01764, 0, 0, 1, w * 0.626, h * 0.3852); + c.lineTo(w * 0.5203, h * 0.438); + c.arcTo(w * 0.0325, h * 0.0141, 0, 0, 1, w * 0.4797, h * 0.438); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7464); + c.lineTo(0, h * 0.25); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.25); + c.lineTo(w, h * 0.7464); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dOracleServer.prototype.cst.ORACLE_SERVER, mxShapeAws3dOracleServer); + +//********************************************************************************************************************************************************** +//Secure Connection +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSecureConnection(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSecureConnection, mxShape); + +mxShapeAws3dSecureConnection.prototype.cst = { + SECURE_CONNECTION : 'mxgraph.aws3d.secureConnection' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSecureConnection.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 57; + var strokeWidth2 = strokeWidth * h /34; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + c.setStrokeWidth(strokeWidth); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSecureConnection.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.begin(); + c.moveTo(w * 0.0058, h * 0.3889); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0774, h * 0.1856); + c.arcTo(w * 0.5241, h * 0.8839, 0, 0, 1, w * 0.308, h * 0.0262); + c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.6417, h * 0.056); + c.arcTo(w * 0.6988, h * 1.1786, 0, 0, 1, w * 0.9106, h * 0.277); + c.arcTo(w * 0.2621, h * 0.442, 0, 0, 1, w, h * 0.5451); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.9474, h * 0.7808); + c.arcTo(w * 0.4368, h * 0.7366, 0, 0, 1, w * 0.7186, h * 0.9605); + c.arcTo(w * 0.8735, h * 1.4732, 0, 0, 1, w * 0.3045, h * 0.9104); + c.arcTo(w * 0.6115, h * 1.0312, 0, 0, 1, w * 0.0687, h * 0.6747); + c.arcTo(w * 0.2096, h * 0.3536, 0, 0, 1, w * 0.0058, h * 0.3889); + c.close(); + c.fill(); +}; + +mxShapeAws3dSecureConnection.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.2661, h * 0.5068); + c.lineTo(w * 0.5002, h * 0.7336); + c.lineTo(w * 0.6626, h * 0.5775); + c.lineTo(w * 0.6469, h * 0.5539); + c.lineTo(w * 0.6958, h * 0.5097); + c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.7325, h * 0.4066); + c.arcTo(w * 0.0874, h * 0.1473, 0, 0, 0, w * 0.6889, h * 0.3153); + c.arcTo(w * 0.1747, h * 0.2946, 0, 0, 0, w * 0.5928, h * 0.2622); + c.arcTo(w * 0.1398, h * 0.2357, 0, 0, 0, w * 0.5107, h * 0.3005); + c.lineTo(w * 0.446, h * 0.3654); + c.lineTo(w * 0.4268, h * 0.3477); + c.close(); + c.moveTo(w * 0.4949, h * 0.4184); + c.lineTo(w * 0.5491, h * 0.3624); + c.arcTo(w * 0.1222, h * 0.2062, 0, 0, 1, w * 0.6277, h * 0.3536); + c.arcTo(w * 0.0874, h * 0.1179, 0, 0, 1, w * 0.6679, h * 0.3978); + c.arcTo(w * 0.0175, h * 0.0295, 0, 0, 1, w * 0.6626, h * 0.439); + c.lineTo(w * 0.5928, h * 0.5068); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSecureConnection.prototype.cst.SECURE_CONNECTION, mxShapeAws3dSecureConnection); + +//********************************************************************************************************************************************************** +//Email Service +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dEmailService(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dEmailService, mxShape); + +mxShapeAws3dEmailService.prototype.cst = { + EMAIL_SERVICE : 'mxgraph.aws3d.email_service', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dEmailService.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 151; + var strokeWidth2 = strokeWidth * h / 192; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dEmailService.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8182); + c.lineTo(0, h * 0.1818); + c.lineTo(w * 0.4007, 0); + c.lineTo(w * 0.606, 0); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dEmailService.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEmailService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.4546); + c.lineTo(w * 0.5993, h * 0.4546); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.lineTo(0, h * 0.8182); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5993, h * 0.4546); + c.lineTo(w, h * 0.2727); + c.lineTo(w * 0.8013, h * 0.1792); + c.lineTo(w * 0.8013, h * 0.0883); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.4546); + c.lineTo(w * 0.5993, h * 0.4546); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.lineTo(0, h * 0.8182); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5993, h * 0.4546); + c.lineTo(w, h * 0.2727); + c.lineTo(w * 0.8013, h * 0.1792); + c.lineTo(w * 0.8013, h * 0.0883); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.202, h * 0.0883); + c.lineTo(w * 0.202, h * 0.1818); + c.lineTo(w * 0.4007, h * 0.2727); + c.lineTo(w * 0.5993, h * 0.2727); + c.lineTo(w * 0.798, h * 0.1818); + c.moveTo(w * 0.2053, h * 0.1818); + c.lineTo(w * 0.0033, h * 0.2714); + c.moveTo(w * 0.4007, h * 0.2727); + c.lineTo(w * 0.4007, h * 0.9961); + c.moveTo(w * 0.5993, h * 0.2727); + c.lineTo(w * 0.5993, h * 0.4546); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.4437, h * 0.0779); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 1, w * 0.404, h * 0.0706); + c.arcTo(w * 0.0464, h * 0.0364, 0, 0, 1, w * 0.3815, h * 0.0421); + c.arcTo(w * 0.053, h * 0.026, 0, 0, 1, w * 0.4205, h * 0.0187); + c.arcTo(w * 0.1987, h * 0.1558, 0, 0, 1, w * 0.4768, h * 0.0203); + c.arcTo(w * 0.0795, h * 0.0364, 0, 0, 1, w * 0.5199, h * 0.0494); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.5099, h * 0.0649); + c.arcTo(w * 0.0795, h * 0.0623, 0, 0, 1, w * 0.4536, h * 0.0727); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4404, h * 0.0597); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4219, h * 0.0566); + c.arcTo(w * 0.0199, h * 0.0114, 0, 0, 1, w * 0.4172, h * 0.0431); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 1, w * 0.4483, h * 0.0416); + c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 1, w * 0.457, h * 0.053); + c.arcTo(w * 0.0132, h * 0.0104, 0, 0, 0, w * 0.4669, h * 0.0431); + c.arcTo(w * 0.0166, h * 0.0166, 0, 0, 0, w * 0.4464, h * 0.0358); + c.lineTo(w * 0.4437, h * 0.0338); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4603, h * 0.0322); + c.arcTo(w * 0.0397, h * 0.0156, 0, 0, 1, w * 0.4755, h * 0.0462); + c.arcTo(w * 0.0199, h * 0.0156, 0, 0, 1, w * 0.4669, h * 0.0545); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 1, w * 0.453, h * 0.0608); + c.arcTo(w * 0.0099, h * 0.0078, 0, 0, 0, w * 0.4636, h * 0.0675); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.498, h * 0.0623); + c.arcTo(w * 0.0185, h * 0.0145, 0, 0, 0, w * 0.5079, h * 0.0457); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4848, h * 0.0296); + c.arcTo(w * 0.0993, h * 0.0779, 0, 0, 0, w * 0.455, h * 0.0234); + c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.4172, h * 0.026); + c.arcTo(w * 0.0397, h * 0.0312, 0, 0, 0, w * 0.3927, h * 0.039); + c.arcTo(w * 0.0265, h * 0.0208, 0, 0, 0, w * 0.3974, h * 0.0571); + c.arcTo(w * 0.053, h * 0.0416, 0, 0, 0, w * 0.4205, h * 0.0701); + c.arcTo(w * 0.0331, h * 0.026, 0, 0, 0, w * 0.4404, h * 0.0722); + c.moveTo(w * 0.42, h * 0.049); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.055); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.45, h * 0.049); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.435, h * 0.043); + c.arcTo(w * 0.02, h * 0.02, 0, 0, 0, w * 0.42, h * 0.049); + c.close(); + c.moveTo(w * 0.4669, h * 0.0894); + c.arcTo(w * 0.1325, h * 0.1039, 0, 0, 0, w * 0.5099, h * 0.0831); + c.lineTo(w * 0.6689, h * 0.1543); + c.lineTo(w * 0.4887, h * 0.1371); + c.close(); + c.moveTo(w * 0.3887, h * 0.0769); + c.arcTo(w * 0.0662, h * 0.0519, 0, 0, 0, w * 0.4205, h * 0.0888); + c.arcTo(w * 0.0662, h * 0.026, 0, 0, 0, w * 0.447, h * 0.0894); + c.lineTo(w * 0.4735, h * 0.1512); + c.lineTo(w * 0.6689, h * 0.1688); + c.lineTo(w * 0.5199, h * 0.2364); + c.lineTo(w * 0.2815, h * 0.1273); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8182); + c.lineTo(0, h * 0.1818); + c.lineTo(w * 0.4007, 0); + c.lineTo(w * 0.606, 0); + c.lineTo(w, h * 0.1792); + c.lineTo(w, h * 0.8182); + c.lineTo(w * 0.5993, h); + c.lineTo(w * 0.4007, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEmailService.prototype.cst.EMAIL_SERVICE, mxShapeAws3dEmailService); + +//********************************************************************************************************************************************************** +//Worker +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dWorker(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dWorker, mxShape); + +mxShapeAws3dWorker.prototype.cst = { + WORKER : 'mxgraph.aws3d.worker', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dWorker.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 74; + var strokeWidth2 = strokeWidth * h / 50; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorker.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setLineJoin('round'); + c.begin(); + c.moveTo(w * 0.2892, h * 0.2104); + c.lineTo(w * 0.3595, h * 0.1503); + c.lineTo(w * 0.3973, h * 0.1844); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.4486, h * 0.1703); + c.lineTo(w * 0.4486, h * 0.1242); + c.lineTo(w * 0.5527, h * 0.1242); + c.lineTo(w * 0.5527, h * 0.1703); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.6149, h * 0.1924); + c.lineTo(w * 0.6527, h * 0.1603); + c.lineTo(w * 0.7257, h * 0.2224); + c.lineTo(w * 0.6892, h * 0.2545); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.7162, h * 0.3106); + c.lineTo(w * 0.7676, h * 0.3106); + c.lineTo(w * 0.7676, h * 0.3988); + c.lineTo(w * 0.7162, h * 0.3988); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.6973, h * 0.4409); + c.lineTo(w * 0.7378, h * 0.475); + c.lineTo(w * 0.6635, h * 0.5371); + c.lineTo(w * 0.6297, h * 0.505); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.5527, h * 0.5351); + c.lineTo(w * 0.5527, h * 0.5812); + c.lineTo(w * 0.45, h * 0.5812); + c.lineTo(w * 0.45, h * 0.5351); + c.arcTo(w * 0.2703, h * 0.4008, 0, 0, 1, w * 0.3878, h * 0.513); + c.lineTo(w * 0.3514, h * 0.5431); + c.lineTo(w * 0.2784, h * 0.481); + c.lineTo(w * 0.3149, h * 0.4509); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.2865, h * 0.3968); + c.lineTo(w * 0.2351, h * 0.3968); + c.lineTo(w * 0.2351, h * 0.3086); + c.lineTo(w * 0.2865, h * 0.3086); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.3203, h * 0.2425); + c.close(); + c.moveTo(w * 0.4054, h * 0.2445); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.3554, h * 0.2986); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.3432, h * 0.3567); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.3635, h * 0.4208); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.4122, h * 0.4649); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4122, h * 0.4649); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5676, h * 0.4749); + c.arcTo(w * 0.1351, h * 0.2004, 0, 0, 0, w * 0.6351, h * 0.4228); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 0, w * 0.6595, h * 0.3467); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 0, w * 0.6149, h * 0.2605); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.5419, h * 0.2204); + c.arcTo(w * 0.3378, h * 0.501, 0, 0, 0, w * 0.4649, h * 0.2184); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 0, w * 0.4054, h * 0.2445); + c.close(); + c.moveTo(w * 0.473, h * 0.2806); + c.arcTo(w * 0.2027, h * 0.3006, 0, 0, 1, w * 0.55, h * 0.2866); + c.arcTo(w * 0.0676, h * 0.1002, 0, 0, 1, w * 0.5892, h * 0.3307); + c.arcTo(w * 0.0338, h * 0.0501, 0, 0, 1, w * 0.5824, h * 0.3888); + c.arcTo(w * 0.0946, h * 0.1403, 0, 0, 1, w * 0.5216, h * 0.4269); + c.arcTo(w * 0.1622, h * 0.2405, 0, 0, 1, w * 0.4432, h * 0.4128); + c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4108, h * 0.3527); + c.arcTo(w * 0.0541, h * 0.0802, 0, 0, 1, w * 0.4351, h * 0.2986); + c.arcTo(w * 0.0811, h * 0.1202, 0, 0, 1, w * 0.473, h * 0.2806); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWorker.prototype.cst.WORKER, mxShapeAws3dWorker); + +//********************************************************************************************************************************************************** +//Application +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dApplication2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dApplication2, mxShape); + +mxShapeAws3dApplication2.prototype.cst = { + APPLICATION2 : 'mxgraph.aws3d.application2', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dApplication2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 62; + var strokeWidth2 = strokeWidth * h / 53.5; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6766); + c.lineTo(0, h * 0.3271); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dApplication2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.3271); + c.lineTo(w * 0.5, h * 0.6449); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6766); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.6449); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.3271); + c.lineTo(w * 0.5, h * 0.6449); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6766); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.6449); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.1742, h * 0.6355); + c.lineTo(w * 0.1742, h * 0.4393); + c.lineTo(w * 0.6726, h * 0.1121); + c.lineTo(w * 0.7661, h * 0.1738); + c.lineTo(w * 0.2661, h * 0.4991); + c.lineTo(w * 0.2661, h * 0.6916); + c.close(); + c.moveTo(w * 0.2871, h * 0.7084); + c.lineTo(w * 0.2871, h * 0.514); + c.lineTo(w * 0.7823, h * 0.1869); + c.lineTo(w * 0.8629, h * 0.2374); + c.lineTo(w * 0.379, h * 0.5626); + c.lineTo(w * 0.379, h * 0.7607); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6766); + c.lineTo(0, h * 0.3271); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3271); + c.lineTo(w, h * 0.6766); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dApplication2.prototype.cst.APPLICATION2, mxShapeAws3dApplication2); + +//********************************************************************************************************************************************************** +//Elastic Beanstalk +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dElasticBeanstalk(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dElasticBeanstalk, mxShape); + +mxShapeAws3dElasticBeanstalk.prototype.cst = { + ELASTIC_BEANSTALK : 'mxgraph.aws3d.elasticBeanstalk', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dElasticBeanstalk.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 140; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setShadow(false); + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.6239); + c.lineTo(0, h * 0.3754); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticBeanstalk.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.3754); + c.lineTo(w * 0.5, h * 0.7514); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6239); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5, h * 0.7514); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.3754); + c.lineTo(w * 0.5, h * 0.7514); + c.lineTo(w * 0.5, h); + c.lineTo(0, h * 0.6239); + c.close(); + c.moveTo(w * 0.5, h * 0.7514); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.moveTo(w * 0.2485, h * 0.187); + c.lineTo(w * 0.7493, h * 0.5623); + c.lineTo(w * 0.7493, h * 0.8123); + c.stroke(); + + c.setLineJoin('miter'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7763, h * 0.2063); + c.lineTo(w * 0.2749, h * 0.5817); + c.lineTo(w * 0.2749, h * 0.8309); + c.lineTo(w * 0.2204, h * 0.7894); + c.lineTo(w * 0.2204, h * 0.5394); + c.lineTo(w * 0.7185, h * 0.1619); + c.close(); + c.fill(); + + c.restore(); + c.begin(); + c.moveTo(w * 0.1713, h * 0.543); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2028, h * 0.5723); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2281, h * 0.6096); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2402, h * 0.644); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.2424, h * 0.6848); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.216, h * 0.6612); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.1895, h * 0.6239); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.1719, h * 0.5824); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.1713, h * 0.543); + c.close(); + c.moveTo(w * 0.2507, h * 0.7794); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.254, h * 0.7421); + c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.27, h * 0.7264); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2986, h * 0.73); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3234, h * 0.7457); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3218, h * 0.7815); + c.arcTo(w * 0.022, h * 0.0287, 0, 0, 1, w * 0.3019, h * 0.7987); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.27, h * 0.7923); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2507, h * 0.7794); + c.close(); + c.moveTo(w * 0.2799, h * 0.5265); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.3003, h * 0.515); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3317, h * 0.515); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3774, h * 0.5315); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4033, h * 0.5487); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3906, h * 0.5595); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.3493, h * 0.5616); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3069, h * 0.5444); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2799, h * 0.5265); + c.close(); + c.moveTo(w * 0.2887, h * 0.3933); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.314, h * 0.414); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.3322, h * 0.4391); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.3344, h * 0.4699); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.3196, h * 0.485); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.2887, h * 0.4592); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.27, h * 0.4269); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.2727, h * 0.4054); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.2887, h * 0.3933); + c.close(); + c.moveTo(w * 0.4613, h * 0.262); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4867, h * 0.2827); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5049, h * 0.3078); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.5071, h * 0.3386); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4922, h * 0.3537); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4613, h * 0.3279); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4426, h * 0.2956); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.4453, h * 0.2741); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.4613, h * 0.262); + c.close(); + c.moveTo(w * 0.4525, h * 0.3952); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.4729, h * 0.3837); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5043, h * 0.3837); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.55, h * 0.4002); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.5759, h * 0.4174); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5633, h * 0.4282); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.5219, h * 0.4303); + c.arcTo(w * 0.1653, h * 0.1074, 0, 0, 1, w * 0.4795, h * 0.4131); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.4525, h * 0.3952); + c.close(); + c.moveTo(w * 0.6217, h * 0.1426); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6471, h * 0.1633); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6652, h * 0.1884); + c.arcTo(w * 0.0193, h * 0.0251, 0, 0, 1, w * 0.6674, h * 0.2192); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6526, h * 0.2342); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6217, h * 0.2085); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.603, h * 0.1762); + c.arcTo(w * 0.0165, h * 0.0215, 0, 0, 1, w * 0.6057, h * 0.1547); + c.arcTo(w * 0.0551, h * 0.0716, 0, 0, 1, w * 0.6217, h * 0.1426); + c.close(); + c.moveTo(w * 0.6129, h * 0.2758); + c.arcTo(w * 0.1102, h * 0.1433, 0, 0, 1, w * 0.6333, h * 0.2643); + c.arcTo(w * 0.0826, h * 0.1433, 0, 0, 1, w * 0.6647, h * 0.2643); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7104, h * 0.2808); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298); + c.arcTo(w * 0.0826, h * 0.2149, 0, 0, 1, w * 0.7363, h * 0.298); + c.arcTo(w * 0.0826, h * 0.1074, 0, 0, 1, w * 0.6823, h * 0.3109); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6399, h * 0.2937); + c.arcTo(w * 0.1653, h * 0.2149, 0, 0, 1, w * 0.6129, h * 0.2758); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6239); + c.lineTo(0, h * 0.3754); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.3754); + c.lineTo(w, h * 0.6239); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dElasticBeanstalk.prototype.cst.ELASTIC_BEANSTALK, mxShapeAws3dElasticBeanstalk); + +//********************************************************************************************************************************************************** +//SimpleDB 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSimpleDB2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSimpleDB2, mxShape); + +mxShapeAws3dSimpleDB2.prototype.cst = { + SIMPLE_DB_2 : 'mxgraph.aws3d.simpleDb2', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSimpleDB2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSimpleDB2.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8183); + c.lineTo(0, h * 0.1848); + c.lineTo(w * 0.3366, 0); + c.lineTo(w * 0.6293, h * 0.0021); + c.lineTo(w, h * 0.1833); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6694, h); + c.lineTo(w * 0.4986, h * 0.9091); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSimpleDB2.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSimpleDB2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.1848); + c.lineTo(w * 0.168, h * 0.1833); + c.lineTo(0, h * 0.365); + c.lineTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8183); + c.close(); + c.moveTo(w * 0.4986, h * 0.9078); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.6667, h * 0.5457); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.4986, h * 0.9076); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.8292, h * 0.1822); + c.lineTo(w, h * 0.1848); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5441); + c.lineTo(w, h * 0.3666); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.1848); + c.lineTo(w * 0.168, h * 0.1833); + c.lineTo(0, h * 0.365); + c.lineTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.3333, h); + c.lineTo(0, h * 0.8183); + c.close(); + c.moveTo(w * 0.4986, h * 0.9078); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.6667, h * 0.5457); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.3333, h * 0.5467); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.4986, h * 0.9076); + c.lineTo(w * 0.3333, h); + c.close(); + c.moveTo(w * 0.8292, h * 0.1822); + c.lineTo(w, h * 0.1848); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.6667, h * 0.5441); + c.lineTo(w, h * 0.3666); + c.close(); + c.moveTo(w * 0.1669, h * 0.1828); + c.lineTo(w * 0.4986, h * 0.3655); + c.lineTo(w * 0.8314, h * 0.1833); + c.lineTo(w * 0.4986, h * 0.0031); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.2634, h * 0.1833); + c.lineTo(w * 0.5003, h * 0.0535); + c.lineTo(w * 0.7394, h * 0.1833); + c.lineTo(w * 0.5003, h * 0.3136); + c.close(); + c.fill(); + + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#000000'); + c.restore(); + c.setShadow(false); + c.setStrokeWidth(3 * strokeWidth); + c.setStrokeColor(fillColor); + + c.begin(); + c.moveTo(w * 0.3003, h * 0.2108); + c.lineTo(w * 0.5642, h * 0.068); + c.moveTo(w * 0.4429, h * 0.0693); + c.lineTo(w * 0.7059, h * 0.2121); + c.moveTo(w * 0.6667, h * 0.2458); + c.lineTo(w * 0.3974, h * 0.0992); + c.moveTo(w * 0.3499, h * 0.1277); + c.lineTo(w * 0.6088, h * 0.2698); + c.moveTo(w * 0.3009, h * 0.1556); + c.lineTo(w * 0.5496, h * 0.2913); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8183); + c.lineTo(0, h * 0.1848); + c.lineTo(w * 0.3366, 0); + c.lineTo(w * 0.6293, h * 0.0021); + c.lineTo(w, h * 0.1833); + c.lineTo(w, h * 0.8183); + c.lineTo(w * 0.6694, h); + c.lineTo(w * 0.4986, h * 0.9091); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSimpleDB2.prototype.cst.SIMPLE_DB_2, mxShapeAws3dSimpleDB2); + +//********************************************************************************************************************************************************** +//Workflow Service +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dWorkflowService(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dWorkflowService, mxShape); + +mxShapeAws3dWorkflowService.prototype.cst = { + WORKFLOW_SERVICE : 'mxgraph.aws3d.workflowService', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dWorkflowService.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 181.5; + var strokeWidth2 = strokeWidth * h / 210; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dWorkflowService.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2481, 0); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4984, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dWorkflowService.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dWorkflowService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2486, 0); + c.lineTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.4984, h); + c.close(); + c.moveTo(w * 0.7497, h * 0.3531); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4984, h); + c.lineTo(w * 0.7486, h * 0.3531); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4967, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.7497, h * 0.3531); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.close(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2486, 0); + c.lineTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.4984, h); + c.lineTo(w * 0.7486, h * 0.3531); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4967, h); + c.close(); + c.moveTo(w * 0.2486, h * 0.3531); + c.lineTo(w * 0.7508, h * 0.3531); + c.moveTo(w * 0.2488, h * 0.353); + c.lineTo(0, h * 0.6486); + c.stroke(); + + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeWidth(2 * strokeWidth); + + c.begin(); + c.ellipse(w * 0.2925, h * 0.031, w * 0.4116, h * 0.2925); + c.fill(); + + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setStrokeColor(fillColor); + + c.begin(); + c.moveTo(w * 0.5252, h * 0.0465); + c.lineTo(w * 0.5873, h * 0.0903); + c.lineTo(w * 0.5483, h * 0.1173); + c.lineTo(w * 0.4874, h * 0.0728); + c.close(); + c.moveTo(w * 0.4896, h * 0.1132); + c.lineTo(w * 0.5005, h * 0.1705); + c.lineTo(w * 0.4182, h * 0.1631); + c.lineTo(w * 0.4122, h * 0.1058); + c.close(); + c.moveTo(w * 0.3584, h * 0.1631); + c.lineTo(w * 0.4204, h * 0.2062); + c.lineTo(w * 0.3825, h * 0.2332); + c.lineTo(w * 0.32, h * 0.19); + c.close(); + c.moveTo(w * 0.4594, h * 0.2338); + c.lineTo(w * 0.5214, h * 0.2783); + c.lineTo(w * 0.4835, h * 0.3053); + c.lineTo(w * 0.4215, h * 0.2608); + c.close(); + c.moveTo(w * 0.5187, h * 0.0943); + c.lineTo(w * 0.4879, h * 0.1152); + c.moveTo(w * 0.421, h * 0.1624); + c.lineTo(w * 0.3895, h * 0.1846); + c.moveTo(w * 0.5, h * 0.1698); + c.lineTo(w * 0.5554, h * 0.2089); + c.lineTo(w * 0.4885, h * 0.2567); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6456); + c.lineTo(w * 0.2481, 0); + c.lineTo(w * 0.7497, 0); + c.lineTo(w, h * 0.6456); + c.lineTo(w * 0.4984, h); + c.close(); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dWorkflowService.prototype.cst.WORKFLOW_SERVICE, mxShapeAws3dWorkflowService); + +//********************************************************************************************************************************************************** +//Decider +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dDecider(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dDecider, mxShape); + +mxShapeAws3dDecider.prototype.cst = { + DECIDER : 'mxgraph.aws3d.decider', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dDecider.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + var strokeWidth1 = strokeWidth * w / 74; + var strokeWidth2 = strokeWidth * h / 50; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if (isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dDecider.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.566); + c.lineTo(w * 0.0892, h * 0.282); + c.lineTo(w * 0.0878, h * 0.426); + c.lineTo(w * 0.4216, h * 0.712); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.5027, h); + c.close(); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.5865, h * 0.712); + c.lineTo(w * 0.9176, h * 0.43); + c.lineTo(w, h * 0.566); + c.close(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0892, h * 0.422); + c.moveTo(w * 0.5027, h); + c.lineTo(w * 0.4189, h * 0.708); + c.moveTo(w * 0.9176, h * 0.43); + c.lineTo(w * 0.9176, h * 0.29); + c.stroke(); + + c.setStrokeWidth(1.6 * strokeWidth); + c.setLineJoin('square'); + c.begin(); + c.moveTo(w * 0.4973, h * 0.1523); + c.lineTo(w * 0.5608, h * 0.0982); + c.lineTo(w * 0.6581, h * 0.1844); + c.lineTo(w * 0.5986, h * 0.2365); + c.close(); + c.moveTo(w * 0.3784, h * 0.2164); + c.lineTo(w * 0.5054, h * 0.2305); + c.lineTo(w * 0.5203, h * 0.3407); + c.lineTo(w * 0.3892, h * 0.3246); + c.close(); + c.moveTo(w * 0.2932, h * 0.3246); + c.lineTo(w * 0.3919, h * 0.4128); + c.lineTo(w * 0.3334, h * 0.4647); + c.lineTo(w * 0.2357, h * 0.38); + c.close(); + c.moveTo(w * 0.4568, h * 0.4649); + c.lineTo(w * 0.5554, h * 0.5511); + c.lineTo(w * 0.4932, h * 0.6032); + c.lineTo(w * 0.3946, h * 0.517); + c.close(); + c.moveTo(w * 0.5473, h * 0.1924); + c.lineTo(w * 0.5027, h * 0.2365); + c.moveTo(w * 0.4, h * 0.3186); + c.lineTo(w * 0.3446, h * 0.3667); + c.moveTo(w * 0.5189, h * 0.3387); + c.lineTo(w * 0.6081, h * 0.4148); + c.lineTo(w * 0.5068, h * 0.501); + c.stroke(); + + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.572); + c.lineTo(w * 0.0865, h * 0.284); + c.lineTo(w * 0.4203, 0); + c.lineTo(w * 0.5865, 0); + c.lineTo(w * 0.919, h * 0.286); + c.lineTo(w, h * 0.566); + c.lineTo(w * 0.5027, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dDecider.prototype.cst.DECIDER, mxShapeAws3dDecider); + +//********************************************************************************************************************************************************** +//Search Engine +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSearchEngine(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSearchEngine, mxShape); + +mxShapeAws3dSearchEngine.prototype.cst = { + SEARCH_ENGINE : 'mxgraph.aws3d.searchEngine', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSearchEngine.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSearchEngine.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSearchEngine.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSearchEngine.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.moveTo(w * 0.1667, h * 0.5459); + c.lineTo(w * 0.2486, h * 0.7704); + c.moveTo(w * 0.4164, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.lineTo(w * 0.4989, h); + c.stroke(); + + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.3427, h * 0.179); + c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 1, w * 0.3267, h * 0.1487); + c.arcTo(w * 0.0664, h * 0.0365, 0, 0, 1, w * 0.3621, h * 0.1227); + c.arcTo(w * 0.1052, h * 0.0992, 0, 0, 1, w * 0.4247, h * 0.1195); + c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4884, h * 0.1018); + c.arcTo(w * 0.1329, h * 0.1253, 0, 0, 1, w * 0.5548, h * 0.1112); + c.arcTo(w * 0.0377, h * 0.0344, 0, 0, 1, w * 0.572, h * 0.166); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.6047, h * 0.1775); + c.arcTo(w * 0.021, h * 0.0198, 0, 0, 1, w * 0.5936, h * 0.2046); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.6008, h * 0.2416); + c.arcTo(w * 0.072, h * 0.0678, 0, 0, 1, w * 0.5437, h * 0.2677); + c.arcTo(w * 0.1052, h * 0.0939, 0, 0, 1, w * 0.4828, h * 0.2563); + c.close(); + c.moveTo(w * 0.448, h * 0.2156); + c.arcTo(w * 0.0111, h * 0.0104, 0, 0, 0, w * 0.459, h * 0.2255); + c.arcTo(w * 0.0138, h * 0.013, 0, 0, 0, w * 0.4729, h * 0.2182); + c.lineTo(w * 0.4773, h * 0.1874); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.5116, h * 0.1759); + c.arcTo(w * 0.0277, h * 0.0626, 0, 0, 0, w * 0.5233, h * 0.1503); + c.arcTo(w * 0.0554, h * 0.0261, 0, 0, 0, w * 0.5022, h * 0.1336); + c.arcTo(w * 0.0886, h * 0.0835, 0, 0, 0, w * 0.4607, h * 0.1305); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4313, h * 0.142); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.4175, h * 0.1597); + c.arcTo(w * 0.0249, h * 0.0235, 0, 0, 0, w * 0.4313, h * 0.1822); + c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 0, w * 0.4535, h * 0.1884); + c.close(); + c.moveTo(w * 0.4718, h * 0.1764); + c.arcTo(w * 0.0443, h * 0.0418, 0, 0, 1, w * 0.4496, h * 0.1754); + c.arcTo(w * 0.0221, h * 0.0157, 0, 0, 1, w * 0.4369, h * 0.1634); + c.arcTo(w * 0.0221, h * 0.0183, 0, 0, 1, w * 0.4496, h * 0.1467); + c.arcTo(w * 0.0609, h * 0.0574, 0, 0, 1, w * 0.4759, h * 0.1414); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.5033, h * 0.1514); + c.arcTo(w * 0.0443, h * 0.0209, 0, 0, 1, w * 0.495, h * 0.1701); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 1, w * 0.4718, h * 0.1764); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSearchEngine.prototype.cst.SEARCH_ENGINE, mxShapeAws3dSearchEngine); + +//********************************************************************************************************************************************************** +//Security Token Service +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dSecurityTokenService(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dSecurityTokenService, mxShape); + +mxShapeAws3dSecurityTokenService.prototype.cst = { + SECURITY_TOKEN_SERVICE : 'mxgraph.aws3d.securityTokenService', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dSecurityTokenService.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dSecurityTokenService.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dSecurityTokenService.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSecurityTokenService.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.1672, h * 0.1837); + c.lineTo(w * 0.4989, h * 0.3638); + c.lineTo(w * 0.4989, h * 0.7291); + c.lineTo(w * 0.5825, h * 0.8633); + c.lineTo(w * 0.4989, h); + c.lineTo(w * 0.4164, h * 0.8622); + c.lineTo(w * 0.2458, h * 0.7719); + c.lineTo(0, h * 0.7276); + c.lineTo(w * 0.1661, h * 0.5454); + c.close(); + c.moveTo(w * 0.7486, h * 0.7714); + c.lineTo(w * 0.8317, h * 0.5459); + c.lineTo(w, h * 0.727); + c.close(); + c.moveTo(w * 0.4989, h * 0.3643); + c.lineTo(w * 0.8317, h * 0.1827); + c.lineTo(w * 0.8317, h * 0.5465); + c.lineTo(w * 0.7508, h * 0.7714); + c.lineTo(w * 0.5836, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.close(); + c.moveTo(w * 0.1667, h * 0.5459); + c.lineTo(w * 0.2486, h * 0.7704); + c.moveTo(w * 0.4164, h * 0.8633); + c.lineTo(w * 0.4989, h * 0.727); + c.lineTo(w * 0.4989, h); + c.stroke(); + + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.4773, h * 0.1915); + c.arcTo(w * 0.1274, h * 0.12, 0, 0, 1, w * 0.4358, h * 0.1968); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.3937, h * 0.1905); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 1, w * 0.3682, h * 0.1707); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.3699, h * 0.1414); + c.arcTo(w * 0.0775, h * 0.0731, 0, 0, 1, w * 0.4009, h * 0.118); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.4524, h * 0.1059); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 1, w * 0.5028, h * 0.1112); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 1, w * 0.531, h * 0.1315); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 1, w * 0.531, h * 0.1597); + c.lineTo(w * 0.5615, h * 0.1754); + c.lineTo(w * 0.5526, h * 0.1905); + c.lineTo(w * 0.5759, h * 0.1999); + c.lineTo(w * 0.5753, h * 0.2109); + c.lineTo(w * 0.5792, h * 0.2161); + c.lineTo(w * 0.6135, h * 0.2182); + c.lineTo(w * 0.6113, h * 0.2416); + c.lineTo(w * 0.5819, h * 0.2474); + c.close(); + + c.moveTo(w * 0.4756, h * 0.1816); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.5, h * 0.1691); + c.arcTo(w * 0.0332, h * 0.0313, 0, 0, 0, w * 0.5144, h * 0.1435); + c.arcTo(w * 0.0277, h * 0.0261, 0, 0, 0, w * 0.4967, h * 0.1247); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.4729, h * 0.1174); + c.arcTo(w * 0.1107, h * 0.1044, 0, 0, 0, w * 0.4452, h * 0.1169); + c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4197, h * 0.1232); + c.arcTo(w * 0.0554, h * 0.0522, 0, 0, 0, w * 0.397, h * 0.1357); + c.arcTo(w * 0.0388, h * 0.0365, 0, 0, 0, w * 0.3859, h * 0.1555); + c.arcTo(w * 0.0305, h * 0.0287, 0, 0, 0, w * 0.4053, h * 0.178); + c.arcTo(w * 0.072, h * 0.0678, 0, 0, 0, w * 0.4385, h * 0.1863); + c.arcTo(w * 0.0831, h * 0.0783, 0, 0, 0, w * 0.4596, h * 0.1848); + c.arcTo(w * 0.0664, h * 0.0626, 0, 0, 0, w * 0.4756, h * 0.1816); + c.fill(); + + c.setStrokeWidth(1.5 * strokeWidth); + c.setLineJoin('round'); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.4939, h * 0.1326); + c.lineTo(w * 0.4474, h * 0.1508); + c.lineTo(w * 0.4812, h * 0.1576); + c.moveTo(w * 0.4889, h * 0.1733); + c.lineTo(w * 0.4939, h * 0.1775); + c.moveTo(w * 0.5061, h * 0.1576); + c.lineTo(w * 0.5199, h * 0.1597); + c.moveTo(w * 0.5094, h * 0.1394); + c.lineTo(w * 0.5244, h * 0.1378); + c.moveTo(w * 0.4945, h * 0.1247); + c.lineTo(w * 0.4994, h * 0.1185); + c.moveTo(w * 0.4679, h * 0.1175); + c.lineTo(w * 0.4707, h * 0.1117); + c.moveTo(w * 0.4396, h * 0.1195); + c.lineTo(w * 0.4374, h * 0.1138); + c.moveTo(w * 0.412, h * 0.1284); + c.lineTo(w * 0.4059, h * 0.1232); + c.moveTo(w * 0.3948, h * 0.1441); + c.lineTo(w * 0.3804, h * 0.1425); + c.moveTo(w * 0.3931, h * 0.1608); + c.lineTo(w * 0.3804, h * 0.1649); + c.moveTo(w * 0.4059, h * 0.1754); + c.lineTo(w * 0.3998, h * 0.1801); + c.moveTo(w * 0.4308, h * 0.1822); + c.lineTo(w * 0.4286, h * 0.1884); + c.moveTo(w * 0.4618, h * 0.1827); + c.lineTo(w * 0.4635, h * 0.1868); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.7281); + c.lineTo(w * 0.1667, h * 0.5444); + c.lineTo(w * 0.1667, h * 0.1832); + c.lineTo(w * 0.5011, 0); + c.lineTo(w * 0.8333, h * 0.1832); + c.lineTo(w * 0.8333, h * 0.5446); + c.lineTo(w, h * 0.7281); + c.lineTo(w * 0.7486, h * 0.7735); + c.lineTo(w * 0.5819, h * 0.8617); + c.lineTo(w * 0.5011, h); + c.lineTo(w * 0.4169, h * 0.8653); + c.lineTo(w * 0.2475, h * 0.7704); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dSecurityTokenService.prototype.cst.SECURITY_TOKEN_SERVICE, mxShapeAws3dSecurityTokenService); + +//********************************************************************************************************************************************************** +//Glacier +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dGlacier(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dGlacier, mxShape); + +mxShapeAws3dGlacier.prototype.cst = { + GLACIER : 'mxgraph.aws3d.glacier', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dGlacier.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 180; + var strokeWidth2 = strokeWidth * h / 192; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dGlacier.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.8177); + c.lineTo(0, h * 0.5448); + c.lineTo(w * 0.168, h * 0.1792); + c.lineTo(w * 0.5008, 0); + c.lineTo(w * 0.8309, h * 0.1812); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8188); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3333, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dGlacier.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dGlacier.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.1658, h * 0.1802); + c.lineTo(w * 0.5008, h * 0.3651); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3339, h); + c.lineTo(0, h * 0.8177); + c.lineTo(0, h * 0.5427); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.5008, h * 0.362); + c.lineTo(w * 0.8314, h * 0.1823); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8177); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.6661, h * 0.9089); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.1658, h * 0.1802); + c.lineTo(w * 0.5008, h * 0.3651); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3339, h); + c.lineTo(0, h * 0.8177); + c.lineTo(0, h * 0.5427); + c.close(); + c.moveTo(w * 0.5008, h * 0.362); + c.lineTo(w * 0.8314, h * 0.1823); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8177); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.6661, h * 0.9089); + c.close(); + c.moveTo(w * 0.1675, h * 0.1797); + c.lineTo(0, h * 0.7281); + c.lineTo(w * 0.3284, h * 0.9089); + c.lineTo(w * 0.6661, h * 0.9089); + c.lineTo(w, h * 0.7266); + c.lineTo(w * 0.8309, h * 0.1823); + c.moveTo(w * 0.5003, h * 0.362); + c.lineTo(w * 0.3311, h * 0.9089); + c.lineTo(w * 0.3311, h); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.8177); + c.lineTo(0, h * 0.5448); + c.lineTo(w * 0.168, h * 0.1792); + c.lineTo(w * 0.5008, 0); + c.lineTo(w * 0.8309, h * 0.1812); + c.lineTo(w, h * 0.5469); + c.lineTo(w, h * 0.8188); + c.lineTo(w * 0.6661, h); + c.lineTo(w * 0.3333, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dGlacier.prototype.cst.GLACIER, mxShapeAws3dGlacier); + +//********************************************************************************************************************************************************** +//Customer Gateway +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dCustomerGateway(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dCustomerGateway, mxShape); + +mxShapeAws3dCustomerGateway.prototype.cst = { + CUSTOMER_GATEWAY : 'mxgraph.aws3d.customerGateway', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dCustomerGateway.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 116.7; + var strokeWidth2 = strokeWidth * h / 102.8; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dCustomerGateway.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.save(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.6838, h * 0.2072); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setLineJoin('round'); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.6838, h * 0.2072); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6838, h * 0.7247); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(w * 0.4199, h * 0.5447); + c.lineTo(w * 0.4199, h * 0.035); + c.lineTo(w * 0.8946, 0); + c.lineTo(w, h * 0.0691); + c.lineTo(w, h * 0.4134); + c.lineTo(w * 0.6812, h * 0.7247); + c.close(); + c.stroke(); + + c.restore(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dCustomerGateway.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setShadow(false); + c.setLineJoin('round'); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dCustomerGateway.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.1054, h); + c.lineTo(w * 0.1054, h * 0.6537); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.close(); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.929); + c.lineTo(0, h * 0.5866); + c.lineTo(w * 0.3171, h * 0.1031); + c.lineTo(w * 0.5784, h * 0.2753); + c.lineTo(w * 0.5784, h * 0.7928); + c.lineTo(w * 0.1054, h); + c.close(); + c.stroke(); + + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.7575, h * 0.3969); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.7686, h * 0.3259); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8055, h * 0.2481); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.8406, h * 0.2091); + c.lineTo(w * 0.8269, h * 0.2665); + c.lineTo(w * 0.8372, h * 0.2607); + c.lineTo(w * 0.8372, h * 0.3444); + c.lineTo(w * 0.7832, h * 0.3804); + c.lineTo(w * 0.7832, h * 0.3658); + c.close(); + c.moveTo(w * 0.8466, h * 0.2082); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.8766, h * 0.1955); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.9186, h * 0.2286); + c.arcTo(w * 0.12, h * 0.1362, 0, 0, 1, w * 0.9297, h * 0.2821); + c.lineTo(w * 0.9006, h * 0.2831); + c.lineTo(w * 0.9006, h * 0.3016); + c.lineTo(w * 0.85, h * 0.3366); + c.lineTo(w * 0.85, h * 0.251); + c.lineTo(w * 0.8586, h * 0.2471); + c.close(); + c.moveTo(w * 0.9297, h * 0.2967); + c.arcTo(w * 0.2142, h * 0.2432, 0, 0, 1, w * 0.9195, h * 0.3667); + c.arcTo(w * 0.2571, h * 0.2918, 0, 0, 1, w * 0.8869, h * 0.4436); + c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.8466, h * 0.4903); + c.lineTo(w * 0.8595, h * 0.4358); + c.lineTo(w * 0.8492, h * 0.4416); + c.lineTo(w * 0.8492, h * 0.357); + c.lineTo(w * 0.9006, h * 0.32004); + c.lineTo(w * 0.9006, h * 0.3346); + c.close(); + c.moveTo(w * 0.838, h * 0.4942); + c.arcTo(w * 0.0857, h * 0.0973, 0, 0, 1, w * 0.8072, h * 0.5049); + c.arcTo(w * 0.0514, h * 0.0584, 0, 0, 1, w * 0.7712, h * 0.4815); + c.arcTo(w * 0.1714, h * 0.1946, 0, 0, 1, w * 0.7566, h * 0.4163); + c.lineTo(w * 0.7832, h * 0.4173); + c.lineTo(w * 0.7832, h * 0.4008); + c.lineTo(w * 0.8372, h * 0.3638); + c.lineTo(w * 0.8372, h * 0.4494); + c.lineTo(w * 0.8278, h * 0.4562); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dCustomerGateway.prototype.cst.CUSTOMER_GATEWAY, mxShapeAws3dCustomerGateway); + +//********************************************************************************************************************************************************** +//Redshift +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dRedshift(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dRedshift, mxShape); + +mxShapeAws3dRedshift.prototype.cst = { + REDSHIFT : 'mxgraph.aws3d.redshift', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dRedshift.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 149.5; + var strokeWidth2 = strokeWidth * h / 187.5; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dRedshift.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6517); + c.lineTo(0, h * 0.0912); + c.lineTo(w * 0.0368, h * 0.0155); + c.lineTo(w * 0.2047, 0); + c.lineTo(w * 0.3378, h * 0.0619); + c.lineTo(w * 0.3378, h * 0.0912); + c.lineTo(w * 0.3819, h * 0.0693); + c.lineTo(w * 0.6154, h * 0.0693); + c.lineTo(w * 0.8502, h * 0.1776); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.8682, h * 0.3061); + c.lineTo(w, h * 0.3664); + c.lineTo(w, h * 0.9099); + c.lineTo(w * 0.9672, h * 0.9861); + c.lineTo(w * 0.7926, h); + c.lineTo(w * 0.6629, h * 0.9392); + c.lineTo(w * 0.6629, h * 0.9099); + c.lineTo(w * 0.6167, h * 0.9317); + c.lineTo(w * 0.3813, h * 0.9317); + c.lineTo(w * 0.1478, h * 0.8219); + c.lineTo(w * 0.1478, h * 0.7093); + c.lineTo(w * 0.1365, h * 0.7163); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dRedshift.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dRedshift.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.6541); + c.lineTo(0, h * 0.0933); + c.lineTo(w * 0.1371, h * 0.1573); + c.lineTo(w * 0.1371, h * 0.7157); + c.close(); + c.moveTo(w * 0.1485, h * 0.8219); + c.lineTo(w * 0.1485, h * 0.2864); + c.lineTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.3846, h * 0.9317); + c.close(); + c.moveTo(w * 0.6642, h * 0.9392); + c.lineTo(w * 0.6642, h * 0.4011); + c.lineTo(w * 0.796, h * 0.4597); + c.lineTo(w * 0.796, h); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.1371, h * 0.7157); + c.lineTo(w * 0.1371, h * 0.1568); + c.lineTo(w * 0.2027, h * 0.1525); + c.lineTo(w * 0.1498, h * 0.1771); + c.lineTo(w * 0.1498, h * 0.7061); + c.close(); + c.moveTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.614, h * 0.3941); + c.lineTo(w * 0.6809, h * 0.3632); + c.lineTo(w * 0.6642, h * 0.4); + c.lineTo(w * 0.6642, h * 0.9067); + c.lineTo(w * 0.6191, h * 0.9317); + c.lineTo(w * 0.3833, h * 0.9317); + c.close(); + c.moveTo(w * 0.796, h * 0.4608); + c.lineTo(w * 0.9639, h * 0.4469); + c.lineTo(w, h * 0.3691); + c.lineTo(w, h * 0.9077); + c.lineTo(w * 0.9686, h * 0.9856); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.3378, h * 0.0608); + c.lineTo(w * 0.3378, h * 0.0907); + c.lineTo(w * 0.3197, h * 0.1008); + c.close(); + c.moveTo(w * 0.8502, h * 0.2843); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.794, h * 0.3136); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.6541); + c.lineTo(0, h * 0.0933); + c.lineTo(w * 0.1371, h * 0.1573); + c.lineTo(w * 0.1371, h * 0.7157); + c.close(); + c.moveTo(w * 0.1485, h * 0.8219); + c.lineTo(w * 0.1485, h * 0.2864); + c.lineTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.3846, h * 0.9317); + c.close(); + c.moveTo(w * 0.6642, h * 0.9392); + c.lineTo(w * 0.6642, h * 0.4011); + c.lineTo(w * 0.796, h * 0.4597); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.1371, h * 0.7157); + c.lineTo(w * 0.1371, h * 0.1568); + c.lineTo(w * 0.2027, h * 0.1525); + c.lineTo(w * 0.1498, h * 0.1771); + c.lineTo(w * 0.1498, h * 0.7061); + c.close(); + c.moveTo(w * 0.3846, h * 0.3941); + c.lineTo(w * 0.614, h * 0.3941); + c.lineTo(w * 0.6809, h * 0.3632); + c.lineTo(w * 0.6642, h * 0.4); + c.lineTo(w * 0.6642, h * 0.9067); + c.lineTo(w * 0.6191, h * 0.9317); + c.lineTo(w * 0.3833, h * 0.9317); + c.close(); + c.moveTo(w * 0.796, h * 0.4608); + c.lineTo(w * 0.9639, h * 0.4469); + c.lineTo(w, h * 0.3691); + c.lineTo(w, h * 0.9077); + c.lineTo(w * 0.9686, h * 0.9856); + c.lineTo(w * 0.796, h); + c.close(); + c.moveTo(w * 0.3378, h * 0.0608); + c.lineTo(w * 0.3378, h * 0.0907); + c.lineTo(w * 0.3197, h * 0.1008); + c.close(); + c.moveTo(w * 0.8502, h * 0.2843); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.794, h * 0.3136); + c.close(); + c.moveTo(w * 0.6167, h * 0.3941); + c.lineTo(w * 0.6167, h * 0.9317); + c.moveTo(w * 0.9652, h * 0.4448); + c.lineTo(w * 0.9652, h * 0.9851); + c.stroke(); + + c.restore(); + c.setShadow(false); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.4903, h * 0.1259); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.5023, h * 0.1189); + c.arcTo(w * 0.2007, h * 0.16, 0, 0, 1, w * 0.5639, h * 0.1333); + c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.7157, h * 0.2005); + c.arcTo(w * 0.2006, h * 0.16, 0, 0, 1, w * 0.7565, h * 0.2315); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.7445, h * 0.2421); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.6742, h * 0.2251); + c.arcTo(w * 0.602, h * 0.48, 0, 0, 1, w * 0.5204, h * 0.1541); + c.arcTo(w * 0.1338, h * 0.1067, 0, 0, 1, w * 0.4903, h * 0.1259); + c.close(); + c.moveTo(w * 0.4789, h * 0.1275); + c.arcTo(w * 0.0334, h * 0.0267, 0, 0, 0, w * 0.487, h * 0.1461); + c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 0, w * 0.5237, h * 0.1728); + c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 0, w * 0.6609, h * 0.2352); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 0, w * 0.7244, h * 0.2501); + c.arcTo(w * 0.0201, h * 0.016, 0, 0, 0, w * 0.7411, h * 0.2475); + c.lineTo(w * 0.5385, h * 0.3408); + c.arcTo(w * 0.0669, h * 0.05333, 0, 0, 1, w * 0.512, h * 0.3397); + c.arcTo(w * 0.2676, h * 0.2133, 0, 0, 1, w * 0.4548, h * 0.3248); + c.arcTo(w * 0.6689, h * 0.5333, 0, 0, 1, w * 0.3084, h * 0.2565); + c.arcTo(w * 0.1672, h * 0.1333, 0, 0, 1, w * 0.2776, h * 0.2304); + c.arcTo(w * 0.01, h * 0.008, 0, 0, 1, w * 0.2776, h * 0.2197); + c.close(); + c.fill(); + + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + c.setFillColor(fillColor); + c.setLineJoin('round'); + c.setLineCap('round'); + c.begin(); + c.moveTo(w * 0.3398, h * 0.2421); + c.lineTo(w * 0.4769, h * 0.1797); + c.lineTo(w * 0.6341, h * 0.2512); + c.lineTo(w * 0.4936, h * 0.3147); + c.fill(); + + c.begin(); + c.moveTo(w * 0.4334, h * 0.1941); + c.lineTo(w * 0.6207, h * 0.2811); + c.moveTo(w * 0.5338, h * 0.1995); + c.lineTo(w * 0.3866, h * 0.2688); + c.moveTo(w * 0.5873, h * 0.2235); + c.lineTo(w * 0.4334, h * 0.2955); + c.stroke(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.6517); + c.lineTo(0, h * 0.0912); + c.lineTo(w * 0.0368, h * 0.0155); + c.lineTo(w * 0.2047, 0); + c.lineTo(w * 0.3378, h * 0.0619); + c.lineTo(w * 0.3378, h * 0.0912); + c.lineTo(w * 0.3819, h * 0.0693); + c.lineTo(w * 0.6154, h * 0.0693); + c.lineTo(w * 0.8502, h * 0.1776); + c.lineTo(w * 0.8502, h * 0.3083); + c.lineTo(w * 0.8682, h * 0.3061); + c.lineTo(w, h * 0.3664); + c.lineTo(w, h * 0.9099); + c.lineTo(w * 0.9672, h * 0.9861); + c.lineTo(w * 0.7926, h); + c.lineTo(w * 0.6629, h * 0.9392); + c.lineTo(w * 0.6629, h * 0.9099); + c.lineTo(w * 0.6167, h * 0.9317); + c.lineTo(w * 0.3813, h * 0.9317); + c.lineTo(w * 0.1478, h * 0.8219); + c.lineTo(w * 0.1478, h * 0.7093); + c.lineTo(w * 0.1365, h * 0.7163); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dRedshift.prototype.cst.REDSHIFT, mxShapeAws3dRedshift); + +//********************************************************************************************************************************************************** +//Lambda +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dLambda(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dLambda, mxShape); + +mxShapeAws3dLambda.prototype.cst = { + LAMBDA : 'mxgraph.aws3d.lambda', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dLambda.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 109.5; + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + this.background(c, 0, 0, w, h, strokeWidth); + c.setShadow(false); + this.foreground(c, 0, 0, w, h, strokeWidth); +}; + +mxShapeAws3dLambda.prototype.background = function(c, x, y, w, h, strokeWidth) +{ + c.setStrokeWidth(strokeWidth); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.1671); + c.lineTo(w * 0.3424, 0); + c.lineTo(w * 0.663, 0); + c.lineTo(w, h * 0.1671); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.fillAndStroke(); +}; + +mxShapeAws3dLambda.prototype.foreground = function(c, x, y, w, h, strokeWidth) +{ + c.restore(); + c.setShadow(false); + c.setFillColor('#000000'); + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dLambda.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(0, h * 0.3242); + c.lineTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.663, h * 0.4895); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.close(); + c.moveTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.lineTo(w * 0., h * 0.); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.663, h * 0.4895); + c.lineTo(w, h * 0.3242); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.close(); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.3242); + c.lineTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.663, h * 0.4895); + c.lineTo(w, h * 0.3242); + c.moveTo(w * 0.3424, h * 0.4895); + c.lineTo(w * 0.3424, h); + c.moveTo(w * 0.663, h * 0.4895); + c.lineTo(w * 0.663, h); + c.stroke(); + + c.setFillColor("#5E5E5E"); + + c.begin(); + c.moveTo(w * 0.3804, h * 0.1169); + c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.6087, h * 0.1123); + c.arcTo(w * 0.33804, h * 0.3196, 0, 0, 1, w * 0.725, h * 0.1553); + c.arcTo(w * 0.1304, h * 0.1096, 0, 0, 1, w * 0.7924, h * 0.2402); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.725, h * 0.3333); + c.arcTo(w * 0.4416, h * 0.274, 0, 0, 1, w * 0.6087, h * 0.3772); + c.arcTo(w * 0.5435, h * 0.4566, 0, 0, 1, w * 0.3804, h * 0.3708); + c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.2772, h * 0.3324); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2163, h * 0.2539); + c.arcTo(w * 0.1522, h * 0.1279, 0, 0, 1, w * 0.2663, h * 0.1644); + c.arcTo(w * 0.3804, h * 0.3196, 0, 0, 1, w * 0.3804, h * 0.1169); + c.fill(); + + c.setFillColor("#ffffff"); + + c.begin(); + c.moveTo(w * 0.5565, h * 0.2174); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.5837, h * 0.1945); + c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 0, w * 0.5793, h * 0.1671); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 0, w * 0.525, h * 0.1598); + c.arcTo(w * 0.0652, h * 0.0548, 0, 0, 1, w * 0.5543, h * 0.1443); + c.arcTo(w * 0.0761, h * 0.0639, 0, 0, 1, w * 0.6163, h * 0.1662); + c.arcTo(w * 0.0598, h * 0.0502, 0, 0, 1, w * 0.6087, h * 0.2091); + c.lineTo(w * 0.5, h * 0.3032); + c.arcTo(w * 0.0978, h * 0.0822, 0, 0, 0, w * 0.4728, h * 0.3379); + c.arcTo(w * 0.0272, h * 0.0228, 0, 0, 0, w * 0.4924, h * 0.3571); + c.arcTo(w * 0.0326, h * 0.0274, 0, 0, 1, w * 0.4489, h * 0.3571); + c.arcTo(w * 0.038, h * 0.032, 0, 0, 1, w * 0.437, h * 0.3242); + c.arcTo(w * 0.1087, h * 0.0913, 0, 0, 1, w * 0.4674, h * 0.2886); + c.lineTo(w * 0.5141, h * 0.2557); + c.lineTo(w * 0.3185, h * 0.2895); + c.lineTo(w * 0.2641, h * 0.2648); + c.close(); + c.fill(); + + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + + c.begin(); + c.moveTo(0, h * 0.1671); + c.lineTo(w * 0.3424, 0); + c.lineTo(w * 0.663, 0); + c.lineTo(w, h * 0.1671); + c.lineTo(w, h * 0.8365); + c.lineTo(w * 0.663, h); + c.lineTo(w * 0.3424, h); + c.lineTo(0, h * 0.8365); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dLambda.prototype.cst.LAMBDA, mxShapeAws3dLambda); + +//********************************************************************************************************************************************************** +//EBS 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws3dEbs2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws3dEbs2, mxShape); + +mxShapeAws3dEbs2.prototype.cst = { + EBS2 : 'mxgraph.aws3d.ebs2', + SHADING_COLORS : 'shadingCols' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws3dEbs2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); + var strokeWidth1 = strokeWidth * w / 92; + var strokeWidth2 = strokeWidth * h / 60; + var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); + + strokeWidth = Math.min(strokeWidth1, strokeWidth2); + + c.setStrokeWidth(strokeWidth); + c.setShadow(false); + c.save(); + c.save(); + c.setStrokeWidth(2 * strokeWidth); + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + if(isShadow == 1) + { + c.setShadow(true); + } + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.fillAndStroke(); + + c.restore(); + c.setFillColor('#000000'); + + var shading = mxUtils.getValue(this.state.style, mxShapeAws3dEbs2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); + var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); + (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); + + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.fill(); + + (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); + c.begin(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.fill(); + + c.restore(); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(w * 0.071, h * 0.2948); + c.lineTo(w * 0.6011, h * 0.7621); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.lineTo(0, h * 0.5276); + c.lineTo(0, h * 0.4137); + c.close(); + c.moveTo(w * 0.6011, h * 0.7655); + c.lineTo(w * 0.9344, h * 0.4724); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.close(); + c.moveTo(w * 0.0033, h * 0.5276); + c.lineTo(w * 0.071, h * 0.2898); + c.moveTo(w * 0.5325, h * 0.9976); + c.lineTo(w * 0.603, h * 0.7593); + c.stroke(); + + c.setStrokeWidth(2 * strokeWidth); + c.setLineCap('round'); + + c.begin(); + c.moveTo(w * 0.3388, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.2345); + c.lineTo(w * 0.6667, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.526); + c.close(); + c.moveTo(w * 0.4426, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.3266); + c.lineTo(w * 0.5628, h * 0.3802); + c.lineTo(w * 0.5027, h * 0.4338); + c.close(); + c.moveTo(w * 0.3867, h * 0.3284); + c.lineTo(w * 0.3541, h * 0.2998); + c.moveTo(w * 0.4436, h * 0.2748); + c.lineTo(w * 0.4077, h * 0.2412); + c.moveTo(w * 0.5704, h * 0.2803); + c.lineTo(w * 0.5992, h * 0.2513); + c.moveTo(w * 0.6231, h * 0.3284); + c.lineTo(w * 0.6503, h * 0.3032); + c.moveTo(w * 0.622, h * 0.4338); + c.lineTo(w * 0.6557, h * 0.4606); + c.moveTo(w * 0.5667, h * 0.4845); + c.lineTo(w * 0.5992, h * 0.5156); + c.moveTo(w * 0.4414, h * 0.4874); + c.lineTo(w * 0.412, h * 0.5159); + c.moveTo(w * 0.3889, h * 0.4405); + c.lineTo(w * 0.3607, h * 0.4657); + c.stroke(); + + c.setStrokeColor('#292929'); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h * 0.5276); + c.lineTo(0, h * 0.4188); + c.lineTo(w * 0.071, h * 0.2898); + c.lineTo(w * 0.4033, 0); + c.lineTo(w * 0.9301, h * 0.464); + c.lineTo(w, h * 0.5863); + c.lineTo(w, h * 0.7035); + c.lineTo(w * 0.6667, h); + c.lineTo(w * 0.5355, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAws3dEbs2.prototype.cst.EBS2, mxShapeAws3dEbs2); + +//********************************************************************************************************************************************************** +//Elasticache +//********************************************************************************************************************************************************** +///** +//* Extends mxShape. +//*/ +//function mxShapeAws3dElasticache(bounds, fill, stroke, strokewidth) +//{ +// mxShape.call(this); +// this.bounds = bounds; +// this.fill = fill; +// this.stroke = stroke; +// this.strokewidth = (strokewidth != null) ? strokewidth : 1; +//}; +// +///** +//* Extends mxShape. +//*/ +//mxUtils.extend(mxShapeAws3dElasticache, mxShape); +// +//mxShapeAws3dElasticache.prototype.cst = { +// ELASTICACHE : 'mxgraph.aws3d.elasticache', +// SHADING_COLORS : 'shadingCols' +//}; +// +///** +//* Function: paintVertexShape +//* +//* Paints the vertex shape. +//*/ +//mxShapeAws3dElasticache.prototype.paintVertexShape = function(c, x, y, w, h) +//{ +// c.translate(x, y); +// +// var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); +// var strokeWidth1 = strokeWidth * w / 123; +// var strokeWidth2 = strokeWidth * h / 143; +// var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); +// +// strokeWidth = Math.min(strokeWidth1, strokeWidth2); +// +// c.setStrokeWidth(strokeWidth); +// c.setShadow(false); +// c.save(); +// c.save(); +// c.setStrokeWidth(2 * strokeWidth); +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// if(isShadow == 1) +// { +// c.setShadow(true); +// } +// +// c.begin(); +// c.moveTo(0, h * 0.7483); +// c.lineTo(0, h * 0.6294); +// c.lineTo(w * 0.061, h * 0.5944); +// c.lineTo(0, h * 0.563); +// c.lineTo(0, h * 0.4406); +// c.lineTo(w * 0.061, h * 0.4091); +// c.lineTo(0, h * 0.3776); +// c.lineTo(0, h * 0.2517); +// c.lineTo(w * 0.5041, 0); +// c.lineTo(w, h * 0.2483); +// c.lineTo(w, h * 0.3741); +// c.lineTo(w * 0.939, h * 0.4091); +// c.lineTo(w, h * 0.4406); +// c.lineTo(w, h * 0.563); +// c.lineTo(w * 0.939, h * 0.5944); +// c.lineTo(w, h * 0.6294); +// c.lineTo(w, h * 0.751); +// c.lineTo(w * 0.5041, h); +// c.close(); +// c.fillAndStroke(); +// +// c.restore(); +// c.setFillColor('#000000'); +// +// var shading = mxUtils.getValue(this.state.style, mxShapeAws3dElasticache.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); +// var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); +// (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); +// +// c.begin(); +// c.moveTo(0, h * 0.2517); +// c.lineTo(w * 0.5041, h * 0.4965); +// c.lineTo(w * 0.5041, h * 0.6294); +// c.lineTo(0, h * 0.3776); +// c.close(); +// c.moveTo(0, h * 0.4406); +// c.lineTo(w * 0.5041, h * 0.6853); +// c.lineTo(w * 0.5041, h * 0.8112); +// c.lineTo(0, h * 0.5629); +// c.close(); +// c.moveTo(0, h * 0.6294); +// c.lineTo(w * 0.5041, h * 0.8741); +// c.lineTo(w * 0.5041, h); +// c.lineTo(0, h * 0.7483); +// c.close(); +// c.moveTo(w * 0.6179, h * 0.2517); +// c.lineTo(w * 0.752, h * 0.1853); +// c.lineTo(w * 0.752, h * 0.3217); +// c.close(); +// c.fill(); +// +// (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); +// c.begin(); +// c.moveTo(w * 0.5041, h * 0.4965); +// c.lineTo(w, h * 0.2517); +// c.lineTo(w, h * 0.3741); +// c.lineTo(w * 0.5041, h * 0.6294); +// c.close(); +// c.moveTo(w * 0.5041, h * 0.6853); +// c.lineTo(w, h * 0.4406); +// c.lineTo(w, h * 0.5629); +// c.lineTo(w * 0.5041, h * 0.8112); +// c.close(); +// c.moveTo(w * 0.5041, h * 0.8741); +// c.lineTo(w, h * 0.6294); +// c.lineTo(w, h * 0.7483); +// c.lineTo(w * 0.5041, h); +// c.close(); +// c.moveTo(w * 0.752, h * 0.1853); +// c.lineTo(w * 0.8821, h * 0.2517); +// c.lineTo(w * 0.752, h * 0.3217); +// c.close(); +// c.fill(); +// +// c.restore(); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(0, h * 0.2517); +// c.lineTo(w * 0.5041, h * 0.4965); +// c.lineTo(w * 0.5041, h * 0.6294); +// c.lineTo(0, h * 0.3776); +// c.close(); +// c.moveTo(0, h * 0.4406); +// c.lineTo(w * 0.5041, h * 0.6853); +// c.lineTo(w * 0.5041, h * 0.8112); +// c.lineTo(0, h * 0.5629); +// c.close(); +// c.moveTo(0, h * 0.6294); +// c.lineTo(w * 0.5041, h * 0.8741); +// c.lineTo(w * 0.5041, h); +// c.lineTo(0, h * 0.7483); +// c.close(); +// c.moveTo(w * 0.5041, h * 0.4965); +// c.lineTo(w, h * 0.2517); +// c.lineTo(w, h * 0.3741); +// c.lineTo(w * 0.5041, h * 0.6294); +// c.close(); +// c.moveTo(w * 0.5041, h * 0.6853); +// c.lineTo(w, h * 0.4406); +// c.lineTo(w, h * 0.5629); +// c.lineTo(w * 0.5041, h * 0.8112); +// c.close(); +// c.moveTo(w * 0.5041, h * 0.8741); +// c.lineTo(w, h * 0.6294); +// c.lineTo(w, h * 0.7483); +// c.lineTo(w * 0.5041, h); +// c.close(); +// c.stroke(); +// +// c.setStrokeWidth(2 * strokeWidth); +// c.setLineCap('round'); +// var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); +// c.setFillColor(strokeColor); +// +// c.begin(); +// c.moveTo(w * 0.222, h * 0.2028); +// c.arcTo(w * 0.1463, h * 0.1259, 0, 0, 1, w * 0.3154, h * 0.2014); +// c.arcTo(w * 0.122, h * 0.1049, 0, 0, 1, w * 0.3642, h * 0.2245); +// c.arcTo(w * 0.0325, h * 0.028, 0, 0, 1, w * 0.3618, h * 0.2552); +// c.arcTo(w * 0.122, h * 0.1049, 0, 0, 1, w * 0.3252, h * 0.2798); +// c.arcTo(w * 0.1626, h * 0.1399, 0, 0, 1, w * 0.2276, h * 0.2797); +// c.arcTo(w * 0.0976, h * 0.0839, 0, 0, 1, w * 0.187, h * 0.2622); +// c.arcTo(w * 0.0325, h * 0.028, 0, 0, 1, w * 0.187, h * 0.2238); +// c.arcTo(w * 0.0976, h * 0.0839, 0, 0, 1, w * 0.222, h * 0.2028); +// c.close(); +// c.moveTo(w * 0.3618, h * 0.1434); +// c.lineTo(w * 0.4309, h * 0.1189); +// c.lineTo(w * 0.4309, h * 0.0755); +// c.lineTo(w * 0.4992, h * 0.1014); +// c.lineTo(w * 0.5813, h * 0.0874); +// c.lineTo(w * 0.5488, h * 0.1294); +// c.lineTo(w * 0.6057, h * 0.1608); +// c.lineTo(w * 0.5163, h * 0.1608); +// c.lineTo(w * 0.4634, h * 0.2028); +// c.lineTo(w * 0.4431, h * 0.1538); +// c.close(); +// c.moveTo(w * 0.3821, h * 0.3601); +// c.lineTo(w * 0.5894, h * 0.3322); +// c.lineTo(w * 0.5325, h * 0.4394); +// c.close(); +// c.fill(); +// +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(0, h * 0.7483); +// c.lineTo(0, h * 0.6294); +// c.lineTo(w * 0.061, h * 0.5944); +// c.lineTo(0, h * 0.563); +// c.lineTo(0, h * 0.4406); +// c.lineTo(w * 0.061, h * 0.4091); +// c.lineTo(0, h * 0.3776); +// c.lineTo(0, h * 0.2517); +// c.lineTo(w * 0.5041, 0); +// c.lineTo(w, h * 0.2483); +// c.lineTo(w, h * 0.3741); +// c.lineTo(w * 0.939, h * 0.4091); +// c.lineTo(w, h * 0.4406); +// c.lineTo(w, h * 0.563); +// c.lineTo(w * 0.939, h * 0.5944); +// c.lineTo(w, h * 0.6294); +// c.lineTo(w, h * 0.751); +// c.lineTo(w * 0.5041, h); +// c.close(); +// c.stroke(); +//}; +// +//mxCellRenderer.registerShape(mxShapeAws3dElasticache.prototype.cst.ELASTICACHE, mxShapeAws3dElasticache); + +//********************************************************************************************************************************************************** +//Kinesis Stream +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +//function mxShapeAws3dKinesisStream(bounds, fill, stroke, strokewidth) +//{ +// mxShape.call(this); +// this.bounds = bounds; +// this.fill = fill; +// this.stroke = stroke; +// this.strokewidth = (strokewidth != null) ? strokewidth : 1; +//}; +// +///** +//* Extends mxShape. +//*/ +//mxUtils.extend(mxShapeAws3dKinesisStream, mxShape); +// +//mxShapeAws3dKinesisStream.prototype.cst = { +// KINESIS_STREAM : 'mxgraph.aws3d.kinesisStream', +// SHADING_COLORS : 'shadingCols' +//}; +// +///** +//* Function: paintVertexShape +//* +//* Paints the vertex shape. +//*/ +//mxShapeAws3dKinesisStream.prototype.paintVertexShape = function(c, x, y, w, h) +//{ +// c.translate(x, y); +// +// var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); +// var strokeWidth1 = strokeWidth * w / 220; +// var strokeWidth2 = strokeWidth * h / 160; +// var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); +// +// strokeWidth = Math.min(strokeWidth1, strokeWidth2); +// +// c.setStrokeWidth(strokeWidth); +// c.setShadow(false); +// c.save(); +// c.save(); +// c.setStrokeWidth(2 * strokeWidth); +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// if(isShadow == 1) +// { +// c.setShadow(true); +// } +// +// c.begin(); +// c.moveTo(0, h * 0.5503); +// c.lineTo(w * 0.0455, h * 0.4623); +// c.lineTo(w * 0.6054, h * 0.0157); +// c.lineTo(w * 0.6623, h * 0.0629); +// c.lineTo(w * 0.7396, 0); +// c.lineTo(w * 0.8239, h * 0.0692); +// c.lineTo(w * 0.8671, h * 0.2233); +// c.lineTo(w * 0.9513, h * 0.2943); +// c.lineTo(w, h * 0.4528); +// c.lineTo(w * 0.9595, h * 0.5365); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.3391, h * 0.9403); +// c.lineTo(w * 0.2617, h); +// c.lineTo(w * 0.173, h * 0.9308); +// c.lineTo(w * 0.1297, h * 0.7736); +// c.lineTo(w * 0.0432, h * 0.7044); +// c.close(); +// c.fillAndStroke(); +// +// c.restore(); +// c.setFillColor('#000000'); +// +// var shading = mxUtils.getValue(this.state.style, mxShapeAws3dKinesisStream.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); +// var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); +// (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); +// +// c.begin(); +// c.moveTo(w * 0.0432, h * 0.4654); +// c.lineTo(w * 0.132, h * 0.5314); +// c.lineTo(w * 0.1775, h * 0.4465); +// c.lineTo(w * 0.264, h * 0.5189); +// c.lineTo(w * 0.3072, h * 0.673); +// c.lineTo(w * 0.396, h * 0.7453); +// c.lineTo(w * 0.4392, h * 0.8994); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.305, h * 0.9151); +// c.lineTo(w * 0.2617, h); +// c.lineTo(w * 0.173, h * 0.9308); +// c.lineTo(w * 0.1297, h * 0.7736); +// c.lineTo(w * 0.0432, h * 0.7044); +// c.lineTo(0, h * 0.5503); +// c.close(); +// c.fill(); +// +// (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); +// c.begin(); +// c.moveTo(w * 0.264, h * 0.5204); +// c.lineTo(w * 0.8239, h * 0.0676); +// c.lineTo(w * 0.8694, h * 0.228); +// c.lineTo(w * 0.3072, h * 0.673); +// c.close(); +// c.moveTo(w * 0.3937, h * 0.7453); +// c.lineTo(w * 0.9536, h * 0.2956); +// c.lineTo(w, h * 0.4528); +// c.lineTo(w * 0.9558, h * 0.5377); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.4392, h * 0.8994); +// c.close(); +// c.moveTo(w * 0.2617, h); +// c.lineTo(w * 0.305, h * 0.9151); +// c.lineTo(w * 0.3368, h * 0.9403); +// c.close(); +// c.fill(); +// +// c.setAlpha('0.5'); +// c.begin(); +// c.moveTo(w * 0.0546, h * 0.5094); +// c.lineTo(w * 0.1161, h * 0.5597); +// c.lineTo(w * 0.1479, h * 0.6761); +// c.lineTo(w * 0.1183, h * 0.7264); +// c.lineTo(w * 0.0569, h * 0.6792); +// c.lineTo(w * 0.025, h * 0.566); +// c.close(); +// c.moveTo(w * 0.1889, h * 0.4937); +// c.lineTo(w * 0.2503, h * 0.544); +// c.lineTo(w * 0.2822, h * 0.6572); +// c.lineTo(w * 0.2526, h * 0.717); +// c.lineTo(w * 0.1934, h * 0.6667); +// c.lineTo(w * 0.1593, h * 0.5566); +// c.close(); +// c.moveTo(w * 0.3195, h * 0.7201); +// c.lineTo(w * 0.3801, h * 0.7704); +// c.lineTo(w * 0.4137, h * 0.8805); +// c.lineTo(w * 0.3819, h * 0.9403); +// c.lineTo(w * 0.3209, h * 0.8912); +// c.lineTo(w * 0.2904, h * 0.783); +// c.close(); +// c.moveTo(w * 0.1866, h * 0.7358); +// c.lineTo(w * 0.2458, h * 0.783); +// c.lineTo(w * 0.2776, h * 0.8962); +// c.lineTo(w * 0.2481, h * 0.956); +// c.lineTo(w * 0.1866, h * 0.9057); +// c.lineTo(w * 0.157, h * 0.7893); +// c.close(); +// c.fill(); +// +// c.restore(); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(w * 0.0432, h * 0.4654); +// c.lineTo(w * 0.132, h * 0.5314); +// c.lineTo(w * 0.1775, h * 0.4465); +// c.lineTo(w * 0.264, h * 0.5189); +// c.lineTo(w * 0.3072, h * 0.673); +// c.lineTo(w * 0.396, h * 0.7453); +// c.lineTo(w * 0.4392, h * 0.8994); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.305, h * 0.9151); +// c.lineTo(w * 0.2617, h); +// c.lineTo(w * 0.173, h * 0.9308); +// c.lineTo(w * 0.1297, h * 0.7736); +// c.lineTo(w * 0.0432, h * 0.7044); +// c.lineTo(0, h * 0.5503); +// c.close(); +// c.moveTo(w * 0.264, h * 0.5204); +// c.lineTo(w * 0.8239, h * 0.0676); +// c.lineTo(w * 0.8694, h * 0.228); +// c.lineTo(w * 0.3072, h * 0.673); +// c.close(); +// c.moveTo(w * 0.3937, h * 0.7453); +// c.lineTo(w * 0.9536, h * 0.2956); +// c.lineTo(w, h * 0.4528); +// c.lineTo(w * 0.9558, h * 0.5377); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.4392, h * 0.8994); +// c.close(); +// c.moveTo(w * 0.2617, h); +// c.lineTo(w * 0.305, h * 0.9151); +// c.lineTo(w * 0.3368, h * 0.9403); +// c.close(); +// c.moveTo(w * 0.0546, h * 0.5094); +// c.lineTo(w * 0.1161, h * 0.5597); +// c.lineTo(w * 0.1479, h * 0.6761); +// c.lineTo(w * 0.1183, h * 0.7264); +// c.lineTo(w * 0.0569, h * 0.6792); +// c.lineTo(w * 0.025, h * 0.566); +// c.close(); +// c.moveTo(w * 0.1889, h * 0.4937); +// c.lineTo(w * 0.2503, h * 0.544); +// c.lineTo(w * 0.2822, h * 0.6572); +// c.lineTo(w * 0.2526, h * 0.717); +// c.lineTo(w * 0.1934, h * 0.6667); +// c.lineTo(w * 0.1593, h * 0.5566); +// c.close(); +// c.moveTo(w * 0.3195, h * 0.7201); +// c.lineTo(w * 0.3801, h * 0.7704); +// c.lineTo(w * 0.4137, h * 0.8805); +// c.lineTo(w * 0.3819, h * 0.9403); +// c.lineTo(w * 0.3209, h * 0.8912); +// c.lineTo(w * 0.2904, h * 0.783); +// c.close(); +// c.moveTo(w * 0.1866, h * 0.7358); +// c.lineTo(w * 0.2458, h * 0.783); +// c.lineTo(w * 0.2776, h * 0.8962); +// c.lineTo(w * 0.2481, h * 0.956); +// c.lineTo(w * 0.1866, h * 0.9057); +// c.lineTo(w * 0.157, h * 0.7893); +// c.close(); +// c.moveTo(w * 0.1775, h * 0.4465); +// c.lineTo(w * 0.7374, 0); +// c.moveTo(w * 0.4392, h * 0.8994); +// c.lineTo(w, h * 0.4528); +// c.moveTo(w * 0.1331, h * 0.533); +// c.lineTo(w * 0.1809, h * 0.6934); +// c.lineTo(w * 0.2617, h * 0.7626); +// c.lineTo(w * 0.3061, h * 0.9151); +// c.moveTo(w * 0.1295, h * 0.7764); +// c.lineTo(w * 0.1807, h * 0.6928); +// c.moveTo(w * 0.264, h * 0.7642); +// c.lineTo(w * 0.3095, h * 0.673); +// c.moveTo(w * 0.3641, h * 0.2327); +// c.lineTo(w * 0.3241, h * 0.2673); +// c.lineTo(w * 0.3619, h * 0.2987); +// c.moveTo(w * 0.3468, h * 0.2736); +// c.lineTo(w * 0.3596, h * 0.261); +// c.moveTo(w * 0.3573, h * 0.283); +// c.lineTo(w * 0.3823, h * 0.261); +// c.moveTo(w * 0.4916, h * 0.217); +// c.lineTo(w * 0.4483, h * 0.2547); +// c.lineTo(w * 0.5052, h * 0.3019); +// c.moveTo(w * 0.4679, h * 0.2591); +// c.lineTo(w * 0.4802, h * 0.2478); +// c.moveTo(w * 0.4811, h * 0.2673); +// c.lineTo(w * 0.5098, h * 0.2421); +// c.moveTo(w * 0.4939, h * 0.2767); +// c.lineTo(w * 0.5121, h * 0.261); +// c.moveTo(w * 0.5043, h * 0.2868); +// c.lineTo(w * 0.5371, h * 0.2579); +// c.moveTo(w * 0.6259, h * 0.4371); +// c.lineTo(w * 0.5826, h * 0.4717); +// c.lineTo(w * 0.6418, h * 0.522); +// c.moveTo(w * 0.6039, h * 0.4755); +// c.lineTo(w * 0.6187, h * 0.463); +// c.moveTo(w * 0.6158, h * 0.4862); +// c.lineTo(w * 0.6418, h * 0.4623); +// c.moveTo(w * 0.6281, h * 0.4969); +// c.lineTo(w * 0.6486, h * 0.478); +// c.moveTo(w * 0.6395, h * 0.5063); +// c.lineTo(w * 0.6736, h * 0.478); +// +// c.stroke(); +// +// c.setStrokeWidth(2 * strokeWidth); +// c.setLineCap('round'); +// +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(0, h * 0.5503); +// c.lineTo(w * 0.0455, h * 0.4623); +// c.lineTo(w * 0.6054, h * 0.0157); +// c.lineTo(w * 0.6623, h * 0.0629); +// c.lineTo(w * 0.7396, 0); +// c.lineTo(w * 0.8239, h * 0.0692); +// c.lineTo(w * 0.8671, h * 0.2233); +// c.lineTo(w * 0.9513, h * 0.2943); +// c.lineTo(w, h * 0.4528); +// c.lineTo(w * 0.9595, h * 0.5365); +// c.lineTo(w * 0.396, h * 0.9843); +// c.lineTo(w * 0.3391, h * 0.9403); +// c.lineTo(w * 0.2617, h); +// c.lineTo(w * 0.173, h * 0.9308); +// c.lineTo(w * 0.1297, h * 0.7736); +// c.lineTo(w * 0.0432, h * 0.7044); +// c.close(); +// c.stroke(); +//}; +// +//mxCellRenderer.registerShape(mxShapeAws3dKinesisStream.prototype.cst.KINESIS_STREAM, mxShapeAws3dKinesisStream); + +//********************************************************************************************************************************************************** +//SQS 2 +//********************************************************************************************************************************************************** +///** +//* Extends mxShape. +//*/ +//function mxShapeAws3dSqs2(bounds, fill, stroke, strokewidth) +//{ +// mxShape.call(this); +// this.bounds = bounds; +// this.fill = fill; +// this.stroke = stroke; +// this.strokewidth = (strokewidth != null) ? strokewidth : 1; +//}; +// +///** +//* Extends mxShape. +//*/ +//mxUtils.extend(mxShapeAws3dSqs2, mxShape); +// +//mxShapeAws3dSqs2.prototype.cst = { +// SQS2 : 'mxgraph.aws3d.sqs2', +// SHADING_COLORS : 'shadingCols' +//}; +// +///** +//* Function: paintVertexShape +//* +//* Paints the vertex shape. +//*/ +//mxShapeAws3dSqs2.prototype.paintVertexShape = function(c, x, y, w, h) +//{ +// c.translate(x, y); +// +// var strokeWidth = parseFloat(mxUtils.getValue(this.state.style, 'strokeWidth', '1')); +// var strokeWidth1 = strokeWidth * w / 160; +// var strokeWidth2 = strokeWidth * h / 93; +// var isShadow = parseFloat(mxUtils.getValue(this.state.style, 'shadow', '0')); +// +// strokeWidth = Math.min(strokeWidth1, strokeWidth2); +// +// c.setStrokeWidth(strokeWidth); +// c.setShadow(false); +// c.save(); +// c.save(); +// c.setStrokeWidth(2 * strokeWidth); +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// if(isShadow == 1) +// { +// c.setShadow(true); +// } +// +// c.begin(); +// c.moveTo(0, h * 0.4737); +// c.lineTo(w * 0.4652, 0); +// c.lineTo(w * 0.6231, h * 0.0602); +// c.lineTo(w * 0.6231, h * 0.1676); +// c.lineTo(w * 0.1567, h * 0.6316); +// c.close(); +// c.moveTo(w * 0.3756, h * 0.8443); +// c.lineTo(w * 0.3756, h * 0.7454); +// c.lineTo(w * 0.8439, h * 0.275); +// c.lineTo(w, h * 0.5328); +// c.lineTo(w * 0.5311, h); +// c.close(); +// c.fillAndStroke(); +// +// c.restore(); +// c.setFillColor('#000000'); +// +// var shading = mxUtils.getValue(this.state.style, mxShapeAws3dSqs2.prototype.cst.SHADING_COLORS, '0.1,0.3').toString().split(','); +// var flipH = mxUtils.getValue(this.state.style, 'flipH', '0'); +// (flipH == '0') ? c.setAlpha(shading[0]) : c.setAlpha(shading[1]); +// +// c.begin(); +// c.moveTo(0, h * 0.4737); +// c.lineTo(w * 0.1567, h * 0.5274); +// c.lineTo(w * 0.1567, h * 0.6394); +// c.close(); +// c.moveTo(w * 0.3756, h * 0.7454); +// c.lineTo(w * 0.5311, h); +// c.lineTo(w * 0.3756, h * 0.8443); +// c.close(); +// c.fill(); +// +// (flipH == '0') ? c.setAlpha(shading[1]) : c.setAlpha(shading[0]); +// c.begin(); +// c.moveTo(w * 0.1567, h * 0.5274); +// c.lineTo(w * 0.6231, h * 0.0602); +// c.lineTo(w * 0.6231, h * 0.1676); +// c.lineTo(w * 0.1567, h * 0.6294); +// c.close(); +// c.fill(); +// +// c.restore(); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(0, h * 0.4737); +// c.lineTo(w * 0.1567, h * 0.5274); +// c.lineTo(w * 0.1567, h * 0.6294); +// c.close(); +// c.moveTo(w * 0.3756, h * 0.7454); +// c.lineTo(w * 0.5311, h); +// c.lineTo(w * 0.3756, h * 0.8443); +// c.close(); +// c.moveTo(w * 0.1567, h * 0.5274); +// c.lineTo(w * 0.6231, h * 0.0602); +// c.lineTo(w * 0.6231, h * 0.1676); +// c.lineTo(w * 0.1567, h * 0.6294); +// c.close(); +// c.stroke(); +// +// c.setStrokeWidth(2 * strokeWidth); +// c.setLineCap('round'); +// +// c.setStrokeColor('#292929'); +// c.setLineJoin('round'); +// +// c.begin(); +// c.moveTo(0, h * 0.4737); +// c.lineTo(w * 0.4652, 0); +// c.lineTo(w * 0.6231, h * 0.0602); +// c.lineTo(w * 0.6231, h * 0.1676); +// c.lineTo(w * 0.1567, h * 0.6316); +// c.close(); +// c.moveTo(w * 0.3756, h * 0.8443); +// c.lineTo(w * 0.3756, h * 0.7454); +// c.lineTo(w * 0.8439, h * 0.275); +// c.lineTo(w, h * 0.5328); +// c.lineTo(w * 0.5311, h); +// c.close(); +// c.stroke(); +// +// c.setFillColor('#F4B934'); +// +// c.begin(); +// c.moveTo(w * 0.1256, h * 0.812); +// c.lineTo(w * 0.24, h * 0.7605); +// c.lineTo(w * 0.1853, h * 0.8829); +// c.close(); +// c.moveTo(w * 0.2417, h * 0.6957); +// c.lineTo(w * 0.3562, h * 0.6441); +// c.lineTo(w * 0.3014, h * 0.7666); +// c.close(); +// c.moveTo(w * 0.3588, h * 0.5793); +// c.lineTo(w * 0.4733, h * 0.5277); +// c.lineTo(w * 0.4185, h * 0.6502); +// c.close(); +// c.moveTo(w * 0.477, h * 0.4611); +// c.lineTo(w * 0.5914, h * 0.4096); +// c.lineTo(w * 0.5367, h * 0.532); +// c.close(); +// c.moveTo(w * 0.591, h * 0.343); +// c.lineTo(w * 0.7054, h * 0.2914); +// c.lineTo(w * 0.6507, h * 0.4139); +// c.close(); +// c.moveTo(w * 0.7091, h * 0.2302); +// c.lineTo(w * 0.8236, h * 0.1786); +// c.lineTo(w * 0.7688, h * 0.3011); +// c.close(); +// c.fillAndStroke(); +//}; +// +//mxCellRenderer.registerShape(mxShapeAws3dSqs2.prototype.cst.SQS2, mxShapeAws3dSqs2); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS4.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS4.js new file mode 100644 index 0000000000000..44b40508bdc27 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAWS4.js @@ -0,0 +1,421 @@ +/** + * $Id: mxAws4.js,v 1.0 2018/16/11 07:05:39 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Product Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws4ProductIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws4ProductIcon, mxShape); + +mxShapeAws4ProductIcon.prototype.cst = { + PRODUCT_ICON : 'mxgraph.aws4.productIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws4ProductIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var opacity = parseFloat(mxUtils.getValue(this.style, 'opacity', '100')); + var op1 = opacity; + var op2 = opacity; + + if (fillColor == 'none') + { + op1 = 0; + } + + if (gradientColor == 'none') + { + op2 = 0; + } + + var ind = 1; + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + + c.setShadow(false); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + var gradientColor = mxUtils.getValue(this.state.style, 'gradientColor', fillColor); + var gradientDir = mxUtils.getValue(this.state.style, 'gradientDirection', 'south'); + + c.setFillColor(fillColor); + c.setGradient(fillColor, gradientColor, 0, 0, w, h, gradientDir, op1, op2); + + c.begin(); + c.moveTo(ind, ind); + c.lineTo(w - ind, ind); + c.lineTo(w - ind, w - ind); + c.lineTo(ind, w - ind); + c.close(); + c.fill(); + + + var prIcon = mxUtils.getValue(this.state.style, 'prIcon', ''); + var stencil = mxStencilRegistry.getStencil(prIcon); + + if (stencil != null) + { + c.setFillColor(strokeColor); + c.setStrokeColor('none'); +// stencil.drawShape(c, this, w * 0.1, h * 0.1, w * 0.8, h * 0.8); + stencil.drawShape(c, this, ind + w * 0.15, ind + w * 0.15, w * 0.7 - 2 * ind, w * 0.7 - 2 * ind); + } + +}; + +mxCellRenderer.registerShape(mxShapeAws4ProductIcon.prototype.cst.PRODUCT_ICON, mxShapeAws4ProductIcon); + +//********************************************************************************************************************************************************** +//Resource Icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws4ResourceIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws4ResourceIcon, mxShape); + +mxShapeAws4ResourceIcon.prototype.cst = { + RESOURCE_ICON : 'mxgraph.aws4.resourceIcon' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws4ResourceIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + + c.setShadow(false); + + var prIcon = mxUtils.getValue(this.state.style, 'resIcon', ''); + var stencil = mxStencilRegistry.getStencil(prIcon); + + if (stencil != null) + { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, w * 0.1, h * 0.1, w * 0.8, h * 0.8); + } + +}; + +mxCellRenderer.registerShape(mxShapeAws4ResourceIcon.prototype.cst.RESOURCE_ICON, mxShapeAws4ResourceIcon); + +//********************************************************************************************************************************************************** +//Group +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws4Group(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws4Group, mxShape); + +mxShapeAws4Group.prototype.cst = { + GROUP : 'mxgraph.aws4.group' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws4Group.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var grStroke = mxUtils.getValue(this.state.style, 'grStroke', '1'); + + var size = 25; + + if (this.style != null && mxUtils.getValue(this.style, mxConstants.STYLE_POINTER_EVENTS, '1') == '0') + { + c.pointerEvents = false; + } + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + + if (grStroke == '1') + { + c.fillAndStroke(); + } + else + { + c.fill(); + } + + c.pointerEvents = true; + c.setShadow(false); + + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) + { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, 0, 0, size, size); + } + +}; + +mxCellRenderer.registerShape(mxShapeAws4Group.prototype.cst.GROUP, mxShapeAws4Group); + +//********************************************************************************************************************************************************** +//Group Center +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws4GroupCenter(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws4GroupCenter, mxShape); + +mxShapeAws4GroupCenter.prototype.cst = { + GROUP_CENTER : 'mxgraph.aws4.groupCenter' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws4GroupCenter.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var grStroke = mxUtils.getValue(this.state.style, 'grStroke', '1'); + + var size = 25; + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + + if (grStroke == '1') + { + c.fillAndStroke(); + } + else + { + c.fill(); + } + + c.setShadow(false); + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) + { + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, (w - size) * 0.5, 0, size, size); + } + +}; + +mxCellRenderer.registerShape(mxShapeAws4GroupCenter.prototype.cst.GROUP_CENTER, mxShapeAws4GroupCenter); + +////********************************************************************************************************************************************************** +////Resource Icon +////********************************************************************************************************************************************************** +///** +//* Extends mxShape. +//*/ +//function mxShapeAws4ResourceIcon(bounds, fill, stroke, strokewidth) +//{ +// mxShape.call(this); +// this.bounds = bounds; +// this.fill = fill; +// this.stroke = stroke; +// this.strokewidth = (strokewidth != null) ? strokewidth : 1; +//}; +// +///** +//* Extends mxShape. +//*/ +//mxUtils.extend(mxShapeAws4ResourceIcon, mxShape); +// +//mxShapeAws4ResourceIcon.prototype.cst = { +// RESOURCE_ICON : 'mxgraph.aws4.resourceIcon' +//}; +// +///** +//* Function: paintVertexShape +//* +//* Paints the vertex shape. +//*/ +//mxShapeAws4ResourceIcon.prototype.paintVertexShape = function(c, x, y, w, h) +//{ +// c.translate(x, y); +// +// c.begin(); +// c.moveTo(0, 0); +// c.lineTo(w, 0); +// c.lineTo(w, h); +// c.lineTo(0, h); +// c.close(); +// c.fillAndStroke(); +// +// var prIcon = mxUtils.getValue(this.state.style, 'resIcon', ''); +// var stencil = mxStencilRegistry.getStencil(prIcon); +// +// if (stencil != null) +// { +// var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); +// c.setFillColor(strokeColor); +// c.setStrokeColor('none'); +// stencil.drawShape(c, this, w * 0.1, h * 0.1, w * 0.8, h * 0.8); +// } +// +//}; + +//********************************************************************************************************************************************************** +//Group2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAws4Group2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAws4Group2, mxShape); + +mxShapeAws4Group2.prototype.cst = { + GROUP2 : 'mxgraph.aws4.group2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAws4Group2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var size = 25; + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(size, 0); + c.lineTo(size, size); + c.lineTo(0, size); + c.close(); + c.fill(); + + var grIcon = mxUtils.getValue(this.state.style, 'grIcon', ''); + var stencil = mxStencilRegistry.getStencil(grIcon); + + if (stencil != null) + { + c.setFillColor('#ffffff'); + c.setStrokeColor('none'); + stencil.drawShape(c, this, size * 0.1, size * 0.1, size * 0.8, size * 0.8); + } + +}; + +mxCellRenderer.registerShape(mxShapeAws4Group2.prototype.cst.GROUP2, mxShapeAws4Group2); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxAndroid.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAndroid.js new file mode 100644 index 0000000000000..c119435976acc --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAndroid.js @@ -0,0 +1,1510 @@ +/** + * $Id: mxAndroid.js,v 1.5 2014/01/21 12:32:06 mate Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Horizontal Tab Bar (LEGACY) +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeAndroidTabBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeAndroidTabBar, mxShape); + +mxShapeAndroidTabBar.prototype.cst = { + MAIN_TEXT : 'mainText', + SHAPE_TAB_BAR : 'mxgraph.android.tabBar', + TEXT_COLOR : 'textColor', + TEXT_COLOR2 : 'textColor2', + STROKE_COLOR2 : 'strokeColor2', + FILL_COLOR2 : 'fillColor2', + SELECTED : '+', //must be 1 char + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeAndroidTabBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.MAIN_TEXT, '+Tab 1, Tab 2, Tab 3').toString().split(','); + var fontColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_COLOR, 'none'); + var selectedFontColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_COLOR2, 'none'); + var fontSize = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.TEXT_SIZE, '17').toString(); + var frameColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var separatorColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.STROKE_COLOR2, 'none'); + var bgColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + var selectedFillColor = mxUtils.getValue(this.style, mxShapeAndroidTabBar.prototype.cst.FILL_COLOR2, 'none'); + var buttonNum = textStrings.length; + var buttonWidths = new Array(buttonNum); + var buttonTotalWidth = 0; + var selectedButton = -1; + var labelOffset = 5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + if(buttonText.charAt(0) === mxShapeAndroidTabBar.prototype.cst.SELECTED) + { + buttonText = textStrings[i].substring(1); + selectedButton = i; + } + + buttonWidths[i] = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + buttonTotalWidth += buttonWidths[i]; + } + + var trueH = Math.max(h, fontSize * 1.5, 7); + var minW = 2 * labelOffset * buttonNum + buttonTotalWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + this.background(c, trueW, trueH, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton); + c.setShadow(false); + + c.setFontStyle(mxConstants.FONT_BOLD); + var currWidth = 0; + + for (var i = 0; i < buttonNum; i++) + { + if (i === selectedButton) + { + c.setFontColor(selectedFontColor); + } + else + { + c.setFontColor(fontColor); + } + + currWidth = currWidth + labelOffset; + this.buttonText(c, currWidth, trueH, textStrings[i], buttonWidths[i], fontSize, minW, trueW); + currWidth = currWidth + buttonWidths[i] + labelOffset; + } +}; + +mxShapeAndroidTabBar.prototype.background = function(c, w, h, buttonNum, buttonWidths, labelOffset, minW, frameColor, separatorColor, bgColor, selectedFillColor, selectedButton) +{ + c.begin(); + + //draw the frame + c.setStrokeColor(frameColor); + c.setFillColor(bgColor); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + //draw the button separators + c.setStrokeColor(separatorColor); + c.begin(); + for (var i = 1; i < buttonNum; i++) + { + if (i !== selectedButton && i !== (selectedButton + 1)) + { + var currWidth = 0; + + for (var j = 0; j < i; j++) + { + currWidth += buttonWidths[j] + 2 * labelOffset; + } + + currWidth = currWidth * w / minW; + c.moveTo(currWidth, h * 0.2); + c.lineTo(currWidth, h * 0.8); + } + } + + c.stroke(); + + //draw the selected button + var buttonLeft = 0; + c.setFillColor(selectedFillColor); + + for (var i = 0; i < selectedButton; i++) + { + buttonLeft += buttonWidths[i] + 2 * labelOffset; + } + + buttonLeft = buttonLeft * w / minW; + var buttonRight = (buttonWidths[selectedButton] + 2 * labelOffset) * w / minW; + buttonRight += buttonLeft; + + c.rect(buttonLeft, 0, buttonRight - buttonLeft, h); + c.fill(); + + c.setAlpha(1); + c.setFillColor('#33b5e5'); + c.rect(buttonLeft, h * 0.9, buttonRight - buttonLeft, h * 0.1); + c.fill(); +}; + +mxShapeAndroidTabBar.prototype.buttonText = function(c, w, h, textString, buttonWidth, fontSize, minW, trueW) +{ + if(textString.charAt(0) === mxShapeAndroidTabBar.prototype.cst.SELECTED) + { + textString = textString.substring(1); + } + + c.begin(); + c.setFontSize(fontSize); + c.text((w + buttonWidth * 0.5) * trueW / minW, h * 0.5, 0, 0, textString, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeAndroidTabBar.prototype.cst.SHAPE_TAB_BAR, mxShapeAndroidTabBar); + +//********************************************************************************************************************************************************** +//Android Phone Vertical +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidPhone(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidPhone, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidPhone.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 25; + + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + + c.setShadow(false); + + this.foreground(c, x, y, w, h, rSize); +}; + +mxShapeAndroidPhone.prototype.foreground = function(c, x, y, w, h, rSize) +{ + c.rect(w * 0.0625, h * 0.15, w * 0.875, h * 0.7); + c.stroke(); + + c.ellipse(w * 0.4875, h * 0.04125, w * 0.025, h * 0.0125); + c.stroke(); + + c.roundrect(w * 0.375, h * 0.075, w * 0.25, h * 0.01875, w * 0.02, h * 0.01); + c.stroke(); + c.ellipse(w * 0.4, h * 0.875, w * 0.2, h * 0.1); + c.stroke(); + c.roundrect(w * 0.4575, h * 0.905, w * 0.085, h * 0.04375, h * 0.00625, h * 0.00625); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.android.phone', mxShapeAndroidPhone); + +//********************************************************************************************************************************************************** +//Android Status Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidStatusBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidStatusBar, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidStatusBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeAndroidStatusBar.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); +}; + +mxShapeAndroidStatusBar.prototype.foreground = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fill(); + + c.setFontColor(mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#222222')); + c.setFontSize(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '5')); + c.text(w - 30, h * 0.5 + 1, 0, 0, '12:00', mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFillColor('#444444'); + c.begin(); + c.moveTo(w - 37, h * 0.5 + 6); + c.lineTo(w - 37, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 5); + c.lineTo(w - 36, h * 0.5 - 6); + c.lineTo(w - 32, h * 0.5 - 6); + c.lineTo(w - 32, h * 0.5 - 5); + c.lineTo(w - 31, h * 0.5 - 5); + c.lineTo(w - 31, h * 0.5 + 6); + c.close(); + c.fill(); + + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none')); + c.ellipse(w - 56, h * 0.5 + 2, 2, 2); + c.fillAndStroke(); + + c.setStrokeWidth(2); + c.begin(); + c.moveTo(w - 52, h * 0.5 + 1); + c.arcTo(3.5, 3.5, 0, 0, 0, w - 58, h * 0.5 + 1); + c.stroke(); + + c.begin(); + c.moveTo(w - 50, h * 0.5 - 1); + c.arcTo(6, 6, 0, 0, 0, w - 60, h * 0.5 - 1); + c.stroke(); + + c.setStrokeWidth(1); + + c.rect(w - 51, h * 0.5 + 5, 2, 1); + c.fill(); + + c.rect(w - 48, h * 0.5 + 2, 2, 4); + c.fill(); + + c.rect(w - 45, h * 0.5 - 1, 2, 7); + c.fill(); + + c.rect(w - 42, h * 0.5 - 4, 2, 10); + c.fill(); + + c.rect(w - 37, h * 0.5 - 2, 6, 8); + c.fill(); + +}; + +mxCellRenderer.registerShape('mxgraph.android.statusBar', mxShapeAndroidStatusBar); + +//********************************************************************************************************************************************************** +//Checkbox Button Group +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidCheckboxGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidCheckboxGroup, mxShape); + +mxShapeAndroidCheckboxGroup.prototype.cst = { + STYLE_TEXTCOLOR2 : 'textColor2', + STYLE_STROKECOLOR2 : 'strokeColor2', + BUTTON_TEXT : 'buttonText', + SELECTED : '+' //has to be one character long +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidCheckboxGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeAndroidCheckboxGroup.prototype.cst.BUTTON_TEXT, 'Option 1').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeAndroidCheckboxGroup.prototype.cst.STYLE_STROKECOLOR2, 'none'); + + c.setStrokeColor(strokeColor2); + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeAndroidCheckboxGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setStrokeColor(strokeColor); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeAndroidCheckboxGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + + if (selected === i) + { + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + c.begin(); + c.moveTo(iconX + buttonSize * 0.25, iconY + buttonSize * 0.5); + c.lineTo(iconX + buttonSize * 0.5, iconY + buttonSize * 0.75); + c.lineTo(iconX + buttonSize * 0.75, iconY + buttonSize * 0.25); + c.stroke(); + } + else + { + c.rect(iconX, iconY, buttonSize, buttonSize); + c.fillAndStroke(); + } + + selected = -1; + } +}; + +mxCellRenderer.registerShape('mxgraph.android.checkboxGroup', mxShapeAndroidCheckboxGroup); + +//********************************************************************************************************************************************************** +//Radio Button Group +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidRadioGroup(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidRadioGroup, mxShape); + +mxShapeAndroidRadioGroup.prototype.cst = { + STYLE_TEXTCOLOR2 : 'textColor2', + STYLE_STROKECOLOR2 : 'strokeColor2', + BUTTON_TEXT : 'buttonText', + SELECTED : '+' //has to be one character long +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidRadioGroup.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_TEXTCOLOR, '#666666'); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8').toString(); + var optionText = mxUtils.getValue(this.style, mxShapeAndroidRadioGroup.prototype.cst.BUTTON_TEXT, 'Option 1').toString().split(','); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + var strokeColor2 = mxUtils.getValue(this.style, mxShapeAndroidRadioGroup.prototype.cst.STYLE_STROKECOLOR2, 'none'); + + c.setStrokeColor(strokeColor2); + + var optionNum = optionText.length; + var buttonSize = 5; + var lineH = Math.max(fontSize * 1.5, buttonSize); + var maxTextWidth = 0; + var selected = -1; + var labelOffset = 2.5; + var minH = optionNum * lineH; + var trueH = Math.max(h, minH); + + //get min width and selected option + for (var i = 0; i < optionNum; i++) + { + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeAndroidRadioGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + var currWidth = mxUtils.getSizeForString(currText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxTextWidth) + { + maxTextWidth = currWidth; + } + } + + var minW = 2 * labelOffset + maxTextWidth + 2 * buttonSize; + var trueW = Math.max(w, minW); + + //draw the background + c.roundrect(0, 0, trueW, trueH, 2.5, 2.5); + c.fillAndStroke(); + c.setShadow(false); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + c.setStrokeColor(strokeColor); + c.setFillColor(strokeColor); + + for (var i = 0; i < optionNum; i++) + { + var currHeight = (i * lineH + lineH * 0.5) * trueH / minH; + + var currText = optionText[i]; + + if(currText.charAt(0) === mxShapeAndroidRadioGroup.prototype.cst.SELECTED) + { + currText = optionText[i].substring(1); + selected = i; + } + + c.text(buttonSize * 2 + labelOffset, currHeight, 0, 0, currText, mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + var iconX = buttonSize * 0.5; + var iconY = currHeight - buttonSize * 0.5; + + if (selected === i) + { + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.stroke(); + c.ellipse(iconX + buttonSize * 0.25, iconY + buttonSize * 0.25, buttonSize * 0.5, buttonSize * 0.5); + c.fillAndStroke(); + } + else + { + c.ellipse(iconX, iconY, buttonSize, buttonSize); + c.stroke(); + } + } +}; + +mxCellRenderer.registerShape('mxgraph.android.radioGroup', mxShapeAndroidRadioGroup); + +//********************************************************************************************************************************************************** +//Menu Bar (LEGACY) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidMenuBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidMenuBar, mxShape); + +mxShapeAndroidMenuBar.prototype.cst = { + MENU_TEXT : 'menuText' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidMenuBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var textStrings = mxUtils.getValue(this.style, mxShapeAndroidMenuBar.prototype.cst.MENU_TEXT, 'Item 1, Item 2, Item 3').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12'); + var buttonNum = textStrings.length; + var maxButtonWidth = 0; + var labelOffset = 2.5; + + for (var i = 0; i < buttonNum; i++) + { + var buttonText = textStrings[i]; + + var currWidth = mxUtils.getSizeForString(buttonText, fontSize, mxConstants.DEFAULT_FONTFAMILY).width; + + if (currWidth > maxButtonWidth) + { + maxButtonWidth = currWidth; + } + } + + var minButtonHeight = fontSize * 1.5; + var minH = buttonNum * minButtonHeight; + var trueH = Math.max(h, minH); + var minW = 2 * labelOffset + maxButtonWidth; + var trueW = Math.max(w, minW); + + c.translate(x, y); + + c.rect(0, 0, w, trueH); + c.fillAndStroke(); + + c.setShadow(false); + + //draw the button separators + c.begin(); + + for (var i = 1; i < buttonNum; i++) + { + var currHeight = i * minButtonHeight * trueH / minH; + c.moveTo(0, currHeight); + c.lineTo(w, currHeight); + } + + c.stroke(); + + for (var i = 0; i < buttonNum; i++) + { + currWidth = currWidth + labelOffset; + var currHeight = (i * minButtonHeight + minButtonHeight * 0.5) * trueH / minH; + c.text(10, currHeight, 0, 0, textStrings[i], mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.android.menuBar', mxShapeAndroidMenuBar); + +//********************************************************************************************************************************************************** +//Text Selection Handles +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidTextSelHandles(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidTextSelHandles, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidTextSelHandles.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + c.translate(x, y); + + var handleSizeX = 15; + var barH = Math.max(0, h - handleSizeX * 1.5); + c.setAlpha(0.5); + + c.rect(handleSizeX, 0, w - 2 * handleSizeX, barH); + c.fill(); + + c.begin(); + c.moveTo(0, h - handleSizeX); + c.lineTo(handleSizeX * 0.5, h - handleSizeX * 1.5); + c.lineTo(handleSizeX, h - handleSizeX); + c.close(); + c.moveTo(w - handleSizeX, h - handleSizeX); + c.lineTo(w - handleSizeX * 0.5, h - handleSizeX * 1.5); + c.lineTo(w, h - handleSizeX); + c.close(); + c.fill(); + + c.setFillColor(strokeColor); + c.rect(0, h - handleSizeX, handleSizeX, handleSizeX); + c.fill(); + c.rect(w - handleSizeX, h - handleSizeX, handleSizeX, handleSizeX); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.android.textSelHandles', mxShapeAndroidTextSelHandles); + +//********************************************************************************************************************************************************** +//Android Indeterminate Spinner +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidIndeterminateSpinner(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidIndeterminateSpinner, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidIndeterminateSpinner.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeAndroidIndeterminateSpinner.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#aaaaaa', '#dddddd', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 0, w * 0.5, h * 0.9); + c.lineTo(w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.close(); + c.fill(); + + c.setGradient('#ffffff', '#dddddd', w * 0.325, 0, w * 0.675, h * 0.5, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.arcTo(w * 0.4, h * 0.4, 0, 0, 1, w * 0.5, h * 0.9); + c.lineTo(w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 0, w * 0.5, 0); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.android.indeterminateSpinner', mxShapeAndroidIndeterminateSpinner); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidAnchor, mxShape); + +mxShapeAndroidAnchor.prototype.cst = { + ANCHOR : 'mxgraph.android.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeAndroidAnchor.prototype.cst.ANCHOR, mxShapeAndroidAnchor); + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidRRect, mxShape); + +mxShapeAndroidRRect.prototype.cst = { + RRECT : 'mxgraph.android.rrect', + R_SIZE : 'rSize' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeAndroidRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidRRect.prototype.cst.RRECT, mxShapeAndroidRRect); + +//********************************************************************************************************************************************************** +//Checkbox +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidCheckbox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidCheckbox, mxShape); + +mxShapeAndroidCheckbox.prototype.cst = { + CHECKBOX : 'mxgraph.android.checkbox' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidCheckbox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidCheckbox.prototype.cst.CHECKBOX, mxShapeAndroidCheckbox); + +//********************************************************************************************************************************************************** +//Progress Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidProgressBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx1 = 0.8; + this.dx2 = 0.6; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidProgressBar, mxShape); + +mxShapeAndroidProgressBar.prototype.customProperties = [ + {name: 'dx1', dispName: 'Middle Bar Length', type: 'float', min:0, max:1, defVal:0.8}, + {name: 'dx2', dispName: 'Left Bar Length', type: 'float', min:0, max:1, defVal:0.6} +]; + +mxShapeAndroidProgressBar.prototype.cst = { + PROGRESS_BAR : 'mxgraph.android.progressBar' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidProgressBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + + c.translate(x, y); + + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w , h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); + + c.setStrokeColor('#000000'); + c.setAlpha('0.2'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx2, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressBar.prototype.cst.PROGRESS_BAR, mxShapeAndroidProgressBar); + +mxShapeAndroidProgressBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressBar.prototype.cst.PROGRESS_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1'], function(bounds) + { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx1)))); + + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + + handles.push(handle2); + + return handles; +} + +//********************************************************************************************************************************************************** +//Progress Scrubber Disabled +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidProgressScrubberDisabled(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.3; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidProgressScrubberDisabled, mxShape); + +mxShapeAndroidProgressScrubberDisabled.prototype.customProperties = [ + {name: 'dx', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:0.3} +]; + +mxShapeAndroidProgressScrubberDisabled.prototype.cst = { + PROGRESS_SCRUBBER_DISABLED : 'mxgraph.android.progressScrubberDisabled' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidProgressScrubberDisabled.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.translate(x, y); + + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.setAlpha('0.5'); + c.setFillColor('#666666'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + + c.restore(); + c.setShadow(false); + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberDisabled.prototype.cst.PROGRESS_SCRUBBER_DISABLED, mxShapeAndroidProgressScrubberDisabled); + +mxShapeAndroidProgressScrubberDisabled.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberDisabled.prototype.cst.PROGRESS_SCRUBBER_DISABLED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Progress Scrubber Focused +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidProgressScrubberFocused(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.3; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidProgressScrubberFocused, mxShape); + +mxShapeAndroidProgressScrubberFocused.prototype.customProperties = [ + {name: 'dx', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:0.3} +]; + +mxShapeAndroidProgressScrubberFocused.prototype.cst = { + PROGRESS_SCRUBBER_FOCUSED : 'mxgraph.android.progressScrubberFocused' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidProgressScrubberFocused.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + + c.translate(x, y); + + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.setAlpha('0.75'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx, h * 0.5); + c.stroke(); + + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberFocused.prototype.cst.PROGRESS_SCRUBBER_FOCUSED, mxShapeAndroidProgressScrubberFocused); + +mxShapeAndroidProgressScrubberFocused.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberFocused.prototype.cst.PROGRESS_SCRUBBER_FOCUSED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Progress Scrubber Pressed +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidProgressScrubberPressed(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.3; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidProgressScrubberPressed, mxShape); + +mxShapeAndroidProgressScrubberPressed.prototype.customProperties = [ + {name: 'dx', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:0.3} +]; + +mxShapeAndroidProgressScrubberPressed.prototype.cst = { + PROGRESS_SCRUBBER_PRESSED : 'mxgraph.android.progressScrubberPressed' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidProgressScrubberPressed.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + + c.translate(x, y); + + c.save(); + c.save(); + c.setStrokeColor('#444444'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + c.setAlpha('0.5'); + c.begin(); + var r = Math.min(h, w * 0.1) / 2; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fillAndStroke(); + + c.restore(); + c.setShadow(false); + c.setStrokeColor(fillColor); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx, h * 0.5); + c.stroke(); + + c.begin(); + var r = Math.min(h, w * 0.1) / 8; + c.ellipse(dx - r, h * 0.5 - r, 2 * r, 2 * r); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeAndroidProgressScrubberPressed.prototype.cst.PROGRESS_SCRUBBER_PRESSED, mxShapeAndroidProgressScrubberPressed); + +mxShapeAndroidProgressScrubberPressed.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidProgressScrubberPressed.prototype.cst.PROGRESS_SCRUBBER_PRESSED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Quickscroll +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidQuickscroll2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidQuickscroll2, mxShape); + +mxShapeAndroidQuickscroll2.prototype.customProperties = [ + {name: 'dy', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:0.5} +]; + +mxShapeAndroidQuickscroll2.prototype.cst = { + QUICKSCROLL : 'mxgraph.android.quickscroll2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidQuickscroll2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dy = Math.min(h - 20, Math.max(20, h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + + c.translate(x, y); + + c.save(); + c.save(); + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w - 3, 0); + c.lineTo(w - 3, h); + c.stroke(); + + c.restore(); + c.begin(); + c.roundrect(w - 6, dy - 10, 6, 20, 1, 1); + c.fillAndStroke(); + + c.setFillColor('#cccccc'); + c.begin(); + c.rect(0, dy - 20, w - 18, 40); + c.fill(); + + c.setFillColor('#666666'); + c.begin(); + c.moveTo(w - 18, dy - 20); + c.lineTo(w - 6, dy); + c.lineTo(w - 18, dy + 20); + c.close(); + c.fill(); + + c.setFontSize('12'); + c.text((w - 18) * 0.5, dy, 0, 0, 'Aa', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeAndroidQuickscroll2.prototype.cst.QUICKSCROLL, mxShapeAndroidQuickscroll2); + +mxShapeAndroidQuickscroll2.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidQuickscroll2.prototype.cst.QUICKSCROLL] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - 3, bounds.y + Math.min(bounds.height - 20, Math.max(20, dy * bounds.height))); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Quickscroll2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidQuickscroll3(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidQuickscroll3, mxShape); + +mxShapeAndroidQuickscroll3.prototype.customProperties = [ + {name: 'dy', dispName: 'Handle Position', type: 'float', min:0, max:1, defVal:0.5} +]; + +mxShapeAndroidQuickscroll3.prototype.cst = { + QUICKSCROLL : 'mxgraph.android.quickscroll3' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidQuickscroll3.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dy = Math.min(h - 10, Math.max(10, h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))))); + var fillColor = mxUtils.getValue(this.style, 'fillColor', '#ffffff'); + + c.translate(x, y); + + c.save(); + c.setStrokeColor('#cccccc'); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.restore(); + c.begin(); + c.roundrect(w * 0.5 - 3, dy - 10, 6, 20, 1, 1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidQuickscroll3.prototype.cst.QUICKSCROLL, mxShapeAndroidQuickscroll3); + +mxShapeAndroidQuickscroll3.prototype.constraints = null; + +Graph.handleFactory[mxShapeAndroidQuickscroll3.prototype.cst.QUICKSCROLL] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + Math.min(bounds.height - 10, Math.max(10, dy * bounds.height))); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Scrollbars +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidScrollbars2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidScrollbars2, mxShape); + +mxShapeAndroidScrollbars2.prototype.cst = { + SCROLLBARS : 'mxgraph.android.scrollbars2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidScrollbars2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + + c.begin(); + c.rect(w - 5, 0, 5, h - 7); + c.fillAndStroke(); + + c.begin(); + c.rect(0, h - 5, w - 7, 5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidScrollbars2.prototype.cst.SCROLLBARS, mxShapeAndroidScrollbars2); + +mxShapeAndroidScrollbars2.prototype.constraints = null; + +//********************************************************************************************************************************************************** +//Spinner +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeAndroidSpinner2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeAndroidSpinner2, mxShape); + +mxShapeAndroidSpinner2.prototype.cst = { + SPINNER : 'mxgraph.android.spinner2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeAndroidSpinner2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); + + var s = Math.min(w / 10, h) + c.begin(); + c.moveTo(w - s, h); + c.lineTo(w, h - s); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeAndroidSpinner2.prototype.cst.SPINNER, mxShapeAndroidSpinner2); + +mxShapeAndroidSpinner2.prototype.constraints = null; + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate.js new file mode 100644 index 0000000000000..0861d4ab9bee8 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate.js @@ -0,0 +1,1220 @@ +/** + * $Id: mxArchiMate.js,v 1.0 2014/03/17 07:05:39 mate Exp $ + * Copyright (c) 2006-2014, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Location +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateLocation(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateLocation, mxShape); + +mxArchiMateLocation.prototype.cst = { + LOCATION : 'mxgraph.archimate.location' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateLocation.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateLocation.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateLocation.prototype.foreground = function(c, x, y, w, h) +{ + c.setDashed(false); + + c.translate(3 ,0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateLocation.prototype.cst.LOCATION, mxArchiMateLocation); + +mxArchiMateLocation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Business +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateBusiness(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateBusiness, mxShape); + +mxArchiMateBusiness.prototype.cst = { + BUSINESS : 'mxgraph.archimate.business', + TYPE : 'busType', + PROCESS : 'process', + FUNCTION : 'function', + INTERACTION : 'interaction', + EVENT : 'event', + SERVICE : 'service' +}; + +mxArchiMateBusiness.prototype.customProperties = [ + {name: 'busType', dispName: 'Business Type', type: 'enum', + enumList: [{val: 'process', dispName: 'Process'}, + {val: 'function', dispName: 'Function'}, + {val: 'interaction', dispName: 'Interaction'}, + {val: 'event', dispName: 'Event'}, + {val: 'service', dispName: 'Service'}] + } +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateBusiness.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateBusiness.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxArchiMateBusiness.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMateBusiness.prototype.cst.TYPE, mxArchiMateBusiness.prototype.cst.PROCESS); + + c.setDashed(false); + + if (type === mxArchiMateBusiness.prototype.cst.PROCESS) + { + c.translate(0, 2); + h = h - 4; + + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w * 0.65, h * 0.15); + c.lineTo(w * 0.65, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.65, h); + c.lineTo(w * 0.65, h * 0.85); + c.lineTo(0, h * 0.85); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateBusiness.prototype.cst.FUNCTION) + { + c.translate(2, 0); + w = w - 4; + + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.15); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.85); + c.lineTo(0, h); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateBusiness.prototype.cst.INTERACTION) + { + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateBusiness.prototype.cst.EVENT) + { + c.translate(0, 3); + h = h - 6; + + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 0, 0, 0); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateBusiness.prototype.cst.SERVICE) + { + c.translate(0, 3); + h = h - 6; + + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, 0, 0); + c.close(); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateBusiness.prototype.cst.BUSINESS, mxArchiMateBusiness); + +mxArchiMateBusiness.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Business Object +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateBusinessObject(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateBusinessObject, mxShape); + +mxArchiMateBusinessObject.prototype.cst = { + BUSINESS_OBJECT : 'mxgraph.archimate.businessObject' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateBusinessObject.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMateBusinessObject.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateBusinessObject.prototype.foreground = function(c, x, y, w, h) +{ + if (h >= 15) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateBusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMateBusinessObject); + +mxArchiMateBusinessObject.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Representation +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateRepresentation(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateRepresentation, mxShape); + +mxArchiMateRepresentation.prototype.cst = { + REPRESENTATION : 'mxgraph.archimate.representation' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateRepresentation.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMateRepresentation.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateRepresentation.prototype.cst.REPRESENTATION, mxArchiMateRepresentation); + +mxArchiMateRepresentation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Product +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateProduct(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateProduct, mxShape); + +mxArchiMateProduct.prototype.cst = { + PRODUCT : 'mxgraph.archimate.product' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateProduct.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMateProduct.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateProduct.prototype.foreground = function(c, x, y, w, h) +{ + if (h >= 15) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w * 0.6, 15); + c.lineTo(w * 0.6, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateProduct.prototype.cst.PRODUCT, mxArchiMateProduct); + +//********************************************************************************************************************************************************** +//Application +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateApplication(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateApplication, mxShape); + +mxArchiMateApplication.prototype.cst = { + APPLICATION : 'mxgraph.archimate.application', + TYPE : 'appType', + COMPONENT : 'comp', + INTERFACE : 'interface', + INTERFACE2 : 'interface2', + FUNCTION : 'function', + INTERACTION : 'interaction', + SERVICE : 'service', + NODE : 'node', + NETWORK : 'network', + COMM_PATH : 'commPath', + SYS_SW : 'sysSw', + ARTIFACT : 'artifact', + ACTOR : 'actor', + ROLE : 'role', + COLLABORATION : 'collab' +}; + +mxArchiMateApplication.prototype.customProperties = [ + {name: 'appType', dispName: 'App Type', type: 'enum', + enumList: [{val: 'comp', dispName: 'Component'}, + {val: 'interface', dispName: 'Interface'}, + {val: 'interface2', dispName: 'Interface2'}, + {val: 'function', dispName: 'Function'}, + {val: 'interaction', dispName: 'Interaction'}, + {val: 'service', dispName: 'Service'}, + {val: 'node', dispName: 'Node'}, + {val: 'network', dispName: 'Network'}, + {val: 'commPath', dispName: 'Comm Path'}, + {val: 'artifact', dispName: 'Artifact'}, + {val: 'sysSw', dispName: 'System Sw'}, + {val: 'path', dispName: 'Path'}, + {val: 'actor', dispName: 'Actor'}, + {val: 'role', dispName: 'Role'}, + {val: 'collab', dispName: 'Collaboration'}] + } +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateApplication.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateApplication.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMateApplication.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMateApplication.prototype.cst.TYPE, mxArchiMateApplication.prototype.cst.COMPONENT); + + c.setDashed(false); + + if (type === mxArchiMateApplication.prototype.cst.COMPONENT) + { + c.translate(1, 0); + w = w - 2; + + c.rect(w * 0.25, 0, w * 0.75, h); + c.stroke(); + + c.rect(0, h * 0.25, w * 0.5, h * 0.15); + c.fillAndStroke(); + + c.rect(0, h * 0.6, w * 0.5, h * 0.15); + c.fillAndStroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.COLLABORATION) + { + c.translate(0, 3); + h = h - 6; + + c.ellipse(0, 0, w * 0.6, h); + c.stroke(); + c.ellipse(w * 0.4, 0, w * 0.6, h); + c.fillAndStroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.INTERFACE) + { + c.translate(0, 4); + h = h - 8; + + c.ellipse(w * 0.5, 0, w * 0.5, h); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.INTERFACE2) + { + c.translate(0, 1); + h = h - 2; + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.6, h * 0.5); + c.moveTo(w, 0); + c.arcTo(w * 0.4, h * 0.5, 0, 0, 0, w, h); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.FUNCTION) + { + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, h * 0.2); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.8); + c.lineTo(0, h); + c.lineTo(0, h * 0.2); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.INTERACTION) + { + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.SERVICE) + { + c.translate(0, 3); + h = h - 6; + + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, 0, 0); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.NODE) + { + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w * 0.75, h); + c.moveTo(w, 0); + c.lineTo(w * 0.75, h * 0.25); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.NETWORK) + { + c.translate(0, 2); + h = h - 4; + + c.begin(); + c.moveTo(w * 0.4, h * 0.2); + c.lineTo(w * 0.85, h * 0.2); + c.lineTo(w * 0.6, h * 0.8); + c.lineTo(w * 0.15, h * 0.8); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.ellipse(w * 0.25, 0, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(w * 0.7, 0, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(0, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(w * 0.45, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + } + else if (type === mxArchiMateApplication.prototype.cst.COMM_PATH) + { + c.translate(0, 5); + h = h - 10; + + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.1, h); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); + + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.SYS_SW) + { + c.ellipse(w * 0.3, 0, w * 0.7, h * 0.7); + c.stroke(); + + c.ellipse(0, h * 0.02, w * 0.98, h * 0.98); + c.fillAndStroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.ARTIFACT) + { + c.translate(2, 0); + w = w - 4; + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); + } + else if (type === mxArchiMateApplication.prototype.cst.ACTOR) + { + c.translate(3, 0); + w = w - 6; + c.ellipse(w * 0.2, 0, w * 0.6, h * 0.3); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(0, h * 0.45); + c.lineTo(w, h * 0.45); + c.moveTo(0, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w, h); + c.stroke(); + } + if (type === mxArchiMateApplication.prototype.cst.ROLE) + { + c.translate(0, 4); + h = h - 8; + + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.stroke(); + + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateApplication.prototype.cst.APPLICATION, mxArchiMateApplication); + +mxArchiMateApplication.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Tech +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateTech(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateTech, mxShape); + +mxArchiMateTech.prototype.cst = { + TECH : 'mxgraph.archimate.tech', + TYPE : 'techType', + DEVICE : 'device', + PLATEAU : 'plateau' +}; + +mxArchiMateTech.prototype.customProperties = [ + {name: 'techType', dispName: 'Tech Type', type: 'enum', + enumList: [{val: 'device', dispName: 'Device'}, + {val: 'plateau', dispName: 'Plateau'}] + } +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateTech.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 30, 15); + this.foreground(c, w - 30, 15, 15, 15); +}; + +mxArchiMateTech.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w, 0); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, 10); + c.lineTo(w - 10, 10); + c.lineTo(w - 10, h); + c.moveTo(w, 0); + c.lineTo(w - 10, 10); + c.fillAndStroke(); +}; + +mxArchiMateTech.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMateTech.prototype.cst.TYPE, mxArchiMateTech.prototype.cst.DEVICE); + + c.setDashed(false); + + if (type === mxArchiMateTech.prototype.cst.DEVICE) + { + c.roundrect(0, 0, w, h * 0.88, w * 0.05, h * 0.05); + c.stroke(); + c.begin(); + c.moveTo(w * 0.1, h * 0.88); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w * 0.9, h * 0.88); + c.stroke(); + } + else if (type === mxArchiMateTech.prototype.cst.PLATEAU) + { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.rect(w * 0.4, 0, w * 0.6, h * 0.2); + c.fill(); + + c.rect(w * 0.2, h * 0.4, w * 0.6, h * 0.2); + c.fill(); + + c.rect(0, h * 0.8, w * 0.6, h * 0.2); + c.fill(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateTech.prototype.cst.TECH, mxArchiMateTech); + +mxArchiMateTech.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Motivational +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateMotivational(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateMotivational, mxShape); + +mxArchiMateMotivational.prototype.cst = { + MOTIV : 'mxgraph.archimate.motiv', + TYPE : 'motivType', + STAKE : 'stake', + DRIVER : 'driver', + ASSESSMENT : 'assess', + GOAL : 'goal', + REQUIREMENT : 'req', + CONSTRAINT : 'const', + PRINCIPLE : 'princ' +}; + +mxArchiMateMotivational.prototype.customProperties = [ + {name: 'motivType', dispName: 'Motivational Type', type: 'enum', + enumList: [{val: 'stake', dispName: 'Stake'}, + {val: 'driver', dispName: 'Driver'}, + {val: 'assess', dispName: 'Assessment'}, + {val: 'goal', dispName: 'Goal'}, + {val: 'req', dispName: 'Requirement'}, + {val: 'const', dispName: 'Constraint'}, + {val: 'princ', dispName: 'Principle'}] + } +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateMotivational.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateMotivational.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(10, 0); + c.lineTo(w - 10, 0); + c.lineTo(w, 10); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(10, h); + c.lineTo(0, h - 10); + c.lineTo(0, 10); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMateMotivational.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMateMotivational.prototype.cst.TYPE, mxArchiMateMotivational.prototype.cst.STAKE); + + c.setDashed(false); + + if (type === mxArchiMateMotivational.prototype.cst.STAKE) + { + c.translate(0, 4); + h = h - 8; + + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.stroke(); + + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.stroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.DRIVER) + { + c.ellipse(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.145, h * 0.855); + c.lineTo(w * 0.855, h * 0.145); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.ellipse(w * 0.35, h * 0.35, w * 0.3, h * 0.3); + c.fillAndStroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.ASSESSMENT) + { + c.ellipse(w * 0.2, 0, w * 0.8, h * 0.8); + c.stroke(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.32, h * 0.68); + c.stroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.GOAL) + { + c.ellipse(0, 0, w, h); + c.stroke(); + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.3, h * 0.3, w * 0.4, h * 0.4); + c.fillAndStroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.REQUIREMENT) + { + c.translate(0, 4); + h = h - 8; + + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.stroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.CONSTRAINT) + { + c.translate(0, 4); + h = h - 8; + + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.lineTo(w * 0.2, h); + c.stroke(); + } + else if (type === mxArchiMateMotivational.prototype.cst.PRINCIPLE) + { + c.begin(); + c.moveTo(w * 0.05, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.05); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.42, h * 0.15); + c.lineTo(w * 0.58, h * 0.15); + c.lineTo(w * 0.55, h * 0.7); + c.close(); + c.fill(); + + c.rect(w * 0.45, h * 0.75, w * 0.1, h * 0.1); + c.fill(); + } +}; + +mxCellRenderer.registerShape(mxArchiMateMotivational.prototype.cst.MOTIV, mxArchiMateMotivational); + +mxArchiMateMotivational.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Gap +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMateGap(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMateGap, mxShape); + +mxArchiMateGap.prototype.cst = { + GAP : 'mxgraph.archimate.gap' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMateGap.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMateGap.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMateGap.prototype.foreground = function(c, x, y, w, h) +{ + c.setDashed(false); + + c.translate(0, 2); + h = h - 4; + + c.ellipse(w * 0.15, 0, w * 0.7, h); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.35); + c.lineTo(w, h * 0.35); + c.moveTo(0, h * 0.65); + c.lineTo(w, h * 0.65); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMateGap.prototype.cst.GAP, mxArchiMateGap); + +mxArchiMateGap.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false, null)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate3.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate3.js new file mode 100644 index 0000000000000..4849bcb7ac1f0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArchiMate3.js @@ -0,0 +1,2849 @@ +/** + * $Id: mxArchiMate3.js,v 1.0 2016/08/18 07:05:39 mate Exp $ + * Copyright (c) 2006-2016, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Application +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Application(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Application, mxShape); + +mxArchiMate3Application.prototype.cst = { + APPLICATION : 'mxgraph.archimate3.application', + TYPE : 'appType', + COMPONENT : 'comp', + COLLABORATION : 'collab', + INTERFACE : 'interface', + INTERFACE2 : 'interface2', + LOCATION : 'location', + FUNCTION : 'func', + INTERACTION : 'interaction', + SERVICE : 'serv', + EVENT : 'event', + EVENT2 : 'event2', + NODE : 'node', + NETWORK : 'netw', + COMM_PATH : 'commPath', + ACTOR : 'actor', + ASSESSMENT : 'assess', + GOAL : 'goal', + OUTCOME : 'outcome', + ROLE : 'role', + PROCESS : 'proc', + DRIVER : 'driver', + PRINCIPLE : 'principle', + REQUIREMENT : 'requirement', + CONSTRAINT : 'constraint', + RESOURCE : 'resource', + CAPABILITY : 'capability', + COURSE : 'course', + MATERIAL : 'material', + DISTRIBUTION : 'distribution', + SYS_SW : 'sysSw', + ARTIFACT : 'artifact', + PATH : 'path', + ARCHI_TYPE : 'archiType', + TYPE_SQUARE : 'square', + TYPE_ROUNDED : 'rounded', + TYPE_OCT : 'oct' +}; + +mxArchiMate3Application.prototype.customProperties = [ + {name: 'archiType', dispName: 'Type', type: 'enum', + enumList: [{val: 'square', dispName: 'Square'}, + {val: 'rounded', dispName: 'Rounded'}, + {val: 'oct', dispName: 'Octagonal'}] + }, + {name: 'appType', dispName: 'App Type', type: 'enum', + enumList: [{val: 'comp', dispName: 'Component'}, + {val: 'collab', dispName: 'Collaboration'}, + {val: 'interface', dispName: 'Interface'}, + {val: 'interface2', dispName: 'Interface2'}, + {val: 'func', dispName: 'Function'}, + {val: 'interaction', dispName: 'Interaction'}, + {val: 'location', dispName: 'Location'}, + {val: 'serv', dispName: 'Service'}, + {val: 'event', dispName: 'Event'}, + {val: 'event2', dispName: 'Event2'}, + {val: 'node', dispName: 'Node'}, + {val: 'netw', dispName: 'Network'}, + {val: 'commPath', dispName: 'Comm Path'}, + {val: 'actor', dispName: 'Actor'}, + {val: 'assess', dispName: 'Assessment'}, + {val: 'goal', dispName: 'Goal'}, + {val: 'outcome', dispName: 'Outcome'}, + {val: 'role', dispName: 'Role'}, + {val: 'proc', dispName: 'Process'}, + {val: 'driver', dispName: 'Driver'}, + {val: 'principle', dispName: 'Principle'}, + {val: 'requirement', dispName: 'Requirement'}, + {val: 'constraint', dispName: 'Constraint'}, + {val: 'resource', dispName: 'Resource'}, + {val: 'capability', dispName: 'Capability'}, + {val: 'course', dispName: 'Course'}, + {val: 'material', dispName: 'Material'}, + {val: 'distribution', dispName: 'Distribution'}, + {val: 'sysSw', dispName: 'System Sw'}, + {val: 'artifact', dispName: 'Artifact'}, + {val: 'path', dispName: 'Path'}] +}]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Application.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Application.prototype.background = function(c, x, y, w, h) +{ + var archiType = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.ARCHI_TYPE, 'square'); + + if (archiType === 'rounded') + { + c.roundrect(0, 0, w, h, 10, 10); + } + else if ((archiType === 'oct') && w >= 20 && h >= 20) + { + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w - 10, 0); + c.lineTo(w, 10); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(10, h); + c.lineTo(0, h - 10); + c.close(); + c.fillAndStroke(); + } + else + { + c.rect(0, 0, w, h); + } + + c.fillAndStroke(); +}; + +mxArchiMate3Application.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.TYPE, ''); + + c.setDashed(false); + + if (type === mxArchiMate3Application.prototype.cst.COMPONENT) + { + c.translate(1, 0); + w = w - 2; + + mxArchiMate3Component.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.COLLABORATION) + { + c.translate(0, 3); + h = h - 6; + + mxArchiMate3Collaboration.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.INTERFACE) + { + c.translate(0, 4); + h = h - 8; + + mxArchiMate3Interface.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.INTERFACE2) + { + c.translate(0, 1); + h = h - 2; + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.6, h * 0.5); + c.moveTo(w, 0); + c.arcTo(w * 0.4, h * 0.5, 0, 0, 0, w, h); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.FUNCTION) + { + mxArchiMate3Function.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.INTERACTION) + { + mxArchiMate3Interaction.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.LOCATION) + { + c.translate(3, 0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.SERVICE) + { + c.translate(0, 3); + h = h - 6; + + mxArchiMate3Service.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.EVENT) + { + c.translate(0, 3); + h = h - 6; + + mxArchiMate3Event.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.EVENT2) + { + c.translate(0, 3); + h = h - 6; + + mxArchiMate3Event2.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.NODE) + { + mxArchiMate3Node.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.NETWORK) + { + c.translate(0, 2); + h = h - 4; + + c.begin(); + c.moveTo(w * 0.4, h * 0.2); + c.lineTo(w * 0.85, h * 0.2); + c.lineTo(w * 0.6, h * 0.8); + c.lineTo(w * 0.15, h * 0.8); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.ellipse(w * 0.25, 0, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(w * 0.7, 0, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(0, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + + c.ellipse(w * 0.45, h * 0.6, w * 0.3, h * 0.4); + c.fill(); + } + else if (type === mxArchiMate3Application.prototype.cst.COMM_PATH) + { + c.translate(0, 5); + h = h - 10; + + c.begin(); + c.moveTo(w * 0.1, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.1, h); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); + + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.ARTIFACT) + { + c.translate(2, 0); + w = w - 4; + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.ACTOR) + { + c.translate(3, 0); + w = w - 6; + + mxArchiMate3Actor.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.ROLE) + { + c.translate(0, 4); + h = h - 8; + + mxArchiMate3Role.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.PROCESS) + { + c.translate(0, 3); + h = h - 6; + + mxArchiMate3Process.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.DRIVER) + { + c.ellipse(w * 0.1, h * 0.1, w * 0.8, h * 0.8); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.145, h * 0.855); + c.lineTo(w * 0.855, h * 0.145); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.ellipse(w * 0.35, h * 0.35, w * 0.3, h * 0.3); + c.fillAndStroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.ASSESSMENT) + { + c.ellipse(w * 0.2, 0, w * 0.8, h * 0.8); + c.stroke(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.32, h * 0.68); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.GOAL) + { + c.ellipse(0, 0, w, h); + c.stroke(); + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.stroke(); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.3, h * 0.3, w * 0.4, h * 0.4); + c.fillAndStroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.OUTCOME) + { + c.ellipse(0, w * 0.2, w * 0.8, h * 0.8); + c.stroke(); + c.ellipse(w * 0.15, w * 0.35, w * 0.5, h * 0.5); + c.stroke(); + c.ellipse(w * 0.3, w * 0.5, w * 0.2, h * 0.2); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.4, h * 0.6); + c.lineTo(w * 0.9, h * 0.1); + c.moveTo(w * 0.42, h * 0.4); + c.lineTo(w * 0.4, h * 0.6); + c.lineTo(w * 0.6, h * 0.58); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w, h * 0.2); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.PRINCIPLE) + { + c.begin(); + c.moveTo(w * 0.05, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.05); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.95, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.95); + c.arcTo(w * 2.3, h * 2.3, 0, 0, 1, w * 0.05, h * 0.05); + c.close(); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.begin(); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.42, h * 0.15); + c.lineTo(w * 0.58, h * 0.15); + c.lineTo(w * 0.55, h * 0.7); + c.close(); + c.fill(); + + c.rect(w * 0.45, h * 0.75, w * 0.1, h * 0.1); + c.fill(); + } + else if (type === mxArchiMate3Application.prototype.cst.REQUIREMENT) + { + c.translate(0, 4); + h = h - 8; + + mxArchiMate3Requirement.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.CONSTRAINT) + { + c.translate(0, 4); + h = h - 8; + + mxArchiMate3Constraint.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.MATERIAL) + { + c.translate(0, 1); + h = h - 2; + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.25, h); + c.close(); + c.moveTo(w * 0.15, h * 0.5); + c.lineTo(w * 0.31, h * 0.2); + c.moveTo(w * 0.69, h * 0.2); + c.lineTo(w * 0.85, h * 0.5); + c.moveTo(w * 0.68, h * 0.80); + c.lineTo(w * 0.32, h * 0.80); + c.stroke(); + } + else if (type === mxArchiMate3Application.prototype.cst.DISTRIBUTION) + { + c.translate(0, 4); + h = h - 8; + + mxArchiMate3Distribution.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.RESOURCE) + { + c.translate(0, 1); + h = h - 2; + + mxArchiMate3Resource.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.CAPABILITY) + { + mxArchiMate3Capability.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.COURSE) + { + mxArchiMate3Course.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.SYS_SW) + { + mxArchiMate3SysSw.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.ARTIFACT) + { + c.translate(2, 0); + w = w - 4; + + mxArchiMate3Artifact.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Application.prototype.cst.PATH) + { + c.translate(0, 5); + h = h - 10; + + mxArchiMate3Path.prototype.background(c, x, y, w, h); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Application.prototype.cst.APPLICATION, mxArchiMate3Application); + +mxArchiMate3Application.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var archiType = mxUtils.getValue(this.style, mxArchiMate3Application.prototype.cst.ARCHI_TYPE, 'square'); + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + if (archiType === 'rounded') + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + } + else if ((archiType === 'oct') && w >= 20 && h >= 20) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -5, 5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -5, -5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 5, -5)); + } + else + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Component +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Component(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Component, mxShape); + +mxArchiMate3Component.prototype.cst = { + COMPONENT : 'mxgraph.archimate3.component' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Component.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Component.prototype.background = function(c, x, y, w, h) +{ + c.rect(w * 0.25, 0, w * 0.75, h); + c.fillAndStroke(); + + c.rect(0, h * 0.25, w * 0.5, h * 0.15); + c.fillAndStroke(); + + c.rect(0, h * 0.6, w * 0.5, h * 0.15); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Component.prototype.cst.COMPONENT, mxArchiMate3Component); + +mxArchiMate3Component.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.325), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.675), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Collaboration +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Collaboration(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Collaboration, mxShape); + +mxArchiMate3Collaboration.prototype.cst = { + COLLABORATION : 'mxgraph.archimate3.collaboration' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Collaboration.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Collaboration.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(0, 0, w * 0.6, h); + c.fillAndStroke(); + c.ellipse(w * 0.4, 0, w * 0.6, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Collaboration.prototype.cst.COLLABORATION, mxArchiMate3Collaboration); + +mxArchiMate3Collaboration.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.125), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.11, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.875), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.89, 0.89), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Interface +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Interface(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Interface, mxShape); + +mxArchiMate3Interface.prototype.cst = { + INTERFACE : 'mxgraph.archimate3.interface' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Interface.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Interface.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(w * 0.5, 0, w * 0.5, h); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Interface.prototype.cst.INTERFACE, mxArchiMate3Interface); + +mxArchiMate3Interface.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Process +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Process(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Process, mxShape); + +mxArchiMate3Process.prototype.cst = { + PROCESS : 'mxgraph.archimate3.process' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Process.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Process.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.3); + c.lineTo(w * 0.6, h * 0.3); + c.lineTo(w * 0.6, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.6, h); + c.lineTo(w * 0.6, h * 0.7); + c.lineTo(0, h * 0.7); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Process.prototype.cst.PROCESS, mxArchiMate3Process); + +mxArchiMate3Process.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.3), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.6, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.3, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.7), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Function +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Function(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Function, mxShape); + +mxArchiMate3Function.prototype.cst = { + FUNCTION : 'mxgraph.archimate3.function' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Function.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Function.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, h * 0.2); + c.lineTo(w, h); + c.lineTo(w * 0.5, h * 0.8); + c.lineTo(0, h); + c.lineTo(0, h * 0.2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Function.prototype.cst.FUNCTION, mxArchiMate3Function); + +mxArchiMate3Function.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.2), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.8), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.6), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.2), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Interaction +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Interaction(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Interaction, mxShape); + +mxArchiMate3Interaction.prototype.cst = { + INTERACTION : 'mxgraph.archimate3.interaction' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Interaction.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Interaction.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.55, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 1, w * 0.55, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.arcTo(w * 0.45, h * 0.5, 0, 0, 0, w * 0.45, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Interaction.prototype.cst.INTERACTION, mxArchiMate3Interaction); + +mxArchiMate3Interaction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.14), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.86, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.86), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.14, 0.14), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Service +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Service(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Service, mxShape); + +mxArchiMate3Service.prototype.cst = { + SERVICE : 'mxgraph.archimate3.service' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Service.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Service.prototype.background = function(c, x, y, w, h) +{ + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + + c.begin(); + c.moveTo(w1, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w1, h); + c.lineTo(w2, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w2, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Service.prototype.cst.SERVICE, mxArchiMate3Service); + +mxArchiMate3Service.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w1 + h * 0.355, h * 0.855)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.145)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 - h * 0.355, h * 0.855)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Requirement +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Requirement(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Requirement, mxShape); + +mxArchiMate3Requirement.prototype.cst = { + REQUIREMENT : 'mxgraph.archimate3.requirement' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Requirement.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Requirement.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Requirement.prototype.cst.REQUIREMENT, mxArchiMate3Requirement); + +mxArchiMate3Requirement.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Constraint +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Constraint(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Constraint, mxShape); + +mxArchiMate3Constraint.prototype.cst = { + CONSTRAINT : 'mxgraph.archimate3.constraint' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Constraint.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Constraint.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(w * 0.45, 0); + c.lineTo(w * 0.2, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Constraint.prototype.cst.CONSTRAINT, mxArchiMate3Constraint); + +mxArchiMate3Constraint.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.9375, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8125, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.0625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.1875, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Event +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Event(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Event, mxShape); + +mxArchiMate3Event.prototype.cst = { + EVENT : 'mxgraph.archimate3.event' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Event.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Event.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.lineTo(h * 0.5, h * 0.5); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Event.prototype.cst.EVENT, mxArchiMate3Event); + +mxArchiMate3Event.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var w1 = Math.max(w - h * 0.5, w * 0.5); + var w2 = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - h * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, h * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - h * 0.5) * 0.5, h)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Event 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Event2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Event2, mxShape); + +mxArchiMate3Event2.prototype.cst = { + EVENT2 : 'mxgraph.archimate3.event2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Event2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Event2.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w - h * 0.5, 0); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 1, w - h * 0.5, h); + c.lineTo(0, h); + c.arcTo(h * 0.5, h * 0.5, 0, 0, 0, 0, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Event2.prototype.cst.EVENT2, mxArchiMate3Event2); + +//********************************************************************************************************************************************************** +//Actor +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Actor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Actor, mxShape); + +mxArchiMate3Actor.prototype.cst = { + ACTOR : 'mxgraph.archimate3.actor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Actor.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Actor.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(w * 0.2, 0, w * 0.6, h * 0.3); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h * 0.75); + c.moveTo(0, h * 0.45); + c.lineTo(w, h * 0.45); + c.moveTo(0, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Actor.prototype.cst.ACTOR, mxArchiMate3Actor); + +mxArchiMate3Actor.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0.15), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.45), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Role +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Role(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Role, mxShape); + +mxArchiMate3Role.prototype.cst = { + ROLE : 'mxgraph.archimate3.role' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Role.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Role.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.8, 0); + c.lineTo(w * 0.2, 0); + c.arcTo(w * 0.2, h * 0.5, 0, 0, 0, w * 0.2, h); + c.lineTo(w * 0.8, h); + c.fillAndStroke(); + + c.ellipse(w * 0.6, 0, w * 0.4, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Role.prototype.cst.ROLE, mxArchiMate3Role); + +mxArchiMate3Role.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Business Object +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3BusinessObject(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3BusinessObject, mxShape); + +mxArchiMate3BusinessObject.prototype.cst = { + BUSINESS_OBJECT : 'mxgraph.archimate3.businessObject' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3BusinessObject.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3BusinessObject.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3BusinessObject.prototype.foreground = function(c, x, y, w, h) +{ + if (h >= 15) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3BusinessObject.prototype.cst.BUSINESS_OBJECT, mxArchiMate3BusinessObject); + +mxArchiMate3BusinessObject.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Contract +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Contract(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Contract, mxShape); + +mxArchiMate3Contract.prototype.cst = { + CONTRACT : 'mxgraph.archimate3.contract' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Contract.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3Contract.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Contract.prototype.foreground = function(c, x, y, w, h) +{ + if (h >= 15) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); + } + + if (h >= 30) + { + c.begin(); + c.moveTo(0, h - 15); + c.lineTo(w, h - 15); + c.stroke(); + } + +}; + +mxCellRenderer.registerShape(mxArchiMate3Contract.prototype.cst.CONTRACT, mxArchiMate3Contract); + +mxArchiMate3Contract.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Product +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Product(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Product, mxShape); + +mxArchiMate3Product.prototype.cst = { + PRODUCT : 'mxgraph.archimate3.product' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Product.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxArchiMate3Product.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Product.prototype.foreground = function(c, x, y, w, h) +{ + if (h >= 15) + { + c.begin(); + c.moveTo(0, 15); + c.lineTo(w * 0.6, 15); + c.lineTo(w * 0.6, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Product.prototype.cst.PRODUCT, mxArchiMate3Product); + +mxArchiMate3Product.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Representation +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Representation(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Representation, mxShape); + +mxArchiMate3Representation.prototype.cst = { + REPRESENTATION : 'mxgraph.archimate3.representation' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Representation.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMate3Representation.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); + + if (h >= 20) + c.begin(); + c.moveTo(0, 15); + c.lineTo(w, 15); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Representation.prototype.cst.REPRESENTATION, mxArchiMate3Representation); + +mxArchiMate3Representation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Deliverable +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Deliverable(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Deliverable, mxShape); + +mxArchiMate3Deliverable.prototype.cst = { + DELIVERABLE : 'mxgraph.archimate3.deliverable' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Deliverable.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); +}; + +mxArchiMate3Deliverable.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Deliverable.prototype.cst.DELIVERABLE, mxArchiMate3Deliverable); + +mxArchiMate3Deliverable.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Location +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Location(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Location, mxShape); + +mxArchiMate3Location.prototype.cst = { + LOCATION : 'mxgraph.archimate3.location' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Location.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Location.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxArchiMate3Location.prototype.foreground = function(c, x, y, w, h) +{ + c.setDashed(false); + + c.translate(3 ,0); + w = w - 6; + c.begin(); + c.moveTo(w * 0.5, h); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.345, h * 0.7); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.538, h * 0.364, 0, 0, 1, w * 0.655, h * 0.7); + c.arcTo(w * 0.1775, h * 0.3, 0, 0, 0, w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Location.prototype.cst.LOCATION, mxArchiMate3Location); + +//********************************************************************************************************************************************************** +//Gap +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Gap(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Gap, mxShape); + +mxArchiMate3Gap.prototype.cst = { + GAP : 'mxgraph.archimate3.gap' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Gap.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 20, 5); + this.foreground(c, w - 20, 5, 15, 15); +}; + +mxArchiMate3Gap.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 0, w * 0.5, h * 0.85); + c.arcTo(w * 0.35, h * 0.35, 0, 0, 1, 0, h * 0.85); + c.close(); + c.fillAndStroke(); +}; + +mxArchiMate3Gap.prototype.foreground = function(c, x, y, w, h) +{ + c.setDashed(false); + + c.translate(0, 2); + h = h - 4; + + c.ellipse(w * 0.15, 0, w * 0.7, h); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.35); + c.lineTo(w, h * 0.35); + c.moveTo(0, h * 0.65); + c.lineTo(w, h * 0.65); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Gap.prototype.cst.GAP, mxArchiMate3Gap); + +mxArchiMate3Gap.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.745), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.955), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.85), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Tech +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Tech(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Tech, mxShape); + +mxArchiMate3Tech.prototype.cst = { + TECH : 'mxgraph.archimate3.tech', + TYPE : 'techType', + DEVICE : 'device', + PLATEAU : 'plateau', + FACILITY : 'facility', + EQUIPMENT : 'equipment', + SYS_SW : 'sysSw' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Tech.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + c.translate(w - 30, 15); + this.foreground(c, w - 30, 15, 15, 15); +}; + +mxArchiMate3Tech.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 10); + c.lineTo(10, 0); + c.lineTo(w, 0); + c.lineTo(w, h - 10); + c.lineTo(w - 10, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, 10); + c.lineTo(w - 10, 10); + c.lineTo(w - 10, h); + c.moveTo(w, 0); + c.lineTo(w - 10, 10); + c.fillAndStroke(); +}; + +mxArchiMate3Tech.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxArchiMate3Tech.prototype.cst.TYPE, mxArchiMate3Tech.prototype.cst.DEVICE); + + c.setDashed(false); + + if (type === mxArchiMate3Tech.prototype.cst.PLATEAU) + { + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.rect(w * 0.4, 0, w * 0.6, h * 0.2); + c.fill(); + + c.rect(w * 0.2, h * 0.4, w * 0.6, h * 0.2); + c.fill(); + + c.rect(0, h * 0.8, w * 0.6, h * 0.2); + c.fill(); + } + else if (type === mxArchiMate3Tech.prototype.cst.FACILITY) + { + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w * 0.13, 0); + c.lineTo(w * 0.13, h * 0.7); + c.lineTo(w * 0.42, h * 0.55); + c.lineTo(w * 0.42, h * 0.7); + c.lineTo(w * 0.71, h * 0.55); + c.lineTo(w * 0.71, h * 0.7); + c.lineTo(w, h * 0.55); + c.lineTo(w, h); + c.close(); + c.stroke(); + } + else if (type === mxArchiMate3Tech.prototype.cst.EQUIPMENT) + { + c.begin(); + c.moveTo(w * 0.72, h * 0.38); + c.curveTo(w * 0.78, w * 0.38, w * 0.85, h * 0.34, w * 0.85, h * 0.26); + c.curveTo(w * 0.85, w * 0.18, w * 0.78, h * 0.14, w * 0.73, h * 0.14); + c.curveTo(w * 0.64, w * 0.14, w * 0.59, h * 0.2, w * 0.59, h * 0.26); + c.curveTo(w * 0.59, h * 0.33, w * 0.65, w * 0.38, w * 0.72, h * 0.38); + c.close(); + c.moveTo(w * 0.68, h * 0.52); + c.lineTo(w * 0.67, h * 0.45); + c.lineTo(w * 0.61, h * 0.43); + c.lineTo(w * 0.56, h * 0.48); + c.lineTo(w * 0.5, h * 0.42); + c.lineTo(w * 0.54, h * 0.36); + c.lineTo(w * 0.52, h * 0.31); + c.lineTo(w * 0.45, h * 0.31); + c.lineTo(w * 0.45, h * 0.22); + c.lineTo(w * 0.52, h * 0.21); + c.lineTo(w * 0.54, h * 0.16); + c.lineTo(w * 0.5, h * 0.11); + c.lineTo(w * 0.56, h * 0.05); + c.lineTo(w * 0.62, h * 0.09); + c.lineTo(w * 0.67, h * 0.07); + c.lineTo(w * 0.68, 0); + c.lineTo(w * 0.77, 0); + c.lineTo(w * 0.78, h * 0.07); + c.lineTo(w * 0.83, h * 0.09); + c.lineTo(w * 0.89, h * 0.05); + c.lineTo(w * 0.95, h * 0.11); + c.lineTo(w * 0.91, h * 0.16); + c.lineTo(w * 0.93, h * 0.21); + c.lineTo(w, h * 0.22); + c.lineTo(w, h * 0.31); + c.lineTo(w * 0.93, h * 0.31); + c.lineTo(w * 0.91, h * 0.36); + c.lineTo(w * 0.95, h * 0.41); + c.lineTo(w * 0.89, h * 0.47); + c.lineTo(w * 0.83, h * 0.43); + c.lineTo(w * 0.78, h * 0.45); + c.lineTo(w * 0.77, h * 0.52); + c.lineTo(w * 0.68, h * 0.52); + c.close(); + c.moveTo(w * 0.36, h * 0.81); + c.curveTo(w * 0.44, h * 0.81, w * 0.52, h * 0.75, w * 0.52, h * 0.67); + c.curveTo(w * 0.52, h * 0.59, w * 0.45, h * 0.51, w * 0.35, h * 0.51); + c.curveTo(w * 0.27, h * 0.51, w * 0.19, h * 0.58, w * 0.19, h * 0.67); + c.curveTo(w * 0.19, h * 0.74, w * 0.27, h * 0.82, w * 0.36, h * 0.81); + c.close(); + c.moveTo(w * 0.21, h * 0.98); + c.lineTo(w * 0.22, h * 0.89); + c.lineTo(w * 0.16, h * 0.85); + c.lineTo(w * 0.08, h * 0.88); + c.lineTo(w * 0.02, h * 0.79); + c.lineTo(w * 0.09, h * 0.74); + c.lineTo(w * 0.08, h * 0.67); + c.lineTo(0, h * 0.63); + c.lineTo(w * 0.03, h * 0.53); + c.lineTo(w * 0.12, h * 0.54); + c.lineTo(w * 0.16, h * 0.48); + c.lineTo(w * 0.13, h * 0.4); + c.lineTo(w * 0.22, h * 0.35); + c.lineTo(w * 0.28, h * 0.42); + c.lineTo(w * 0.36, h * 0.41); + c.lineTo(w * 0.39, h * 0.33); + c.lineTo(w * 0.5, h * 0.36); + c.lineTo(w * 0.49, h * 0.45); + c.lineTo(w * 0.55, h * 0.49); + c.lineTo(w * 0.63, h * 0.45); + c.lineTo(w * 0.69, h * 0.54); + c.lineTo(w * 0.62, h * 0.6); + c.lineTo(w * 0.63, h * 0.67); + c.lineTo(w * 0.71, h * 0.7); + c.lineTo(w * 0.68, h * 0.8); + c.lineTo(w * 0.59, h * 0.79); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.59, h * 0.79); + c.lineTo(w * 0.55, h * 0.85); + c.lineTo(w * 0.59, h * 0.93); + c.lineTo(w * 0.49, h * 0.98); + c.lineTo(w * 0.43, h * 0.91); + c.lineTo(w * 0.36, h * 0.92); + c.lineTo(w * 0.32, h); + c.lineTo(w * 0.21, h * 0.98); + c.close(); + c.stroke(); + } + else if (type === mxArchiMate3Tech.prototype.cst.SYS_SW) + { + mxArchiMate3SysSw.prototype.background(c, x, y, w, h); + } + else if (type === mxArchiMate3Tech.prototype.cst.DEVICE) + { + mxArchiMate3Device.prototype.background(c, x, y, w, h); + } +}; + +mxCellRenderer.registerShape(mxArchiMate3Tech.prototype.cst.TECH, mxArchiMate3Tech); + +mxArchiMate3Tech.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, 0, -10)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, 10)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Distribution +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Distribution(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Distribution, mxShape); + +mxArchiMate3Distribution.prototype.cst = { + DISTRIBUTION : 'mxgraph.archimate3.distribution' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Distribution.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Distribution.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.1, h * 0.25); + c.lineTo(w * 0.9, h * 0.25); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h * 0.75); + c.lineTo(w * 0.1, h * 0.75); + c.lineTo(0, h * 0.5); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, h); + c.moveTo(w * 0.8, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Distribution.prototype.cst.DISTRIBUTION, mxArchiMate3Distribution); + +mxArchiMate3Distribution.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.8, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.2, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Resource +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Resource(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Resource, mxShape); + +mxArchiMate3Resource.prototype.cst = { + RESOURCE : 'mxgraph.archimate3.resource' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Resource.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Resource.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.51, h * 0.34); + c.lineTo(w * 0.51, h * 0.65); + c.moveTo(w * 0.35, h * 0.34); + c.lineTo(w * 0.35, h * 0.65); + c.moveTo(w * 0.19, h * 0.34); + c.lineTo(w * 0.19, h * 0.65); + c.moveTo(w * 0.91, h * 0.4); + c.curveTo(w * 0.93, h * 0.39, w * 0.95, h * 0.39, w * 0.97, h * 0.40); + c.curveTo(w * 0.99, h * 0.4, w, h * 0.41, w, h * 0.43); + c.curveTo(w, h * 0.48, w, h * 0.52, w, h * 0.57); + c.curveTo(w, h * 0.58, w * 0.99, h * 0.59, w * 0.98, h * 0.6); + c.curveTo(w * 0.96, h * 0.6, w * 0.93, h * 0.6, w * 0.91, h * 0.6); + c.moveTo(0, h * 0.73); + c.curveTo(0, h * 0.6, 0, h * 0.43, 0, h * 0.27); + c.curveTo(0, h * 0.24, w * 0.03, h * 0.21, w * 0.08, h * 0.21); + c.curveTo(w * 0.33, h * 0.2, w * 0.61, h * 0.2, w * 0.84, h * 0.21); + c.curveTo(w * 0.88, h * 0.22, w * 0.89, h * 0.24, w * 0.9, h * 0.26); + c.curveTo(w * 0.91, h * 0.41, w * 0.91, h * 0.57, w * 0.9, h * 0.72); + c.curveTo(w * 0.9, h * 0.74, w * 0.88, h * 0.78, w * 0.83, h * 0.79); + c.curveTo(w * 0.57, h * 0.79, w * 0.32, h * 0.79, w * 0.06, h * 0.79); + c.curveTo(w * 0.02, h * 0.78, 0, h * 0.76, 0, h * 0.73); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Resource.prototype.cst.RESOURCE, mxArchiMate3Resource); + +//********************************************************************************************************************************************************** +//Capability +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Capability(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Capability, mxShape); + +mxArchiMate3Capability.prototype.cst = { + CAPABILITY : 'mxgraph.archimate3.capability' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Capability.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Capability.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, h * 0.67); + c.lineTo(w * 0.33, h * 0.67); + c.lineTo(w * 0.33, h * 0.33); + c.lineTo(w * 0.67, h * 0.33); + c.lineTo(w * 0.67, 0); + c.close(); + c.moveTo(w * 0.67, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(w * 0.33, h * 0.67); + c.lineTo(w, h * 0.67); + c.moveTo(w * 0.33, h * 0.67); + c.lineTo(w * 0.33, h); + c.moveTo(w * 0.67, h * 0.33); + c.lineTo(w * 0.67, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Capability.prototype.cst.CAPABILITY, mxArchiMate3Capability); + +//********************************************************************************************************************************************************** +//Course of Action +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Course(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Course, mxShape); + +mxArchiMate3Course.prototype.cst = { + COURSE : 'mxgraph.archimate3.course' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Course.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Course.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h); + c.arcTo(w * 0.7, h * 0.7, 0, 0, 1, w * 0.41, h * 0.56); + c.moveTo(w * 0.14, h * 0.54); + c.lineTo(w * 0.41, h * 0.56); + c.lineTo(w * 0.3, h * 0.78); + c.stroke(); + + c.ellipse(w * 0.4, 0, w * 0.6, h * 0.6); + c.stroke(); + c.ellipse(w * 0.5, h * 0.1, w * 0.4, h * 0.4); + c.stroke(); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#000000'); + c.setFillColor(fillColor); + c.ellipse(w * 0.6, h * 0.2, w * 0.2, h * 0.2); + c.fill(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Course.prototype.cst.COURSE, mxArchiMate3Course); + +//********************************************************************************************************************************************************** +//Node +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Node(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Node, mxShape); + +mxArchiMate3Node.prototype.cst = { + NODE : 'mxgraph.archimate3.node' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Node.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Node.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.25, 0); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.moveTo(0, h * 0.25); + c.lineTo(w * 0.75, h * 0.25); + c.lineTo(w * 0.75, h); + c.moveTo(w, 0); + c.lineTo(w * 0.75, h * 0.25); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Node.prototype.cst.NODE, mxArchiMate3Node); + +mxArchiMate3Node.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Device +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Device(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Device, mxShape); + +mxArchiMate3Device.prototype.cst = { + DEVICE : 'mxgraph.archimate3.device' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Device.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Device.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w, h * 0.88, w * 0.1, h * 0.1); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.1, h * 0.88); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w * 0.9, h * 0.88); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Device.prototype.cst.DEVICE, mxArchiMate3Device); + +mxArchiMate3Device.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.03, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.97, 0.03), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//System Software +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3SysSw(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3SysSw, mxShape); + +mxArchiMate3SysSw.prototype.cst = { + SYS_SW : 'mxgraph.archimate3.sysSw' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3SysSw.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3SysSw.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(w * 0.3, 0, w * 0.7, h * 0.7); + c.stroke(); + + c.ellipse(0, h * 0.02, w * 0.98, h * 0.98); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3SysSw.prototype.cst.SYS_SW, mxArchiMate3SysSw); + +//********************************************************************************************************************************************************** +//Artifact +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Artifact(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Artifact, mxShape); + +mxArchiMate3Artifact.prototype.cst = { + ARTIFACT : 'mxgraph.archimate3.artifact' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Artifact.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Artifact.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.7, 0); + c.lineTo(w, h * 0.22); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.7, 0); + c.lineTo(w * 0.7, h * 0.22); + c.lineTo(w, h * 0.22); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Artifact.prototype.cst.ARTIFACT, mxArchiMate3Artifact); + +mxArchiMate3Artifact.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.7, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.85, 0.11), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.22), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Communication Network +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3CommNetw(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3CommNetw, mxShape); + +mxArchiMate3CommNetw.prototype.cst = { + COMM_NETW : 'mxgraph.archimate3.commNetw' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3CommNetw.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3CommNetw.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, 0); + c.moveTo(w * 0.8, h); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, 0); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3CommNetw.prototype.cst.COMM_NETW, mxArchiMate3CommNetw); + +mxArchiMate3CommNetw.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Path +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxArchiMate3Path(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxArchiMate3Path, mxShape); + +mxArchiMate3Path.prototype.cst = { + PATH : 'mxgraph.archimate3.path' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxArchiMate3Path.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); +}; + +mxArchiMate3Path.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.5); + c.lineTo(w * 0.2, 0); + c.moveTo(w * 0.8, h); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.8, 0); + c.stroke(); + + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxArchiMate3Path.prototype.cst.PATH, mxArchiMate3Path); + +mxArchiMate3Path.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxArrows.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArrows.js new file mode 100644 index 0000000000000..ddceed3346269 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxArrows.js @@ -0,0 +1,2691 @@ +/** + * $Id: mxArrows.js,v 1.5 2016/03/23 12:32:06 mate Exp $ + * Copyright (c) 2006-2016, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2Arrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2Arrow, mxActor); + +mxShapeArrows2Arrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min: 0, defVal: 40}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, max:1, defVal: 0.6}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal: 0} +]; + +mxShapeArrows2Arrow.prototype.cst = { + ARROW : 'mxgraph.arrows2.arrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2Arrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxShapeArrows2Arrow.prototype.getLabelBounds = function(rect) +{ + if (mxUtils.getValue(this.style, "boundedLbl", false)) + { + var w = rect.width; + var h = rect.height; + + var dy, dx; + var direction = this.direction || mxConstants.DIRECTION_EAST; + + if (mxUtils.getValue(this.style, "flipH", false)) + { + if (direction == mxConstants.DIRECTION_WEST) + direction = mxConstants.DIRECTION_EAST; + else if (direction == mxConstants.DIRECTION_EAST) + direction = mxConstants.DIRECTION_WEST; + } + + if (mxUtils.getValue(this.style, "flipV", false)) + { + if (direction == mxConstants.DIRECTION_NORTH) + direction = mxConstants.DIRECTION_SOUTH; + else if (direction == mxConstants.DIRECTION_SOUTH) + direction = mxConstants.DIRECTION_NORTH; + } + + + if (direction == mxConstants.DIRECTION_NORTH + || direction == mxConstants.DIRECTION_SOUTH) + { + dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + else + { + dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + + if (direction == mxConstants.DIRECTION_EAST) + { + return new mxRectangle(rect.x, rect.y + dy, w - dx, h - 2 * dy); + } + else if (direction == mxConstants.DIRECTION_WEST) + { + return new mxRectangle(rect.x + dx, rect.y + dy, w - dx, h - 2 * dy); + } + else if (direction == mxConstants.DIRECTION_NORTH) + { + return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - dx); + } + else + { + return new mxRectangle(rect.x + dy, rect.y, w - 2 * dy, h - dx); + } + } + + return rect; +}; + +mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW, mxShapeArrows2Arrow); + +Graph.handleFactory[mxShapeArrows2Arrow.prototype.cst.ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + return handles; + +} + +mxShapeArrows2Arrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Two Way Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2TwoWayArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2TwoWayArrow, mxActor); + +mxShapeArrows2TwoWayArrow.prototype.cst = { + TWO_WAY_ARROW : 'mxgraph.arrows2.twoWayArrow' +}; + +mxShapeArrows2TwoWayArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal: 35}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, max:1, defVal: 0.6} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2TwoWayArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(dx, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx, h); + c.lineTo(0, h * 0.5); + c.lineTo(dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxShapeArrows2TwoWayArrow.prototype.getLabelBounds = function(rect) +{ + if (mxUtils.getValue(this.style, "boundedLbl", false)) + { + var w = rect.width; + var h = rect.height; + var vertical = this.direction == mxConstants.DIRECTION_NORTH + || this.direction == mxConstants.DIRECTION_SOUTH; + + var dy, dx; + + if (vertical) + { + dy = w * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + else + { + dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + } + + if (vertical) + { + return new mxRectangle(rect.x + dy, rect.y + dx, w - 2 * dy, h - 2 * dx); + } + else + { + return new mxRectangle(rect.x + dx, rect.y + dy, w - 2 * dx, h - 2 * dy); + } + } + + return rect; +}; + +mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW, mxShapeArrows2TwoWayArrow); + +mxShapeArrows2TwoWayArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + return handles; + +} + +mxShapeArrows2TwoWayArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Stylised Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2StylisedArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.feather = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2StylisedArrow, mxActor); + +mxShapeArrows2StylisedArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:40}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, max:1, defVal:0.6}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal:0}, + {name: 'feather', dispName: 'Feather', type: 'float', min:0, max:1, defVal:0.4}, +]; + +mxShapeArrows2StylisedArrow.prototype.cst = { + STYLISED_ARROW : 'mxgraph.arrows2.stylisedArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2StylisedArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var feather = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'feather', this.feather)))); + + c.begin(); + c.moveTo(0, feather); + c.lineTo(w - dx, dy); + c.lineTo(w - dx - 10, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx - 10, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - feather); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW, mxShapeArrows2StylisedArrow); + +mxShapeArrows2StylisedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width - 10, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - 10, bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['feather'], function(bounds) + { + var feather = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'feather', this.dy)))); + + return new mxPoint(bounds.x, bounds.y + feather * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['feather'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + }); + + handles.push(handle3); + + return handles; + +} + +mxShapeArrows2StylisedArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var feather = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'feather', this.feather)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, feather)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - feather)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 10, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, (dy + feather) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - (dy + feather) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Sharp Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2SharpArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0.5; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2SharpArrow, mxActor); + +mxShapeArrows2SharpArrow.prototype.cst = { + SHARP_ARROW : 'mxgraph.arrows2.sharpArrow' +}; + +mxShapeArrows2SharpArrow.prototype.customProperties = [ + {name: 'dx1', dispName: 'Arrowhead Arrow Width', type: 'float', min:0, defVal:18}, + {name: 'dy1', dispName: 'Arrow Arrow Width', type: 'float', min:0, max:1, defVal:0.67}, + {name: 'dx2', dispName: 'Arrowhead Angle', type: 'float', min:0, defVal:18}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2SharpArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var x2 = 0; + + if (h != 0) + { + x2 = dx1a + dx2 * dy1a * 2 / h; + } + + c.begin(); + c.moveTo(0, dy1); + c.lineTo(w - dx1, dy1); + c.lineTo(w - x2, 0); + c.lineTo(w - dx2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx2, h); + c.lineTo(w - x2, h); + c.lineTo(w - dx1, h - dy1); + c.lineTo(0, h - dy1); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW, mxShapeArrows2SharpArrow); + +mxShapeArrows2SharpArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function(bounds) + { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + dy1 * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + bounds.width - dx2, bounds.y); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2SharpArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var x2 = 0; + + if (h != 0) + { + x2 = dx1a + dx2 * dy1a * 2 / h; + } + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - x2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - x2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Sharp Arrow2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2SharpArrow2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0.5; + this.dy3 = 0.5; + this.dx3 = 0.5; + + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2SharpArrow2, mxActor); + +mxShapeArrows2SharpArrow2.prototype.customProperties = [ + {name: 'dx1', dispName: 'Arrowhead Arrow Width', type: 'float', min:0, defVal:18}, + {name: 'dy1', dispName: 'Arrow Width', type: 'float', min:0, max:1, defVal:0.67}, + {name: 'dx2', dispName: 'Arrowhead Angle', type: 'float', min:0, defVal:18}, + {name: 'dx3', dispName: 'Arrowhead Edge X', type: 'float', min:0, defVal:27}, + {name: 'dy3', dispName: 'Arrowhead Edge Y', type: 'float', min:0, max:1, defVal:0.15}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal:0} +]; + +mxShapeArrows2SharpArrow2.prototype.cst = { + SHARP_ARROW2 : 'mxgraph.arrows2.sharpArrow2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2SharpArrow2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy3 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy3', this.dy3)))); + var dx3 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx3', this.dx3)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + + c.begin(); + c.moveTo(0, dy1); + c.lineTo(w - dx1, dy1); + c.lineTo(w - dx3, dy3); + c.lineTo(w - dx2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx2, h); + c.lineTo(w - dx3, h - dy3); + c.lineTo(w - dx1, h - dy1); + c.lineTo(0, h - dy1); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2, mxShapeArrows2SharpArrow2); + +mxShapeArrows2SharpArrow2.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function(bounds) + { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + dy1 * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + bounds.width - dx2, bounds.y); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dx3', 'dy3'], function(bounds) + { + var dx3 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx3', this.dx3)))); + var dy3 = Math.max(0, Math.min(1 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy3', this.dy3)))); + + return new mxPoint(bounds.x + bounds.width - dx3, bounds.y + dy3 * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx3'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy3'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + }); + + handles.push(handle4); + + return handles; +}; + +mxShapeArrows2SharpArrow2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy1 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy3 = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy3', this.dy3)))); + var dx3 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx3', this.dx3)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var dx1a = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy1a = h * 0.5 * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx3, dy3)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx3, h - dy3)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1) * 0.5, h - dy1)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Callout Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2CalloutArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2CalloutArrow, mxActor); + +mxShapeArrows2CalloutArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:10}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:10}, + {name: 'notch', dispName: 'Rectangle Width', type: 'float', min:0, defVal:60} +]; + +mxShapeArrows2CalloutArrow.prototype.cst = { + CALLOUT_ARROW : 'mxgraph.arrows2.calloutArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2CalloutArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(notch, 0); + c.lineTo(notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(notch, h * 0.5 + dy); + c.lineTo(notch, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW, mxShapeArrows2CalloutArrow); + +mxShapeArrows2CalloutArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - pt.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2CalloutArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null,notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch * 0.5 , 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch * 0.5 , h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, (notch + w - dx) * 0.5, -dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, (notch + w - dx) * 0.5, dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Bend Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2BendArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 40; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2BendArrow, mxActor); + +mxShapeArrows2BendArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal: 38}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal: 15}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal: 0}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:55}, + {name: 'rounded', dispName: 'Rounded', type: 'boolean', defVal: false} +]; + +mxShapeArrows2BendArrow.prototype.cst = { + BEND_ARROW : 'mxgraph.arrows2.bendArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2BendArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + + if (rounded == '1') + { + c.lineTo(dy * 2.2, arrowHead / 2 + dy); + c.arcTo(dy * 0.2, dy * 0.2, 0, 0, 0, dy * 2, arrowHead / 2 + dy * 1.2); + } + else + { + c.lineTo(dy * 2, arrowHead / 2 + dy); + } + + c.lineTo(dy * 2, h); + c.lineTo(dy, h - notch); + c.lineTo(0, h); + + if (rounded == '1') + { + c.lineTo(0, arrowHead / 2 + dy); + c.arcTo(dy * 2, dy * 2, 0, 0, 1, dy * 2, arrowHead / 2 - dy); + } + else + { + c.lineTo(0, arrowHead / 2 - dy); + } + + c.lineTo(w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW, mxShapeArrows2BendArrow); + +mxShapeArrows2BendArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 2.2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + var notch = Math.max(0, Math.min(bounds.height - arrowHead / 2 - dy, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + dy, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height - pt.y))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height, pt.y - bounds.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2BendArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx + dy * 2) * 0.5, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx + dy * 2) * 0.5, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, (h - arrowHead / 2 - dy) * 0.5 + arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy, h - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - arrowHead / 2 - dy) * 0.5 + arrowHead / 2 + dy)); + + if (rounded == '1') + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 0.586, arrowHead / 2 - dy * 0.414)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dy + dy * 0.0586, arrowHead / 2 + dy + dy * 0.0586)); + } + else + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dy * 2, arrowHead / 2 + dy)); + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Bend Double Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2BendDoubleArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 40; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2BendDoubleArrow, mxActor); + +mxShapeArrows2BendDoubleArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:38}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:15}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:55}, + {name: 'rounded', dispName: 'Rounded', type: 'boolean', defVal:false} +]; + +mxShapeArrows2BendDoubleArrow.prototype.cst = { + BEND_DOUBLE_ARROW : 'mxgraph.arrows2.bendDoubleArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2BendDoubleArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + + if (rounded == '1') + { + c.lineTo(arrowHead / 2 + dy * 1.2, arrowHead / 2 + dy); + c.arcTo(dy * 0.2, dy * 0.2, 0, 0, 0, arrowHead /2 + dy, arrowHead / 2 + dy * 1.2); + } + else + { + c.lineTo(arrowHead / 2 + dy, arrowHead / 2 + dy); + } + + c.lineTo(arrowHead / 2 + dy, h - dx); + c.lineTo(arrowHead, h - dx); + c.lineTo(arrowHead / 2, h); + c.lineTo(0, h - dx); + c.lineTo(arrowHead / 2 - dy, h - dx); + + if (rounded == '1') + { + c.lineTo(arrowHead / 2 - dy, arrowHead / 2 + dy); + c.arcTo(dy * 2, dy * 2, 0, 0, 1, arrowHead / 2 + dy, arrowHead / 2 - dy); + } + else + { + c.lineTo(arrowHead / 2 - dy, arrowHead / 2 - dy); + } + + c.lineTo(w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW, mxShapeArrows2BendDoubleArrow); + +mxShapeArrows2BendDoubleArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(Math.min(bounds.height, bounds.width) - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(Math.min(bounds.width, bounds.height) - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(Math.min(bounds.height, bounds.width) - dx, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.height, bounds.width) - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.y - bounds.y))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeArrows2BendDoubleArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var rounded = mxUtils.getValue(this.style, 'rounded', '0'); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx , 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (arrowHead / 2 + dy + w - dx) * 0.5, arrowHead / 2 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (arrowHead / 2 + dy + w - dx) * 0.5, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, (arrowHead / 2 + dy + h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, (arrowHead / 2 + dy + h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, h - dx)); + + if (rounded == '1') + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy * 0.414, arrowHead / 2 - dy * 0.414)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy + dy * 0.0586, arrowHead / 2 + dy + dy * 0.0586)); + } + else + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 - dy, arrowHead / 2 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead / 2 + dy, arrowHead / 2 + dy)); + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Callout Double Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2CalloutDoubleArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2CalloutDoubleArrow, mxActor); + +mxShapeArrows2CalloutDoubleArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:10}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:10}, + {name: 'notch', dispName: 'Rect Size', type: 'float', min:0, defVal:24} +]; + +mxShapeArrows2CalloutDoubleArrow.prototype.cst = { + CALLOUT_DOUBLE_ARROW : 'mxgraph.arrows2.calloutDoubleArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2CalloutDoubleArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(w / 2 - notch, 0); + c.lineTo(w / 2 + notch, 0); + c.lineTo(w / 2 + notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w / 2 + notch, h * 0.5 + dy); + c.lineTo(w / 2 + notch, h); + c.lineTo(w / 2 - notch, h); + c.lineTo(w / 2 - notch, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w / 2 - notch, h * 0.5 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW, mxShapeArrows2CalloutDoubleArrow); + +mxShapeArrows2CalloutDoubleArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width / 2 + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x - bounds.width / 2))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - pt.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2CalloutDoubleArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 2 - notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 2 + notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, w / 2 - notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, w / 2 + notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + notch) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + notch) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - notch) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - notch) * 0.5, h * 0.5 + dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Callout Quad Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2CalloutQuadArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2CalloutQuadArrow, mxActor); + +mxShapeArrows2CalloutQuadArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal: 10}, + {name: 'notch', dispName: 'Rect Size', type: 'float', min:0, defVal:24}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:10} +]; + +mxShapeArrows2CalloutQuadArrow.prototype.cst = { + CALLOUT_QUAD_ARROW : 'mxgraph.arrows2.calloutQuadArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2CalloutQuadArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(w * 0.5 + dy, h * 0.5 - notch); + c.lineTo(w * 0.5 + notch, h * 0.5 - notch); + c.lineTo(w * 0.5 + notch, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w * 0.5 + notch, h * 0.5 + dy); + c.lineTo(w * 0.5 + notch, h * 0.5 + notch); + c.lineTo(w * 0.5 + dy, h * 0.5 + notch); + c.lineTo(w * 0.5 + dy, h - dx); + c.lineTo(w * 0.5 + dy + arrowHead, h - dx); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - dy - arrowHead, h - dx); + c.lineTo(w * 0.5 - dy, h - dx); + c.lineTo(w * 0.5 - dy, h * 0.5 + notch); + c.lineTo(w * 0.5 - notch, h * 0.5 + notch); + c.lineTo(w * 0.5 - notch, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w * 0.5 - notch, h * 0.5 - dy); + c.lineTo(w * 0.5 - notch, h * 0.5 - notch); + c.lineTo(w * 0.5 - dy, h * 0.5 - notch); + c.lineTo(w * 0.5 - dy, dx); + c.lineTo(w * 0.5 - dy - arrowHead, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + dy + arrowHead, dx); + c.lineTo(w * 0.5 + dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW, mxShapeArrows2CalloutQuadArrow); + +mxShapeArrows2CalloutQuadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) / 2 - Math.max(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead))), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.width, bounds.height), parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width / 2 + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(Math.min(bounds.width, bounds.height) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x - bounds.width / 2))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2CalloutQuadArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 + notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - notch, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75 + (notch - dx) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75 + (notch - dx) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.75 + (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.75 + (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25 - (notch - dx) * 0.5, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25 - (notch - dx) * 0.5, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, h * 0.25 - (notch - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, h * 0.25 - (notch - dx) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Callout Double 90 Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2CalloutDouble90Arrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy1 = 0.5; + this.dx1 = 0.5; + this.dx2 = 0; + this.dy2 = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2CalloutDouble90Arrow, mxActor); + +mxShapeArrows2CalloutDouble90Arrow.prototype.customProperties = [ + {name: 'dx1', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'dy1', dispName: 'Arrow Width', type: 'float', min:0, defVal: 10}, + {name: 'dx2', dispName: 'Callout Width', type: 'float', min:0, defVal:70}, + {name: 'dy2', dispName: 'Callout Height', type: 'float', min:0, defVal:70}, + {name: 'arrowHead', dispName: 'ArrowHead Width', type: 'float', min:0, defVal:10} +]; + +mxShapeArrows2CalloutDouble90Arrow.prototype.cst = { + CALLOUT_DOUBLE_90_ARROW : 'mxgraph.arrows2.calloutDouble90Arrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2CalloutDouble90Arrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(dx2, 0); + c.lineTo(dx2, dy2 * 0.5 - dy1); + c.lineTo(w - dx1, dy2 * 0.5 - dy1); + c.lineTo(w - dx1, dy2 * 0.5 - dy1 - arrowHead); + c.lineTo(w, dy2 * 0.5); + c.lineTo(w - dx1, dy2 * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, dy2 * 0.5 + dy1); + c.lineTo(dx2, dy2 * 0.5 + dy1); + c.lineTo(dx2, dy2); + c.lineTo(dx2 / 2 + dy1, dy2); + c.lineTo(dx2 / 2 + dy1, h - dx1); + c.lineTo(dx2 / 2 + dy1 + arrowHead, h - dx1); + c.lineTo(dx2 / 2, h); + c.lineTo(dx2 / 2 - dy1 - arrowHead, h - dx1); + c.lineTo(dx2 / 2 - dy1, h - dx1); + c.lineTo(dx2 / 2 - dy1, dy2); + c.lineTo(0, dy2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2CalloutDouble90Arrow.prototype.cst.CALLOUT_DOUBLE_90_ARROW, mxShapeArrows2CalloutDouble90Arrow); + +mxShapeArrows2CalloutDouble90Arrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2CalloutDouble90Arrow.prototype.cst.CALLOUT_DOUBLE_90_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - dy1); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['dx2', 'dy2'], function(bounds) + { + var dx2 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + dy2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.y - bounds.y))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - dy1 - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) - pt.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2CalloutDouble90Arrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + dx2) * 0.5, dy2 * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy2 * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, dy2 * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + dx2) * 0.5, dy2 * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5 + dy1, (h - dx1 + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5 - dy1, (h - dx1 + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2 + dy1 + arrowHead, h - dx1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 / 2 - dy1 - arrowHead, h - dx1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy2)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Quad Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2QuadArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2QuadArrow, mxActor); + +mxShapeArrows2QuadArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:10}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:10} +]; + +mxShapeArrows2QuadArrow.prototype.cst = { + QUAD_ARROW : 'mxgraph.arrows2.quadArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2QuadArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(w * 0.5 + dy, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy); + c.lineTo(w - dx, h * 0.5 - dy - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h * 0.5 + dy + arrowHead); + c.lineTo(w - dx, h * 0.5 + dy); + c.lineTo(w * 0.5 + dy, h * 0.5 + dy); + c.lineTo(w * 0.5 + dy, h - dx); + c.lineTo(w * 0.5 + dy + arrowHead, h - dx); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5 - dy - arrowHead, h - dx); + c.lineTo(w * 0.5 - dy, h - dx); + c.lineTo(w * 0.5 - dy, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy); + c.lineTo(dx, h * 0.5 + dy + arrowHead); + c.lineTo(0, h * 0.5); + c.lineTo(dx, h * 0.5 - dy - arrowHead); + c.lineTo(dx, h * 0.5 - dy); + c.lineTo(w * 0.5 - dy, h * 0.5 - dy); + c.lineTo(w * 0.5 - dy, dx); + c.lineTo(w * 0.5 - dy - arrowHead, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + dy + arrowHead, dx); + c.lineTo(w * 0.5 + dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2QuadArrow.prototype.cst.QUAD_ARROW, mxShapeArrows2QuadArrow); + +mxShapeArrows2QuadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2QuadArrow.prototype.cst.QUAD_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.width, bounds.height) / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height / 2 - dy - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeArrows2QuadArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 - dy - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h * 0.5 + dy + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy - arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy + arrowHead, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, (dx - dy) * 0.5 + h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, (dx - dy) * 0.5 + h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - dy, (dy - dx) * 0.5 + h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + dy, (dy - dx) * 0.5 + h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx - dy) * 0.5 + w * 0.25, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx - dy) * 0.5 + w * 0.25, h * 0.5 + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dy - dx) * 0.5 + w * 0.75, h * 0.5 - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dy - dx) * 0.5 + w * 0.75, h * 0.5 + dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Triad Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2TriadArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2TriadArrow, mxActor); + +mxShapeArrows2TriadArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:20}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:10}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:40} +]; + +mxShapeArrows2TriadArrow.prototype.cst = { + TRIAD_ARROW : 'mxgraph.arrows2.triadArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2TriadArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(w * 0.5 + arrowHead * 0.5 - dy, h - arrowHead + dy); + c.lineTo(w - dx, h - arrowHead + dy); + c.lineTo(w - dx, h - arrowHead); + c.lineTo(w, h - arrowHead * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx, h); + c.lineTo(0, h - arrowHead * 0.5); + c.lineTo(dx, h - arrowHead); + c.lineTo(dx, h - arrowHead + dy); + c.lineTo(w * 0.5 - arrowHead * 0.5 + dy, h - arrowHead + dy); + c.lineTo(w * 0.5 - arrowHead * 0.5 + dy, dx); + c.lineTo(w * 0.5 - arrowHead * 0.5, dx); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5 + arrowHead * 0.5, dx); + c.lineTo(w * 0.5 + arrowHead * 0.5 - dy, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TriadArrow.prototype.cst.TRIAD_ARROW, mxShapeArrows2TriadArrow); + +mxShapeArrows2TriadArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TriadArrow.prototype.cst.TRIAD_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), bounds.width / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + bounds.height - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)) * 2, bounds.y + bounds.height - pt.y))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeArrows2TriadArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, - arrowHead * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, arrowHead * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + arrowHead * 0.5 - dy) * 0.5, h - arrowHead + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx + arrowHead * 0.5 - dy) * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - arrowHead * 0.5 + dy) * 0.5, h - arrowHead + dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 0.5 + dx - arrowHead * 0.5 + dy) * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - arrowHead * 0.5 + dy, (dx + h - arrowHead + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + arrowHead * 0.5 - dy, (dx + h - arrowHead + dy) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Tailed Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2TailedArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2TailedArrow, mxActor); + +mxShapeArrows2TailedArrow.prototype.customProperties = [ + {name: 'dx1', dispName: 'Arrowhead Length', type: 'float', min:0, defVal: 20}, + {name: 'dy1', dispName: 'Arrow Width', type: 'float', min:0, defVal: 10}, + {name: 'dx2', dispName: 'Tail Length', type: 'float', min:0, defVal: 25}, + {name: 'dy2', dispName: 'Tail Width', type: 'float', min:0, defVal:30}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal: 0}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:20} +]; + +mxShapeArrows2TailedArrow.prototype.cst = { + TAILED_ARROW : 'mxgraph.arrows2.tailedArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2TailedArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) + { + x2 = dx2 + dy2 * (dy2 - dy1) / dy2; + } + + c.begin(); + c.moveTo(0, h * 0.5 - dy2); + c.lineTo(dx2, h * 0.5 - dy2); + c.lineTo(x2, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1 - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx1, h * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, h * 0.5 + dy1); + c.lineTo(x2, h * 0.5 + dy1); + c.lineTo(dx2, h * 0.5 + dy2); + c.lineTo(0, h * 0.5 + dy2); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TailedArrow.prototype.cst.TAILED_ARROW, mxShapeArrows2TailedArrow); + +mxShapeArrows2TailedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TailedArrow.prototype.cst.TAILED_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1 - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dx2', 'dy2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2 - dy2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)) - parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)) + parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)) - 1, pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), Math.min(bounds.height / 2, bounds.y + bounds.height / 2 - pt.y))) / 100; + + }); + + handles.push(handle4); + + return handles; +}; + +mxShapeArrows2TailedArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) + { + x2 = dx2 + dy2 * (dy2 - dy1) / dy2; + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Tailed Arrow with Notch +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2TailedNotchedArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; + this.arrowHead = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2TailedNotchedArrow, mxActor); + +mxShapeArrows2TailedNotchedArrow.prototype.customProperties = [ + {name: 'dx1', dispName: 'Arrowhead Length', type: 'float', mix:0, defVal:20}, + {name: 'dy1', dispName: 'Arrow Width', type: 'float', min:0, defVal:10}, + {name: 'dx2', dispName: 'Tail Length', type: 'float', min:0, defVal:25}, + {name: 'dy2', dispName: 'Tail Width', type: 'float', min:0, defVal:30}, + {name: 'notch', dispName: 'Notch', type: 'float', min:0, defVal:20}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:20} +]; + +mxShapeArrows2TailedNotchedArrow.prototype.cst = { + TAILED_NOTCHED_ARROW : 'mxgraph.arrows2.tailedNotchedArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2TailedNotchedArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) + { + x2 = dx2 + notch * (dy2 - dy1) / dy2; + } + + c.begin(); + c.moveTo(0, h * 0.5 - dy2); + c.lineTo(dx2, h * 0.5 - dy2); + c.lineTo(x2, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1); + c.lineTo(w - dx1, h * 0.5 - dy1 - arrowHead); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx1, h * 0.5 + dy1 + arrowHead); + c.lineTo(w - dx1, h * 0.5 + dy1); + c.lineTo(x2, h * 0.5 + dy1); + c.lineTo(dx2, h * 0.5 + dy2); + c.lineTo(0, h * 0.5 + dy2); + c.lineTo(notch, h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2TailedNotchedArrow.prototype.cst.TAILED_NOTCHED_ARROW, mxShapeArrows2TailedNotchedArrow); + +mxShapeArrows2TailedNotchedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2TailedNotchedArrow.prototype.cst.TAILED_NOTCHED_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1', 'dy1'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2 - arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))- parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)), parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)), bounds.y + bounds.height / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + var dy1 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + var arrowHead = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx1, bounds.y + bounds.height / 2 - dy1 - arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2 - parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), bounds.y + bounds.height / 2 - pt.y))) / 100; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dx2', 'dy2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + var dy2 = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + bounds.height / 2 - dy2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)) - parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)), pt.x - bounds.x))) / 100; + this.state.style['dy2'] = Math.round(100 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)), Math.min(bounds.height / 2, bounds.y + bounds.height / 2 - pt.y))) / 100; + + }); + + handles.push(handle4); + + return handles; +}; + +mxShapeArrows2TailedNotchedArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy1 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dx1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dy2 = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + var dx2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var x2 = 0; + + if (dy2 != 0) + { + x2 = dx2 + notch * (dy2 - dy1) / dy2; + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, notch, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 - dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 - dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 - dy1 - arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h * 0.5 + dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx1 + x2) * 0.5, h * 0.5 + dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx1, h * 0.5 + dy1 + arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Striped Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2StripedArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2StripedArrow, mxActor); + +mxShapeArrows2StripedArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:40}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, max:1, defVal:0.6}, + {name: 'notch', dispName: 'Stripes Length', type: 'float', min:0, defVal:25} +]; + +mxShapeArrows2StripedArrow.prototype.cst = { + STRIPED_ARROW : 'mxgraph.arrows2.stripedArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2StripedArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.begin(); + c.moveTo(notch, dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(notch, h - dy); + c.close(); + c.moveTo(0, h - dy); + c.lineTo(notch * 0.16, h - dy); + c.lineTo(notch * 0.16, dy); + c.lineTo(0, dy); + c.close(); + c.moveTo(notch * 0.32, h - dy); + c.lineTo(notch * 0.8, h - dy); + c.lineTo(notch * 0.8, dy); + c.lineTo(notch * 0.32, dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2StripedArrow.prototype.cst.STRIPED_ARROW, mxShapeArrows2StripedArrow); + +mxShapeArrows2StripedArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2StripedArrow.prototype.cst.STRIPED_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)), bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (((pt.y - bounds.y) / bounds.height) * 2)))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + notch, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width - parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)), pt.x - bounds.x))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeArrows2StripedArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * 0.5 * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, h - dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Jump-In Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2JumpInArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 40; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2JumpInArrow, mxActor); + +mxShapeArrows2JumpInArrow.prototype.customProperties = [ + {name: 'dx', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:38}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:15}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:55} +]; + +mxShapeArrows2JumpInArrow.prototype.cst = { + JUMP_IN_ARROW : 'mxgraph.arrows2.jumpInArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2JumpInArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + c.begin(); + c.moveTo(w - dx, 0); + c.lineTo(w, arrowHead * 0.5); + c.lineTo(w - dx, arrowHead); + c.lineTo(w - dx, arrowHead / 2 + dy); + c.arcTo(w - dx, h - arrowHead / 2 - dy, 0, 0, 0, 0, h); + c.arcTo(w - dx, h - arrowHead / 2 + dy, 0, 0, 1, w - dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2JumpInArrow.prototype.cst.JUMP_IN_ARROW, mxShapeArrows2JumpInArrow); + +mxShapeArrows2JumpInArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2JumpInArrow.prototype.cst.JUMP_IN_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height, pt.y - bounds.y))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeArrows2JumpInArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, arrowHead)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//U Turn Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeArrows2UTurnArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.arrowHead = 40; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeArrows2UTurnArrow, mxActor); + +mxShapeArrows2UTurnArrow.prototype.customProperties = [ + {name: 'dx2', dispName: 'Arrowhead Length', type: 'float', min:0, defVal:25}, + {name: 'dy', dispName: 'Arrow Width', type: 'float', min:0, defVal:11}, + {name: 'arrowHead', dispName: 'Arrowhead Width', type: 'float', min:0, defVal:43} +]; + +mxShapeArrows2UTurnArrow.prototype.cst = { + U_TURN_ARROW : 'mxgraph.arrows2.uTurnArrow' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeArrows2UTurnArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var dx = (h - arrowHead / 2 + dy) / 2; + var dx2 = Math.max(0, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2))); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(dx + dx2, arrowHead * 0.5); + c.lineTo(dx, arrowHead); + c.lineTo(dx, arrowHead / 2 + dy); + c.arcTo(dx - 2 * dy, dx - 2 * dy, 0, 0, 0, dx, h - 2 * dy); + c.lineTo(Math.max(w, dx), h - 2 * dy); + c.lineTo(Math.max(w, dx), h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 1, dx, arrowHead / 2 - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeArrows2UTurnArrow.prototype.cst.U_TURN_ARROW, mxShapeArrows2UTurnArrow); + +mxShapeArrows2UTurnArrow.prototype.constraints = null; + +Graph.handleFactory[mxShapeArrows2UTurnArrow.prototype.cst.U_TURN_ARROW] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + + return new mxPoint(bounds.x + dx, bounds.y + arrowHead / 2 - dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2, bounds.y + parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)) / 2 - pt.y))) / 100; + + })]; + + var handle2 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + dx + dx2, bounds.y + arrowHead / 2); + }, function(bounds, pt) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(Math.max(bounds.width, dx), pt.x - bounds.x - dx))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arrowHead'], function(bounds) + { + var arrowHead = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'arrowHead', this.arrowHead)))); + var dy = Math.max(0, Math.min(arrowHead, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = (bounds.height - arrowHead / 2 + dy) / 2; + + return new mxPoint(bounds.x + dx, bounds.y + arrowHead); + }, function(bounds, pt) + { + this.state.style['arrowHead'] = Math.round(100 * Math.max(2 * parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)), Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeArrows2UTurnArrow.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var arrowHead = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'arrowHead', this.arrowHead)))); + var dx = (h - arrowHead / 2 + dy) / 2; + var dx2 = Math.max(0, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + dx2, arrowHead * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, arrowHead)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx + w) * 0.5, h - 2 * dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h - 2 * dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.max(w, dx), h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (dx + w) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + arrowHead * 0.5 - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, arrowHead - 2 * dy, (h + arrowHead * 0.5 - dy) * 0.5)); + + return (constr); +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxAtlassian.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAtlassian.js new file mode 100644 index 0000000000000..d112d1288b5cf --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxAtlassian.js @@ -0,0 +1,291 @@ +/** + * $Id: mxAtlassian.js,v 1.0 2018/24/05 12:32:06 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ +//********************************************************************************************************************************************************** +// Issue +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxAtlassianJiraIssue(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxAtlassianJiraIssue, mxRectangleShape); + +mxAtlassianJiraIssue.prototype.customProperties = [ + {name: 'issueType', dispName: 'Issue Type', type: 'enum', + enumList: [{val: 'story', dispName: 'Story'}, + {val: 'task', dispName: 'Task'}, + {val: 'subTask', dispName: 'Sub-Task'}, + {val: 'feature', dispName: 'Feature'}, + {val: 'bug', dispName: 'Bug'}, + {val: 'techTask', dispName: 'Tech Task'}, + {val: 'epic', dispName: 'Epic'}, + {val: 'improvement', dispName: 'Improvement'}, + {val: 'fault', dispName: 'Fault'}, + {val: 'change', dispName: 'Change'}, + {val: 'access', dispName: 'Access'}, + {val: 'purchase', dispName: 'Purchase'}, + {val: 'itHelp', dispName: 'IT Help'}] + }, + {name: 'issuePriority', dispName: 'Issue Priority', type: 'enum', + enumList: [{val: 'blocker', dispName: 'Blocker'}, + {val: 'critical', dispName: 'Critical'}, + {val: 'major', dispName: 'Major'}, + {val: 'minor', dispName: 'Minor'}, + {val: 'trivial', dispName: 'Trivial'}] + }, + {name: 'issueStatus', dispName: 'Issue Status', type: 'enum', + enumList: [{val: 'todo', dispName: 'TODO'}, + {val: 'inProgress', dispName: 'In Progress'}, + {val: 'inReview', dispName: 'In Review'}, + {val: 'done', dispName: 'Done'}] + } +]; + +mxAtlassianJiraIssue.prototype.cst = {ISSUE : 'mxgraph.atlassian.issue'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxAtlassianJiraIssue.prototype.paintForeground = function(c, x, y, w, h) +{ + c.translate(x, y); + + var issueType = mxUtils.getValue(this.style, 'issueType', 'task'); + var issuePriority = mxUtils.getValue(this.style, 'issuePriority', 'minor'); + var issueStatus = mxUtils.getValue(this.style, 'issueStatus', 'todo'); + + c.setStrokeColor('none'); + + switch (issueType) { + case 'story': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.story'); + + if (stencil != null) + { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'task': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.task'); + + if (stencil != null) + { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'subTask': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.subtask'); + + if (stencil != null) + { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'feature': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.new_feature'); + + if (stencil != null) + { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'bug': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.bug'); + + if (stencil != null) + { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'techTask': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.tech_task'); + + if (stencil != null) + { + c.setFillColor('#999C95'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'epic': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.epic'); + + if (stencil != null) + { + c.setFillColor('#9E4ADD'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'improvement': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.improvement'); + + if (stencil != null) + { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'fault': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.fault'); + + if (stencil != null) + { + c.setFillColor('#F8902F'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'change': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.change'); + + if (stencil != null) + { + c.setFillColor('#9E4ADD'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'access': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.access'); + + if (stencil != null) + { + c.setFillColor('#F8902F'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'purchase': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.purchase'); + + if (stencil != null) + { + c.setFillColor('#61B659'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + case 'itHelp': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.it_help'); + + if (stencil != null) + { + c.setFillColor('#5EA3E4'); + stencil.drawShape(c, this, 5, 5, 10, 10); + } + + break; + } + + switch (issuePriority) { + case 'blocker': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.no'); + + if (stencil != null) + { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + break; + case 'critical': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.critical'); + + if (stencil != null) + { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 86, 3, 8, 14); + } + break; + case 'major': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.double_up'); + + if (stencil != null) + { + c.setFillColor('#CE0000'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + break; + case 'minor': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.double'); + + if (stencil != null) + { + c.setFillColor('#2A8735'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + break; + case 'trivial': + var stencil = mxStencilRegistry.getStencil('mxgraph.atlassian.single'); + + if (stencil != null) + { + c.setFillColor('#9AA1B2'); + stencil.drawShape(c, this, 85, 5, 10, 10); + } + break; + } + + c.setFillColor('#FFFFFD'); + c.setFontColor('#4E6B89'); + + switch (issueStatus) { + case 'todo': + c.rect(w - 45, 5, 40, 20); + c.fill(); + + c.text(w - 25, 15, 0, 0, 'TO DO', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + case 'inProgress': + c.rect(w - 85, 5, 80, 20); + c.fill(); + + c.text(w - 45, 15, 0, 0, 'IN PROGRESS', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + case 'inReview': + c.rect(w - 75, 5, 70, 20); + c.fill(); + + c.text(w - 40, 15, 0, 0, 'IN REVIEW', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + case 'done': + c.rect(w - 45, 5, 40, 20); + c.fill(); + + c.text(w - 25, 15, 0, 0, 'DONE', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + break; + default: + var tw = mxUtils.getValue(this.style, 'issueStatusWidth', issueStatus.length * 6.5); + c.rect(w - tw - 5, 5, tw, 20); + c.fill(); + c.text(w - 7, 15, 0, 0, issueStatus, mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxAtlassianJiraIssue.prototype.cst.ISSUE, mxAtlassianJiraIssue); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxBasic.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxBasic.js new file mode 100644 index 0000000000000..169de727351ab --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxBasic.js @@ -0,0 +1,4600 @@ +/** + * $Id: mxBasic.js,v 1.5 2016/04/1 12:32:06 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ +//********************************************************************************************************************************************************** +// Cross +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicCross(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicCross, mxActor); + +mxShapeBasicCross.prototype.cst = {CROSS : 'mxgraph.basic.cross2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicCross.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(w * 0.5 + dx, 0); + c.lineTo(w * 0.5 + dx, h * 0.5 - dx); + c.lineTo(w, h * 0.5 - dx); + c.lineTo(w, h * 0.5 + dx); + c.lineTo(w * 0.5 + dx, h * 0.5 + dx); + c.lineTo(w * 0.5 + dx, h); + c.lineTo(w * 0.5 - dx, h); + c.lineTo(w * 0.5 - dx, h * 0.5 + dx); + c.lineTo(0, h * 0.5 + dx); + c.lineTo(0, h * 0.5 - dx); + c.lineTo(w * 0.5 - dx, h * 0.5 - dx); + c.lineTo(w * 0.5 - dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCross.prototype.cst.CROSS, mxShapeBasicCross); + +mxShapeBasicCross.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCross.prototype.cst.CROSS] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + bounds.width / 2 + dx, bounds.y + bounds.height / 2 - dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x - bounds.width / 2))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +// Rectangular Callout +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicRectCallout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicRectCallout, mxActor); + +mxShapeBasicRectCallout.prototype.customProperties = [ + {name: 'dx', dispName: 'Callout Position', type: 'float', min:0, defVal:30}, + {name: 'dy', dispName: 'Callout Size', type: 'float', min:0, defVal:15} +]; + +mxShapeBasicRectCallout.prototype.cst = {RECT_CALLOUT : 'mxgraph.basic.rectCallout'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicRectCallout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + c.begin(); + c.moveTo(dx - dy * 0.5, h - dy); + c.lineTo(0, h - dy); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(dx + dy * 0.5, h - dy); + c.lineTo(dx - dy, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapeBasicRectCallout.prototype.getLabelMargins = function() +{ + if (mxUtils.getValue(this.style, 'boundedLbl', false)) + { + return new mxRectangle(0, 0, 0, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)) * this.scale); + } + + return null; +}; + +mxCellRenderer.registerShape(mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT, mxShapeBasicRectCallout); + +mxShapeBasicRectCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRectCallout.prototype.cst.RECT_CALLOUT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function(bounds, pt) + { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + })]; + + return handles; +}; + +mxShapeBasicRectCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + + return (constr); +} + +//********************************************************************************************************************************************************** +// Rounded Rectangular Callout +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicRoundRectCallout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; + this.dx = 0.5; + this.size = 10; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicRoundRectCallout, mxActor); + +mxShapeBasicRoundRectCallout.prototype.cst = {ROUND_RECT_CALLOUT : 'mxgraph.basic.roundRectCallout'}; + +mxShapeBasicRoundRectCallout.prototype.getLabelMargins = mxShapeBasicRectCallout.prototype.getLabelMargins; + +mxShapeBasicRoundRectCallout.prototype.customProperties = [ + {name: 'size', dispName: 'Arc Size', type: 'float', min:0, defVal:5}, + {name: 'dx', dispName: 'Callout Position', type: 'float', min:0, defVal:30}, + {name: 'dy', dispName: 'Callout Size', type: 'float', min:0, defVal:15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicRoundRectCallout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + r = Math.min((h - dy) / 2, w / 2, r); + dx = Math.max(r + dy * 0.5, dx); + dx = Math.min(w - r - dy * 0.5, dx); + + c.begin(); + c.moveTo(dx - dy * 0.5, h - dy); + c.lineTo(r, h - dy); + c.arcTo(r, r, 0, 0, 1, 0, h - dy - r); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.lineTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - dy - r); + c.arcTo(r, r, 0, 0, 1, w - r, h - dy); + c.lineTo(dx + dy * 0.5, h - dy); + c.arcTo(1.9 * dy, 1.4 * dy, 0, 0, 1, dx - dy, h); + c.arcTo(0.9 * dy, 1.4 * dy, 0, 0, 0, dx - dy * 0.5, h - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT, mxShapeBasicRoundRectCallout); + +mxShapeBasicRoundRectCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRoundRectCallout.prototype.cst.ROUND_RECT_CALLOUT] = function(state) +{ + return [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function(bounds, pt) + { + var y = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)) * 0.6; + this.state.style['dx'] = Math.round(100 * Math.max(y, Math.min(bounds.width - y, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))); + }), Graph.createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + + return new mxPoint(bounds.x + bounds.width - size, bounds.y + 10); + }, function(bounds, pt) + { + var dy = parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)); + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, (bounds.height - dy) / 2, bounds.x + bounds.width - pt.x))) / 100; + })]; +}; + +mxShapeBasicRoundRectCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var r = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + + r = Math.min((h - dy) / 2, w / 2, r); + dx = Math.max(r + dy * 0.5, dx); + dx = Math.min(w - r - dy * 0.5, dx); + + if (r < w * 0.25) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + } + + if (r < (h - dy) * 0.25) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.75)); + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h - dy - r * 0.293)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx - dy, h)); + + return (constr); +} + +//********************************************************************************************************************************************************** +// Wave +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicWave(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicWave, mxActor); + +mxShapeBasicWave.prototype.customProperties = [ + {name: 'dy', dispName: 'Wave Size', type: 'float', min:0, max:1, defVal: 0.3} +]; + +mxShapeBasicWave.prototype.cst = {WAVE : 'mxgraph.basic.wave2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicWave.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var fy = 1.4 + + c.begin(); + c.moveTo(0, dy / 2); + c.quadTo(w / 6, dy * (1 - fy), w / 3, dy / 2); + c.quadTo(w / 2, dy * fy, w * 2 / 3, dy / 2); + c.quadTo(w * 5 / 6, dy * (1 - fy), w, dy / 2); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 5 / 6, h - dy * fy, w * 2 / 3, h - dy / 2); + c.quadTo(w / 2, h - dy * (1 - fy), w / 3, h - dy / 2); + c.quadTo(w / 6, h - dy * fy, 0, h - dy / 2); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicWave.prototype.cst.WAVE, mxShapeBasicWave); + +mxShapeBasicWave.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicWave.prototype.cst.WAVE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + })]; + + return handles; +}; + +mxShapeBasicWave.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var fy = 1.4 + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h * 0.015)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.83, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.67, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy * 0.04)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 3, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w / 6, h - dy * 0.95)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.5)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Octagon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicOctagon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicOctagon, mxActor); + +mxShapeBasicOctagon.prototype.customProperties = [ + {name: 'dx', dispName: 'Cutoff Size', type: 'float', min:0, defVal:15} +]; + +mxShapeBasicOctagon.prototype.cst = {OCTAGON : 'mxgraph.basic.octagon2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicOctagon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h - dx); + c.lineTo(w - dx, h); + c.lineTo(dx, h); + c.lineTo(0, h - dx); + c.lineTo(0, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicOctagon.prototype.cst.OCTAGON, mxShapeBasicOctagon); + +mxShapeBasicOctagon.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicOctagon.prototype.cst.OCTAGON] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicOctagon.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dx)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Isometric Cube +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicIsoCube(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.isoAngle = 15; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicIsoCube, mxActor); + +mxShapeBasicIsoCube.prototype.customProperties = [ + {name: 'isoAngle', dispName: 'Perspective Angle', type: 'float', min:0, defVal:15} +]; + +mxShapeBasicIsoCube.prototype.cst = {ISO_CUBE : 'mxgraph.basic.isocube'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicIsoCube.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - isoH); + c.lineTo(0, isoH); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(0, isoH); + c.lineTo(w * 0.5, 2 * isoH); + c.lineTo(w, isoH); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicIsoCube.prototype.cst.ISO_CUBE, mxShapeBasicIsoCube); + +mxShapeBasicIsoCube.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicIsoCube.prototype.cst.ISO_CUBE] = function(state) +{ + var handles = [Graph.createHandle(state, ['isoAngle'], function(bounds) + { + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(bounds.width * Math.tan(isoAngle), bounds.height * 0.5); + + return new mxPoint(bounds.x, bounds.y + isoH); + }, function(bounds, pt) + { + this.state.style['isoAngle'] = Math.round(100 * Math.max(0, Math.min(100, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeBasicIsoCube.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Acute Triangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicTriangleAcute(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicTriangleAcute, mxActor); + +mxShapeBasicTriangleAcute.prototype.customProperties = [ + {name: 'dx', dispName: 'Top', type: 'float', min:0, max:1, defVal:0.5} +]; + +mxShapeBasicTriangleAcute.prototype.cst = {ACUTE_TRIANGLE : 'mxgraph.basic.acute_triangle'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicTriangleAcute.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE, mxShapeBasicTriangleAcute); + +mxShapeBasicTriangleAcute.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicTriangleAcute.prototype.cst.ACUTE_TRIANGLE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +}; + +mxShapeBasicTriangleAcute.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (w - dx) * 0.5, h * 0.5)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Obtuse Triangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicTriangleObtuse(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicTriangleObtuse, mxActor); + +mxShapeBasicTriangleObtuse.prototype.customProperties = [ + {name: 'dx', dispName: 'Bottom', type: 'float', min:0, max:1, defVal:0.25} +]; + +mxShapeBasicTriangleObtuse.prototype.cst = {OBTUSE_TRIANGLE : 'mxgraph.basic.obtuse_triangle'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicTriangleObtuse.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(dx, h); + c.lineTo(0, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE, mxShapeBasicTriangleObtuse); + +mxShapeBasicTriangleObtuse.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicTriangleObtuse.prototype.cst.OBTUSE_TRIANGLE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + bounds.height - 10); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +}; + +mxShapeBasicTriangleObtuse.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h * 0.5)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Drop +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicDrop(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicDrop, mxActor); + +mxShapeBasicDrop.prototype.cst = {DROP : 'mxgraph.basic.drop'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicDrop.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var r = Math.min(h, w) * 0.5; + var d = h - r; + var a = Math.sqrt(d * d - r * r); + + var angle = Math.atan(a / r); + + var x1 = r * Math.sin(angle); + var y1 = r * Math.cos(angle); + + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5 + x1, h - r - y1); + c.arcTo(r, r, 0, 0, 1, w * 0.5 + r, h - r); + c.arcTo(r, r, 0, 0, 1, w * 0.5, h); + c.arcTo(r, r, 0, 0, 1, w * 0.5 - r, h - r); + c.arcTo(r, r, 0, 0, 1, w * 0.5 - x1, h - r - y1); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDrop.prototype.cst.DROP, mxShapeBasicDrop); + +mxShapeBasicDrop.prototype.constraints = null; + +//********************************************************************************************************************************************************** +//Cone 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicCone2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.9; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicCone2, mxActor); + +mxShapeBasicCone2.prototype.customProperties = [ + {name: 'dx', dispName: 'Top', type: 'float', min:0, max:1, defVal:0.5}, + {name: 'dy', dispName: 'Bottom', type: 'float', min:0, max:1, defVal:0.9} +]; + +mxShapeBasicCone2.prototype.cst = {CONE2 : 'mxgraph.basic.cone2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicCone2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var ry = h - dy; + + c.begin(); + c.moveTo(dx, 0); + + if (ry > 0) + { + c.lineTo(w, h - ry); + c.arcTo(w * 0.5, ry, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, ry, 0, 0, 1, 0, h - ry); + } + else + { + c.lineTo(w, h); + c.lineTo(0, h); + } + + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCone2.prototype.cst.CONE2, mxShapeBasicCone2); + +mxShapeBasicCone2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCone2.prototype.cst.CONE2] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + 10, bounds.y + dy * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeBasicCone2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var ry = h - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - ry)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - ry)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Pyramid +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicPyramid(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx1 = 0.5; + this.dx2 = 0.6; + this.dy1 = 0.9; + this.dy2 = 0.8; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicPyramid, mxActor); + +mxShapeBasicPyramid.prototype.customProperties = [ + {name: 'dx1', dispName: 'Top', type: 'float', min:0, max:1, defVal:0.4}, + {name: 'dx2', dispName: 'Bottom', type: 'float', min:0, max:1, defVal:0.6}, + {name: 'dy1', dispName: 'Perspective Left', type: 'float', min:0, max:1, defVal:0.9}, + {name: 'dy2', dispName: 'Perspective Right', type: 'float', min:0, max:1, defVal:0.8} +]; + +mxShapeBasicPyramid.prototype.cst = {PYRAMID : 'mxgraph.basic.pyramid'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicPyramid.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy1 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dy2 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + + c.begin(); + c.moveTo(dx1, 0); + c.lineTo(w, dy2); + c.lineTo(dx2, h); + c.lineTo(0, dy1); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(dx1, 0); + c.lineTo(dx2, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPyramid.prototype.cst.PYRAMID, mxShapeBasicPyramid); + +mxShapeBasicPyramid.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPyramid.prototype.cst.PYRAMID] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1'], function(bounds) + { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height - 10); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dy1'], function(bounds) + { + var dy1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy1', this.dy1)))); + + return new mxPoint(bounds.x + 10, bounds.y + dy1 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dy2'], function(bounds) + { + var dy2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dy2', this.dy2)))); + + return new mxPoint(bounds.x + bounds.width - 10, bounds.y + dy2 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 100; + }); + + handles.push(handle4); + + return handles; +}; + +mxShapeBasicPyramid.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + var dx2 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var dy1 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy1', this.dy1)))); + var dy2 = h * Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy2', this.dy2)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx1) * 0.5, dy2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + dx2) * 0.5, (h + dy2) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 * 0.5, (h + dy1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx1 * 0.5, dy1 * 0.5)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//4 Point Star 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasic4PointStar2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.8; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasic4PointStar2, mxActor); + +mxShapeBasic4PointStar2.prototype.customProperties = [ + {name: 'dx', dispName: 'Thickness', type: 'float', min:0, max:1, defVal:0.8} +]; + +mxShapeBasic4PointStar2.prototype.cst = {FOUR_POINT_STAR_2 : 'mxgraph.basic.4_point_star_2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasic4PointStar2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = 0.5 * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx * w, dx * h); + c.lineTo(w * 0.5, 0); + c.lineTo(w - dx * w, dx * h); + c.lineTo(w, h * 0.5); + c.lineTo(w - dx * w, h - dx * h); + c.lineTo(w * 0.5, h); + c.lineTo(dx * w, h - dx * h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2, mxShapeBasic4PointStar2); + +mxShapeBasic4PointStar2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasic4PointStar2.prototype.cst.FOUR_POINT_STAR_2] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * bounds.width / 2, bounds.y + dx * bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(1, 2 * (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + return handles; +}; + +mxShapeBasic4PointStar2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = 0.5 * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1 - dx, 1 - dx), false)); + constr.push(new mxConnectionConstraint(new mxPoint(dx, 1 - dx), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Diagonal Snip Rectangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicDiagSnipRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicDiagSnipRect, mxActor); + +mxShapeBasicDiagSnipRect.prototype.customProperties = [ + {name: 'dx', dispName: 'Snip', type: 'float', min:0, deVal:6}, +]; + +mxShapeBasicDiagSnipRect.prototype.cst = {DIAG_SNIP_RECT : 'mxgraph.basic.diag_snip_rect'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicDiagSnipRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dx); + c.lineTo(w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT, mxShapeBasicDiagSnipRect); + +mxShapeBasicDiagSnipRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagSnipRect.prototype.cst.DIAG_SNIP_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicDiagSnipRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx) * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Diagonal Round Rectangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicDiagRoundRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicDiagRoundRect, mxActor); + +mxShapeBasicDiagRoundRect.prototype.customProperties = [ + {name: 'dx', dispName: 'Rounding Size', type: 'float', min:0, defVal:6}, +]; + +mxShapeBasicDiagRoundRect.prototype.cst = {DIAG_ROUND_RECT : 'mxgraph.basic.diag_round_rect'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicDiagRoundRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 1, w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT, mxShapeBasicDiagRoundRect); + +mxShapeBasicDiagRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagRoundRect.prototype.cst.DIAG_ROUND_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicDiagRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Corner Round Rectangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicCornerRoundRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicCornerRoundRect, mxActor); + +mxShapeBasicCornerRoundRect.prototype.customProperties = [ + {name: 'dx', dispName: 'Rounding Size', type: 'float', min:0, defVal:6}, +]; + +mxShapeBasicCornerRoundRect.prototype.cst = {CORNER_ROUND_RECT : 'mxgraph.basic.corner_round_rect'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicCornerRoundRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT, mxShapeBasicCornerRoundRect); + +mxShapeBasicCornerRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicCornerRoundRect.prototype.cst.CORNER_ROUND_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicCornerRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Plaque +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicPlaque(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicPlaque, mxActor); + +mxShapeBasicPlaque.prototype.customProperties = [ + {name: 'dx', dispName: 'Cutoff Size', type: 'float', min:0, defVal:6}, +]; + +mxShapeBasicPlaque.prototype.cst = {PLAQUE : 'mxgraph.basic.plaque'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicPlaque.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 0, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 0, 0, h - dx); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPlaque.prototype.cst.PLAQUE, mxShapeBasicPlaque); + +mxShapeBasicPlaque.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPlaque.prototype.cst.PLAQUE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx * 1.41, bounds.y + dx * 1.41); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicPlaque.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Frame +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicFrame(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicFrame, mxActor); + +mxShapeBasicFrame.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', min:0, defVal:10}, +]; + +mxShapeBasicFrame.prototype.cst = {FRAME : 'mxgraph.basic.frame'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicFrame.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.lineTo(0, 0); + c.close(); + c.moveTo(dx, dx); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicFrame.prototype.cst.FRAME, mxShapeBasicFrame); + +mxShapeBasicFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicFrame.prototype.cst.FRAME] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx)* 0.25 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w * 1.5 - dx) * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx)* 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.75 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.25 + dx, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.25 + dx)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Plaque Frame +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicPlaqueFrame(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +*/ +mxUtils.extend(mxShapeBasicPlaqueFrame, mxActor); + +mxShapeBasicPlaqueFrame.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', mix:0, defVal:10}, +]; + +mxShapeBasicPlaqueFrame.prototype.cst = {PLAQUE_FRAME : 'mxgraph.basic.plaque_frame'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicPlaqueFrame.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.25, h * 0.25, dx); + + c.begin(); + c.moveTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 0, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h); + c.lineTo(dx, h); + c.arcTo(dx, dx, 0, 0, 0, 0, h - dx); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, 0); + c.close(); + + c.moveTo(dx * 2, dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx, dx * 2); + c.lineTo(dx, h - 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, dx * 2, h - dx); + c.lineTo(w - 2 * dx, h - dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - dx, h - 2 * dx); + c.lineTo(w - dx, dx * 2); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, dx); + c.close(); + + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME, mxShapeBasicPlaqueFrame); + +mxShapeBasicPlaqueFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPlaqueFrame.prototype.cst.PLAQUE_FRAME] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicPlaqueFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Rounded Frame +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicRoundedFrame(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicRoundedFrame, mxActor); + +mxShapeBasicRoundedFrame.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', min:0, defVal:10}, +]; + +mxShapeBasicRoundedFrame.prototype.cst = {ROUNDED_FRAME : 'mxgraph.basic.rounded_frame'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicRoundedFrame.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.25, h * 0.25, dx); + + c.begin(); + c.moveTo(w - 2 * dx, 0); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w, 2 * dx); + c.lineTo(w, h - 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, w - 2 * dx, h); + c.lineTo(dx * 2, h); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, 0, h - 2 * dx); + c.lineTo(0, 2 * dx); + c.arcTo(dx * 2, dx * 2, 0, 0, 1, 2 * dx, 0); + c.close(); + + c.moveTo(dx * 2, dx); + c.arcTo(dx, dx, 0, 0, 0, dx, dx * 2); + c.lineTo(dx, h - 2 * dx); + c.arcTo(dx, dx, 0, 0, 0, dx * 2, h - dx); + c.lineTo(w - 2 * dx, h - dx); + c.arcTo(dx, dx, 0, 0, 0, w - dx, h - 2 * dx); + c.lineTo(w - dx, dx * 2); + c.arcTo(dx, dx, 0, 0, 0, w - 2 * dx, dx); + c.close(); + + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME, mxShapeBasicRoundedFrame); + +mxShapeBasicRoundedFrame.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRoundedFrame.prototype.cst.ROUNDED_FRAME] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicRoundedFrame.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 0, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Frame Corner +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicFrameCorner(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicFrameCorner, mxActor); + +mxShapeBasicFrameCorner.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', min:0, defVal:10}, +]; + +mxShapeBasicFrameCorner.prototype.cst = {FRAME_CORNER : 'mxgraph.basic.frame_corner'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicFrameCorner.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER, mxShapeBasicFrameCorner); + +mxShapeBasicFrameCorner.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicFrameCorner.prototype.cst.FRAME_CORNER] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicFrameCorner.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - 2 * dx) * 0.5 + dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - 2 * dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, dx, -dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Diagonal Stripe +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicDiagStripe(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicDiagStripe, mxActor); + +mxShapeBasicDiagStripe.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', mix:0, defVal:10}, +]; + +mxShapeBasicDiagStripe.prototype.cst = {DIAG_STRIPE : 'mxgraph.basic.diag_stripe'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicDiagStripe.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w, h, dx); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, 0); + c.lineTo(w, Math.min(dx * 100 / w, h)); + c.lineTo(Math.min(dx * 100 / h, w), h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE, mxShapeBasicDiagStripe); + +mxShapeBasicDiagStripe.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDiagStripe.prototype.cst.DIAG_STRIPE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicDiagStripe.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w, h, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, Math.min(dx * 100 / w, h))); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w + Math.min(dx * 100 / h, w)) * 0.5, (Math.min(dx * 100 / w, h) + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w), h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, Math.min(dx * 100 / h, w) * 0.5, h)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Donut +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicDonut(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicDonut, mxActor); + +mxShapeBasicDonut.prototype.customProperties = [ + {name: 'dx', dispName: 'Width', type: 'float', min:0, defVal:25} +]; + +mxShapeBasicDonut.prototype.cst = {DONUT : 'mxgraph.basic.donut'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicDonut.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(0, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.close(); + c.moveTo(w * 0.5, dx); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, dx, h * 0.5); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, h - dx); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w - dx, h * 0.5); + c.arcTo(w * 0.5 - dx, h * 0.5 - dx, 0, 0, 0, w * 0.5, dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicDonut.prototype.cst.DONUT, mxShapeBasicDonut); + +mxShapeBasicDonut.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicDonut.prototype.cst.DONUT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Layered Rect +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicLayeredRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicLayeredRect, mxActor); + +mxShapeBasicLayeredRect.prototype.customProperties = [ + {name: 'dx', dispName: 'Layer Distance', type: 'float', mix:0, defVal:10} +]; + +mxShapeBasicLayeredRect.prototype.cst = {LAYERED_RECT : 'mxgraph.basic.layered_rect'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicLayeredRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, dx); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(dx, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(dx * 0.5, dx * 0.5); + c.lineTo(w - dx * 0.5, dx * 0.5); + c.lineTo(w - dx * 0.5, h - dx * 0.5); + c.lineTo(dx * 0.5, h - dx * 0.5); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, h - dx); + c.lineTo(0, h - dx); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT, mxShapeBasicLayeredRect); + +mxShapeBasicLayeredRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicLayeredRect.prototype.cst.LAYERED_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + bounds.height - dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, - pt.x + bounds.width + bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicLayeredRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + dx = Math.min(w * 0.5, h * 0.5, dx); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.25 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.5 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dx) * 0.75 + dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.75 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.5 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - dx) * 0.25 + dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h - dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dx) * 0.25)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicButton, mxActor); + +mxShapeBasicButton.prototype.customProperties = [ + {name: 'dx', dispName: 'Button Height', type: 'float', min:0, defVal:10} +]; + +mxShapeBasicButton.prototype.cst = {BUTTON : 'mxgraph.basic.button'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setLineJoin('round'); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fillAndStroke(); + + +}; + +mxCellRenderer.registerShape(mxShapeBasicButton.prototype.cst.BUTTON, mxShapeBasicButton); + +mxShapeBasicButton.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicButton.prototype.cst.BUTTON] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Shaded Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicShadedButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicShadedButton, mxActor); + +mxShapeBasicShadedButton.prototype.customProperties = [ + {name: 'dx', dispName: 'Button Height', type: 'float', min:0, defVal:10} +]; + +mxShapeBasicShadedButton.prototype.cst = {SHADED_BUTTON : 'mxgraph.basic.shaded_button'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicShadedButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setShadow(false); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fill(); + + c.setFillColor('#ffffff'); + c.setAlpha(0.25); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(dx, dx); + c.lineTo(dx, h - dx); + c.close(); + c.fill(); + + c.setAlpha(0.5); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w - dx, dx); + c.lineTo(dx, dx); + c.close(); + c.fill(); + + c.setFillColor('#000000'); + c.setAlpha(0.25); + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - dx, h - dx); + c.lineTo(w - dx, dx); + c.close(); + c.fill(); + + c.setAlpha(0.5); + c.begin(); + c.moveTo(0, h); + c.lineTo(dx, h - dx); + c.lineTo(w - dx, h - dx); + c.lineTo(w, h); + c.close(); + c.fill(); + + +}; + +mxCellRenderer.registerShape(mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON, mxShapeBasicShadedButton); + +mxShapeBasicShadedButton.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicShadedButton.prototype.cst.SHADED_BUTTON] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Pie +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicPie(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicPie, mxActor); + +mxShapeBasicPie.prototype.customProperties = [ + {name: 'startAngle', dispName: 'Start Angle', type: 'float', min:0, max:1, defVal: 0.2}, + {name: 'endAngle', dispName: 'End Angle', type: 'float', min:0, max:1, defVal: 0.9} +]; + +mxShapeBasicPie.prototype.cst = {PIE : 'mxgraph.basic.pie'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicPie.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var rx = w * 0.5; + var ry = h * 0.5; + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) + { + bigArc = 1; + } + + c.begin(); + c.moveTo(rx, ry); + c.lineTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPie.prototype.cst.PIE, mxShapeBasicPie); + +mxShapeBasicPie.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPie.prototype.cst.PIE] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + return handles; +}; + +//********************************************************************************************************************************************************** +//Arc +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicArc(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicArc, mxActor); + +mxShapeBasicArc.prototype.customProperties = [ + {name: 'startAngle', dispName: 'Start Angle', type: 'float', min:0, max:1, defVal: 0.3}, + {name: 'endAngle', dispName: 'End Angle', type: 'float', min:0, max:1, defVal:0.1} +]; + +mxShapeBasicArc.prototype.cst = {ARC : 'mxgraph.basic.arc'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicArc.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var rx = w * 0.5; + var ry = h * 0.5; + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) + { + bigArc = 1; + } + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicArc.prototype.cst.ARC, mxShapeBasicArc); + +mxShapeBasicArc.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicArc.prototype.cst.ARC] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + return handles; +}; + +//********************************************************************************************************************************************************** +//Partial Concentric Ellipse +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicPartConcEllipse(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicPartConcEllipse, mxActor); + +mxShapeBasicPartConcEllipse.prototype.customProperties = [ + {name: 'startAngle', dispName: 'Start Angle', type: 'float', min:0, max:1, defVal:0.25}, + {name: 'endAngle', dispName: 'End Angle', type: 'float', min:0, max:1, defVal:0.1}, + {name: 'arcWidth', dispName: 'Arc Width', type: 'float', min:0, max:1, defVal:0.5} +]; + +mxShapeBasicPartConcEllipse.prototype.cst = {PART_CONC_ELLIPSE : 'mxgraph.basic.partConcEllipse'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicPartConcEllipse.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + else if (angDiff == Math.PI) + { + endAngle = endAngle + 0.00001; + } + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + + + var bigArc = 0; + + if (angDiff >= Math.PI) + { + bigArc = 1; + } + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE, mxShapeBasicPartConcEllipse); + +mxShapeBasicPartConcEllipse.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arcWidth'], function(bounds) + { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +//********************************************************************************************************************************************************** +//Numbered entry (vertical) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicNumEntryVert(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicNumEntryVert, mxActor); + +mxShapeBasicNumEntryVert.prototype.cst = {NUM_ENTRY_VERT : 'mxgraph.basic.numberedEntryVert'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicNumEntryVert.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var inset = 5; + + var d = Math.min(dy, w - 2 * inset, h - inset); + + c.ellipse(w * 0.5 - d * 0.5, 0, d, d); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, d * 0.5); + c.lineTo(w * 0.5 - d * 0.5 - inset, d * 0.5); + c.arcTo(d * 0.5 + inset, d * 0.5 + inset, 0, 0, 0, w * 0.5 + d * 0.5 + inset, d * 0.5); + c.lineTo(w, d * 0.5); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicNumEntryVert.prototype.cst.NUM_ENTRY_VERT, mxShapeBasicNumEntryVert); + +mxShapeBasicNumEntryVert.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.width, bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.width, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Bending Arch +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicBendingArch(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicBendingArch, mxActor); + +mxShapeBasicBendingArch.prototype.cst = {BENDING_ARCH : 'mxgraph.basic.bendingArch'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicBendingArch.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) + { + bigArc = 1; + } + + var rx3 = rx2 - 5; + var ry3 = ry2 - 5; + + c.ellipse(w * 0.5 - rx3, h * 0.5 - ry3, 2 * rx3, 2 * ry3); + c.fillAndStroke(); + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicBendingArch.prototype.cst.BENDING_ARCH, mxShapeBasicBendingArch); + +mxShapeBasicBendingArch.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicBendingArch.prototype.cst.BENDING_ARCH] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arcWidth'], function(bounds) + { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +//********************************************************************************************************************************************************** +//Three Corner Round Rectangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicThreeCornerRoundRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicThreeCornerRoundRect, mxActor); + +mxShapeBasicThreeCornerRoundRect.prototype.customProperties = [ + {name: 'dx', dispName: 'Rounding Size', type: 'float', min:0, defVal:6} +]; + +mxShapeBasicThreeCornerRoundRect.prototype.cst = {THREE_CORNER_ROUND_RECT : 'mxgraph.basic.three_corner_round_rect'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicThreeCornerRoundRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))) * 2; + + dx = Math.min(w * 0.5, h * 0.5, dx); + + c.begin(); + c.moveTo(dx, 0); + c.lineTo(w - dx, 0); + c.arcTo(dx, dx, 0, 0, 1, w, dx); + c.lineTo(w, h - dx); + c.arcTo(dx, dx, 0, 0, 1, w - dx, h); + c.lineTo(0, h); + c.lineTo(0, dx); + c.arcTo(dx, dx, 0, 0, 1, dx, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT, mxShapeBasicThreeCornerRoundRect); + +mxShapeBasicThreeCornerRoundRect.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicThreeCornerRoundRect.prototype.cst.THREE_CORNER_ROUND_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 4, bounds.width / 4, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 4, bounds.width / 4, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeBasicThreeCornerRoundRect.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Rectangle v2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBasicRect2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.rectStyle = 'square'; + this.size = 10; + this.absoluteCornerSize = true; + this.indent = 2; + this.rectOutline = 'single'; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBasicRect2, mxActor); + +mxShapeBasicRect2.prototype.cst = {RECT2 : 'mxgraph.basic.rect'}; + +mxShapeBasicRect2.prototype.customProperties = [ + {name: 'rectStyle', dispName: 'Style', type: 'enum', defVal:'square', + enumList:[ + {val:'square', dispName:'Square'}, + {val:'rounded', dispName:'Round'}, + {val:'snip', dispName:'Snip'}, + {val:'invRound', dispName:'Inv. Round'}, + {val:'fold', dispName:'Fold'} + ]}, + {name: 'size', dispName: 'Corner Size', type: 'float', defVal:10}, + {name: 'absoluteCornerSize', dispName: 'Abs. Corner Size', type: 'bool', defVal:true}, + {name: 'indent', dispName:'Indent', type:'float', defVal:2}, + {name: 'rectOutline', dispName: 'Outline', type: 'enum', defVal:'single', + enumList:[ + {val:'single', dispName:'Single'}, + {val:'double', dispName:'Double'}, + {val:'frame', dispName:'Frame'} + ]}, + {name: 'fillColor2', dispName:'Inside Fill Color', type:'color', defVal:'none'}, + {name: 'gradientColor2', dispName:'Inside Gradient Color', type:'color', defVal:'none'}, + {name: 'gradientDirection2', dispName: 'Inside Gradient Direction', type: 'enum', defVal:'south', + enumList:[ + {val:'south', dispName:'South'}, + {val:'west', dispName:'West'}, + {val:'north', dispName:'North'}, + {val:'east', dispName:'East'} + ]}, + {name: 'top', dispName:'Top Line', type:'bool', defVal:true}, + {name: 'right', dispName:'Right', type:'bool', defVal:true}, + {name: 'bottom', dispName:'Bottom Line', type:'bool', defVal:true}, + {name: 'left', dispName:'Left ', type:'bool', defVal:true}, + {name: 'topLeftStyle', dispName: 'Top Left Style', type: 'enum', defVal:'default', + enumList:[ + {val:'default', dispName:'Default'}, + {val:'square', dispName:'Square'}, + {val:'rounded', dispName:'Round'}, + {val:'snip', dispName:'Snip'}, + {val:'invRound', dispName:'Inv. Round'}, + {val:'fold', dispName:'Fold'} + ]}, + {name: 'topRightStyle', dispName: 'Top Right Style', type: 'enum', defVal:'default', + enumList:[ + {val:'default', dispName:'Default'}, + {val:'square', dispName:'Square'}, + {val:'rounded', dispName:'Round'}, + {val:'snip', dispName:'Snip'}, + {val:'invRound', dispName:'Inv. Round'}, + {val:'fold', dispName:'Fold'} + ]}, + {name: 'bottomRightStyle', dispName: 'Bottom Right Style', type: 'enum', defVal:'default', + enumList:[ + {val:'default', dispName:'Default'}, + {val:'square', dispName:'Square'}, + {val:'rounded', dispName:'Round'}, + {val:'snip', dispName:'Snip'}, + {val:'invRound', dispName:'Inv. Round'}, + {val:'fold', dispName:'Fold'} + ]}, + {name: 'bottomLeftStyle', dispName: 'Bottom Left Style', type: 'enum', defVal:'default', + enumList:[ + {val:'default', dispName:'Default'}, + {val:'square', dispName:'Square'}, + {val:'rounded', dispName:'Round'}, + {val:'snip', dispName:'Snip'}, + {val:'invRound', dispName:'Inv. Round'}, + {val:'fold', dispName:'Fold'} + ]}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBasicRect2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rectStyle = mxUtils.getValue(this.style, 'rectStyle', this.rectStyle); + var absoluteCornerSize = mxUtils.getValue(this.style, 'absoluteCornerSize', this.absoluteCornerSize); + + var size = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var relSize = Math.max(0, Math.min(50, size)); + + size = Math.min(h * 0.5, w * 0.5, size); + + if (!absoluteCornerSize) + { + size = relSize * Math.min(w, h) / 100; + } + + var rectOutline = mxUtils.getValue(this.style, 'rectOutline', this.rectOutline); + var indent = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'indent', this.indent)))); + var relIndent = Math.max(0, Math.min(50, indent)); + + size = Math.min(size, Math.min(w, h) * 0.5); + + if (!absoluteCornerSize) + { + indent = Math.min(relIndent * Math.min(w, h) / 100); + } + +// indent = Math.min(indent, 2 * size, Math.min(w, h) - size); + indent = Math.min(indent, Math.min(w, h) * 0.5 - size); + + var top = mxUtils.getValue(this.style, 'top', true); + var right = mxUtils.getValue(this.style, 'right', true); + var bottom = mxUtils.getValue(this.style, 'bottom', true); + var left = mxUtils.getValue(this.style, 'left', true); + + var topLeftStyle = mxUtils.getValue(this.style, 'topLeftStyle', 'default'); + var topRightStyle = mxUtils.getValue(this.style, 'topRightStyle', 'default'); + var bottomRightStyle = mxUtils.getValue(this.style, 'bottomRightStyle', 'default'); + var bottomLeftStyle = mxUtils.getValue(this.style, 'bottomLeftStyle', 'default'); + var fillColor = mxUtils.getValue(this.style, 'fillColor', 'none'); + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', 'none'); + var gradientColor2 = mxUtils.getValue(this.style, 'gradientColor2', 'none'); + var gdir2 = mxUtils.getValue(this.style, 'gradientDirection2', 'south'); + var opacity = mxUtils.getValue(this.style, 'opacity', '100'); + + if ((top || right || bottom || left) && rectOutline != 'frame') + { + + //outline fill + c.begin(); + if (!top) + { + c.moveTo(0,0); + } + else + { + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + } + + if (top) + { + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + } + + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (right) + { + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + } + + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (bottom) + { + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + } + + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (left) + { + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + } + + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + c.fill(); + + c.setShadow(false); + + //inner fill + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', 'none'); + c.setFillColor(fillColor2); + var op1 = opacity; + var op2 = opacity; + + if (fillColor2 == 'none') + { + op1 = 0; + } + + if (gradientColor2 == 'none') + { + op2 = 0; + } + + + c.setGradient(fillColor2, gradientColor2, 0, 0, w, h, gdir2, op1, op2); + + c.begin(); + + if (!top) + { + c.moveTo(indent,0); + } + else + { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + } + + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + + if (left && bottom) + { + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + } + + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + + if (bottom && right) + { + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + } + + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + + if (right && top) + { + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + } + + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + + if (top && left) + { + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + } + + c.fill(); + + if (fillColor == 'none') + { + c.begin(); + mxShapeBasicRect2.prototype.paintFolds(c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left); + c.stroke(); + } + } + + //draw all the combinations + if (!top && !right && !bottom && left) + { + + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && !right && bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && !right && bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && right && !bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && right && !bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, topLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && right && bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } + else if (!top && right && bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.lineNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + c.close(); + c.fillAndStroke(); + } + } + else if (top && !right && !bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } + else if (top && !right && !bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } + else if (top && !right && bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } + else if (top && !right && bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.lineNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + c.close(); + c.fillAndStroke(); + } + } + else if (top && right && !bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } + else if (top && right && !bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.lineSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } + else if (top && right && bottom && !left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.lineSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + c.close(); + c.fillAndStroke(); + } + } + else if (top && right && bottom && left) + { + if (rectOutline != 'frame') + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + + if (rectOutline == 'double') + { + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + } + + c.stroke(); + } + else + { + c.begin(); + mxShapeBasicRect2.prototype.moveNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintNW(c, x, y, w, h, rectStyle, topLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintTop(c, x, y, w, h, rectStyle, topRightStyle, size, right); + mxShapeBasicRect2.prototype.paintNE(c, x, y, w, h, rectStyle, topRightStyle, size, top); + mxShapeBasicRect2.prototype.paintRight(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom); + mxShapeBasicRect2.prototype.paintSE(c, x, y, w, h, rectStyle, bottomRightStyle, size, right); + mxShapeBasicRect2.prototype.paintBottom(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left); + mxShapeBasicRect2.prototype.paintSW(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom); + mxShapeBasicRect2.prototype.paintLeft(c, x, y, w, h, rectStyle, topLeftStyle, size, top); + c.close(); + mxShapeBasicRect2.prototype.moveSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left); + mxShapeBasicRect2.prototype.paintSWInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom); + mxShapeBasicRect2.prototype.paintBottomInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom); + mxShapeBasicRect2.prototype.paintSEInner(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintRightInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right); + mxShapeBasicRect2.prototype.paintNEInner(c, x, y, w, h, rectStyle, topRightStyle, size, indent); + mxShapeBasicRect2.prototype.paintTopInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top); + mxShapeBasicRect2.prototype.paintNWInner(c, x, y, w, h, rectStyle, topLeftStyle, size, indent); + mxShapeBasicRect2.prototype.paintLeftInner(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left); + c.close(); + c.fillAndStroke(); + } + } + + c.begin(); + mxShapeBasicRect2.prototype.paintFolds(c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left); + c.stroke(); +}; + +mxShapeBasicRect2.prototype.moveNW = function(c, x, y, w, h, rectStyle, topLeftStyle, size, left) +{ + if((topLeftStyle == 'square' || (topLeftStyle == 'default' && rectStyle == 'square' )) || !left) + { + c.moveTo(0, 0); + } + else + { + c.moveTo(0, size); + } +}; + +mxShapeBasicRect2.prototype.moveNE = function(c, x, y, w, h, rectStyle, topRightStyle, size, top) +{ + if((topRightStyle == 'square' || (topRightStyle == 'default' && rectStyle == 'square' )) || !top) + { + c.moveTo(w, 0); + } + else + { + c.moveTo(w - size, 0); + } +}; + +mxShapeBasicRect2.prototype.moveSE = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, right) +{ + if((bottomRightStyle == 'square' || (bottomRightStyle == 'default' && rectStyle == 'square' )) || !right) + { + c.moveTo(w, h); + } + else + { + c.moveTo(w, h - size); + } +}; + +mxShapeBasicRect2.prototype.moveSW = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom) +{ + if((bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) || !bottom) + { + c.moveTo(0, h); + } + else + { + c.moveTo(size, h); + } +}; + +mxShapeBasicRect2.prototype.paintNW = function(c, x, y, w, h, rectStyle, topLeftStyle, size, left) +{ + if (!left) + { + c.lineTo(0, 0); + } + else if((topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) || + (topLeftStyle == 'invRound' || (topLeftStyle == 'default' && rectStyle == 'invRound' )) ) + { + var inv = 0; + + if (topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) + { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, size, 0); + } + else if((topLeftStyle == 'snip' || (topLeftStyle == 'default' && rectStyle == 'snip' )) || + (topLeftStyle == 'fold' || (topLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(size, 0); + } +}; + +mxShapeBasicRect2.prototype.paintTop = function(c, x, y, w, h, rectStyle, topRightStyle, size, right) +{ + if((topRightStyle == 'square' || (topRightStyle == 'default' && rectStyle == 'square' )) || !right) + { + c.lineTo(w, 0); + } + else + { + c.lineTo(w - size, 0); + } +}; + +mxShapeBasicRect2.prototype.paintNE = function(c, x, y, w, h, rectStyle, topRightStyle, size, top) +{ + if (!top) + { + c.lineTo(w, 0); + } + else if((topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) || + (topRightStyle == 'invRound' || (topRightStyle == 'default' && rectStyle == 'invRound' )) ) + { + var inv = 0; + + if (topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) + { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, w, size); + } + else if((topRightStyle == 'snip' || (topRightStyle == 'default' && rectStyle == 'snip' )) || + (topRightStyle == 'fold' || (topRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(w, size); + } +}; + +mxShapeBasicRect2.prototype.paintRight = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, bottom) +{ + if((bottomRightStyle == 'square' || (bottomRightStyle == 'default' && rectStyle == 'square' )) || !bottom) + { + c.lineTo(w, h); + } + else + { + c.lineTo(w, h - size); + } +}; + +mxShapeBasicRect2.prototype.paintLeft = function(c, x, y, w, h, rectStyle, topLeftStyle, size, top) +{ + if((topLeftStyle == 'square' || (topLeftStyle == 'default' && rectStyle == 'square' )) || !top) + { + c.lineTo(0, 0); + } + else + { + c.lineTo(0, size); + } +}; + +mxShapeBasicRect2.prototype.paintSE = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, right) +{ + if (!right) + { + c.lineTo(w, h); + } + else if((bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) || + (bottomRightStyle == 'invRound' || (bottomRightStyle == 'default' && rectStyle == 'invRound' )) ) + { + var inv = 0; + + if (bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) + { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, w - size, h); + } + else if((bottomRightStyle == 'snip' || (bottomRightStyle == 'default' && rectStyle == 'snip' )) || + (bottomRightStyle == 'fold' || (bottomRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(w - size, h); + } +}; + +mxShapeBasicRect2.prototype.paintBottom = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, left) +{ + if((bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) || !left) + { + c.lineTo(0, h); + } + else + { + c.lineTo(size, h); + } +}; + +mxShapeBasicRect2.prototype.paintSW = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, bottom) +{ + if (!bottom) + { + c.lineTo(0, h); + } + else if((bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) || + (bottomLeftStyle == 'invRound' || (bottomLeftStyle == 'default' && rectStyle == 'invRound' )) ) + { + var inv = 0; + + if (bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) + { + inv = 1; + } + + c.arcTo(size, size, 0, 0, inv, 0, h - size); + } + else if((bottomLeftStyle == 'snip' || (bottomLeftStyle == 'default' && rectStyle == 'snip' )) || + (bottomLeftStyle == 'fold' || (bottomLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(0, h - size); + } +}; + +mxShapeBasicRect2.prototype.paintNWInner = function(c, x, y, w, h, rectStyle, topLeftStyle, size, indent) +{ + if(topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) + { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, indent, indent * 0.5 + size); + } + else if(topLeftStyle == 'invRound' || (topLeftStyle == 'default' && rectStyle == 'invRound' )) + { + c.arcTo(size + indent, size + indent, 0, 0, 1, indent, indent + size); + } + else if(topLeftStyle == 'snip' || (topLeftStyle == 'default' && rectStyle == 'snip' )) + { + c.lineTo(indent, indent * 0.5 + size); + } + else if(topLeftStyle == 'fold' || (topLeftStyle == 'default' && rectStyle == 'fold' )) + { + c.lineTo(indent + size, indent + size); + c.lineTo(indent, indent + size); + } +}; + +mxShapeBasicRect2.prototype.paintTopInner = function(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, left, top) +{ + if (!left && !top) + { + c.lineTo(0, 0); + } + else if (!left && top) + { + c.lineTo(0, indent); + } + else if (left && !top) + { + c.lineTo(indent, 0); + } + else if (!left) + { + c.lineTo(0, indent); + } + else if(topLeftStyle == 'square' || (topLeftStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(indent, indent); + } + else if((topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) || + (topLeftStyle == 'snip' || (topLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(size + indent * 0.5, indent); + } + else + { + c.lineTo(size + indent, indent); + } +}; + +mxShapeBasicRect2.prototype.paintNEInner = function(c, x, y, w, h, rectStyle, topRightStyle, size, indent) +{ + if(topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) + { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, w - size - indent * 0.5, indent); + } + else if(topRightStyle == 'invRound' || (topRightStyle == 'default' && rectStyle == 'invRound' )) + { + c.arcTo(size + indent, size + indent, 0, 0, 1, w - size - indent, indent); + } + else if(topRightStyle == 'snip' || (topRightStyle == 'default' && rectStyle == 'snip' )) + { + c.lineTo(w - size - indent * 0.5, indent); + } + else if(topRightStyle == 'fold' || (topRightStyle == 'default' && rectStyle == 'fold' )) + { + c.lineTo(w - size - indent, size + indent); + c.lineTo(w - size - indent, indent); + } +}; + +mxShapeBasicRect2.prototype.paintRightInner = function(c, x, y, w, h, rectStyle, topRightStyle, size, indent, top, right) +{ + if (!top && !right) + { + c.lineTo(w, 0); + } + else if (!top && right) + { + c.lineTo(w - indent, 0); + } + else if (top && !right) + { + c.lineTo(w, indent); + } + else if (!top) + { + c.lineTo(w - indent, 0); + } + else if(topRightStyle == 'square' || (topRightStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(w - indent, indent); + } + else if((topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) || + (topRightStyle == 'snip' || (topRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(w - indent, size + indent * 0.5); + } + else + { + c.lineTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.paintLeftInner = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom, left) +{ + if (!bottom && !left) + { + c.lineTo(0, h); + } + else if (!bottom && left) + { + c.lineTo(indent, h); + } + else if (bottom && !left) + { + c.lineTo(0, h - indent); + } + else if (!bottom) + { + c.lineTo(indent, h); + } + else if(bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(indent, h - indent); + } + else if((bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) || + (bottomLeftStyle == 'snip' || (bottomLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(indent, h - size - indent * 0.5); + } + else + { + c.lineTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.paintSEInner = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent) +{ + if(bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) + { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, w - indent, h - size - indent * 0.5); + } + else if(bottomRightStyle == 'invRound' || (bottomRightStyle == 'default' && rectStyle == 'invRound' )) + { + c.arcTo(size + indent, size + indent, 0, 0, 1, w - indent, h - size - indent); + } + else if(bottomRightStyle == 'snip' || (bottomRightStyle == 'default' && rectStyle == 'snip' )) + { + c.lineTo(w - indent, h - size - indent * 0.5); + } + else if(bottomRightStyle == 'fold' || (bottomRightStyle == 'default' && rectStyle == 'fold' )) + { + c.lineTo(w - size - indent, h - size - indent); + c.lineTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.paintBottomInner = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, right, bottom) +{ + if (!right && !bottom) + { + c.lineTo(w, h); + } + else if (!right && bottom) + { + c.lineTo(w, h - indent); + } + else if (right && !bottom) + { + c.lineTo(w - indent, h); + } + else if((bottomRightStyle == 'square' || (bottomRightStyle == 'default' && rectStyle == 'square' )) || !right) + { + c.lineTo(w - indent, h - indent); + } + else if((bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) || + (bottomRightStyle == 'snip' || (bottomRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(w - size - indent * 0.5, h - indent); + } + else + { + c.lineTo(w - size - indent, h - indent); + } +}; + +mxShapeBasicRect2.prototype.paintSWInner = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, bottom) +{ + if (!bottom) + { + c.lineTo(indent, h); + } + else if(bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(indent, h - indent); + } + else if(bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) + { + c.arcTo(size - indent * 0.5, size - indent * 0.5, 0, 0, 0, size + indent * 0.5, h - indent); + } + else if(bottomLeftStyle == 'invRound' || (bottomLeftStyle == 'default' && rectStyle == 'invRound' )) + { + c.arcTo(size + indent, size + indent, 0, 0, 1, size + indent, h - indent); + } + else if(bottomLeftStyle == 'snip' || (bottomLeftStyle == 'default' && rectStyle == 'snip' )) + { + c.lineTo(size + indent * 0.5, h - indent); + } + else if(bottomLeftStyle == 'fold' || (bottomLeftStyle == 'default' && rectStyle == 'fold' )) + { + c.lineTo(indent + size, h - size - indent); + c.lineTo(indent + size, h - indent); + } +}; + +mxShapeBasicRect2.prototype.moveSWInner = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left) +{ + if (!left) + { + c.moveTo(0, h - indent); + } + else if(bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) + { + c.moveTo(indent, h - indent); + } + else if((bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) || + (bottomLeftStyle == 'snip' || (bottomLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.moveTo(indent, h - size - indent * 0.5); + } + else if((bottomLeftStyle == 'invRound' || (bottomLeftStyle == 'default' && rectStyle == 'invRound' )) || + (bottomLeftStyle == 'fold' || (bottomLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.moveTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.lineSWInner = function(c, x, y, w, h, rectStyle, bottomLeftStyle, size, indent, left) +{ + if (!left) + { + c.lineTo(0, h - indent); + } + else if(bottomLeftStyle == 'square' || (bottomLeftStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(indent, h - indent); + } + else if((bottomLeftStyle == 'rounded' || (bottomLeftStyle == 'default' && rectStyle == 'rounded' )) || + (bottomLeftStyle == 'snip' || (bottomLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(indent, h - size - indent * 0.5); + } + else if((bottomLeftStyle == 'invRound' || (bottomLeftStyle == 'default' && rectStyle == 'invRound' )) || + (bottomLeftStyle == 'fold' || (bottomLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.moveSEInner = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom) +{ + if (!bottom) + { + c.moveTo(w - indent, h); + } + else if(bottomRightStyle == 'square' || (bottomRightStyle == 'default' && rectStyle == 'square' )) + { + c.moveTo(w - indent, h - indent); + } + else if((bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) || + (bottomRightStyle == 'snip' || (bottomRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.moveTo(w - indent, h - size - indent * 0.5); + } + else if((bottomRightStyle == 'invRound' || (bottomRightStyle == 'default' && rectStyle == 'invRound' )) || + (bottomRightStyle == 'fold' || (bottomRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.moveTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.lineSEInner = function(c, x, y, w, h, rectStyle, bottomRightStyle, size, indent, bottom) +{ + if (!bottom) + { + c.lineTo(w - indent, h); + } + else if(bottomRightStyle == 'square' || (bottomRightStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(w - indent, h - indent); + } + else if((bottomRightStyle == 'rounded' || (bottomRightStyle == 'default' && rectStyle == 'rounded' )) || + (bottomRightStyle == 'snip' || (bottomRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(w - indent, h - size - indent * 0.5); + } + else if((bottomRightStyle == 'invRound' || (bottomRightStyle == 'default' && rectStyle == 'invRound' )) || + (bottomRightStyle == 'fold' || (bottomRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(w - indent, h - size - indent); + } +}; + +mxShapeBasicRect2.prototype.moveNEInner = function(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right) +{ + if (!right) + { + c.moveTo(w, indent); + } + else if((topRightStyle == 'square' || (topRightStyle == 'default' && rectStyle == 'square' )) || right) + { + c.moveTo(w - indent, indent); + } + else if((topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) || + (topRightStyle == 'snip' || (topRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.moveTo(w - indent, size + indent * 0.5); + } + else if((topRightStyle == 'invRound' || (topRightStyle == 'default' && rectStyle == 'invRound' )) || + (topRightStyle == 'fold' || (topRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.moveTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.lineNEInner = function(c, x, y, w, h, rectStyle, topRightStyle, size, indent, right) +{ + if (!right) + { + c.lineTo(w, indent); + } + else if((topRightStyle == 'square' || (topRightStyle == 'default' && rectStyle == 'square' )) || right) + { + c.lineTo(w - indent, indent); + } + else if((topRightStyle == 'rounded' || (topRightStyle == 'default' && rectStyle == 'rounded' )) || + (topRightStyle == 'snip' || (topRightStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(w - indent, size + indent * 0.5); + } + else if((topRightStyle == 'invRound' || (topRightStyle == 'default' && rectStyle == 'invRound' )) || + (topRightStyle == 'fold' || (topRightStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(w - indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.moveNWInner = function(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left) +{ + if (!top && !left) + { + c.moveTo(0, 0); + } + else if (!top && left) + { + c.moveTo(indent, 0); + } + else if (top && !left) + { + c.moveTo(0, indent); + } + else if(topLeftStyle == 'square' || (topLeftStyle == 'default' && rectStyle == 'square' )) + { + c.moveTo(indent, indent); + } + else if((topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) || + (topLeftStyle == 'snip' || (topLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.moveTo(indent, size + indent * 0.5); + } + else if((topLeftStyle == 'invRound' || (topLeftStyle == 'default' && rectStyle == 'invRound' )) || + (topLeftStyle == 'fold' || (topLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.moveTo(indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.lineNWInner = function(c, x, y, w, h, rectStyle, topLeftStyle, size, indent, top, left) +{ + if (!top && !left) + { + c.lineTo(0, 0); + } + else if (!top && left) + { + c.lineTo(indent, 0); + } + else if (top && !left) + { + c.lineTo(0, indent); + } + else if(topLeftStyle == 'square' || (topLeftStyle == 'default' && rectStyle == 'square' )) + { + c.lineTo(indent, indent); + } + else if((topLeftStyle == 'rounded' || (topLeftStyle == 'default' && rectStyle == 'rounded' )) || + (topLeftStyle == 'snip' || (topLeftStyle == 'default' && rectStyle == 'snip' ))) + { + c.lineTo(indent, size + indent * 0.5); + } + else if((topLeftStyle == 'invRound' || (topLeftStyle == 'default' && rectStyle == 'invRound' )) || + (topLeftStyle == 'fold' || (topLeftStyle == 'default' && rectStyle == 'fold' ))) + { + c.lineTo(indent, size + indent); + } +}; + +mxShapeBasicRect2.prototype.paintFolds = function(c, x, y, w, h, rectStyle, topLeftStyle, topRightStyle, bottomRightStyle, bottomLeftStyle, size, top, right, bottom, left) +{ + if (rectStyle == 'fold' || topLeftStyle == 'fold' || topRightStyle == 'fold' || bottomRightStyle == 'fold' || bottomLeftStyle == 'fold') + { + if ((topLeftStyle == 'fold' || (topLeftStyle == 'default' && rectStyle == 'fold' )) && (top && left)) + { + c.moveTo(0, size); + c.lineTo(size, size); + c.lineTo(size, 0); + } + + if ((topRightStyle == 'fold' || (topRightStyle == 'default' && rectStyle == 'fold' )) && (top && right)) + { + c.moveTo(w - size, 0); + c.lineTo(w - size, size); + c.lineTo(w, size); + } + + if ((bottomRightStyle == 'fold' || (bottomRightStyle == 'default' && rectStyle == 'fold' )) && (bottom && right)) + { + c.moveTo(w - size, h); + c.lineTo(w - size, h - size); + c.lineTo(w, h - size); + } + + if ((bottomLeftStyle == 'fold' || (bottomLeftStyle == 'default' && rectStyle == 'fold' )) && (bottom && left)) + { + c.moveTo(0, h - size); + c.lineTo(size, h - size); + c.lineTo(size, h); + } + } +}; + +mxCellRenderer.registerShape(mxShapeBasicRect2.prototype.cst.RECT2, mxShapeBasicRect2); + +mxShapeBasicRect2.prototype.constraints = null; + +Graph.handleFactory[mxShapeBasicRect2.prototype.cst.DIAG_ROUND_RECT] = function(state) +{ + var handles = [Graph.createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(bounds.width / 2, bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + + return new mxPoint(bounds.x + size, bounds.y + size); + }, function(bounds, pt) + { + this.state.style['size'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['indent'], function(bounds) + { + var dx2 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'indent', this.dx2)))); + + return new mxPoint(bounds.x + bounds.width * 0.75, bounds.y + dx2 * bounds.height / 200); + }, function(bounds, pt) + { + this.state.style['indent'] = Math.round(100 * Math.max(0, Math.min(100, 200 * (pt.y - bounds.y) / bounds.height))) / 100; + }); + + handles.push(handle2); + + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxBootstrap.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxBootstrap.js new file mode 100644 index 0000000000000..2e808e3a2b71c --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxBootstrap.js @@ -0,0 +1,1003 @@ +/** + * $Id: mxBootstrap.js,v 1.0 2014/09/10 07:05:39 mate Exp $ + * Copyright (c) 2006-2014, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Rounded rectangle (adjustable rounding) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapRRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapRRect, mxShape); + +mxShapeBootstrapRRect.prototype.cst = { + PACKAGE : 'mxgraph.bootstrap.rrect', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapRRect.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapRRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapRRect.prototype.cst.R_SIZE, '10')); + c.roundrect(0, 0, w, h, rSize); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRRect.prototype.cst.PACKAGE, mxShapeBootstrapRRect); + +//********************************************************************************************************************************************************** +//Top Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapTopButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapTopButton, mxShape); + +mxShapeBootstrapTopButton.prototype.cst = { + TOP_BUTTON : 'mxgraph.bootstrap.topButton', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapTopButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapTopButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapTopButton.prototype.cst.TOP_BUTTON, mxShapeBootstrapTopButton); + +//********************************************************************************************************************************************************** +//Bottom Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapBottomButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapBottomButton, mxShape); + +mxShapeBootstrapBottomButton.prototype.cst = { + BOTTOM_BUTTON : 'mxgraph.bootstrap.bottomButton', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapBottomButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapBottomButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapBottomButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapBottomButton.prototype.cst.BOTTOM_BUTTON, mxShapeBootstrapBottomButton); + +//********************************************************************************************************************************************************** +//Right Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapRightButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapRightButton, mxShape); + +mxShapeBootstrapRightButton.prototype.cst = { + RIGHT_BUTTON : 'mxgraph.bootstrap.rightButton', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapRightButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapRightButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapRightButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRightButton.prototype.cst.RIGHT_BUTTON, mxShapeBootstrapRightButton); + +//********************************************************************************************************************************************************** +//Left Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapLeftButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapLeftButton, mxShape); + +mxShapeBootstrapLeftButton.prototype.cst = { + LEFT_BUTTON : 'mxgraph.bootstrap.leftButton', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapLeftButton.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapLeftButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapLeftButton.prototype.cst.R_SIZE, '10')); + + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapLeftButton.prototype.cst.LEFT_BUTTON, mxShapeBootstrapLeftButton); + +//********************************************************************************************************************************************************** +//Left Button (Striped) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapLeftButtonStriped(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapLeftButtonStriped, mxShape); + +mxShapeBootstrapLeftButtonStriped.prototype.cst = { + LEFT_BUTTON_STRIPED : 'mxgraph.bootstrap.leftButtonStriped' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapLeftButtonStriped.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + rSize = 5; + c.begin(); + c.moveTo(w, 0); + c.lineTo(w, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.close(); + c.fill(); + + + var fillColor = '#ffffff'; + c.setAlpha('0.2'); + var stripeW = h * 0.5; + + c.setFillColor(fillColor); + c.begin(); + c.moveTo(0, h * 0.75); + c.lineTo(0, h * 0.25); + c.lineTo(h * 0.75, h); + c.lineTo(h * 0.25, h); + c.close(); + c.fill(); + + var end = false; + var startX = stripeW * 0.5; + + while (!end) + { + c.begin(); + c.moveTo(startX, 0); + + if (startX + stripeW >= w) + { + c.lineTo(w, 0); + c.lineTo(w, w - startX); + } + else + { + c.lineTo(startX + stripeW, 0); + + if (startX + stripeW + h > w) + { + c.lineTo(w, w - startX - stripeW); + + if (w - startX > h) + { + c.lineTo(w, h); + c.lineTo(startX + h, h); + } + else + { + c.lineTo(w, w - startX); + } + } + else + { + c.lineTo(startX + stripeW + h, h); + c.lineTo(startX + h, h); + } + } + + c.close(); + c.fill(); + + startX = startX + 2 * stripeW; + + if (startX > w) + { + end = true; + } + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapLeftButtonStriped.prototype.cst.LEFT_BUTTON_STRIPED, mxShapeBootstrapLeftButtonStriped); + +//********************************************************************************************************************************************************** +//Rounded Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapRoundedButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapRoundedButton, mxShape); + +mxShapeBootstrapRoundedButton.prototype.cst = { + ROUNDED_BUTTON : 'mxgraph.bootstrap.roundedButton' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapRoundedButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + if (w > h) + { + var r = h * 0.5; + + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); + } + else + { + var r = w * 0.5; + + c.begin(); + c.moveTo(0, h - r); + c.arcTo(r, r, 0, 0, 0, w, h - r); + c.lineTo(w, r); + c.arcTo(r, r, 0, 0, 0, 0, r); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRoundedButton.prototype.cst.ROUNDED_BUTTON, mxShapeBootstrapRoundedButton); + +//********************************************************************************************************************************************************** +//Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapArrow, mxShape); + +mxShapeBootstrapArrow.prototype.cst = { + ARROW : 'mxgraph.bootstrap.arrow' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w * 0.9, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.9, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapArrow.prototype.cst.ARROW, mxShapeBootstrapArrow); + +//********************************************************************************************************************************************************** +//Tab Top +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapTabTop(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapTabTop, mxShape); + +mxShapeBootstrapTabTop.prototype.cst = { + TAB_TOP : 'mxgraph.bootstrap.tabTop', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapTabTop.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:5} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapTabTop.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10')); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + + c.setStrokeColor(fillColor); + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setStrokeColor(strokeColor); + c.begin(); + c.moveTo(0, h); + c.lineTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapTabTop.prototype.cst.TAB_TOP, mxShapeBootstrapTabTop); + +//********************************************************************************************************************************************************** +//Image +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapImage(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapImage, mxShape); + +mxShapeBootstrapImage.prototype.cst = { + IMAGE : 'mxgraph.bootstrap.image', + R_SIZE : 'rSize' +}; + +mxShapeBootstrapImage.prototype.customProperties = [ + {name: 'rSize', dispName: 'Arc Size', type: 'float', min:0, defVal:5} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapImage.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = Math.max(0, parseInt(mxUtils.getValue(this.style, mxShapeBootstrapTopButton.prototype.cst.R_SIZE, '10'))); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + + c.begin(); + c.moveTo(0, rSize); + c.arcTo(rSize, rSize, 0, 0, 1, rSize, 0); + c.lineTo(w - rSize, 0); + c.arcTo(rSize, rSize, 0, 0, 1, w, rSize); + c.lineTo(w, h - rSize); + c.arcTo(rSize, rSize, 0, 0, 1, w - rSize, h); + c.lineTo(rSize, h); + c.arcTo(rSize, rSize, 0, 0, 1, 0, h - rSize); + c.close(); + c.stroke(); + + var rsHalf = rSize * 0.5; + c.translate(rsHalf, rsHalf); + w = Math.max(0, w - rSize); + h = Math.max(0, h - rSize); + + c.begin(); + c.moveTo(0, rsHalf); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, rsHalf, 0); + c.lineTo(w - rsHalf, 0); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, w, rsHalf); + c.lineTo(w, h - rsHalf); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, w - rsHalf, h); + c.lineTo(rsHalf, h); + c.arcTo(rsHalf, rsHalf, 0, 0, 1, 0, h - rsHalf); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapImage.prototype.cst.IMAGE, mxShapeBootstrapImage); + +//********************************************************************************************************************************************************** +//Checkbox +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapCheckbox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapCheckbox, mxShape); + +mxShapeBootstrapCheckbox.prototype.cst = { + CHECKBOX : 'mxgraph.bootstrap.checkbox' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapCheckbox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var rSize = 3; + c.roundrect(0, 0, w, h, rSize, rSize); + c.fillAndStroke(); + + c.setStrokeWidth('3'); + c.begin(); + c.moveTo(w * 0.8, h * 0.2); + c.lineTo(w * 0.4, h * 0.8); + c.lineTo(w * 0.25, h * 0.6); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapCheckbox.prototype.cst.CHECKBOX, mxShapeBootstrapCheckbox); + +//********************************************************************************************************************************************************** +//Radio Button +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapRadioButton(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapRadioButton, mxShape); + +mxShapeBootstrapRadioButton.prototype.cst = { + RADIO_BUTTON : 'mxgraph.bootstrap.radioButton' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapRadioButton.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.setFillColor(strokeColor); + c.ellipse(w * 0.25, h * 0.25, w * 0.5, h * 0.5); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRadioButton.prototype.cst.RADIO_BUTTON, mxShapeBootstrapRadioButton); + +//********************************************************************************************************************************************************** +//Horizontal Lines +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapHorLines(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapHorLines, mxShape); + +mxShapeBootstrapHorLines.prototype.cst = { + HOR_LINES : 'mxgraph.bootstrap.horLines' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapHorLines.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fill(); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapHorLines.prototype.cst.HOR_LINES, mxShapeBootstrapHorLines); + +//********************************************************************************************************************************************************** +//User 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapUserTwo(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapUserTwo, mxShape); + +mxShapeBootstrapUserTwo.prototype.cst = { + USER2 : 'mxgraph.bootstrap.user2' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapUserTwo.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h * 0.95); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.02, h * 0.87); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 1, w * 0.08, h * 0.812); + c.arcTo(w * 3, h * 3, 0, 0, 1, w * 0.29, h * 0.732); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.385, h * 0.607); + c.arcTo(w * 0.11, h * 0.11, 0, 0, 0, w * 0.355, h * 0.53); + c.arcTo(w * 0.3, h * 0.3, 0, 0, 1, w * 0.305, h * 0.44); + c.arcTo(w * 0.33, h * 0.38, 0, 0, 1, w * 0.312, h * 0.15); + c.arcTo(w * 0.218, h * 0.218 , 0, 0, 1, w * 0.688, h * 0.15); + c.arcTo(w * 0.33, h * 0.38, 0, 0, 1, w * 0.693, h * 0.44); + c.arcTo(w * 0.25, h * 0.25, 0, 0, 1, w * 0.645, h * 0.53); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 0, w * 0.612, h * 0.6); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.7, h * 0.726); + c.arcTo(w * 3, h * 3, 0, 0, 1, w * 0.92, h * 0.812); + c.arcTo(w * 0.1, h * 0.1, 0, 0, 1, w * 0.97, h * 0.865); + c.arcTo(w * 0.2, h * 0.2, 0, 0, 1, w * 0.995, h * 0.952); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeBootstrapUserTwo.prototype.cst.USER2, mxShapeBootstrapUserTwo); + +//********************************************************************************************************************************************************** +//Rating +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBootstrapRating(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBootstrapRating, mxShape); + +mxShapeBootstrapRating.prototype.cst = { + RATING : 'mxgraph.bootstrap.rating', + RATING_STYLE : 'ratingStyle', + RATING_SCALE : 'ratingScale', + RATING_HEART : 'heart', + RATING_STAR : 'star', + EMPTY_FILL_COLOR : 'emptyFillColor', + GRADE : 'grade' +}; + +mxShapeBootstrapRating.prototype.customProperties = [ + {name: 'ratingStyle', dispName: 'Rating Style', type: 'enum', + enumList: [{val: 'heart', dispName: 'Heart'}, + {val: 'star', dispName: 'Star'}] + }, + {name: 'ratingScale', dispName: 'Rating Scale', type: 'int', min:1, defVal:5}, + {name: 'emptyFillColor', dispName: 'Inactive Color', type: 'color', defVal:'none'}, + {name: 'grade', dispName: 'Grade', type: 'int', min:1, defVal:3} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBootstrapRating.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var ratingStyle = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.RATING_STYLE, mxShapeBootstrapRating.prototype.cst.RATING_STAR); + var grade = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.GRADE, '5'); + var ratingScale = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.RATING_SCALE, '10'); + + c.translate(x, y); + + if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_STAR) + { + for (var i = 0; i < grade; i++) + { + c.begin(); + c.moveTo(i * h * 1.2, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0); + c.lineTo(i * h * 1.2 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.2 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.2 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } + else if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_HEART) + { + for (var i = 0; i < grade; i++) + { + c.begin(); + c.moveTo(i * h * 1.2 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.2 + h * 0.558, h * 0.908, + i * h * 1.2 + h * 0.778, h * 0.682, + i * h * 1.2 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.2 + h * 1.039, h * 0.414, + i * h * 1.2 + h * 1.036, h * 0.229, + i * h * 1.2 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.812, 0, + i * h * 1.2 + h * 0.631, 0, + i * h * 1.2 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.408, 0, + i * h * 1.2 + h * 0.227, 0, + i * h * 1.2 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.03, h * 0.229, + i * h * 1.2, h * 0.414, + i * h * 1.2 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } + + var emptyFillColor = mxUtils.getValue(this.style, mxShapeBootstrapRating.prototype.cst.EMPTY_FILL_COLOR, '#ffffff'); + c.setFillColor(emptyFillColor); + + if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_STAR) + { + for (var i = grade; i < ratingScale; i++) + { + c.begin(); + c.moveTo(i * h * 1.2, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.364 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0); + c.lineTo(i * h * 1.2 + 0.586 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.95 * h, 0.33 * h); + c.lineTo(i * h * 1.2 + 0.66 * h, 0.551 * h); + c.lineTo(i * h * 1.2 + 0.775 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.475 * h, 0.684 * h); + c.lineTo(i * h * 1.2 + 0.175 * h, 0.9 * h); + c.lineTo(i * h * 1.2 + 0.29 * h, 0.551 * h); + c.close(); + c.fillAndStroke(); + } + } + else if (ratingStyle === mxShapeBootstrapRating.prototype.cst.RATING_HEART) + { + for (var i = grade; i < ratingScale; i++) + { + c.begin(); + c.moveTo(i * h * 1.2 + h * 0.519, h * 0.947); + c.curveTo(i * h * 1.2 + h * 0.558, h * 0.908, + i * h * 1.2 + h * 0.778, h * 0.682, + i * h * 1.2 + h * 0.916, h * 0.54); + c.curveTo(i * h * 1.2 + h * 1.039, h * 0.414, + i * h * 1.2 + h * 1.036, h * 0.229, + i * h * 1.2 + h * 0.924, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.812, 0, + i * h * 1.2 + h * 0.631, 0, + i * h * 1.2 + h * 0.519, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.408, 0, + i * h * 1.2 + h * 0.227, 0, + i * h * 1.2 + h * 0.115, h * 0.115); + c.curveTo(i * h * 1.2 + h * 0.03, h * 0.229, + i * h * 1.2, h * 0.414, + i * h * 1.2 + h * 0.123, h * 0.54); + c.close(); + c.fillAndStroke(); + } + } +}; + +mxCellRenderer.registerShape(mxShapeBootstrapRating.prototype.cst.RATING, mxShapeBootstrapRating); + +//********************************************************************************************************************************************************** +//Anchor (a dummy shape without visuals used for anchoring) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeBoostrapAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeBoostrapAnchor, mxShape); + +mxShapeBoostrapAnchor.prototype.cst = { + ANCHOR : 'mxgraph.bootstrap.anchor' +}; + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeBoostrapAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeBoostrapAnchor.prototype.cst.ANCHOR, mxShapeBoostrapAnchor); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxCabinets.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxCabinets.js new file mode 100644 index 0000000000000..2be6c8300d8f8 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxCabinets.js @@ -0,0 +1,257 @@ +/** + * $Id: mxCabinets.js,v 1.0 2014/04/15 07:05:39 mate Exp $ + * Copyright (c) 2006-2014, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Cabinet +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxCabinetsCabinet(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxCabinetsCabinet, mxShape); + +mxCabinetsCabinet.prototype.cst = { + HAS_STAND : 'hasStand', + CABINET : 'mxgraph.cabinets.cabinet' +}; + +mxCabinetsCabinet.prototype.customProperties = [ + {name: 'hasStand', dispName:'Has Stand', type:'bool', defVal:true} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxCabinetsCabinet.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxCabinetsCabinet.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCabinetsCabinet.prototype.foreground = function(c, x, y, w, h) +{ + var wallTh = 15; + c.rect(0, 0, w, wallTh); + c.stroke(); + + c.begin(); + c.moveTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.moveTo(w - wallTh, wallTh); + c.lineTo(w - wallTh, h); + c.stroke(); + + var hasStand = mxUtils.getValue(this.style, mxCabinetsCabinet.prototype.cst.HAS_STAND, '1'); + + if (hasStand === 1) + { + c.rect(0, h - 40, w, 40); + c.fillAndStroke(); + } + else + { + c.rect(0, h - wallTh, w, wallTh); + c.fillAndStroke(); + }; +}; + +mxCellRenderer.registerShape(mxCabinetsCabinet.prototype.cst.CABINET, mxCabinetsCabinet); + +//********************************************************************************************************************************************************** +//Cover Plate +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxCabinetsCoverPlate(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxCabinetsCoverPlate, mxShape); + +mxCabinetsCoverPlate.prototype.cst = { + COVER_PLATE : 'mxgraph.cabinets.coverPlate' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxCabinetsCoverPlate.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, 0, 0, w, h); + c.setShadow(false); + this.foreground(c, 0, 0, w, h); +}; + +mxCabinetsCoverPlate.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.moveTo(10, h * 0.5 - 12.5); + c.lineTo(10, h * 0.5 + 12.5); + c.lineTo(w - 10, h * 0.5 + 12.5); + c.lineTo(w - 10, h * 0.5 - 12.5); + c.close(); + c.fillAndStroke(); +}; + +mxCabinetsCoverPlate.prototype.foreground = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxCabinetsCoverPlate.prototype.cst.COVER_PLATE, mxCabinetsCoverPlate); + +//********************************************************************************************************************************************************** +//Dimension +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxCabinetsDimension(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxCabinetsDimension, mxShape); + +mxCabinetsDimension.prototype.cst = { + DIMENSION : 'mxgraph.cabinets.dimension' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxCabinetsDimension.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxCabinetsDimension.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxCabinetsDimension.prototype.cst.DIMENSION, mxCabinetsDimension); + +//********************************************************************************************************************************************************** +//Dimension Bottom +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxCabinetsDimensionBottom(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxCabinetsDimensionBottom, mxShape); + +mxCabinetsDimensionBottom.prototype.cst = { + DIMENSION : 'mxgraph.cabinets.dimensionBottom' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxCabinetsDimensionBottom.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxCabinetsDimensionBottom.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h - 20); + c.lineTo(w, h - 20); + c.moveTo(10, h - 15); + c.lineTo(0, h - 20); + c.lineTo(10, h - 25); + c.moveTo(w - 10, h - 15); + c.lineTo(w, h - 20); + c.lineTo(w - 10, h - 25); + c.moveTo(0, h - 15); + c.lineTo(0, 0); + c.moveTo(w, h - 15); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxCabinetsDimensionBottom.prototype.cst.DIMENSION, mxCabinetsDimensionBottom); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxDFD.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxDFD.js new file mode 100644 index 0000000000000..899710f243fe4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxDFD.js @@ -0,0 +1,447 @@ +/** + * $Id: mxDFD.js,v 1.5 2018/26/11 12:32:06 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ +//********************************************************************************************************************************************************** +// Start +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDStart(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDStart, mxShape); + +mxShapeDFDStart.prototype.cst = {START : 'mxgraph.dfd.start'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDStart.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var r = Math.min(h * 0.5, w * 0.5); + + c.begin(); + c.moveTo(w - r, h * 0.5 - r); + c.arcTo(r, r, 0, 0, 1, w, h * 0.5); + c.arcTo(r, r, 0, 0, 1, w - r, h * 0.5 + r); + c.lineTo(r, h * 0.5 + r); + c.arcTo(r, r, 0, 0, 1, 0, h * 0.5); + c.arcTo(r, r, 0, 0, 1, r, h * 0.5 - r); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDStart.prototype.cst.START, mxShapeDFDStart); + +mxShapeDFDStart.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var r = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, -r)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false, null, 0, r)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 - r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.293, h * 0.5 + r * 0.707)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.293, h * 0.5 + r * 0.707)); + + if (w >= 4 * h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + } + + return (constr); +} + +//********************************************************************************************************************************************************** +//Archive +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDArchive(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDArchive, mxShape); + +mxShapeDFDArchive.prototype.cst = {ARCHIVE : 'mxgraph.dfd.archive'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDArchive.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0,0); + c.lineTo(w, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.1, h * 0.2); + c.lineTo(w * 0.9, h * 0.2); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDArchive.prototype.cst.ARCHIVE, mxShapeDFDArchive); + +mxShapeDFDArchive.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.875, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.625, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.375, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.125, 0.25), false)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Check2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDCheck2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDCheck2, mxShape); + +mxShapeDFDCheck2.prototype.cst = {CHECK2 : 'mxgraph.dfd.check2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDCheck2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var size = Math.min(h * 0.5, w * 0.5); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(size, 0); + c.lineTo(w - size, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - size, h); + c.lineTo(size, h); + c.lineTo(0, h * 0.5); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(w - size, 0); + c.lineTo(w - 2 * size, h * 0.5); + c.lineTo(w - size, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDCheck2.prototype.cst.CHECK2, mxShapeDFDCheck2); + +mxShapeDFDCheck2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var size = Math.min(h * 0.5, w * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size * 0.5, h * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size * 0.5, h * 0.75)); + + if (w > h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, h)); + } + + if(size * 4 <= w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + + return (constr); +} + +//********************************************************************************************************************************************************** +//Data Store with ID +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDDataStoreID(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDDataStoreID, mxShape); + +mxShapeDFDDataStoreID.prototype.cst = {DATA_STORE_ID : 'mxgraph.dfd.dataStoreID'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDDataStoreID.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var size = Math.min(h * 0.5, w * 0.5); + + c.begin(); + c.moveTo(w, h); + c.lineTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.stroke(); + + c.setShadow(false); + + var s = Math.min(30, w); + + c.begin(); + c.moveTo(s, 0); + c.lineTo(s, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDDataStoreID.prototype.cst.DATA_STORE_ID, mxShapeDFDDataStoreID); + +mxShapeDFDDataStoreID.prototype.constraints = null; + +//********************************************************************************************************************************************************** +//External Entity +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDExternalEntity(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDExternalEntity, mxShape); + +mxShapeDFDExternalEntity.prototype.cst = {EXTERNAL_ENTITY : 'mxgraph.dfd.externalEntity'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDExternalEntity.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var size = 10; + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(w, h); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + + c.setFillColor('#000000'); + c.setAlpha(0.5); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(size, size); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.fill(); + + var opacity = parseFloat(mxUtils.getValue(this.style, 'opacity', '100')); + + c.setAlpha(opacity / 100); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w - size, 0); + c.lineTo(w, size); + c.lineTo(w, h); + c.lineTo(size, h); + c.lineTo(0, h - size); + c.close(); + c.moveTo(size, h); + c.lineTo(size, size); + c.lineTo(w, size); + c.moveTo(0, 0); + c.lineTo(size, size); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDExternalEntity.prototype.cst.EXTERNAL_ENTITY, mxShapeDFDExternalEntity); + +mxShapeDFDExternalEntity.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var size = 10; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - size, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.25 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.5 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, (w - size) * 0.75 + size, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, size + (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - size) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - size)); + + return (constr); +} + +//********************************************************************************************************************************************************** +//Loop +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeDFDLoop(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeDFDLoop, mxShape); + +mxShapeDFDLoop.prototype.cst = {LOOP : 'mxgraph.dfd.loop'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeDFDLoop.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var r = Math.min(h * 0.8, w * 0.8); + + c.begin(); + c.moveTo(w - r * 0.25, 0); + c.arcTo(r, r, 0, 0, 1, w - r * 0.25, h); + c.lineTo(r * 0.25, h); + c.arcTo(r, r, 0, 0, 1, r * 0.25, 0); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeDFDLoop.prototype.cst.LOOP, mxShapeDFDLoop); + +mxShapeDFDLoop.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var r = Math.min(h * 0.8, w * 0.8); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +} + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxEip.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxEip.js new file mode 100644 index 0000000000000..563c5c1fd9d0e --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxEip.js @@ -0,0 +1,570 @@ +/** + * $Id: mxEip.js,v 1.0 2014/11/27 06:09:21 mate Exp $ + * Copyright (c) 2006-2015, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Message Expiration +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapeEipMessageExpiration(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapeEipMessageExpiration, mxShape); + +mxShapeEipMessageExpiration.prototype.cst = { + SHAPE_MESS_EXP : 'mxgraph.eip.messExp' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapeEipMessageExpiration.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeEipMessageExpiration.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(0, 0, w, h); + c.stroke(); + + c.setStrokeColor("#808080"); + c.begin(); + c.moveTo(w * 0.5, h * 0.1); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.6, h * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipMessageExpiration.prototype.cst.SHAPE_MESS_EXP, mxShapeEipMessageExpiration); + +mxShapeEipMessageExpiration.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Return Address +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipReturnAddress(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipReturnAddress, mxShape); + +mxShapeEipReturnAddress.prototype.cst = { + SHAPE_RET_ADDR : 'mxgraph.eip.retAddr' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipReturnAddress.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipReturnAddress.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeEipReturnAddress.prototype.foreground = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.05, h * 0.11); + c.lineTo(w * 0.25, h * 0.11); + c.moveTo(w * 0.05, h * 0.18); + c.lineTo(w * 0.25, h * 0.18); + c.moveTo(w * 0.05, h * 0.25); + c.lineTo(w * 0.25, h * 0.25); + + c.setStrokeWidth(2); + c.moveTo(w * 0.3, h * 0.63); + c.lineTo(w * 0.8, h * 0.63); + c.moveTo(w * 0.3, h * 0.72); + c.lineTo(w * 0.8, h * 0.72); + c.moveTo(w * 0.3, h * 0.80); + c.lineTo(w * 0.8, h * 0.80); + c.stroke(); + + c.setFillColor("#EDEDED"); + c.rect(w * 0.8, h * 0.1, w * 0.12, h * 0.19); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipReturnAddress.prototype.cst.SHAPE_RET_ADDR, mxShapeEipReturnAddress); + +mxShapeEipReturnAddress.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Anchor +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipAnchor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipAnchor, mxShape); + +mxShapeEipAnchor.prototype.cst = { + SHAPE_ANCHOR : 'mxgraph.eip.anchor' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipAnchor.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeEipAnchor.prototype.cst.SHAPE_ANCHOR, mxShapeEipAnchor); + +//********************************************************************************************************************************************************** +//Message Channel +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipMessageChannel(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipMessageChannel, mxShape); + +mxShapeEipMessageChannel.prototype.cst = { + SHAPE_MESSAGE_CHANNEL : 'mxgraph.eip.messageChannel' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipMessageChannel.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipMessageChannel.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipMessageChannel.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipMessageChannel.prototype.cst.SHAPE_MESSAGE_CHANNEL, mxShapeEipMessageChannel); + + +mxShapeEipMessageChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Datatype Channel +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipDatatypeChannel(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipDatatypeChannel, mxShape); + +mxShapeEipDatatypeChannel.prototype.cst = { + SHAPE_DATATYPE_CHANNEL : 'mxgraph.eip.dataChannel' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipDatatypeChannel.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipDatatypeChannel.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipDatatypeChannel.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + + c.setFillColor("#fffbc0"); + c.setStrokeWidth("1"); + + for(var i = 1; i * 20 + 10 < w - 14; i++) + { + c.rect(i * 20, h * 0.5 - 5, 10, 10); + c.fillAndStroke(); + }; +}; + +mxCellRenderer.registerShape(mxShapeEipDatatypeChannel.prototype.cst.SHAPE_DATATYPE_CHANNEL, mxShapeEipDatatypeChannel); + +mxShapeEipDatatypeChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Dead Letter Channel +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipDeadLetterChannel(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipDeadLetterChannel, mxShape); + +mxShapeEipDeadLetterChannel.prototype.cst = { + SHAPE_DEAD_LETTER_CHANNEL : 'mxgraph.eip.deadLetterChannel' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipDeadLetterChannel.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipDeadLetterChannel.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipDeadLetterChannel.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + + c.setFillColor("#ff0000"); + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5 - 6, h * 0.5 - 3); + c.lineTo(w * 0.5 - 3, h * 0.5 - 6); + c.lineTo(w * 0.5 + 3, h * 0.5 - 6); + c.lineTo(w * 0.5 + 6, h * 0.5 - 3); + c.lineTo(w * 0.5 + 6, h * 0.5 + 3); + c.lineTo(w * 0.5 + 3, h * 0.5 + 6); + c.lineTo(w * 0.5 - 3, h * 0.5 + 6); + c.lineTo(w * 0.5 - 6, h * 0.5 + 3); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth("2"); + c.setStrokeColor("#ffffff"); + c.begin(); + c.moveTo(w * 0.5 - 4, h * 0.5); + c.lineTo(w * 0.5 + 4, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipDeadLetterChannel.prototype.cst.SHAPE_DEAD_LETTER_CHANNEL, mxShapeEipDeadLetterChannel); + +mxShapeEipDeadLetterChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Invalid Message Channel +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeEipInvalidMessageChannel(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeEipInvalidMessageChannel, mxShape); + +mxShapeEipInvalidMessageChannel.prototype.cst = { + SHAPE_INVALID_MESSAGE_CHANNEL : 'mxgraph.eip.invalidMessageChannel' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeEipInvalidMessageChannel.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeEipInvalidMessageChannel.prototype.background = function(c, x, y, w, h) +{ + c.setGradient('#e6e6e6', '#808080', 0, 0, w, h, mxConstants.DIRECTION_SOUTH, 1, 1); + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeEipInvalidMessageChannel.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#e6e6e6'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); + + c.setFillColor("#ffe040"); + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5 - 6, h * 0.5 + 5); + c.lineTo(w * 0.5, h * 0.5 - 5); + c.lineTo(w * 0.5 + 6, h * 0.5 + 5); + c.close(); + c.fillAndStroke(); + + c.setStrokeWidth("1"); + c.begin(); + c.moveTo(w * 0.5, h * 0.5 - 2); + c.lineTo(w * 0.5, h * 0.5 + 2); + c.moveTo(w * 0.5, h * 0.5 + 3); + c.lineTo(w * 0.5, h * 0.5 + 4); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeEipInvalidMessageChannel.prototype.cst.SHAPE_INVALID_MESSAGE_CHANNEL, mxShapeEipInvalidMessageChannel); + +mxShapeEipInvalidMessageChannel.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 2.7, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, -2.7, 0)); + + var currW = 10; + + while (currW < w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currW, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currW, 0)); + + currW = currW + 10; + } + + return (constr); +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxElectrical.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxElectrical.js new file mode 100644 index 0000000000000..59f120aac339d --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxElectrical.js @@ -0,0 +1,1776 @@ +/** + * $Id: mxElectrical.js,v 1.0 2016/10/25 17:05:39 mate Exp $ + * Copyright (c) 2006-2016, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Test Point +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalTestPoint(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalTestPoint, mxShape); + +mxShapeElectricalTestPoint.prototype.cst = { + SHAPE_TEST_POINT : 'mxgraph.electrical.transmission.testPoint' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalTestPoint.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var size = Math.min(w, h); + + c.setFillColor(strokeColor); + c.begin(); + c.ellipse(w * 0.5 - size / 2, 0, size, size); + c.fillAndStroke(); + + if (h > w) + { + c.begin(); + c.moveTo(w * 0.5, size); + c.lineTo(w * 0.5, h); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalTestPoint.prototype.cst.SHAPE_TEST_POINT, mxShapeElectricalTestPoint); + +mxShapeElectricalTestPoint.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Straight Bus +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalStraightBus(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalStraightBus, mxShape); + +mxShapeElectricalStraightBus.prototype.cst = { + SHAPE_STRAIGHT_BUS : 'mxgraph.electrical.transmission.straightBus' +}; + + + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalStraightBus.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var size = Math.min(w, h); + var x1 = w * 0.2; + var y1 = 0; + + if (w > h) + { + y1 = h * 0.5; + } + else + { + y1 = w / 2; + } + + c.begin(); + c.moveTo(w - x1, 0); + c.lineTo(w - x1, h - y1); + c.lineTo(w, h - y1); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - y1); + c.lineTo(x1, h - y1); + c.lineTo(x1, 0); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalStraightBus.prototype.cst.SHAPE_STRAIGHT_BUS, mxShapeElectricalStraightBus); + +mxShapeElectricalStraightBus.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Two-Line Bus Elbow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalTwoLineBusElbow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalTwoLineBusElbow, mxShape); + +mxShapeElectricalTwoLineBusElbow.prototype.cst = { + SHAPE_TWO_LINE_BUS_ELBOW : 'mxgraph.electrical.transmission.twoLineBusElbow' +}; + +mxShapeElectricalTwoLineBusElbow.prototype.customProperties = [ + {name:'notch', dispName:'Spacing', type:'float', min:0, defVal:25} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalTwoLineBusElbow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalTwoLineBusElbow.prototype.cst.SHAPE_TWO_LINE_BUS_ELBOW, mxShapeElectricalTwoLineBusElbow); + +mxShapeElectricalTwoLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalTwoLineBusElbow.prototype.cst.SHAPE_TWO_LINE_BUS_ELBOW] = function(state) +{ + var handles = [Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + + return handles; + +} + +//********************************************************************************************************************************************************** +//Three-Line Bus Elbow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalThreeLineBusElbow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalThreeLineBusElbow, mxShape); + +mxShapeElectricalThreeLineBusElbow.prototype.cst = { + SHAPE_THREE_LINE_BUS_ELBOW : 'mxgraph.electrical.transmission.threeLineBusElbow' +}; + +mxShapeElectricalThreeLineBusElbow.prototype.customProperties = [ + {name:'notch', dispName:'Spacing', type:'float', min:0, defVal:30} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalThreeLineBusElbow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn / 2); + c.lineTo(w - wn / 2, h - hn / 2); + c.lineTo(w - wn / 2, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalThreeLineBusElbow.prototype.cst.SHAPE_THREE_LINE_BUS_ELBOW, mxShapeElectricalThreeLineBusElbow); + +mxShapeElectricalThreeLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalThreeLineBusElbow.prototype.cst.SHAPE_THREE_LINE_BUS_ELBOW] = function(state) +{ + var handles = [Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + + return handles; + +} + +//********************************************************************************************************************************************************** +//Four-Line Bus Elbow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalFourLineBusElbow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalFourLineBusElbow, mxShape); + +mxShapeElectricalFourLineBusElbow.prototype.cst = { + SHAPE_FOUR_LINE_BUS_ELBOW : 'mxgraph.electrical.transmission.fourLineBusElbow' +}; + +mxShapeElectricalFourLineBusElbow.prototype.customProperties = [ + {name:'notch', dispName:'Spacing', type:'float', min:0, defVal:75} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalFourLineBusElbow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn / 3); + c.lineTo(w - wn / 3, h - hn / 3); + c.lineTo(w - wn / 3, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 2 / 3); + c.lineTo(w - wn * 2 / 3, h - hn * 2 / 3); + c.lineTo(w - wn * 2 / 3, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalFourLineBusElbow.prototype.cst.SHAPE_FOUR_LINE_BUS_ELBOW, mxShapeElectricalFourLineBusElbow); + +mxShapeElectricalFourLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalFourLineBusElbow.prototype.cst.SHAPE_FOUR_LINE_BUS_ELBOW] = function(state) +{ + var handles = [Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Four-Line Bus Elbow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalEightLineBusElbow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.notch = 0; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalEightLineBusElbow, mxShape); + +mxShapeElectricalEightLineBusElbow.prototype.cst = { + SHAPE_EIGHT_LINE_BUS_ELBOW : 'mxgraph.electrical.transmission.eightLineBusElbow' +}; + +mxShapeElectricalEightLineBusElbow.prototype.customProperties = [ + {name:'notch', dispName:'Spacing', type:'float', min:0, defVal:180} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalEightLineBusElbow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.lineTo(w, 0); + c.stroke(); + + var wn = Math.min(w, notch); + var hn = Math.min(h, notch); + + c.begin(); + c.moveTo(0, h - hn); + c.lineTo(w - wn, h - hn); + c.lineTo(w - wn, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn / 7); + c.lineTo(w - wn / 7, h - hn / 7); + c.lineTo(w - wn / 7, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 2 / 7); + c.lineTo(w - wn * 2 / 7, h - hn * 2 / 7); + c.lineTo(w - wn * 2 / 7, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 3 / 7); + c.lineTo(w - wn * 3 / 7, h - hn * 3 / 7); + c.lineTo(w - wn * 3 / 7, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 4 / 7); + c.lineTo(w - wn * 4 / 7, h - hn * 4 / 7); + c.lineTo(w - wn * 4 / 7, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 5 / 7); + c.lineTo(w - wn * 5 / 7, h - hn * 5 / 7); + c.lineTo(w - wn * 5 / 7, 0); + c.stroke(); + + c.begin(); + c.moveTo(0, h - hn * 6 / 7); + c.lineTo(w - wn * 6 / 7, h - hn * 6 / 7); + c.lineTo(w - wn * 6 / 7, 0); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxShapeElectricalEightLineBusElbow.prototype.cst.SHAPE_EIGHT_LINE_BUS_ELBOW, mxShapeElectricalEightLineBusElbow); + +mxShapeElectricalEightLineBusElbow.prototype.constraints = null; + +Graph.handleFactory[mxShapeElectricalEightLineBusElbow.prototype.cst.SHAPE_EIGHT_LINE_BUS_ELBOW] = function(state) +{ + var handles = [Graph.createHandle(state, ['notch'], function(bounds) + { + var notch = Math.max(Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch))), 0); + + return new mxPoint(bounds.x + bounds.width / 4, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(0.2 * Math.max(0, bounds.width - pt.y + bounds.y)) / 0.2; + })]; + + return handles; +} + +//********************************************************************************************************************************************************** +//Logic Gate +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalLogicGate(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalLogicGate, mxShape); + +mxShapeElectricalLogicGate.prototype.cst = { + SHAPE_LOGIC_GATE : 'mxgraph.electrical.logic_gates.logic_gate' +}; + +mxShapeElectricalLogicGate.prototype.customProperties = [ + {name: 'operation', dispName: 'Operation', type: 'enum', defVal:'and', + enumList:[ + {val:'and', dispName:'And'}, + {val:'or', dispName:'Or'}, + {val:'xor', dispName:'Xor'} + ]}, + {name: 'numInputs', dispName: 'Inputs', type: 'int', min:2, defVal:2}, + {name: 'negating', dispName: 'Negating', type: 'bool', defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalLogicGate.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var numInputs = parseInt(mxUtils.getValue(this.style, 'numInputs', '2')); + var spacing = h / numInputs; + var currH = spacing * 0.5; + + c.begin(); + c.moveTo(w * 0.8, h * 0.5); + c.lineTo(w, h * 0.5); + + var operation = mxUtils.getValue(this.style, 'operation', 'and'); + + for (var i = 0; i < numInputs; i++) + { + c.moveTo(0, currH); + + if (operation == 'and') + { + c.lineTo(w * 0.2, currH); + } + else + { + c.lineTo(w * 0.23, currH); + } + + currH = currH + spacing; + } + + c.stroke(); + + + switch(operation) { + case 'xor': + c.begin(); + c.moveTo(w * 0.1, 0); + c.arcTo(w * 0.6, h, 0, 0, 1, w * 0.1, h); + c.stroke(); + case 'or': + c.begin(); + c.moveTo(w * 0.4, 0); + c.arcTo(w * 0.45, h * 0.83, 0, 0, 1, w * 0.8, h * 0.5); + c.arcTo(w * 0.45, h * 0.83, 0, 0, 1, w * 0.4, h); + c.lineTo(w * 0.15, h); + c.arcTo(w * 0.6, h, 0, 0, 0, w * 0.15, 0); + c.close(); + c.fillAndStroke(); + break; + default: + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(w * 0.5, 0); + c.arcTo(w * 0.3, h * 0.5, 0, 0, 1, w * 0.5, h); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + }; + + + var negating = mxUtils.getValue(this.style, 'negating', '0'); + + if (negating == '1') + { + var negSize = Math.min(w * 0.04, h * 0.07); + c.begin(); + c.ellipse(w * 0.8, h * 0.5 - negSize * 0.5, negSize, negSize); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalLogicGate.prototype.cst.SHAPE_LOGIC_GATE, mxShapeElectricalLogicGate); + +mxShapeElectricalLogicGate.prototype.getConstraints = function(style) +{ + var constr = [new mxConnectionConstraint(new mxPoint(1, 0.5), false)]; + + var numInputs = parseInt(mxUtils.getValue(style, 'numInputs', '2')); + var spacing = 1 / numInputs; + var currH = spacing * 0.5; + + for (var i = 0; i < numInputs; i++) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, currH), false)); + currH = currH + spacing; + } + + return (constr); +} + +//********************************************************************************************************************************************************** +//Buffer +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalBuffer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalBuffer, mxShape); + +mxShapeElectricalBuffer.prototype.cst = { + SHAPE_BUFFER2 : 'mxgraph.electrical.logic_gates.buffer2' +}; + +mxShapeElectricalBuffer.prototype.customProperties = [ + {name: 'negating', dispName: 'Negating', type: 'bool', defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalBuffer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.2, h * 0.5); + c.moveTo(w * 0.8, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.2, 0); + c.lineTo(w * 0.8, h * 0.5); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + + var negating = mxUtils.getValue(this.style, 'negating', '0'); + + if (negating == '1') + { + var negSize = Math.min(w * 0.04, h * 0.07); + c.begin(); + c.ellipse(w * 0.8, h * 0.5 - negSize * 0.5, negSize, negSize); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalBuffer.prototype.cst.SHAPE_BUFFER2, mxShapeElectricalBuffer); + +mxShapeElectricalBuffer.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true) + ]; + +//********************************************************************************************************************************************************** +//Dual In-Line IC +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalDualInLineIC(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalDualInLineIC, mxShape); + +mxShapeElectricalDualInLineIC.prototype.cst = { + SHAPE_DUAL_INLINE_IC : 'mxgraph.electrical.logic_gates.dual_inline_ic' +}; + +mxShapeElectricalDualInLineIC.prototype.customProperties = [ + {name: 'pinStyle', dispName: 'Pin Style', type: 'enum', defVal:'line', + enumList:[ + {val:'line', dispName:'Line'}, + {val:'square', dispName:'Square'} + ]}, + {name: 'startPin', dispName: 'Starting Pin', type: 'enum', defVal:'n', + enumList:[ + {val:'n', dispName:'N'}, + {val:'e', dispName:'E'}, + {val:'s', dispName:'S'}, + {val:'w', dispName:'W'} + ]}, + {name: 'pinSpacing', dispName: 'Pin Spacing', type: 'float', min:1, defVal:20}, + {name: 'pinLabelType', dispName: 'Pin Label Type', type: 'enum', defVal:'gen', + enumList:[ + {val:'gen', dispName:'Generated'}, + {val:'cust', dispName:'Custom'} + ]}, + {name: 'labelCount', dispName: 'Number of Labels', type: 'int', defVal: 20, dependentProps: ['labelNames']}, + {name: 'labelNames', dispName: 'Label Names', type: 'staticArr', subType: 'string', sizeProperty: 'labelCount', subDefVal: 'a'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalDualInLineIC.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var startPin = mxUtils.getValue(this.style, 'startPin', 'n'); + var pinLabelType = mxUtils.getValue(this.style, 'pinLabelType', 'gen'); + var labelNames = mxUtils.getValue(this.style, 'labelNames', '').toString().split(','); + + c.begin(); + + if (startPin == 'n' || startPin == 's') + { + c.rect(10, 0, w - 20, h); + } + else + { + c.rect(0, 10, w, h - 20); + } + + c.fillAndStroke(); + + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinStyle = mxUtils.getValue(this.style, 'pinStyle', 'line'); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + + if (startPin == 'n' || startPin == 's') + { + var pinsOne = parseInt(h / pinSpacing); + } + else + { + var pinsOne = parseInt(w / pinSpacing); + } + + if (pinStyle == 'line') + { + c.setFontSize(fontSize * 0.8); + var pinCount = 1; + var currH = pinSpacing * 0.5; + + c.begin(); + + if (startPin == 'n' || startPin == 's') + { + while (pinCount * pinSpacing <= h) + { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + + if (startPin == 'n') + { + var currPinNum = pinCount; + } + else + { + var currPinNum = pinsOne + pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(20, currH, 0, 0, currPinNum.toString(), mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(20, currH, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_LEFT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'n') + { + var pc2 = 2 * pinsOne - pinCount + 1; + } + else + { + var pc2 = pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(w - 20, currH, 0, 0, pc2.toString(), mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(w - 20, currH, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_RIGHT, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + else + { + while (pinCount * pinSpacing <= w) + { + c.moveTo(currH, 0); + c.lineTo(currH, 10); + c.moveTo(currH, h - 10); + c.lineTo(currH, h); + + if (startPin == 'e') + { + var currPinNum = pinsOne - pinCount + 1; + } + else + { + var currPinNum = 2 * pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(currH, 20, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(currH, 20, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'e') + { + var pc2 = pinsOne + pinCount; + } + else + { + var pc2 = pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(currH, h - 20, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(currH, h - 20, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + + c.stroke(); + } + else + { + c.setFontSize(fontSize * 0.5); + var pinCount = 1; + var currH = pinSpacing * 0.5; + + if (startPin == 'n' || startPin == 's') + { + while (pinCount * pinSpacing <= h) + { + c.begin(); + c.rect(0, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + c.begin(); + c.rect(w - 10, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + if (startPin == 'n') + { + var currPinNum = pinCount; + } + else + { + var currPinNum = pinsOne + pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(5, currH + 1, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(5, currH + 1, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'n') + { + var pc2 = 2 * pinsOne - pinCount + 1; + } + else + { + var pc2 = pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(w - 5, currH + 1, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(w - 5, currH + 1, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + else + { + while (pinCount * pinSpacing <= w) + { + c.begin(); + c.rect(currH - pinSpacing * 0.25, 0, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + c.begin(); + c.rect(currH - pinSpacing * 0.25, h - 10, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + if (startPin == 'e') + { + var currPinNum = pinsOne - pinCount + 1; + } + else + { + var currPinNum = 2 * pinsOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(currH, 5, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(currH, 5, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + if (startPin == 'e') + { + var pc2 = pinsOne + pinCount; + } + else + { + var pc2 = pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(currH, h - 5, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(currH, h - 5, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + + } + + c.setShadow(false); + + c.begin(); + + switch(startPin) { + case 'e': + if (h > 40) + { + c.moveTo(w, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 0, w, h * 0.5 + 10); + } + break; + case 's': + if (w > 40) + { + c.moveTo(w * 0.5 - 10, h); + c.arcTo(12, 12, 0, 0, 1, w * 0.5 + 10, h); + } + break; + case 'w': + if (h > 40) + { + c.moveTo(0, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, 0, h * 0.5 + 10); + } + break; + default: + if (w > 40) + { + c.moveTo(w * 0.5 - 10, 0); + c.arcTo(12, 12, 0, 0, 0, w * 0.5 + 10, 0); + } + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalDualInLineIC.prototype.cst.SHAPE_DUAL_INLINE_IC, mxShapeElectricalDualInLineIC); + +mxShapeElectricalDualInLineIC.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var startPin = mxUtils.getValue(this.style, 'startPin', 'n'); + var pinCount = 1; + var currH = pinSpacing * 0.5; + var pinsOne = parseInt(h / pinSpacing); + + if (startPin == 'n' || startPin == 's') + { + while (pinCount * pinSpacing <= h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, currH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, currH)); + currH = currH + pinSpacing; + pinCount++; + } + } + else + { + while (pinCount * pinSpacing <= w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currH, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currH, 0)); + currH = currH + pinSpacing; + pinCount++; + } + } + + return (constr); +} + +//********************************************************************************************************************************************************** +//Quad Flat Package IC +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalQFPIC(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalQFPIC, mxShape); + +mxShapeElectricalQFPIC.prototype.cst = { + SHAPE_QFP_IC : 'mxgraph.electrical.logic_gates.qfp_ic' +}; + +mxShapeElectricalQFPIC.prototype.customProperties = [ + {name: 'pinStyle', dispName: 'Pin Style', type: 'enum', defVal:'line', + enumList:[ + {val:'line', dispName:'Line'}, + {val:'square', dispName:'Square'} + ]}, + {name: 'startPin', dispName: 'Starting Pin', type: 'enum', defVal:'sw', + enumList:[ + {val:'sw', dispName:'SW'}, + {val:'nw', dispName:'NW'}, + {val:'ne', dispName:'NE'}, + {val:'se', dispName:'SE'} + ]}, + {name: 'pinSpacing', dispName: 'Pin Spacing', type: 'float', min:1, defVal:20}, + {name: 'pinLabelType', dispName: 'Pin Label Type', type: 'enum', defVal:'gen', + enumList:[ + {val:'gen', dispName:'Generated'}, + {val:'cust', dispName:'Custom'} + ]}, + {name: 'labelCount', dispName: 'Number of Labels', type: 'int', defVal: 40, dependentProps: ['labelNames']}, + {name: 'labelNames', dispName: 'Label Names', type: 'staticArr', subType: 'string', sizeProperty: 'labelCount', subDefVal: 'a'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalQFPIC.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(15, 10); + c.lineTo(w - 15, 10); + c.lineTo(w - 10, 15); + c.lineTo(w - 10, h - 15); + c.lineTo(w - 15, h - 10); + c.lineTo(15, h - 10); + c.lineTo(10, h - 15); + c.lineTo(10, 15); + c.close(); + c.fillAndStroke(); + + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinStyle = mxUtils.getValue(this.style, 'pinStyle', 'line'); + var pinLabelType = mxUtils.getValue(this.style, 'pinLabelType', 'gen'); + var labelNames = mxUtils.getValue(this.style, 'labelNames', '').toString().split(','); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var startPin = mxUtils.getValue(this.style, 'startPin', 'sw'); + + if (pinStyle == 'line') + { + c.setFontSize(fontSize * 0.8); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + c.begin(); + + var pinsVOne = parseInt((h - pinSpacing - 40) / pinSpacing) + 1; + var pinsHOne = parseInt((w - pinSpacing - 40) / pinSpacing) + 1; + + while (currH <= h - pinSpacing * 0.5 - 20) + { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + + //west pins + switch(startPin) { + case 'nw': + var currPinNum = pinCount; + break; + case 'ne': + var currPinNum = pinsHOne + pinCount; + break; + case 'se': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + default: + var currPinNum = pinsVOne + 2 * pinsHOne + pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(20, currH, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(20, currH, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + //east pins + switch(startPin) { + case 'nw': + var pc2 = pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'ne': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'se': + var pc2 = pinsVOne - pinCount + 1; + break; + default: + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(w - 20, currH, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(w - 20, currH, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) + { + c.moveTo(currH, 0); + c.lineTo(currH, 10); + c.moveTo(currH, h - 10); + c.lineTo(currH, h); + + //south pins + switch(startPin) { + case 'nw': + var currPinNum = pinsVOne + pinCount; + break; + case 'ne': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + case 'se': + var currPinNum = 2 * pinsVOne + pinsHOne + pinCount; + break; + default: + var currPinNum = pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(currH, h - 20, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(currH, h - 20, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + //north pins + switch(startPin) { + case 'nw': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'ne': + var pc2 = pinsHOne - pinCount + 1; + break; + case 'se': + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + break; + default: + var pc2 = 2 * pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(currH, 20, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(currH, 20, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + c.stroke(); + } + else + { + c.setFontSize(fontSize * 0.5); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + var pinsVOne = parseInt((h - pinSpacing - 40) / pinSpacing) + 1; + var pinsHOne = parseInt((w - pinSpacing - 40) / pinSpacing) + 1; + + while (currH <= h - pinSpacing * 0.5 - 20) + { + c.begin(); + c.rect(0, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + c.begin(); + c.rect(w - 10, currH - pinSpacing * 0.25, 10, pinSpacing * 0.5); + c.fillAndStroke(); + + //west pins + switch(startPin) { + case 'nw': + var currPinNum = pinCount; + break; + case 'ne': + var currPinNum = pinsHOne + pinCount; + break; + case 'se': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + default: + var currPinNum = pinsVOne + 2 * pinsHOne + pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(5, currH + 1, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(5, currH + 1, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + //east pins + switch(startPin) { + case 'nw': + var pc2 = pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'ne': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'se': + var pc2 = pinsVOne - pinCount + 1; + break; + default: + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(w - 5, currH + 1, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(w - 5, currH + 1, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) + { + c.begin(); + c.rect(currH - pinSpacing * 0.25, 0, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + c.begin(); + c.rect(currH - pinSpacing * 0.25, h - 10, pinSpacing * 0.5, 10); + c.fillAndStroke(); + + //south pins + switch(startPin) { + case 'nw': + var currPinNum = pinsVOne + pinCount; + break; + case 'ne': + var currPinNum = pinsVOne + pinsHOne + pinCount; + break; + case 'se': + var currPinNum = 2 * pinsVOne + pinsHOne + pinCount; + break; + default: + var currPinNum = pinCount; + } + + if (pinLabelType == 'gen') + { + c.text(currH, h - 4, 0, 0, currPinNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (currPinNum - 1 < labelNames.length) + { + c.text(currH, h - 4, 0, 0, labelNames[currPinNum - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + //north pins + switch(startPin) { + case 'nw': + var pc2 = 2 * pinsHOne + 2 * pinsVOne - pinCount + 1; + break; + case 'ne': + var pc2 = pinsHOne - pinCount + 1; + break; + case 'se': + var pc2 = pinsHOne + pinsVOne - pinCount + 1; + break; + default: + var pc2 = 2 * pinsHOne + pinsVOne - pinCount + 1; + } + + if (pinLabelType == 'gen') + { + c.text(currH, 6, 0, 0, pc2.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else if (pc2 - 1 < labelNames.length) + { + c.text(currH, 6, 0, 0, labelNames[pc2 - 1].toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + currH = currH + pinSpacing; + pinCount++; + } + } + + c.setShadow(false); + + if (w > 40) + { + c.setFillColor(mxUtils.getValue(this.style, 'strokeColor', '#000000')); + + c.begin(); + + switch(startPin) { + case 'nw': + c.ellipse(15, 15, 10, 10); + break; + case 'ne': + c.ellipse(w - 25, 15, 10, 10); + break; + case 'se': + c.ellipse(w - 25, h - 25, 10, 10); + break; + default: + c.ellipse(15, h - 25, 10, 10); + } + + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalQFPIC.prototype.cst.SHAPE_QFP_IC, mxShapeElectricalQFPIC); + +mxShapeElectricalQFPIC.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + var pinSpacing = parseFloat(mxUtils.getValue(this.style, 'pinSpacing', '20')); + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + var pinsOne = parseInt(h / pinSpacing); + + while (currH <= h - pinSpacing * 0.5 - 20) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, currH)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, currH)); + currH = currH + pinSpacing; + } + + var pinCount = 1; + var currH = pinSpacing * 0.5 + 20; + + while (currH <= w - pinSpacing * 0.5 - 20) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, currH, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, currH, 0)); + currH = currH + pinSpacing; + } + + + return (constr); +} + +//********************************************************************************************************************************************************** +//Mux +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalMux(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalMux, mxShape); + +mxShapeElectricalMux.prototype.cst = { + SHAPE_MUX : 'mxgraph.electrical.abstract.mux2' +}; + +mxShapeElectricalMux.prototype.customProperties = [ + {name: 'operation', dispName: 'Operation', type: 'enum', defVal:'mux', + enumList:[ + {val:'mux', dispName:'Mux'}, + {val:'demux', dispName:'Demux'} + ]}, + {name: 'selectorPins', dispName: 'Selector Pins', type: 'int', min:1, max:8, defVal:1}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalMux.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '1')); + var operation = mxUtils.getValue(this.style, 'operation', 'mux'); + var fontSize = parseFloat(mxUtils.getValue(this.style, 'fontSize', '12')); + c.setFontSize(fontSize * 0.5); + var fontColor = mxUtils.getValue(this.style, 'fontColor', '#000000'); + c.setFontColor(fontColor); + var dir = mxUtils.getValue(this.style, 'direction', 'east'); + var txtRot = 0; + + switch(dir) + { + case 'south' : + txtRot = 270; + break; + case 'west' : + txtRot = 180; + break; + case 'north' : + txtRot = 90; + break; + } + + switch(operation) + { + case 'demux': + c.begin(); + c.moveTo(w - 10, 0); + c.lineTo(10, h * 0.1); + c.lineTo(10, h * 0.9 - 10); + c.lineTo(w - 10, h - 10); + c.close(); + c.fillAndStroke(); + break; + default: + c.begin(); + c.moveTo(10, 0); + c.lineTo(w - 10, h * 0.1); + c.lineTo(w - 10, h * 0.9 - 10); + c.lineTo(10, h - 10); + c.close(); + c.fillAndStroke(); + }; + + var numInputs = 1; + var numOutputs = 1; + + if (operation == 'mux') + { + numInputs = Math.pow(2, selectorPins); + var spacing = (h - 16) / numInputs; + } + else + { + numOutputs = Math.pow(2, selectorPins); + var spacing = (h - 16) / numOutputs; + } + + var currH = 3 + spacing * 0.5; + + c.begin(); + + if (numInputs == 1) + { + c.moveTo(0, (h - 10) * 0.5); + c.lineTo(10, (h - 10) * 0.5); + } + else + { + for (var i = 0; i < numInputs; i++) + { + c.moveTo(0, currH); + c.lineTo(10, currH); + c.text(14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currH = currH + spacing; + } + } + + if (numOutputs == 1) + { + c.moveTo(w - 10, (h - 10) * 0.5); + c.lineTo(w, (h - 10) * 0.5); + } + else + { + for (var i = 0; i < numOutputs; i++) + { + c.moveTo(w - 10, currH); + c.lineTo(w, currH); + c.text(w - 14, currH + 1, 0, 0, '' + i.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currH = currH + spacing; + } + } + + var spacing = (w - 20) / selectorPins; + var currW = 10 + spacing * 0.5; + + for (var i = 0; i < selectorPins; i++) + { + if (operation == 'mux') + { + c.moveTo(currW, h - 10 - (currW - 10) / (w - 20) * h * 0.1); + } + else + { + c.moveTo(currW, h - 10 - (w - currW - 10) / (w - 20) * h * 0.1); + } + + c.lineTo(currW, h); + + c.text(currW + 5, h -4, 0, 0, 'S' + (selectorPins - i - 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, txtRot); + currW = currW + spacing; + } + + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeElectricalMux.prototype.cst.SHAPE_MUX, mxShapeElectricalMux); + +mxShapeElectricalMux.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var pinRange = (h - 16) / h; + var selectorPins = parseInt(mxUtils.getValue(this.style, 'selectorPins', '1')); + var operation = mxUtils.getValue(this.style, 'operation', 'mux'); + var dir = mxUtils.getValue(this.style, 'direction', 'east'); + + var numInputs = 1; + var numOutputs = 1; + + if (operation == 'mux') + { + numInputs = Math.pow(2, selectorPins); + var spacing = pinRange / numInputs; + } + else + { + numOutputs = Math.pow(2, selectorPins); + var spacing = pinRange / numOutputs; + } + + var currH = spacing * 0.5; + + if (numInputs == 1) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5 * (h - 10) / h), false, 0, 0)); + } + else + { + for (var i = 0; i < numInputs; i++) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, currH), false, null, 0, 3)); + currH = currH + spacing; + } + } + + if (numOutputs == 1) + { + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -5)); + } + else + { + for (var i = 0; i < numOutputs; i++) + { + constr.push(new mxConnectionConstraint(new mxPoint(1, currH), false, null, 0, 3)); + currH = currH + spacing; + } + } + + var spacing = (w - 20) / (w * selectorPins); + var currW = spacing * 0.5; + + for (var i = 0; i < selectorPins; i++) + { + constr.push(new mxConnectionConstraint(new mxPoint(currW, 1), false, null, 10, 0)); + currW = currW + spacing; + } + + return (constr); +} + +//********************************************************************************************************************************************************** +//Battery stack +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeElectricalBatteryStack(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeElectricalBatteryStack, mxShape); + +mxShapeElectricalBatteryStack.prototype.cst = { + SHAPE_BATTERY_STACK : 'mxgraph.electrical.miscellaneous.batteryStack' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeElectricalBatteryStack.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var bw = h * 0.3; + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + + var bNum = Math.floor((w - 20) / bw); + var startX = (w - bNum * bw) * 0.5; + + if (bNum > 0) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(startX + bw * 0.2, h * 0.5); + c.moveTo(w - startX - bw * 0.2, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + var currX = startX; + c.setFillColor(strokeColor); + + for (var i = 0; i < bNum; i++) + { + + c.rect(currX + bw * 0.2, h * 0.25, bw * 0.2, h * 0.5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(currX + bw * 0.8, 0); + c.lineTo(currX + bw * 0.8, h); + c.stroke(); + + if (i > 0) + { + c.setDashed('1'); + c.begin(); + c.moveTo(currX - bw * 0.2, h * 0.5); + c.lineTo(currX + bw * 0.2, h * 0.5); + c.stroke(); + c.setDashed(dashed); + } + + currX = currX + bw; + } + } +}; + +mxCellRenderer.registerShape(mxShapeElectricalBatteryStack.prototype.cst.SHAPE_BATTERY_STACK, mxShapeElectricalBatteryStack); + +mxShapeElectricalBatteryStack.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true) + ]; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxFloorplan.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxFloorplan.js new file mode 100644 index 0000000000000..898ca0957bd72 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxFloorplan.js @@ -0,0 +1,763 @@ +/** + * $Id: mxFloorplan.js,v 1.3 2014/02/17 17:05:39 mate Exp $ + * Copyright (c) 2006-2014, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Wall +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanWall(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanWall, mxShape); + +mxFloorplanWall.prototype.cst = { + WALL : 'mxgraph.floorplan.wall', + WALL_THICKNESS : "wallThickness" +}; + +mxFloorplanWall.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanWall.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWall.prototype.background = function(c, x, y, w, h) +{ + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWall.prototype.cst.WALL_THICKNESS, '10')); + c.rect(0, h * 0.5 - wallTh * 0.5, w, wallTh); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWall.prototype.cst.WALL, mxFloorplanWall); + +//********************************************************************************************************************************************************** +//Wall Corner +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanWallCorner(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanWallCorner, mxShape); + +mxFloorplanWallCorner.prototype.cst = { + WALL_CORNER : 'mxgraph.floorplan.wallCorner', + WALL_THICKNESS : "wallThickness" +}; + +mxFloorplanWallCorner.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanWallCorner.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWallCorner.prototype.background = function(c, x, y, w, h) +{ + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWallCorner.prototype.cst.WALL_THICKNESS, '10')); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, wallTh); + c.lineTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWallCorner.prototype.cst.WALL_CORNER, mxFloorplanWallCorner); + +//********************************************************************************************************************************************************** +//Wall U +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanWallU(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanWallU, mxShape); + +mxFloorplanWallU.prototype.cst = { + WALL_U : 'mxgraph.floorplan.wallU', + WALL_THICKNESS : "wallThickness" +}; + +mxFloorplanWallU.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanWallU.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWallU.prototype.background = function(c, x, y, w, h) +{ + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWallU.prototype.cst.WALL_THICKNESS, '10')); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(w - wallTh, h); + c.lineTo(w - wallTh, wallTh); + c.lineTo(wallTh, wallTh); + c.lineTo(wallTh, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWallU.prototype.cst.WALL_U, mxFloorplanWallU); + +//********************************************************************************************************************************************************** +//Room +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanRoom(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanRoom, mxShape); + +mxFloorplanRoom.prototype.cst = { + ROOM : 'mxgraph.floorplan.room', + WALL_THICKNESS : "wallThickness" +}; + +mxFloorplanRoom.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanRoom.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanRoom.prototype.background = function(c, x, y, w, h) +{ + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanRoom.prototype.cst.WALL_THICKNESS, '10')); + + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.close(); + c.moveTo(wallTh, wallTh); + c.lineTo(wallTh, h - wallTh); + c.lineTo(w - wallTh, h - wallTh); + c.lineTo(w - wallTh, wallTh); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanRoom.prototype.cst.ROOM, mxFloorplanRoom); + +//********************************************************************************************************************************************************** +//Window +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanWindow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanWindow, mxShape); + +mxFloorplanWindow.prototype.cst = { + WINDOW : 'mxgraph.floorplan.window', + WALL_THICKNESS : "wallThickness" +}; + +mxFloorplanWindow.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanWindow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanWindow.prototype.background = function(c, x, y, w, h) +{ + var wallTh = parseFloat(mxUtils.getValue(this.style, mxFloorplanWindow.prototype.cst.WALL_THICKNESS, '10')); + c.rect(0, h * 0.5 - wallTh * 0.5, w, wallTh); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanWindow.prototype.cst.WINDOW, mxFloorplanWindow); + +//********************************************************************************************************************************************************** +//Dimension +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanDimension(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanDimension, mxShape); + +mxFloorplanDimension.prototype.cst = { + DIMENSION : 'mxgraph.floorplan.dimension' +}; + +mxFloorplanDimension.prototype.customProperties = [ + {name:'wallThickness', dispName:'Thickness', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanDimension.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDimension.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDimension.prototype.cst.DIMENSION, mxFloorplanDimension); + +//********************************************************************************************************************************************************** +//Dimension Bottom +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanDimensionBottom(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanDimensionBottom, mxShape); + +mxFloorplanDimensionBottom.prototype.cst = { + DIMENSION : 'mxgraph.floorplan.dimensionBottom' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanDimensionBottom.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDimensionBottom.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h - 20); + c.lineTo(w, h - 20); + c.moveTo(10, h - 15); + c.lineTo(0, h - 20); + c.lineTo(10, h - 25); + c.moveTo(w - 10, h - 15); + c.lineTo(w, h - 20); + c.lineTo(w - 10, h - 25); + c.moveTo(0, h - 15); + c.lineTo(0, 0); + c.moveTo(w, h - 15); + c.lineTo(w, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDimensionBottom.prototype.cst.DIMENSION, mxFloorplanDimensionBottom); + +//********************************************************************************************************************************************************** +//Stairs +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanStairs(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanStairs, mxShape); + +mxFloorplanStairs.prototype.cst = { + STAIRS : 'mxgraph.floorplan.stairs' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanStairs.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var minW = Math.max(w, 50); + this.background(c, x, y, minW, h); +}; + +mxFloorplanStairs.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var step = 25; + c.setShadow(false); + + c.begin(); + + for (var i = 25; i < w; i = i + step) + { + c.moveTo(i, 0); + c.lineTo(i, h); + } + + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.moveTo(w - step, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - step, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanStairs.prototype.cst.STAIRS, mxFloorplanStairs); + +////********************************************************************************************************************************************************** +////Stairs Double +////********************************************************************************************************************************************************** +///** +//* Extends mxShape. +//*/ +//function mxFloorplanStairsRest(bounds, fill, stroke, strokewidth) +//{ +// mxShape.call(this); +// this.bounds = bounds; +// this.fill = fill; +// this.stroke = stroke; +// this.strokewidth = (strokewidth != null) ? strokewidth : 1; +//}; +// +///** +//* Extends mxShape. +//*/ +//mxUtils.extend(mxFloorplanStairsRest, mxShape); +// +//mxFloorplanStairsRest.prototype.cst = { +// STAIRS : 'mxgraph.floorplan.stairsRest' +//}; +// +// +// +///** +//* Function: paintVertexShape +//* +//* Paints the vertex shape. +//*/ +//mxFloorplanStairsRest.prototype.paintVertexShape = function(c, x, y, w, h) +//{ +// c.translate(x, y); +// var minW = Math.max(w, 50, h); +// var minH = Math.min(w, h); +// this.background(c, x, y, minW, h); +//}; +// +//mxFloorplanStairsRest.prototype.background = function(c, x, y, w, h) +//{ +// c.rect(0, 0, w, h); +// c.fillAndStroke(); +// +// var step = 25; +// c.setShadow(false); +// +// c.begin(); +// +// for (var i = 25; i < w - h * 0.5; i = i + step) +// { +// c.moveTo(i, 0); +// c.lineTo(i, h); +// } +// +// c.stroke(); +// +// c.begin(); +// c.moveTo(0, h * 0.5); +// c.lineTo(w, h * 0.5); +// +// c.moveTo(w, 0); +// c.lineTo(w - h * 0.5, h * 0.5); +// c.lineTo(w, h); +// +// c.moveTo(w - h * 0.5, 0); +// c.lineTo(w - h * 0.5, h); +// +// c.moveTo(0, h * 0.5); +// c.lineTo(w, h * 0.5); +// c.stroke(); +//}; +// +//mxCellRenderer.registerShape(mxFloorplanStairsRest.prototype.cst.STAIRS, mxFloorplanStairsRest); + +//********************************************************************************************************************************************************** +//Stairs +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanStairsRest(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanStairsRest, mxShape); + +mxFloorplanStairsRest.prototype.cst = { + STAIRS : 'mxgraph.floorplan.stairsRest' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanStairsRest.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var minW = Math.max(w, 50, h); + var minH = Math.min(w, h); + this.background(c, x, y, minW, h); +}; + +mxFloorplanStairsRest.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); + + var step = 25; + c.setShadow(false); + + c.begin(); + + for (var i = 25; i < w - h * 0.5; i = i + step) + { + c.moveTo(i, 0); + c.lineTo(i, h); + } + + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + + c.moveTo(w, 0); + c.lineTo(w - h * 0.5, h * 0.5); + c.lineTo(w, h); + + c.moveTo(w - h * 0.5, 0); + c.lineTo(w - h * 0.5, h); + + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanStairsRest.prototype.cst.STAIRS, mxFloorplanStairsRest); + +//********************************************************************************************************************************************************** +//Door, Left +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanDoorLeft(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanDoorLeft, mxShape); + +mxFloorplanDoorLeft.prototype.cst = { + DOOR_LEFT : 'mxgraph.floorplan.doorLeft' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanDoorLeft.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorLeft.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, 5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w, 5); + c.arcTo(w, w, 0, 0, 1, 0, 5 + w); + c.lineTo(0, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorLeft.prototype.cst.DOOR_LEFT, mxFloorplanDoorLeft); + +//********************************************************************************************************************************************************** +//Door, Right +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanDoorRight(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanDoorRight, mxShape); + +mxFloorplanDoorRight.prototype.cst = { + DOOR_RIGHT : 'mxgraph.floorplan.doorRight' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanDoorRight.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorRight.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, 5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, 5); + c.arcTo(w, w, 0, 0, 0, w, 5 + w); + c.lineTo(w, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorRight.prototype.cst.DOOR_RIGHT, mxFloorplanDoorRight); + +//********************************************************************************************************************************************************** +//Door, Double +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxFloorplanDoorDouble(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxFloorplanDoorDouble, mxShape); + +mxFloorplanDoorDouble.prototype.cst = { + DOOR_DOUBLE : 'mxgraph.floorplan.doorDouble' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxFloorplanDoorDouble.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxFloorplanDoorDouble.prototype.background = function(c, x, y, w, h) +{ + var halfW = w * 0.5; + c.rect(0, 0, w, 5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(halfW, 0); + c.lineTo(halfW, 5); + c.moveTo(halfW, 5); + c.arcTo(halfW, halfW, 0, 0, 1, 0, 5 + halfW); + c.lineTo(0, 5); + c.moveTo(halfW, 5); + c.arcTo(halfW, halfW, 0, 0, 0, w, 5 + halfW); + c.lineTo(w, 5); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxFloorplanDoorDouble.prototype.cst.DOOR_DOUBLE, mxFloorplanDoorDouble); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxFlowchart.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxFlowchart.js new file mode 100644 index 0000000000000..07a2ea5793bba --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxFlowchart.js @@ -0,0 +1,77 @@ +/** + * $Id: mxFlowchart.js,v 1.5 2016/04/1 12:32:06 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ +//********************************************************************************************************************************************************** +// Document 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeFlowchartDocument2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.size = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeFlowchartDocument2, mxActor); + +mxShapeFlowchartDocument2.prototype.cst = {DOCUMENT2 : 'mxgraph.flowchart.document2'}; + +mxShapeFlowchartDocument2.prototype.customProperties = [ + {name: 'size', dispName: 'Wave Size', type: 'float', min:0, max:1, defVal:0.25}, +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeFlowchartDocument2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = h * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); + var fy = 1.4; + var r = 5; + + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w, r); + c.lineTo(w, h - dy / 2); + c.quadTo(w * 3 / 4, h - dy * fy, w / 2, h - dy / 2); + c.quadTo(w / 4, h - dy * (1 - fy), 0, h - dy / 2); + c.lineTo(0, dy / 2); + c.lineTo(0, r); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2, mxShapeFlowchartDocument2); + +mxShapeFlowchartDocument2.prototype.constraints = null; + +Graph.handleFactory[mxShapeFlowchartDocument2.prototype.cst.DOCUMENT2] = function(state) +{ + var handles = [Graph.createHandle(state, ['size'], function(bounds) + { + var size = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'size', this.size)))); + + return new mxPoint(bounds.x + 3 * bounds.width / 4, bounds.y + (1 - size) * bounds.height); + + }, function(bounds, pt) + { + this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height)); + })]; + + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxGCP2.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxGCP2.js new file mode 100644 index 0000000000000..48b640876e0f4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxGCP2.js @@ -0,0 +1,370 @@ +/** + * $Id: mxGCP2.js,v 1.0 2018/08/21 13:05:39 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//double rect +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGCP2DoubleRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGCP2DoubleRect, mxShape); + +mxShapeGCP2DoubleRect.prototype.cst = { + SHAPE_DOUBLE_RECT : 'mxgraph.gcp2.doubleRect' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGCP2DoubleRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx = 8; + var dy = 8; + + w = w - dx; + h = h - dy; + + c.translate(x, y); + c.begin(); + c.roundrect(dx, dy, w , h, 1, 1); + c.fillAndStroke(); + c.roundrect(0, 0, w, h, 1, 1); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGCP2DoubleRect.prototype.cst.SHAPE_DOUBLE_RECT, mxShapeGCP2DoubleRect); +mxShapeGCP2DoubleRect.prototype.constraints = mxRectangleShape.prototype.constraints; + +//********************************************************************************************************************************************************** +//hexagonal icon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGCP2HexIcon(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGCP2HexIcon, mxShape); + +mxShapeGCP2HexIcon.prototype.cst = { + HEX_ICON : 'mxgraph.gcp2.hexIcon' +}; + +mxShapeGCP2HexIcon.prototype.customProperties = [ + {name: 'instNum', dispName: 'Number of instances', type: 'int', min: 0, defVal: 0}, + {name: 'prType', dispName: 'Instance Type', defVal: 'standard', type: 'enum', + enumList: [{val: 'standard', dispName: 'Standard'}, + {val: 'dynamic', dispName: 'Dynamic'}, + {val: 'multiple', dispName: 'Multiple'}, + {val: 'shared', dispName: 'Shared'}, + {val: 'replica', dispName: 'Replica'}, + {val: 'dynamic2', dispName: 'Dynamic 2'}, + {val: 'dynamic3', dispName: 'Dynamic 3'}, + {val: 'highmem', dispName: 'High-Mem'}, + {val: 'highcomp', dispName: 'High-Comp'}, + {val: 'backend', dispName: 'Backend'}, + {val: 'input', dispName: 'Input'}]}, + {name: 'prIcon', dispName: 'Instance Icon', defVal: 'compute_engine', type: 'enum', + enumList: [{val: 'compute_engine', dispName: 'Compute Engine'}, + {val: 'gpu', dispName: 'GPU'}, + {val: 'app_engine', dispName: 'App Engine'}, + {val: 'cloud_functions', dispName: 'Cloud Functions'}, + {val: 'container_engine', dispName: 'Kubernetes Engine'}, + {val: 'container_optimized_os', dispName: 'Container-Optimized OS'}, + {val: 'api_analytics', dispName: 'API Analytics'}, + {val: 'apigee_sense', dispName: 'Apigee Sense'}, + {val: 'api_monetization', dispName: 'API Monetization'}, + {val: 'cloud_endpoints', dispName: 'Cloud Endpoints'}, + {val: 'apigee_api_platform', dispName: 'Apigee API Platform'}, + {val: 'developer_portal', dispName: 'Developer Portal'}, + {val: 'cloud_iam', dispName: 'Cloud IAM'}, + {val: 'beyondcorp', dispName: 'BeyondCorp'}, + {val: 'cloud_iam', dispName: 'Cloud Resource Manager'}, + {val: 'data_loss_prevention_api', dispName: 'Data Loss Prevention API'}, + {val: 'cloud_security_scanner', dispName: 'Cloud Security Scanner'}, + {val: 'key_management_service', dispName: 'Key Management Service'}, + {val: 'identity_aware_proxy', dispName: 'Identity-Aware Proxy'}, + {val: 'security_key_enforcement', dispName: 'Security Key Enforcement'}, + {val: 'bigquery', dispName: 'BigQuery'}, + {val: 'cloud_datalab', dispName: 'Cloud Datalab'}, + {val: 'cloud_dataflow', dispName: 'Cloud Dataflow'}, + {val: 'cloud_pubsub', dispName: 'Cloud Pub/Sub'}, + {val: 'cloud_dataproc', dispName: 'Cloud Dataproc'}, + {val: 'genomics', dispName: 'Genomics'}, + {val: 'cloud_dataprep', dispName: 'Cloud Dataprep'}, + {val: 'data_studio', dispName: 'Data Studio'}, + {val: 'transfer_appliance', dispName: 'Transfer Appliance'}, + {val: 'cloud_machine_learning', dispName: 'Cloud Machine Learning'}, + {val: 'cloud_natural_language_api', dispName: 'Cloud Natural Language API'}, + {val: 'cloud_vision_api', dispName: 'Vision API'}, + {val: 'cloud_translation_api', dispName: 'Translation API'}, + {val: 'cloud_speech_api', dispName: 'Speech API'}, + {val: 'cloud_jobs_api', dispName: 'Jobs API'}, + {val: 'cloud_video_intelligence_api', dispName: 'Cloud Video Intelligence API'}, + {val: 'advanced_solutions_lab', dispName: 'Advanced Solutions Lab'}, + {val: 'cloud_iot_core', dispName: 'Cloud IoT Core'}, + {val: 'cloud_storage', dispName: 'Cloud Storage'}, + {val: 'cloud_sql', dispName: 'Cloud SQL'}, + {val: 'cloud_bigtable', dispName: 'Cloud Bigtable'}, + {val: 'cloud_spanner', dispName: 'Cloud Spanner'}, + {val: 'cloud_datastore', dispName: 'Cloud Datastore'}, + {val: 'persistent_disk', dispName: 'Persistent Disk'}, + {val: 'cloud_memorystore', dispName: 'Cloud Memorystore'}, + {val: 'cloud_filestore', dispName: 'Cloud Filestore'}, + {val: 'stackdriver', dispName: 'Stackdriver'}, + {val: 'cloud_deployment_manager', dispName: 'Monitoring'}, + {val: 'cloud_deployment_manager', dispName: 'Deployment Manager'}, + {val: 'logging', dispName: 'Logging'}, + {val: 'placeholder', dispName: 'Cloud Console'}, + {val: 'error_reporting', dispName: 'Error Reporting'}, + {val: 'placeholder', dispName: 'Cloud Shell'}, + {val: 'trace', dispName: 'Trace'}, + {val: 'placeholder', dispName: 'Cloud Mobile App'}, + {val: 'profiler', dispName: 'Profiler'}, + {val: 'placeholder', dispName: 'Billing API'}, + {val: 'cloud_apis', dispName: 'Cloud APIs'}, + {val: 'virtual_private_cloud', dispName: 'Virtual Private Cloud'}, + {val: 'dedicated_interconnect', dispName: 'Dedicated Interconnect'}, + {val: 'cloud_load_balancing', dispName: 'Cloud Load Balancing'}, + {val: 'cloud_dns', dispName: 'Cloud DNS'}, + {val: 'cloud_cdn', dispName: 'Cloud CDN'}, + {val: 'cloud_network', dispName: 'Cloud Network'}, + {val: 'cloud_external_ip_addresses', dispName: 'Cloud External IP Addresses'}, + {val: 'cloud_routes', dispName: 'Cloud Routes'}, + {val: 'cloud_firewall_rules', dispName: 'Cloud Firewall Rules'}, + {val: 'cloud_vpn', dispName: 'Cloud VPN'}, + {val: 'cloud_router', dispName: 'Cloud Router'}, + {val: 'cloud_armor', dispName: 'Cloud Armor'}, + {val: 'standard_network_tier', dispName: 'Standard Network Tier'}, + {val: 'premium_network_tier', dispName: 'Premium Network Tier'}, + {val: 'partner_interconnect', dispName: 'Partner Interconnect'}, + {val: 'placeholder', dispName: 'Cloud SDK'}, + {val: 'container_builder', dispName: 'Cloud Build'}, + {val: 'cloud_tools_for_powershell', dispName: 'Cloud Tools for Visual Studio'}, + {val: 'placeholder', dispName: 'Cloud Source Repositories'}, + {val: 'placeholder', dispName: 'Maven App Engine Plugin'}, + {val: 'placeholder', dispName: 'Cloud Tools for Eclipse'}, + {val: 'placeholder', dispName: 'Cloud Tools for IntelliJ'}, + {val: 'placeholder', dispName: 'Cloud Test Lab'}, + {val: 'cloud_tools_for_powershell', dispName: 'Cloud Tools for PowerShell'}, + {val: 'cloud_tools_for_powershell', dispName: 'IDE Plugins'}, + {val: 'container_registry', dispName: 'Container Registry'}, + {val: 'cloud_iot_edge', dispName: 'Cloud IoT Edge'}, + {val: 'cloud_firestore', dispName: 'Cloud Firestore'}, + {val: 'cloud_run', dispName: 'Cloud Run'}, + {val: 'gke_on_prem', dispName: 'GKE-on-Prem'}, + {val: 'cloud_data_catalog', dispName: 'Cloud Data Catalog'}, + {val: 'cloud_data_fusion', dispName: 'Cloud Data Fusion'}, + {val: 'ai_hub', dispName: 'AI Hub'}, + {val: 'automl_video_intelligence', dispName: 'AutoML Video Intelligence'}, + {val: 'automl_natural_language', dispName: 'AutoML Natural Language'}, + {val: 'automl_tables', dispName: 'AutoML Tables'}, + {val: 'automl_translation', dispName: 'AutoML Translation'}, + {val: 'automl_vision', dispName: 'AutoML Vision'}, + {val: 'recommendations_ai', dispName: 'Recommendations AI'}, + {val: 'cloud_inference_api', dispName: 'Cloud Inference API'}, + {val: 'cloud_service_mesh', dispName: 'Cloud Service Mesh'}, + {val: 'cloud_nat', dispName: 'Cloud NAT'}, + {val: 'traffic_director', dispName: 'Traffic Director'}, + {val: 'cloud_test_lab', dispName: 'Cloud Test Lab'}, + {val: 'cloud_code', dispName: 'Cloud Code'}, + {val: 'cloud_tasks', dispName: 'Cloud Tasks'}, + {val: 'placeholder', dispName: 'Gradle App Engine Plugin'}]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGCP2HexIcon.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var prIcon = mxUtils.getValue(this.state.style, 'prIcon', 'compute_engine'); + var prType = mxUtils.getValue(this.state.style, 'prType', ''); + var instNum = parseInt(mxUtils.getValue(this.state.style, 'instNum', 0)); + var fillColor = mxUtils.getValue(this.state.style, 'fillColor', '#ffffff'); + var opacity = mxUtils.getValue(this.state.style, 'opacity', '100'); + var strokeColor = mxUtils.getValue(this.state.style, 'strokeColor', 'none'); + var strokeWidth = mxUtils.getValue(this.state.style, 'strokeWidth', 1); + var iconSize = Math.min(w, h); + + switch(prType) + { + case 'dynamic': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.21, h * 0.12, w * 0.58, h * 0.76); + break; + case 'multiple': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.21, h * 0.12, w * 0.58, h * 0.76); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_3'); + c.setAlpha(opacity * 0.7 / 100); + c.setStrokeColor('none'); + bgSt2.drawShape(c, this, w * 0.17, h * 0.13, w * 0.66, h * 0.74); + break; + case 'shared': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.038; + c.setAlpha(opacity * 0.4 / 100); + c.setStrokeColor(fillColor); + c.setFillColor('none'); + bgSt1.drawShape(c, this, w * 0.02, h * 0, w * 0.96, h); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.7 / 100); + bgSt2.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt1.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + case 'replica': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.038; + c.setAlpha(opacity * 0.4 / 100); + c.setStrokeColor(fillColor); + c.setFillColor('none'); + bgSt1.drawShape(c, this, w * 0.02, h * 0, w * 0.96, h); + c.setAlpha(opacity * 0.7 / 100); + bgSt1.drawShape(c, this, w * 0.075, h * 0.06, w * 0.85, h * 0.88); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt1.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + case 'dynamic2': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.01; + c.setStrokeColor(fillColor); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt2.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + case 'dynamic3': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_2'); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, w * 0.14, h * 0.01, w * 0.72, h * 0.98); + var bgSt2 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + this.style[mxConstants.STYLE_STROKEWIDTH] = iconSize * 0.01; + c.setStrokeColor(fillColor); + c.setAlpha(opacity / 100); + c.setFillColor('#ffffff'); + bgSt2.drawShape(c, this, w * 0.13, h * 0.12, w * 0.74, h * 0.76); + this.style[mxConstants.STYLE_STROKEWIDTH] = strokeWidth; + break; + case 'highmem': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_highmem'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, 0, h * 0.56, w, h * 0.28); + break; + case 'highcomp': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_highcomp'); + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor('none'); + bgSt1.drawShape(c, this, 0, h * 0.16, w, h * 0.28); + break; + case 'backend': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + c.setFillColor('#FCC64D'); + bgSt1.drawShape(c, this, w * 0.12, h * 0.11, w * 0.76, h * 0.78); + break; + case 'input': + var bgSt1 = mxStencilRegistry.getStencil('mxgraph.gcp2.outline_blank_1'); + c.setFillColor('#A5DA40'); + bgSt1.drawShape(c, this, w * 0.12, h * 0.11, w * 0.76, h * 0.78); + break; + case 'standard': + default: + break; + } + + c.setAlpha(opacity / 100); + var stencil = mxStencilRegistry.getStencil('mxgraph.gcp2.' + prIcon); + + if (stencil != null) + { + c.setFillColor(fillColor); + c.setStrokeColor('none'); + stencil.drawShape(c, this, w * 0.17, h * 0.16, w * 0.66, h * 0.68); + } + + if (instNum > 0) + { + c.setFillColor('#ffffff'); + c.setStrokeColor('#ffffff'); + c.setStrokeWidth(iconSize * 0.038); + c.ellipse(w * 0.2, 0, w * 0.18, h * 0.22); + c.fillAndStroke(); + + c.setAlpha(opacity * 0.5 / 100); + c.setStrokeColor(fillColor); + c.ellipse(w * 0.2, 0, w * 0.18, h * 0.22); + c.stroke(); + + c.setAlpha(opacity / 100); + c.setFontColor('#4E6B89'); + c.setFontStyle(1); + c.setFontSize(Math.min(w, h) * 0.1); + + c.text(w * 0.29, h * 0.11 + 1, 0, 0, instNum.toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } +}; + +mxCellRenderer.registerShape(mxShapeGCP2HexIcon.prototype.cst.HEX_ICON, mxShapeGCP2HexIcon); + +mxShapeGCP2HexIcon.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.825, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.175, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.16), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.84), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.66, 0.17), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.66, 0.83), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.34, 0.17), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.34, 0.83), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.33), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.67), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.33), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.67), false)); + + return (constr); +}; + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxGmdl.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxGmdl.js new file mode 100644 index 0000000000000..0231090e85b16 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxGmdl.js @@ -0,0 +1,967 @@ +/** + * $Id: mxGmdl.js,v 1.0 2015/09/09 17:05:39 mate Exp $ + * Copyright (c) 2006-2015, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//player +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlPlayer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlPlayer, mxShape); + +mxShapeGmdlPlayer.prototype.cst = { + SHAPE_PLAYER : 'mxgraph.gmdl.player' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlPlayer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.rect(0, 0, w, h); + c.fill(); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeGmdlPlayer.prototype.foreground = function(c, x, y, w, h) +{ + + if ( h >= 4) + { + c.setFillColor('#FFED00'); + c.begin(); + c.rect(0, 0, w * 0.8, 4); + c.fill(); + } + + if ( h >= 14 && w >= 33) + { + c.setFillColor('#717171'); + c.begin(); + c.rect(w - 33, h * 0.5 - 7, 4, 14); + c.fill(); + c.begin(); + c.rect(w - 25, h * 0.5 - 7, 4, 14); + c.fill(); + } + +}; + +mxCellRenderer.registerShape(mxShapeGmdlPlayer.prototype.cst.SHAPE_PLAYER, mxShapeGmdlPlayer); + +//********************************************************************************************************************************************************** +//switch +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSwitch(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSwitch, mxShape); + +mxShapeGmdlSwitch.prototype.cst = { + SHAPE_SWITCH : 'mxgraph.gmdl.switch', + STATE : 'switchState', + STATE_ON : 'on', + STATE_OFF : 'off' +}; + +mxShapeGmdlSwitch.prototype.customProperties = [ + {name:'switchState', dispName:'State', type:'enum', defVal:'on', + enumList:[{val:'on', dispName: 'On'}, {val:'off', dispName: 'Off'}]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSwitch.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + var state = mxUtils.getValue(this.style, mxShapeGmdlSwitch.prototype.cst.STATE, mxShapeGmdlSwitch.prototype.cst.STATE_ON); + this.background(c, x, y, w, h, state); + c.setShadow(true); + this.foreground(c, x, y, w, h, state); +}; + +mxShapeGmdlSwitch.prototype.background = function(c, x, y, w, h, state) +{ + c.begin(); + + if (state === mxShapeGmdlSwitch.prototype.cst.STATE_ON) + { + c.save(); + c.setAlpha('0.5'); + c.moveTo(w * 0.135, h * 0.8); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.135, h * 0.2); + c.lineTo(w * 0.675, h * 0.2); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.675, h * 0.8); + c.close(); + c.fillAndStroke(); + c.restore(); + } + else + { + c.setFillColor('#BCBBBB'); + c.moveTo(w * 0.225, h * 0.8); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.225, h * 0.2); + c.lineTo(w * 0.865, h * 0.2); + c.arcTo(w * 0.135, h * 0.3, 0, 0, 1, w * 0.865, h * 0.8); + c.close(); + c.fillAndStroke(); + } + +}; + +mxShapeGmdlSwitch.prototype.foreground = function(c, x, y, w, h, state) +{ + c.begin(); + + if (state === mxShapeGmdlSwitch.prototype.cst.STATE_ON) + { + c.ellipse(w * 0.36, 0, w * 0.64, h); + } + else + { + c.setFillColor('#F1F1F1'); + c.ellipse(0, 0, w * 0.64, h); + } + + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSwitch.prototype.cst.SHAPE_SWITCH, mxShapeGmdlSwitch); + +//********************************************************************************************************************************************************** +//rect with margins +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlMarginRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlMarginRect, mxShape); + +mxShapeGmdlMarginRect.prototype.cst = { + SHAPE_MARGIN_RECT : 'mxgraph.gmdl.marginRect', + MARGIN : 'rectMargin', + MARGIN_TOP : 'rectMarginTop', + MARGIN_LEFT : 'rectMarginLeft', + MARGIN_BOTTOM : 'rectMarginBottom', + MARGIN_RIGHT : 'rectMarginRight' +}; + +mxShapeGmdlMarginRect.prototype.customProperties = [ + {name:'rectMargin', dispName:'Margin', type:'float', min:0, defVal:0}, + {name:'rectMarginTop', dispName:'Margin Top', type:'float', defVal:0}, + {name:'rectMarginLeft', dispName:'Margin Left', type:'float', defVal:0}, + {name:'rectMarginBottom', dispName:'Margin Bottom', type:'float', defVal:0}, + {name:'rectMarginRight', dispName:'Margin Right', type:'float', defVal:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlMarginRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeGmdlMarginRect.prototype.background = function(c, x, y, w, h, state) +{ + var margin = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN, '0')); + var marginTop = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_TOP, '0')); + var marginLeft = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_LEFT, '0')); + var marginBottom = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_BOTTOM, '0')); + var marginRight = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlMarginRect.prototype.cst.MARGIN_RIGHT, '0')); + + var x1 = margin + marginLeft; + var y1 = margin + marginTop; + var w1 = w - marginRight - x1 - margin; + var h1 = h - marginBottom - y1 - margin; + + if (w1 >0 && h1 > 0) + { + c.begin(); + c.rect(x1, y1, w1, h1); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlMarginRect.prototype.cst.SHAPE_MARGIN_RECT, mxShapeGmdlMarginRect); + +//********************************************************************************************************************************************************** +//slider normal +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderNormal(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderNormal, mxShape); + +mxShapeGmdlSliderNormal.prototype.cst = { + SHAPE_SLIDER_NORMAL : 'mxgraph.gmdl.sliderNormal', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderNormal.prototype.customProperties = [ + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderNormal.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderNormal.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderNormal.prototype.cst.HANDLE_SIZE, '10')); + + c.ellipse(0, h * 0.5 - hSize * 0.5, hSize, hSize); + c.stroke(); + + c.begin(); + c.moveTo(hSize, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderNormal.prototype.cst.SHAPE_SLIDER_NORMAL, mxShapeGmdlSliderNormal); + +//********************************************************************************************************************************************************** +//slider normal v2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSlider2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSlider2, mxShape); + +mxShapeGmdlSlider2.prototype.cst = { + SHAPE_SLIDER : 'mxgraph.gmdl.slider2', + BAR_POS : 'barPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSlider2.prototype.customProperties = [ + {name:'barPos', dispName:'Handle Position', type:'float', min:0, defVal:40}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSlider2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSlider2.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSlider2.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSlider2.prototype.cst.BAR_POS, '40')) / 100; + + barPos = Math.max(0, Math.min(1, barPos)); + + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fillAndStroke(); + +}; + +mxCellRenderer.registerShape(mxShapeGmdlSlider2.prototype.cst.SHAPE_SLIDER, mxShapeGmdlSlider2); + +mxShapeGmdlSlider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSlider2.prototype.cst.SHAPE_SLIDER] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//slider focused v2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderFocused(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderFocused, mxShape); + +mxShapeGmdlSliderFocused.prototype.cst = { + SHAPE_SLIDER_FOCUSED : 'mxgraph.gmdl.sliderFocused', + BAR_POS : 'barPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderFocused.prototype.customProperties = [ + {name:'barPos', dispName:'Handle Position', type:'float', min:0, defVal:40}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderFocused.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderFocused.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderFocused.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderFocused.prototype.cst.BAR_POS, '40')) / 100; + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#ffffff'); + + barPos = Math.max(0, Math.min(1, barPos)); + + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.fillAndStroke(); + + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(barPos * w, h * 0.5); + c.fillAndStroke(); + + c.begin(); + c.ellipse(barPos * w - hSize * 0.167, h * 0.5 - hSize * 0.167, hSize * 0.33, hSize * 0.33); + c.fillAndStroke(); + + c.setFillColor(strokeColor); + c.setAlpha(0.15); + c.begin(); + c.ellipse(barPos * w - hSize * 0.5, h * 0.5 - hSize * 0.5, hSize, hSize); + c.fill(); + +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderFocused.prototype.cst.SHAPE_SLIDER_FOCUSED, mxShapeGmdlSliderFocused); + +mxShapeGmdlSliderFocused.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderFocused.prototype.cst.SHAPE_SLIDER_FOCUSED] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; + +}; + +//********************************************************************************************************************************************************** +//slider disabled +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderDisabled(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderDisabled, mxShape); + +mxShapeGmdlSliderDisabled.prototype.cst = { + SHAPE_SLIDER_DISABLED : 'mxgraph.gmdl.sliderDisabled', + HANDLE_POSITION : 'hPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderDisabled.prototype.customProperties = [ + {name:'hPos', dispName:'Handle Position', type:'float', min:0, defVal:40}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:10} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderDisabled.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDisabled.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled.prototype.cst.HANDLE_SIZE, '10')); + var hPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled.prototype.cst.HANDLE_POSITION, '50')) / 100; + + hPos = Math.max(hPos, 0); + hPos = Math.min(hPos, 1); + + c.ellipse(w * hPos - hSize * 0.5, (h - hSize) * 0.5, hSize, hSize); + c.fillAndStroke(); + + var endL = w * hPos - 7; + var startR = w * hPos + 7; + + if (endL > 0) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(endL, h * 0.5); + c.stroke(); + } + + if (startR < w) + { + c.begin(); + c.moveTo(startR, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDisabled.prototype.cst.SHAPE_SLIDER_DISABLED, mxShapeGmdlSliderDisabled); + +//********************************************************************************************************************************************************** +//slider disabled v2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderDisabled2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderDisabled2, mxShape); + +mxShapeGmdlSliderDisabled2.prototype.cst = { + SHAPE_SLIDER_DISABLED : 'mxgraph.gmdl.sliderDisabled2', + HANDLE_POSITION : 'hPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderDisabled2.prototype.customProperties = [ + {name:'hPos', dispName:'Handle Position', type:'float', min:0, defVal:'40'}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:'10'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderDisabled2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDisabled2.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled2.prototype.cst.HANDLE_SIZE, '10')); + var hPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDisabled2.prototype.cst.HANDLE_POSITION, '50')) / 100; + + hPos = Math.min(Math.max(hPos, 0), 1); + + c.ellipse(w * hPos - hSize * 0.5, (h - hSize) * 0.5, hSize, hSize); + c.fillAndStroke(); + + var endL = w * hPos - 7; + var startR = w * hPos + 7; + + if (endL > 0) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(endL, h * 0.5); + c.stroke(); + } + + if (startR < w) + { + c.begin(); + c.moveTo(startR, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDisabled2.prototype.cst.SHAPE_SLIDER_DISABLED, mxShapeGmdlSliderDisabled2); + +mxShapeGmdlSlider2.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDisabled2.prototype.cst.SHAPE_SLIDER_DISABLED] = function(state) +{ + var handles = [Graph.createHandle(state, ['hPos'], function(bounds) + { + var hPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'hPos', 0.4)))); + + return new mxPoint(bounds.x + hPos * bounds.width / 100, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['hPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//slider discrete +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderDiscrete(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderDiscrete, mxShape); + +mxShapeGmdlSliderDiscrete.prototype.cst = { + SHAPE_DISCRETE : 'mxgraph.gmdl.sliderDiscrete', + BAR_POS : 'barPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderDiscrete.prototype.customProperties = [ + {name:'barPos', dispName:'Handle Position', type:'int', min:0, defVal:'40'}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:'10'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderDiscrete.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDiscrete.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscrete.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscrete.prototype.cst.BAR_POS, '40')) / 100; + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12')); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + + barPos = Math.max(0, Math.min(1, barPos)); + + c.save(); + c.setStrokeColor('#bbbbbb'); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(w, h * 0.5 + 22.5); + c.fillAndStroke(); + + c.restore(); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(barPos * w, h * 0.5 + 22.5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(barPos * w, h * 0.5 + 15.5); + c.lineTo(barPos * w - 10.5, h * 0.5 + 2.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w, h * 0.5 - 22.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w + 10.5, h * 0.5 + 2.5); + c.close(); + c.fillAndStroke(); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var p = Math.round(barPos * 100); + c.text(barPos * w, h * 0.5 - 9, 0, 0, p.toString() , mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDiscrete.prototype.cst.SHAPE_DISCRETE, mxShapeGmdlSliderDiscrete); + +mxShapeGmdlSliderDiscrete.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDiscrete.prototype.cst.SHAPE_DISCRETE] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2 + 22.5); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(100 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 100; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//slider discrete with dots +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlSliderDiscreteDots(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlSliderDiscreteDots, mxShape); + +mxShapeGmdlSliderDiscreteDots.prototype.cst = { + SHAPE_DISCRETE_DOTS : 'mxgraph.gmdl.sliderDiscreteDots', + BAR_POS : 'barPos', + HANDLE_SIZE : 'handleSize' +}; + +mxShapeGmdlSliderDiscreteDots.prototype.customProperties = [ + {name:'barPos', dispName:'Handle Position', type:'int', min:0, defVal:'40'}, + {name:'handleSize', dispName:'Handle Size', type:'float', min:0, defVal:'10'} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlSliderDiscreteDots.prototype.paintVertexShape = function(c, x, y, w, h) +{ + + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(true); +}; + +mxShapeGmdlSliderDiscreteDots.prototype.background = function(c, x, y, w, h) +{ + var hSize = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscreteDots.prototype.cst.HANDLE_SIZE, '10')); + var barPos = parseFloat(mxUtils.getValue(this.style, mxShapeGmdlSliderDiscreteDots.prototype.cst.BAR_POS, '40')) / 100; + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12')); + var fontColor = mxUtils.getValue(this.style, mxConstants.STYLE_FONTCOLOR, '#000000'); + var bright = mxUtils.getValue(this.style, 'bright', '1'); + + barPos = Math.max(0, Math.min(1, barPos)); + + c.save(); + c.setStrokeColor('#bebebe'); + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(w, h * 0.5 + 22.5); + c.fillAndStroke(); + + c.restore(); + + if (barPos <= 0.1) + { + c.setFillColor('#bebebe'); + } + + c.begin(); + c.moveTo(0, h * 0.5 + 22.5); + c.lineTo(barPos * w, h * 0.5 + 22.5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(barPos * w, h * 0.5 + 15.5); + c.lineTo(barPos * w - 10.5, h * 0.5 + 2.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w, h * 0.5 - 22.5); + c.arcTo(15, 15, 0, 0, 1, barPos * w + 10.5, h * 0.5 + 2.5); + c.close(); + c.fill(); + + if (bright == '1') + { + c.setFillColor('#000000'); + } + else + { + c.setFillColor('#ffffff'); + } + + c.ellipse(-1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.ellipse(w * 0.2 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.ellipse(w * 0.4 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.ellipse(w * 0.6 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.ellipse(w * 0.8 - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.ellipse(w - 1.5, h * 0.5 + 21, 3, 3); + c.fill(); + + c.setFontSize(fontSize); + c.setFontColor(fontColor); + var p = Math.round(barPos * 100); + c.text(barPos * w, h * 0.5 - 9, 0, 0, p.toString() , mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape(mxShapeGmdlSliderDiscreteDots.prototype.cst.SHAPE_DISCRETE_DOTS, mxShapeGmdlSliderDiscreteDots); + +mxShapeGmdlSliderDiscreteDots.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlSliderDiscreteDots.prototype.cst.SHAPE_DISCRETE_DOTS] = function(state) +{ + var handles = [Graph.createHandle(state, ['barPos'], function(bounds) + { + var barPos = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'barPos', 0.4)))); + + return new mxPoint(bounds.x + barPos * bounds.width / 100, bounds.y + bounds.height / 2 + 22.5); + }, function(bounds, pt) + { + this.state.style['barPos'] = Math.round(0.05 * Math.max(0, Math.min(100, (pt.x - bounds.x) * 100 / bounds.width))) / 0.05; + })]; + + return handles; +}; + +//********************************************************************************************************************************************************** +//Progress Bar +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeGmdlProgressBar(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx1 = 0.8; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeGmdlProgressBar, mxShape); + +mxShapeGmdlProgressBar.prototype.cst = { + PROGRESS_BAR : 'mxgraph.gmdl.progressBar' +}; + +mxShapeGmdlProgressBar.prototype.customProperties = [ + {name:'dx1', dispName:'Handle Position', type:'int', min:0, defVal:0.8} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeGmdlProgressBar.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var dx1 = w * Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx1', this.dx1)))); + + c.translate(x, y); + + c.save(); + c.setStrokeColor('#aaaaaa'); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w , h * 0.5); + c.stroke(); + + c.restore(); + c.setShadow(false); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(dx1, h * 0.5); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR, mxShapeGmdlProgressBar); + +mxShapeGmdlProgressBar.prototype.constraints = null; + +Graph.handleFactory[mxShapeGmdlProgressBar.prototype.cst.PROGRESS_BAR] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx1'], function(bounds) + { + var dx1 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx1', this.dx1)))); + + return new mxPoint(bounds.x + dx1 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx1'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx2 = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx1)))); + + return new mxPoint(bounds.x + dx2 * bounds.width, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(1, (pt.x - bounds.x) / bounds.width))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxInfographic.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxInfographic.js new file mode 100644 index 0000000000000..122fb2a30846f --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxInfographic.js @@ -0,0 +1,2668 @@ +/** + * $Id: mxInfographic.js,v 1.5 2016/04/1 12:32:06 mate Exp $ + * Copyright (c) 2006-2018, JGraph Ltd + */ +//********************************************************************************************************************************************************** +//Numbered entry (vertical) +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicNumEntryVert(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicNumEntryVert, mxActor); + +mxShapeInfographicNumEntryVert.prototype.cst = {NUM_ENTRY_VERT : 'mxgraph.infographic.numberedEntryVert'}; + +mxShapeInfographicNumEntryVert.prototype.customProperties = [ + {name:'dy', dispName:'Circle Size', min:0, defVal: 25} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicNumEntryVert.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var inset = 5; + + var d = Math.min(dy, w - 2 * inset, h - inset); + + c.ellipse(w * 0.5 - d * 0.5, 0, d, d); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, d * 0.5); + c.lineTo(w * 0.5 - d * 0.5 - inset, d * 0.5); + c.arcTo(d * 0.5 + inset, d * 0.5 + inset, 0, 0, 0, w * 0.5 + d * 0.5 + inset, d * 0.5); + c.lineTo(w, d * 0.5); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT, mxShapeInfographicNumEntryVert); + +Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.width, bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.width, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicNumEntryVert.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var inset = 5; + var d = Math.min(dy, w - 2 * inset, h - inset); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, d * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, d * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Bending Arch +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicBendingArch(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicBendingArch, mxActor); + +mxShapeInfographicBendingArch.prototype.cst = {BENDING_ARCH : 'mxgraph.infographic.bendingArch'}; + +mxShapeInfographicBendingArch.prototype.customProperties = [ + {name:'startAngle', dispName:'Start Angle', min:0, max:1, defVal: 0.75}, + {name:'endAngle', dispName:'End Angle', min:0, max:1, defVal: 0.25}, + {name:'arcWidth', dispName:'Arc Width', min:0, max:1, defVal: 0.25} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicBendingArch.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + + var bigArc = 0; + + if (angDiff > Math.PI) + { + bigArc = 1; + } + + var rx3 = rx2 - 5; + var ry3 = ry2 - 5; + + c.ellipse(w * 0.5 - rx3, h * 0.5 - ry3, 2 * rx3, 2 * ry3); + c.fillAndStroke(); + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 1, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 0, innerStartX, innerStartY); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH, mxShapeInfographicBendingArch); + +mxShapeInfographicBendingArch.prototype.constraints = null; + +Graph.handleFactory[mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arcWidth'], function(bounds) + { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +//********************************************************************************************************************************************************** +//Parallelogram +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicParallelogram(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 10; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicParallelogram, mxActor); + +mxShapeInfographicParallelogram.prototype.cst = {PARALLELOGRAM : 'mxgraph.infographic.parallelogram'}; + +mxShapeInfographicParallelogram.prototype.customProperties = [ + {name:'dx', dispName:'Angle', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicParallelogram.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + + c.begin(); + c.moveTo(0, h); + c.lineTo(2 * dx, 0); + c.lineTo(w, 0); + c.lineTo(w - 2 * dx, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM, mxShapeInfographicParallelogram); + +Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height / 2); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, pt.x - bounds.x))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicParallelogram.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var w2 = w - 2 * dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2 * dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2 * dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Ribbon Rolled +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicRibbonRolled(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 185; + this.dy = 15; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicRibbonRolled, mxActor); + +mxShapeInfographicRibbonRolled.prototype.cst = {RIBBON_ROLLED : 'mxgraph.infographic.ribbonRolled'}; + +mxShapeInfographicRibbonRolled.prototype.customProperties = [ + {name:'dx', dispName:'Roll Length', min:0, defVal: 185}, + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicRibbonRolled.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.close(); + c.moveTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED, mxShapeInfographicRibbonRolled); + +Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicRibbonRolled.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var h2 = h - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h2)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 0, -dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Ribbon Double Folded +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicRibbonDoubleFolded(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 25; + this.dy = 15; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicRibbonDoubleFolded, mxActor); + +mxShapeInfographicRibbonDoubleFolded.prototype.cst = {RIBBON_DOUBLE_FOLDED : 'mxgraph.infographic.ribbonDoubleFolded'}; + +mxShapeInfographicRibbonDoubleFolded.prototype.customProperties = [ + {name:'dx', dispName:'Fold Length', min:0, defVal: 25}, + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicRibbonDoubleFolded.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, h - 2 * dy); + c.lineTo(0, h - dy); + c.close(); + c.moveTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w, h - dy); + c.lineTo(w - dx, h); + c.lineTo(w - dx, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED, mxShapeInfographicRibbonDoubleFolded); + +Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicRibbonDoubleFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Ribbon Front Folded +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicRibbonFrontFolded(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicRibbonFrontFolded, mxActor); + +mxShapeInfographicRibbonFrontFolded.prototype.cst = {RIBBON_FRONT_FOLDED : 'mxgraph.infographic.ribbonFrontFolded'}; + +mxShapeInfographicRibbonFrontFolded.prototype.customProperties = [ + {name:'dx', dispName:'Fold Length', min:0, defVal: 25}, + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15}, + {name:'notch', dispName:'Notch', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicRibbonFrontFolded.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, h - dy); + c.lineTo(0, h); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED, mxShapeInfographicRibbonFrontFolded); + +Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, (bounds.width + bounds.x - pt.x)))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeInfographicRibbonFrontFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Ribbon Back Folded +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicRibbonBackFolded(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicRibbonBackFolded, mxActor); + +mxShapeInfographicRibbonBackFolded.prototype.cst = {RIBBON_BACK_FOLDED : 'mxgraph.infographic.ribbonBackFolded'}; + +mxShapeInfographicRibbonBackFolded.prototype.customProperties = [ + {name:'dx', dispName:'Fold Length', min:0, defVal: 25}, + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15}, + {name:'notch', dispName:'Notch', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicRibbonBackFolded.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, 0); + c.lineTo(dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) / 2 + dy); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED, mxShapeInfographicRibbonBackFolded); + +Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, (bounds.width + bounds.x - pt.x)))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeInfographicRibbonBackFolded.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h + dy) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Banner +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicBanner(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.notch = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicBanner, mxActor); + +mxShapeInfographicBanner.prototype.cst = {BANNER : 'mxgraph.infographic.banner'}; + +mxShapeInfographicBanner.prototype.customProperties = [ + {name:'dx', dispName:'Fold Length', min:0, defVal: 25}, + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15}, + {name:'notch', dispName:'Notch', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicBanner.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w / 2, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + dx = Math.min(w / 2 - 2 * dy, dx); + + notch = Math.min(dx, notch); + + c.begin(); + c.moveTo(0, dy); + c.lineTo(dx, dy); + c.lineTo(dx, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h); + c.lineTo(0, h); + c.lineTo(notch, (h - dy) * 0.5 + dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(0,dy); + c.lineTo(dx, dy); + c.lineTo(dx, h - dy); + c.lineTo(dx + 2 * dy, h); + c.lineTo(0, h); + c.lineTo(notch, (h - dy) * 0.5 + dy); + c.close(); + c.moveTo(w,dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w, h); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.close(); + c.fill(); + + c.setFillAlpha('0.4'); + c.begin(); + c.moveTo(dx, h - dy); + c.lineTo(dx + 2 * dy, h - dy); + c.lineTo(dx + 2 * dy, h); + c.close(); + c.moveTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER, mxShapeInfographicBanner); + +Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width / 2, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, (bounds.width + bounds.x - pt.x)))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeInfographicBanner.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w / 2, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w / 2 - 2 * dy, dx); + notch = Math.min(dx, notch); + var w2 = w - 2 * dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Circular Callout +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicCircularCallout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicCircularCallout, mxActor); + +mxShapeInfographicCircularCallout.prototype.cst = {CIRCULAR_CALLOUT : 'mxgraph.infographic.circularCallout'}; + +mxShapeInfographicCircularCallout.prototype.customProperties = [ + {name:'dy', dispName:'Ribbon Width', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicCircularCallout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var rx = Math.max(0, Math.min(w * 0.5, w * 0.5 - dy)); + var ry = Math.max(0, Math.min(h * 0.5, h * 0.5 - dy)); + + c.begin(); + c.moveTo(w, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, h); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, 0, h * 0.5); + c.arcTo(w * 0.5, h * 0.5, 0, 0, 1, w * 0.5, 0); + c.lineTo(w, 0); + c.close(); + c.moveTo(w * 0.5, dy); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5 - rx, h * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5, h * 0.5 + ry); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5 + rx, h * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w * 0.5, h * 0.5 - ry); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT, mxShapeInfographicCircularCallout); + +Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicCircularCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, w * 0.5 - dy)); + var ry = Math.max(0, Math.min(h * 0.5, h * 0.5 - dy)); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Shaded triangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicShadedTriangle(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicShadedTriangle, mxActor); + +mxShapeInfographicShadedTriangle.prototype.cst = {SHADED_TRIANGLE : 'mxgraph.infographic.shadedTriangle'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicShadedTriangle.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.67); + c.close(); + c.fill(); + + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(w, h); + c.lineTo(w * 0.5, h * 0.67); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE, mxShapeInfographicShadedTriangle); + +mxShapeInfographicShadedTriangle.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Shaded pyramid +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicShadedPyramid(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicShadedPyramid, mxActor); + +mxShapeInfographicShadedPyramid.prototype.cst = {SHADED_PYRAMID : 'mxgraph.infographic.shadedPyramid'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicShadedPyramid.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var h1 = Math.max(h - w * 0.3, 0); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(w, h1); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID, mxShapeInfographicShadedPyramid); + +mxShapeInfographicShadedPyramid.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var h1 = Math.max(h - w * 0.3, 0); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, (h + h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Pyramid step +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicPyramidStep(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicPyramidStep, mxActor); + +mxShapeInfographicPyramidStep.prototype.cst = {PYRAMID_STEP : 'mxgraph.infographic.pyramidStep'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicPyramidStep.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var h1 = Math.max(w * 0.1, 0); + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + + c.setFillColor('#ffffff'); + c.setFillAlpha('0.2'); + + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.lineTo(0, h); + c.close(); + c.fill(); + + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(w, h1); + c.lineTo(w, h); + c.lineTo(w * 0.5, h); + c.lineTo(w * 0.5, 0); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, h1); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h1); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP, mxShapeInfographicPyramidStep); + +mxShapeInfographicPyramidStep.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var h1 = Math.max(w * 0.1, 0); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1 + (h - h1) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h1 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h1)); + return (constr); +}; + +//********************************************************************************************************************************************************** +//Cylinder +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicCylinder(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicCylinder, mxActor); + +mxShapeInfographicCylinder.prototype.cst = {CYLINDER : 'mxgraph.infographic.cylinder'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicCylinder.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = 20; + var rx = w * 0.5; + var ry = dy * 0.5; + + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setGradient('#000000', '#ffffff', 0, 0, w, h, mxConstants.DIRECTION_EAST, 0.4, 0.4); + + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 0, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(0, dy * 0.5); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.lineTo(w, h - ry); + c.arcTo(rx, ry, 0, 0, 1, 0, h - ry); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER, mxShapeInfographicCylinder); + +mxShapeInfographicCylinder.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = 20; + var rx = w * 0.5; + var ry = dy * 0.5; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dy * 0.5 + (h - dy) * 0.25)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Circular Callout 2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicCircularCallout2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicCircularCallout2, mxActor); + +mxShapeInfographicCircularCallout2.prototype.cst = {CIRCULAR_CALLOUT_2 : 'mxgraph.infographic.circularCallout2'}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicCircularCallout2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, 'none'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, 'none'); + c.setFillColor(strokeColor); + + var rx = Math.max(0, Math.min(w * 0.5, h * 0.4, h * 0.5 - 7)); + + c.begin(); + c.moveTo(w * 0.5 - 2, 2.15 * rx); + c.arcTo(rx * 0.23, rx * 0.23, 0, 0, 0, w * 0.5 - rx * 0.2, rx * 1.97); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 - rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5, 0); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx * 0.2, rx * 1.97); + c.arcTo(rx * 0.23, rx * 0.23, 0, 0, 0, w * 0.5 + 2, 2.15 * rx); + + var rxMin = Math.max(rx * 0.1, 6); + + if (rx * 0.04 > 4) + { + c.lineTo(w * 0.5 + 2, h - rx * 0.22); + c.arcTo(rx * 0.05, rx * 0.05, 0, 0, 0, w * 0.5 + rx * 0.04, h - rx * 0.19); + } + else + { + c.lineTo(w * 0.5 + 2, h - 2 * rxMin); + } + + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 + rxMin, h - rxMin); + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5, h); + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - rxMin, h - rxMin); + + if (rx * 0.04 > 4) + { + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - rx * 0.04, h - rx * 0.19); + c.arcTo(rxMin * 0.5, rxMin * 0.5, 0, 0, 0, w * 0.5 - 2, h - rx * 0.22); + } + else + { + c.arcTo(rxMin, rxMin, 0, 0, 1, w * 0.5 - 2, h - 2 * rxMin); + } + + c.close(); + c.moveTo(w * 0.5, rx * 0.2); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 - rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 1.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 + rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 0.2); + c.close(); + c.moveTo(w * 0.5, h - rxMin * 1.75); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 - rxMin * 0.75, h - rxMin ); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 0.25); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 + rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 1.75); + c.close(); + c.fill(); + + c.setFillColor(fillColor); + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.5, rx * 0.2); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 - rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 1.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5 + rx * 0.8, rx * 0.8); + c.arcTo(rx * 0.8, rx * 0.8, 0, 0, 0, w * 0.5, rx * 0.2); + c.close(); + c.moveTo(w * 0.5, h - rxMin * 1.75); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 - rxMin * 0.75, h - rxMin ); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 0.25); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5 + rxMin * 0.75, h - rxMin); + c.arcTo(rxMin * 0.75, rxMin * 0.75, 0, 0, 0, w * 0.5, h - rxMin * 1.75); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2, mxShapeInfographicCircularCallout2); + +mxShapeInfographicCircularCallout2.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var rx = Math.max(0, Math.min(w * 0.5, h * 0.4, h * 0.5 - 7)); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Banner Single Fold +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicBannerSingleFold(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; + this.dx2 = 0.5; + this.notch = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicBannerSingleFold, mxActor); + +mxShapeInfographicBannerSingleFold.prototype.cst = {BANNER_SINGLE_FOLD : 'mxgraph.infographic.bannerSingleFold'}; + +mxShapeInfographicBannerSingleFold.prototype.customProperties = [ + {name:'dx', dispName: 'Fold Length', type:'float', defVal:32, min:0}, + {name:'dy', dispName: 'Banner Width', type:'float', defVal:17, min:0}, + {name:'notch', dispName: 'Notch', type:'float', defVal:15, min:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicBannerSingleFold.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + dx = Math.min(w - 2 * dy, dx); + + var dx2 = Math.max(0, Math.min(w - dx - 2 * dy, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + + notch = Math.min(dx, notch); + + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx2, h - dy); + c.lineTo(0, (h - dy) * 0.5); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.05'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w,dy); + c.lineTo(w - dx, dy); + c.lineTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w, h); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.close(); + c.fill(); + + c.setFillAlpha('0.4'); + c.begin(); + c.moveTo(w - dx, h - dy); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(w - dx - 2 * dy, h); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w - dx, dy); + c.lineTo(w, dy); + c.lineTo(w - notch, (h - dy) * 0.5 + dy); + c.lineTo(w, h); + c.lineTo(w - dx - 2 * dy, h); + c.lineTo(w - dx - 2 * dy, h - dy); + c.lineTo(dx2, h - dy); + c.lineTo(0, (h - dy) * 0.5); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD, mxShapeInfographicBannerSingleFold); + +Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, pt.y - bounds.y))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width - notch, bounds.y + dy + (bounds.height - dy) * 0.5); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.width, (bounds.width + bounds.x - pt.x)))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + (bounds.height - dy) * 0.5); + }, function(bounds, pt) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - dx - 2 * dy, pt.x - bounds.x))) / 100; + }); + + handles.push(handle3); + + + return handles; +}; + +mxShapeInfographicBannerSingleFold.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var notch = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + dx = Math.min(w - 2 * dy, dx); + var dx2 = Math.max(0, Math.min(w - dx - 2 * dy, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + notch = Math.min(dx, notch); + var w2 = w - dx - dx2; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.25, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.75, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - notch, (h + dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx - 2 * dy, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - (dx + 2 * dy) * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2, h - dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Shaded Cube +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicShadedCube(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.isoAngle = 15; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicShadedCube, mxActor); + +mxShapeInfographicShadedCube.prototype.cst = {SHADED_CUBE : 'mxgraph.infographic.shadedCube'}; + +mxShapeInfographicShadedCube.prototype.customProperties = [ + {name:'isoAngle', dispName: 'Perspective', type:'float', defVal:15, min:0} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicShadedCube.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.lineTo(0, h - isoH); + c.lineTo(0, isoH); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(w, isoH); + c.lineTo(w, h - isoH); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); + + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w * 0.5, 2 * isoH); + c.lineTo(0, isoH); + c.lineTo(0, h - isoH); + c.lineTo(w * 0.5, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE, mxShapeInfographicShadedCube); + +Graph.handleFactory[mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE] = function(state) +{ + var handles = [Graph.createHandle(state, ['isoAngle'], function(bounds) + { + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.state.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(bounds.width * Math.tan(isoAngle), bounds.height * 0.5); + + return new mxPoint(bounds.x, bounds.y + isoH); + }, function(bounds, pt) + { + this.state.style['isoAngle'] = Math.round(100 * Math.max(0, Math.min(100, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicShadedCube.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var isoAngle = Math.max(0.01, Math.min(94, parseFloat(mxUtils.getValue(this.style, 'isoAngle', this.isoAngle)))) * Math.PI / 200 ; + var isoH = Math.min(w * Math.tan(isoAngle), h * 0.5); + + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - isoH * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH + (h - 2 * isoH) * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, isoH)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, isoH * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Partial Concentric Ellipse +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicPartConcEllipse(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.startAngle = 0.25; + this.endAngle = 0.75; + this.arcWidth = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicPartConcEllipse, mxActor); + +mxShapeInfographicPartConcEllipse.prototype.cst = {PART_CONC_ELLIPSE : 'mxgraph.infographic.partConcEllipse'}; + +mxShapeInfographicPartConcEllipse.prototype.customProperties = [ + {name:'startAngle', dispName:'Start Angle', min:0, max:1, defVal: 0.25}, + {name:'endAngle', dispName:'End Angle', min:0, max:1, defVal: 0.1}, + {name:'arcWidth', dispName:'Arc Width', min:0, max:1, defVal: 0.5} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicPartConcEllipse.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'startAngle', this.startAngle)))); + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'endAngle', this.endAngle)))); + var arcWidth = 1 - Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'arcWidth', this.arcWidth)))); + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + + var angDiff = endAngle - startAngle; + + if (angDiff < 0) + { + angDiff = angDiff + Math.PI * 2; + } + else if (angDiff == Math.PI) + { + endAngle = endAngle + 0.00001; + } + + var startX = rx + Math.sin(startAngle) * rx; + var startY = ry - Math.cos(startAngle) * ry; + var innerStartX = rx + Math.sin(startAngle) * rx2; + var innerStartY = ry - Math.cos(startAngle) * ry2; + var endX = rx + Math.sin(endAngle) * rx; + var endY = ry - Math.cos(endAngle) * ry; + var innerEndX = rx + Math.sin(endAngle) * rx2; + var innerEndY = ry - Math.cos(endAngle) * ry2; + + var bigArc = 0; + + if (angDiff <= Math.PI) + { + bigArc = 1; + } + + c.begin(); + c.moveTo(rx, 0); + c.arcTo(rx, ry, 0, 0, 1, w, ry); + c.arcTo(rx, ry, 0, 0, 1, rx, h); + c.arcTo(rx, ry, 0, 0, 1, 0, ry); + c.arcTo(rx, ry, 0, 0, 1, rx, 0); + c.close(); + c.moveTo(rx, h * 0.5 - ry2); + c.arcTo(rx2, ry2, 0, 0, 0, w * 0.5 - rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 0, rx, h * 0.5 + ry2); + c.arcTo(rx2, ry2, 0, 0, 0, w * 0.5 + rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 0, rx, h * 0.5 - ry2); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#ffffff'); + + c.begin(); + c.moveTo(startX, startY); + c.arcTo(rx, ry, 0, bigArc, 0, endX, endY); + c.lineTo(innerEndX, innerEndY); + c.arcTo(rx2, ry2, 0, bigArc, 1, innerStartX, innerStartY); + c.close(); + c.fill(); + + var rx = w * 0.5; + var ry = h * 0.5; + var rx2 = rx * arcWidth; + var ry2 = ry * arcWidth; + + var rx3 = rx2 + (rx - rx2) * 0.25; + var ry3 = ry2 + (ry - ry2) * 0.25; + + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(rx, h * 0.5 - ry2); + c.arcTo(rx2, ry2, 0, 0, 1, w * 0.5 + rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 1, rx, h * 0.5 + ry2); + c.arcTo(rx2, ry2, 0, 0, 1, w * 0.5 - rx2, ry); + c.arcTo(rx2, ry2, 0, 0, 1, rx, h * 0.5 - ry2); + c.close(); + c.moveTo(rx, h * 0.5 - ry3); + c.arcTo(rx3, ry3, 0, 0, 0, w * 0.5 - rx3, ry); + c.arcTo(rx3, ry3, 0, 0, 0, rx, h * 0.5 + ry3); + c.arcTo(rx3, ry3, 0, 0, 0, w * 0.5 + rx3, ry); + c.arcTo(rx3, ry3, 0, 0, 0, rx, h * 0.5 - ry3); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE, mxShapeInfographicPartConcEllipse); + +Graph.handleFactory[mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE] = function(state) +{ + var handles = [Graph.createHandle(state, ['startAngle'], function(bounds) + { + var startAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'startAngle', this.startAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(startAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(startAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['startAngle'] = res; + + })]; + + var handle2 = Graph.createHandle(state, ['endAngle'], function(bounds) + { + var endAngle = 2 * Math.PI * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'endAngle', this.endAngle)))); + + return new mxPoint(bounds.x + bounds.width * 0.5 + Math.sin(endAngle) * bounds.width * 0.5, bounds.y + bounds.height * 0.5 - Math.cos(endAngle) * bounds.height * 0.5); + }, function(bounds, pt) + { + var handleX = Math.round(100 * Math.max(-1, Math.min(1, (pt.x - bounds.x - bounds.width * 0.5) / (bounds.width * 0.5)))) / 100; + var handleY = -Math.round(100 * Math.max(-1, Math.min(1, (pt.y - bounds.y - bounds.height * 0.5) / (bounds.height * 0.5)))) / 100; + + var res = 0.5 * Math.atan2(handleX, handleY) / Math.PI; + + if (res < 0) + { + res = 1 + res; + } + + this.state.style['endAngle'] = res; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['arcWidth'], function(bounds) + { + var arcWidth = Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.state.style, 'arcWidth', this.arcWidth)))); + + return new mxPoint(bounds.x + bounds.width / 2, bounds.y + arcWidth * bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['arcWidth'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, (pt.y - bounds.y) / (bounds.height * 0.5)))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeInfographicPartConcEllipse.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Banner Half Fold +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicBannerHalfFold(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dx2 = 0.5; + this.notch = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicBannerHalfFold, mxActor); + +mxShapeInfographicBannerHalfFold.prototype.cst = {BANNER_HALF_FOLD : 'mxgraph.infographic.bannerHalfFold'}; + +mxShapeInfographicBannerHalfFold.prototype.customProperties = [ + {name:'dx', dispName:'Banner Width', min:0, defVal: 40}, + {name:'dx2', dispName:'Spike Size', min:0, defVal: 20}, + {name:'notch', dispName:'Notch Size', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicBannerHalfFold.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(h - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(dx2, dx); + c.lineTo(0, dx * 0.5); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + c.begin(); + c.moveTo(w - dx, dx); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(0, dx); + c.close(); + c.fill(); + + c.begin(); + c.moveTo(dx2, 0); + c.lineTo(w - dx, 0); + c.lineTo(w, dx); + c.lineTo(w, h); + c.lineTo(w - dx * 0.5, h - notch); + c.lineTo(w - dx, h); + c.lineTo(w - dx, dx); + c.lineTo(dx2, dx); + c.lineTo(0, dx * 0.5); + c.close(); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD, mxShapeInfographicBannerHalfFold); + +Graph.handleFactory[mxShapeInfographicBannerHalfFold.prototype.cst.BANNER_HALF_FOLD] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + return new mxPoint(bounds.x + bounds.width - dx, bounds.y + dx); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, bounds.x + bounds.width - pt.x))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var notch = Math.max(0, Math.min(bounds.height - dx, parseFloat(mxUtils.getValue(this.state.style, 'notch', this.notch)))); + + return new mxPoint(bounds.x + bounds.width - dx * 0.5, bounds.y + bounds.height - notch); + }, function(bounds, pt) + { + this.state.style['notch'] = Math.round(100 * Math.max(0, Math.min(bounds.height, (bounds.height + bounds.y - pt.y)))) / 100; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dx2'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(bounds.width - dx, parseFloat(mxUtils.getValue(this.state.style, 'dx2', this.dx2)))); + + return new mxPoint(bounds.x + dx2, bounds.y + dx); + }, function(bounds, pt) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + + this.state.style['dx2'] = Math.round(100 * Math.max(0, Math.min(bounds.width - dx, pt.x - bounds.x))) / 100; + }); + + handles.push(handle3); + + return handles; +}; + +mxShapeInfographicBannerHalfFold.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dx2 = Math.max(0, Math.min(w - dx, parseFloat(mxUtils.getValue(this.style, 'dx2', this.dx2)))); + var notch = Math.max(0, Math.min(h - dx, parseFloat(mxUtils.getValue(this.style, 'notch', this.notch)))); + var w2 = w - dx - dx2; + var h2 = h - dx; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, dx * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx * 0.5, h - notch)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.75)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx + h2 * 0.25)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - dx, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.25, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.5, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2 + w2 * 0.75, dx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx2, dx)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Circular Dial +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicCircularDial(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicCircularDial, mxActor); + +mxShapeInfographicCircularDial.prototype.cst = {CIRCULAR_DIAL : 'mxgraph.infographic.circularDial'}; + +mxShapeInfographicCircularDial.prototype.customProperties = [ + {name:'dy', dispName:'Hole Size', min:0, defVal: 15} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicCircularDial.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy = Math.max(0, Math.min(h * 0.5 - 10, w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var rx = Math.max(0, Math.min(w * 0.5, h * 0.5 - 10)); + var rx2 = rx - dy; + + c.begin(); + c.moveTo(w * 0.5 - rx, h); + c.lineTo(w * 0.5 - rx, rx); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5, 0); + c.arcTo(rx, rx, 0, 0, 1, w * 0.5 + rx, rx); + c.lineTo(w * 0.5 + rx, h); + c.close(); + c.moveTo(w * 0.5, dy); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5 - rx2, rx); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5, rx + rx2); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5 + rx2, rx); + c.arcTo(rx2, rx2, 0, 0, 0, w * 0.5, dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#000000'); + + c.begin(); + c.moveTo(w * 0.5 - rx, 2 * rx); + c.lineTo(w * 0.5 + rx, 2 * rx); + c.lineTo(w * 0.5 + rx, h); + c.lineTo(w * 0.5 - rx, h); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL, mxShapeInfographicCircularDial); + +Graph.handleFactory[mxShapeInfographicCircularDial.prototype.cst.CIRCULAR_DIAL] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy'], function(bounds) + { + var dy = Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + bounds.width * 0.5, bounds.y + dy); + }, function(bounds, pt) + { + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height / 2, bounds.width / 2, pt.y - bounds.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicCircularDial.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dy = Math.max(0, Math.min(h * 0.5 - 10, w * 0.5, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var rx = Math.max(0, Math.min(w * 0.5, h * 0.5 - 10)); + var rx2 = rx - dy; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.71, rx * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, rx)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, (rx + h) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 + rx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5 - rx * 0.5, h)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Simple ribbon +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicRibbonSimple(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.notch1 = 0.5; + this.notch2 = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicRibbonSimple, mxActor); + +mxShapeInfographicRibbonSimple.prototype.cst = {RIBBON_SIMPLE : 'mxgraph.infographic.ribbonSimple'}; + +mxShapeInfographicRibbonSimple.prototype.customProperties = [ + {name:'notch1', dispName:'Notch Size', min:0, defVal: 20}, + {name:'notch2', dispName:'Spike Size', min:0, defVal: 20} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicRibbonSimple.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var notch1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch1', this.notch2)))); + var notch2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch2', this.notch2)))); + + c.begin(); + c.moveTo(0, h); + c.lineTo(notch1, h * 0.5); + c.lineTo(0, 0); + c.lineTo(w - notch2, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w - notch2, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE, mxShapeInfographicRibbonSimple); + +Graph.handleFactory[mxShapeInfographicRibbonSimple.prototype.cst.RIBBON_SIMPLE] = function(state) +{ + var handles = [Graph.createHandle(state, ['notch1'], function(bounds) + { + var notch1 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch1', this.notch1)))); + + return new mxPoint(bounds.x + notch1, bounds.y + bounds.height * 0.5); + }, function(bounds, pt) + { + this.state.style['notch1'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + + var handle2 = Graph.createHandle(state, ['notch2'], function(bounds) + { + var notch2 = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'notch2', this.notch2)))); + + return new mxPoint(bounds.x + bounds.width - notch2, bounds.y); + }, function(bounds, pt) + { + this.state.style['notch2'] = Math.round(100 * Math.max(0, Math.min(bounds.width, (bounds.width + bounds.x - pt.x)))) / 100; + }); + + handles.push(handle2); + + return handles; +}; + +mxShapeInfographicRibbonSimple.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var notch1 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch1', this.notch2)))); + var notch2 = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'notch2', this.notch2)))); + var w2 = w - notch2; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.75, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w2 * 0.25, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, notch1, h * 0.5)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Bar with callout +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicBarCallout(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicBarCallout, mxActor); + +mxShapeInfographicBarCallout.prototype.cst = {BAR_CALLOUT : 'mxgraph.infographic.barCallout'}; + +mxShapeInfographicBarCallout.prototype.customProperties = [ + {name:'dx', dispName:'Callout Position', min:0, defVal: 100}, + {name:'dy', dispName:'Callout Size', min:0, defVal: 30} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicBarCallout.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + var x1 = Math.max(dx - dy * 0.35, 0); + var x2 = Math.min(dx + dy * 0.35, w); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(x2, h - dy); + c.lineTo(dx, h); + c.lineTo(x1, h - dy); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT, mxShapeInfographicBarCallout); + +mxShapeInfographicBarCallout.prototype.constraints = null; + +Graph.handleFactory[mxShapeInfographicBarCallout.prototype.cst.BAR_CALLOUT] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicBarCallout.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + var x1 = Math.max(dx - dy * 0.35, 0); + var x2 = Math.min(dx + dy * 0.35, w); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Flag +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeInfographicFlag(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; + this.dx = 0.5; + this.dy = 0.5; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeInfographicFlag, mxActor); + +mxShapeInfographicFlag.prototype.cst = {FLAG : 'mxgraph.infographic.flag'}; + +mxShapeInfographicFlag.prototype.customProperties = [ + {name:'dx', dispName:'Pole Width', min:0, defVal: 30}, + {name:'dy', dispName:'Spike Size', min:0, defVal: 20} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeInfographicFlag.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h - dy); + c.lineTo(dx, h - dy); + c.lineTo(dx * 0.5, h); + c.lineTo(0, h - dy); + c.close(); + c.fillAndStroke(); + + c.setShadow(false); + c.setFillAlpha('0.2'); + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(0, 0); + c.lineTo(dx, 0); + c.lineTo(dx, h - dy); + c.lineTo(dx * 0.5, h); + c.lineTo(0, h - dy); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape(mxShapeInfographicFlag.prototype.cst.FLAG, mxShapeInfographicFlag); + +Graph.handleFactory[mxShapeInfographicFlag.prototype.cst.FLAG] = function(state) +{ + var handles = [Graph.createHandle(state, ['dx', 'dy'], function(bounds) + { + var dx = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(bounds.height, parseFloat(mxUtils.getValue(this.state.style, 'dy', this.dy)))); + + return new mxPoint(bounds.x + dx, bounds.y + bounds.height - dy); + }, function(bounds, pt) + { + this.state.style['dx'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + this.state.style['dy'] = Math.round(100 * Math.max(0, Math.min(bounds.height, bounds.y + bounds.height - pt.y))) / 100; + })]; + + return handles; +}; + +mxShapeInfographicFlag.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'dx', this.dx)))); + var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'dy', this.dy)))); + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - dy) * 0.5)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.75, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.5, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w * 0.25, h - dy)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, dx * 0.5, 0)); + + return (constr); +}; + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxLeanMap.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxLeanMap.js new file mode 100644 index 0000000000000..15a899d5cfc43 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxLeanMap.js @@ -0,0 +1,2229 @@ +/** + * $Id: mxLeanMap.js,v 1.3 2013/05/30 14:19:14 mate Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Boat Shipment +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanBoatShipment(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanBoatShipment, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanBoatShipment.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.15, h * 0.77); + c.lineTo(w * 0.5, 0); + c.lineTo(w * 0.85, h * 0.77); + c.close(); + c.moveTo(w * 0.2, h); + c.lineTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + c.lineTo(w * 0.8, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.boat_shipment', mxLeanBoatShipment); + +mxLeanBoatShipment.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), false), + new mxConnectionConstraint(new mxPoint(0.5, 1), false), + new mxConnectionConstraint(new mxPoint(0, 0.8), false), + new mxConnectionConstraint(new mxPoint(1, 0.8), false), + new mxConnectionConstraint(new mxPoint(0.2, 1), false), + new mxConnectionConstraint(new mxPoint(0.8, 1), false), + new mxConnectionConstraint(new mxPoint(0.26, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.74, 0.5), false) + ]; + +//********************************************************************************************************************************************************** +//Safety Stock +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanSafetyStock(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanSafetyStock, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanSafetyStock.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanSafetyStock.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanSafetyStock.prototype.foreground = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.34); + c.lineTo(w, h * 0.34); + c.moveTo(0, h * 0.66); + c.lineTo(w, h * 0.66); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.buffer_or_safety_stock', mxLeanSafetyStock); + +mxLeanSafetyStock.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Data Box +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanDataBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanDataBox, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanDataBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanDataBox.prototype.background = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.fillAndStroke(); +}; + +mxLeanDataBox.prototype.foreground = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.2); + c.lineTo(w, h * 0.2); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(0, h * 0.6); + c.lineTo(w, h * 0.6); + c.moveTo(0, h * 0.8); + c.lineTo(w, h * 0.8); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.data_box', mxLeanDataBox); + +mxLeanDataBox.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Customer / Supplier +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanCustomerSupplier(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanCustomerSupplier, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanCustomerSupplier.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); +}; + +mxLeanCustomerSupplier.prototype.background = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h); + c.lineTo(0, h * 0.3); + c.lineTo(w * 0.33, h * 0.02); + c.lineTo(w * 0.33, h * 0.3); + c.lineTo(w * 0.67, h * 0.02); + c.lineTo(w * 0.67, h * 0.3); + c.lineTo(w, h * 0.02); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.outside_sources', mxLeanCustomerSupplier); + +mxLeanCustomerSupplier.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.33, 0), true), + new mxConnectionConstraint(new mxPoint(0.67, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.3), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Dedicated Process +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanDedicatedProcess(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanDedicatedProcess, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanDedicatedProcess.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, fontSize); +}; + +mxLeanDedicatedProcess.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanDedicatedProcess.prototype.foreground = function(c, w, h, fontSize) +{ + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.manufacturing_process', mxLeanDedicatedProcess); + +mxLeanDedicatedProcess.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Shared Process +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxLeanSharedProcess(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxLeanSharedProcess, mxShape); + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxLeanSharedProcess.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h, fontSize); +}; + +mxLeanSharedProcess.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxLeanSharedProcess.prototype.foreground = function(c, w, h, fontSize) +{ + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.stroke(); + + var start = 0; + var i = 0; + var s = 10; + var offset = 0; + c.begin(); + var strokeWidth = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '2')); + c.setStrokeWidth(strokeWidth * 0.5); + + while (start < h + w) + { + start = start + s; + if (start > lineH) + { + var startX = Math.max(0, start - h); + var startY = Math.min(start, h); + + var endX = Math.min(start - lineH, w); + + var endY = lineH; + var endY = Math.max(start - w, lineH); + + if (startX < w) + { + c.moveTo(startX, startY); + c.lineTo(endX, endY); + } + } + }; + + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.manufacturing_process_shared', mxLeanSharedProcess); + +mxLeanSharedProcess.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +// Workcell +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanWorkcell(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanWorkcell, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanWorkcell.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(w * 0.65, h); + c.lineTo(w * 0.65, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.lineTo(w * 0.35, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.work_cell', mxLeanWorkcell); + +mxLeanWorkcell.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Inventory Box +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanInventoryBox(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanInventoryBox, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanInventoryBox.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h); + c.close(); + c.fillAndStroke(); + c.setShadow(false); + c.begin(); + c.moveTo(w * 0.4, h * 0.45); + c.lineTo(w * 0.6, h * 0.45); + c.moveTo(w * 0.5, h * 0.45); + c.lineTo(w * 0.5, h * 0.85); + c.moveTo(w * 0.4, h * 0.85); + c.lineTo(w * 0.6, h * 0.85); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.inventory_box', mxLeanInventoryBox); + +mxLeanInventoryBox.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.375, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.125, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.625, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.875, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Push Arrow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanPushArrow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanPushArrow, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanPushArrow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxLeanPushArrow.prototype.background = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.17); + c.lineTo(w * 0.75, h * 0.17); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.75, h * 0.83); + c.lineTo(0, h * 0.83); + c.close(); + c.fillAndStroke(); +}; + +mxLeanPushArrow.prototype.foreground = function(c, w, h, fontSize) +{ + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.rect(0, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + c.rect(w * 0.24, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + c.rect(w * 0.48, h * 0.17, w * 0.12, h * 0.66); + c.fill(); + + c.begin(); + c.moveTo(w * 0.72, h * 0.17); + c.lineTo(w * 0.75, h * 0.17); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.75, h * 0.83); + c.lineTo(w * 0.72, h * 0.83); + c.close(); + c.fill(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.push_arrow', mxLeanPushArrow); + +mxLeanPushArrow.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.25, 0.17), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.17), false), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.17), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.83), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 0.83), false), + new mxConnectionConstraint(new mxPoint(0.5, 0.83), false), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Supermarket +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanSupermarket(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanSupermarket, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanSupermarket.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.moveTo(0, h * 0.33); + c.lineTo(w, h * 0.33); + c.moveTo(0, h * 0.67); + c.lineTo(w, h * 0.67); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.supermarket', mxLeanSupermarket); + +mxLeanSupermarket.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Material Pull +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanMaterialPull(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanMaterialPull, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanMaterialPull.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w * 0.732, h * 0.0736); + c.arcTo(w * 0.4827, h * 0.4959, 0, 1, 0, w * 0.9553, h * 0.6191); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.9071, h * 0.6191); + c.lineTo(w * 0.9794, h * 0.4951); + c.lineTo(w, h * 0.6438); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.physical_pull', mxLeanMaterialPull); + +mxLeanMaterialPull.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.98, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), + new mxConnectionConstraint(new mxPoint(0.144, 0.845), false), + new mxConnectionConstraint(new mxPoint(0.845, 0.845), false) + ]; + +//********************************************************************************************************************************************************** +//FIFO Lane +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanFifoLane(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanFifoLane, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanFifoLane.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '8')); + + this.background(c, w, h, fontSize); + c.setShadow(false); +}; + +mxLeanFifoLane.prototype.background = function(c, w, h, fontSize) +{ + var lineH = Math.min(fontSize * 1.5, h); + c.begin(); + c.moveTo(0, lineH); + c.lineTo(w, lineH); + c.moveTo(0, h); + c.lineTo(w, h); + c.stroke(); + + c.rect(w * 0.02, lineH + 4, w * 0.26, h - lineH - 8); + c.fillAndStroke(); + + c.ellipse(w * 0.35, lineH + 4, w * 0.26, h - lineH - 8); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.69, lineH + 4); + c.lineTo(w * 0.98, lineH + 4); + c.lineTo(w * 0.835, h - 4); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.fifo_lane', mxLeanFifoLane); + +mxLeanFifoLane.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Truck Shipment +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanTruckShipment(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanTruckShipment, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanTruckShipment.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); +}; + +mxLeanTruckShipment.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w * 0.6, h * 0.8); + c.fillAndStroke(); + + c.rect(w * 0.6, h * 0.35, w * 0.4, h * 0.45); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.ellipse(w * 0.15, h * 0.8, w * 0.2, h * 0.2); + c.fillAndStroke(); + + c.ellipse(w * 0.65, h * 0.8, w * 0.2, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.truck_shipment', mxLeanTruckShipment); + +mxLeanTruckShipment.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.6, 0.35), false), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 0.8), false), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Production Control +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanProductionControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanProductionControl, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanProductionControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.schedule', mxLeanProductionControl); + +mxLeanProductionControl.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + + +//********************************************************************************************************************************************************** +//FIFO Sequence +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanFifoSequence(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanFifoSequence, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanFifoSequence.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(0, h); + c.lineTo(w, h); + c.moveTo(w * 0.05, h * 0.5); + c.lineTo(w * 0.15, h * 0.5); + c.moveTo(w * 0.75, h * 0.5); + c.lineTo(w * 0.88, h * 0.5); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.88, h * 0.39); + c.lineTo(w * 0.98, h * 0.5); + c.lineTo(w * 0.88, h * 0.61); + c.fillAndStroke(); + +// c.setFontSize(Math.min(h * 0.5, w * 0.2)); +// c.setFontColor(strokeColor); +// c.text(w * 0.5, h * 0.5, 0, 0, 'FIFO', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.fifo_sequence_flow', mxLeanFifoSequence); + +mxLeanFifoSequence.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Production Kanban +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanProductionKanban(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanProductionKanban, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanProductionKanban.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 25); + c.lineTo(w, 25); + c.stroke(); + + c.setDashed(false); + c.begin(); + c.moveTo(w - 75, 0); + c.lineTo(w - 30, 0); + c.lineTo(w - 15, 15); + c.lineTo(w - 15, 50); + c.lineTo(w - 75, 50); + c.close(); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.production_kanban', mxLeanProductionKanban); + +mxLeanProductionKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Withdrawal Kanban +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanWithdrawalKanban(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanWithdrawalKanban, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanWithdrawalKanban.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 25); + c.lineTo(w, 25); + c.stroke(); + + c.setDashed(false); + c.begin(); + c.moveTo(w - 75, 0); + c.lineTo(w - 30, 0); + c.lineTo(w - 15, 15); + c.lineTo(w - 15, 50); + c.lineTo(w - 75, 50); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w - 75, 45); + c.lineTo(w - 70, 50); + c.moveTo(w - 75, 35); + c.lineTo(w - 60, 50); + c.moveTo(w - 75, 25); + c.lineTo(w - 50, 50); + c.moveTo(w - 75, 15); + c.lineTo(w - 40, 50); + c.moveTo(w - 75, 5); + c.lineTo(w - 30, 50); + c.moveTo(w - 70, 0); + c.lineTo(w - 20, 50); + c.moveTo(w - 60, 0); + c.lineTo(w - 15, 45); + c.moveTo(w - 50, 0); + c.lineTo(w - 15, 35); + c.moveTo(w - 40, 0); + c.lineTo(w - 15, 25); + c.stroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.withdrawal_kanban', mxLeanWithdrawalKanban); + +mxLeanWithdrawalKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 25)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Signal Kanban +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanSignalKanban(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanSignalKanban, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanSignalKanban.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.setDashed(true); + c.begin(); + c.moveTo(4, h - 10); + c.lineTo(4, 15); + c.lineTo(w, 15); + c.stroke(); + + c.setDashed(false); + c.begin(); + c.moveTo(w - 65, 0); + c.lineTo(w - 25, 0); + c.lineTo(w - 45, 45); + c.close(); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(4, h); + c.lineTo(8, h - 10); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.signal_kanban', mxLeanSignalKanban); + +mxLeanSignalKanban.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 4, h)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w, 15)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Sequenced Pull Ball +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanSequencedPullBall(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanSequencedPullBall, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanSequencedPullBall.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.setShadow(false); + + c.ellipse(w * 0.15, h * 0.15, w * 0.7, h * 0.7); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.sequenced_pull_ball', mxLeanSequencedPullBall); + +mxLeanSequencedPullBall.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.144, 0.144), false), + new mxConnectionConstraint(new mxPoint(0.856, 0.144), false), + new mxConnectionConstraint(new mxPoint(0.856, 0.856), false), + new mxConnectionConstraint(new mxPoint(0.144, 0.856), false), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Rail Shipment +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanRailShipment(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanRailShipment, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanRailShipment.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(w * 0.1, 0, w * 0.35, h * 0.8); + c.fillAndStroke(); + c.rect(w * 0.55, 0, w * 0.35, h * 0.8); + c.fillAndStroke(); + + c.begin(); + c.moveTo(0, h); + c.lineTo(w, h); + c.moveTo(w * 0.45, h * 0.7); + c.lineTo(w * 0.55, h * 0.7); + c.stroke(); + + c.ellipse(w * 0.15, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.34, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.6, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); + c.ellipse(w * 0.79, h * 0.8, w * 0.06, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.rail_shipment', mxLeanRailShipment); + +mxLeanRailShipment.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0.1, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.1, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.1, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.9, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.9, 0.5), false), + new mxConnectionConstraint(new mxPoint(0.9, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Warehouse +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanWarehouse(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanWarehouse, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanWarehouse.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(0, h * 0.4); + c.lineTo(w, h * 0.4); + c.moveTo(w * 0.15, h); + c.lineTo(w * 0.15, h * 0.55); + c.lineTo(w * 0.3, h * 0.55); + c.lineTo(w * 0.3, h); + c.stroke(); + + c.ellipse(w * 0.27, h * 0.75, w * 0.02, w * 0.02); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.warehouse', mxLeanWarehouse); + +mxLeanWarehouse.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Timeline +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanTimeline(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanTimeline, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanTimeline.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var shapeInfo = mxUtils.getValue(this.style, 'mainText', '20,Time 1,50,Time 2,30,Time 3,40,Time 4,30,Time 5,50,Time 6,20,Time 7').toString().split(','); + var fontSize = mxUtils.getValue(this.style, mxConstants.STYLE_FONTSIZE, '12'); + var times = new Array(); + var totalTime = 0; + + for (var i = 0; i < shapeInfo.length; i = i + 2) + { + var currTime = parseFloat(shapeInfo[i]); + times.push(currTime); + totalTime = totalTime + currTime; + }; + + var scaleX = w / totalTime; + var names = new Array(); + + for (var i = 1; i < shapeInfo.length; i = i + 2) + { + names.push(shapeInfo[i]); + }; + + c.begin(); + var currX = 0; + c.moveTo(0, h); + + for (var i = 0; i < names.length; i++) + { + var currTime = times[i] * scaleX; + currX = currX + currTime; + + if (i % 2 === 0) + { + c.lineTo(currX, h); + c.lineTo(currX, fontSize * 1.5); + c.text(currX - currTime * 0.5, h - fontSize * 0.75, 0, 0, names[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + else + { + c.lineTo(currX, fontSize * 1.5); + c.lineTo(currX, h); + c.text(currX - currTime * 0.5, fontSize * 0.75, 0, 0, names[i], mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + }; + + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.timeline', mxLeanTimeline); + +//********************************************************************************************************************************************************** +//Cross Dock +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanCrossDock(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanCrossDock, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanCrossDock.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(0, h * 0.25); + c.lineTo(w, h * 0.25); + + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 1, w * 0.5, h * 0.5); + c.arcTo(w * 0.15, h * 0.15, 0, 0, 0, w * 0.65, h * 0.6); + c.lineTo(w * 0.9, h * 0.6); + c.stroke(); + + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.25, 0, 0, 1, w * 0.5, h * 0.55); + c.arcTo(w * 0.15, h * 0.25, 0, 0, 0, w * 0.65, h * 0.7); + c.lineTo(w * 0.9, h * 0.7); + c.stroke(); + + c.moveTo(w * 0.1, h * 0.4); + c.lineTo(w * 0.35, h * 0.4); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 1, w * 0.5, h * 0.6); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 0, w * 0.65, h * 0.8); + c.lineTo(w * 0.9, h * 0.8); + c.stroke(); + + c.moveTo(w * 0.1, h * 0.8); + c.lineTo(w * 0.35, h * 0.8); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 0, w * 0.5, h * 0.6); + c.arcTo(w * 0.15, h * 0.3, 0, 0, 1, w * 0.65, h * 0.4); + c.lineTo(w * 0.9, h * 0.4); + c.stroke(); + + c.moveTo(w * 0.1, h * 0.8); + c.lineTo(w * 0.35, h * 0.8); + c.arcTo(w * 0.15, h * 0.1, 0, 0, 0, w * 0.5, h * 0.75); + c.arcTo(w * 0.15, h * 0.1, 0, 0, 1, w * 0.65, h * 0.7); + c.lineTo(w * 0.9, h * 0.7); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.crossDock', mxLeanCrossDock); + +mxLeanCrossDock.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Orders +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanOrders(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanOrders, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanOrders.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, h * 0.56, w, h * 0.44); + c.fillAndStroke(); + + var strokeWidth = parseFloat(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '2')); + c.setStrokeWidth(strokeWidth * 0.5); + + c.begin(); + c.moveTo(w * 0.04, h * 0.5418); + c.lineTo(w * 0.94, h * 0.5418); + c.moveTo(w * 0.0522, h * 0.5088); + c.lineTo(w * 0.9522, h * 0.5088); + c.moveTo(w * 0.05, h * 0.4738); + c.lineTo(w * 0.95, h * 0.4738); + c.moveTo(w * 0.0456, h * 0.4427); + c.lineTo(w * 0.9456, h * 0.4427); + c.moveTo(w * 0.0422, h * 0.4135); + c.lineTo(w * 0.9422, h * 0.4135); + c.moveTo(w * 0.0533, h * 0.3804); + c.lineTo(w * 0.9533, h * 0.3804); + c.moveTo(w * 0.0556, h * 0.3454); + c.lineTo(w * 0.9556, h * 0.3454); + c.moveTo(w * 0.05, h * 0.3143); + c.lineTo(w * 0.95, h * 0.3143); + c.moveTo(w * 0.0489, h * 0.2832); + c.lineTo(w * 0.0489, h * 0.2832); + c.moveTo(w * 0.0544, h * 0.254); + c.lineTo(w * 0.9544, h * 0.254); + c.moveTo(w * 0.0489, h * 0.221); + c.lineTo(w * 0.9489, h * 0.221); + c.moveTo(w * 0.0556, h * 0.1918); + c.lineTo(w * 0.9556, h * 0.1918); + c.moveTo(w * 0.0522, h * 0.1587); + c.lineTo(w * 0.9522, h * 0.1587); + c.moveTo(w * 0.0544, h * 0.1276); + c.lineTo(w * 0.9544, h * 0.1276); + c.moveTo(w * 0.0544, h * 0.0965); + c.lineTo(w * 0.9544, h * 0.0965); + c.moveTo(w * 0.0556, h * 0.0654); + c.lineTo(w * 0.9556, h * 0.0654); + c.moveTo(w * 0.0533, h * 0.0304); + c.lineTo(w * 0.9533, h * 0.0304); + c.moveTo(w * 0.0556, 0); + c.lineTo(w * 0.9556, 0); + c.stroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.orders', mxLeanOrders); + +mxLeanOrders.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.05, 0), true), + new mxConnectionConstraint(new mxPoint(0.95, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.75, 0), true), + new mxConnectionConstraint(new mxPoint(0.05, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.05, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.95, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.95, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Batched Kanban +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanBatchedKanban(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanBatchedKanban, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanBatchedKanban.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(110, w); + + c.translate(x, y); + + c.begin(); + c.moveTo(4, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + + c.begin(); + c.moveTo(w * 0.5 - 20, h * 0.5 - 35); + c.lineTo(w * 0.5 + 25, h * 0.5 - 35); + c.lineTo(w * 0.5 + 40, h * 0.5 - 20); + c.lineTo(w * 0.5 + 40, h * 0.5 + 15); + c.lineTo(w * 0.5 - 20, h * 0.5 + 15); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5 - 30, h * 0.5 - 25); + c.lineTo(w * 0.5 + 15, h * 0.5 - 25); + c.lineTo(w * 0.5 + 30, h * 0.5 - 10); + c.lineTo(w * 0.5 + 30, h * 0.5 + 25); + c.lineTo(w * 0.5 - 30, h * 0.5 + 25); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5 - 40, h * 0.5 - 15); + c.lineTo(w * 0.5 + 5, h * 0.5 - 15); + c.lineTo(w * 0.5 + 20, h * 0.5); + c.lineTo(w * 0.5 + 20, h * 0.5 + 35); + c.lineTo(w * 0.5 - 40, h * 0.5 + 35); + c.close(); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w - 10, h * 0.5 - 4); + c.lineTo(w, h * 0.5); + c.lineTo(w - 10, h * 0.5 + 4); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.batched_kanban', mxLeanBatchedKanban); + +mxLeanBatchedKanban.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true) + ]; + +//********************************************************************************************************************************************************** +//Control Center +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxLeanControlCenter(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxLeanControlCenter, mxShape); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxLeanControlCenter.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + c.rect(w * 0.15, 0, w * 0.7, h * 0.8); + c.fillAndStroke(); + c.rect(0, h * 0.8, w, h * 0.2); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape('mxgraph.lean_mapping.control_center', mxLeanControlCenter); + +mxLeanControlCenter.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.15, 0), true), + new mxConnectionConstraint(new mxPoint(0.85, 0), true), + new mxConnectionConstraint(new mxPoint(0, 1), true), + new mxConnectionConstraint(new mxPoint(1, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.15, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.15, 0.5), false), + new mxConnectionConstraint(new mxPoint(0, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.85, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.85, 0.5), false), + new mxConnectionConstraint(new mxPoint(1, 0.75), true), + new mxConnectionConstraint(new mxPoint(0.25, 1), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0.75, 1), true) + ]; + +//********************************************************************************************************************************************************** +//Electronical Info +//********************************************************************************************************************************************************** +function mxLeanElectronicInfoShape() +{ + mxArrow.call(this); +}; + +mxUtils.extend(mxLeanElectronicInfoShape, mxArrow); + +mxLeanElectronicInfoShape.prototype.paintEdgeShape = function(c, pts) +{ + // Base vector (between end points) + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + var midX = p0.x + dx * 0.5; + var midY = p0.y + dy * 0.5; + + var p1x = midX - nx * dist * 0.1 - ny / 3 * dist * 0.1; + var p1y = midY - ny * dist * 0.1 + nx / 3 * dist * 0.1; + var p4x = midX + nx * dist * 0.1 + ny / 3 * dist * 0.1; + var p4y = midY + ny * dist * 0.1 - nx / 3 * dist * 0.1; + + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(p4x, p4y); + c.lineTo(p1x, p1y); + c.lineTo(pe.x, pe.y); + c.stroke(); + + var dx = pe.x - p1x; + var dy = pe.y - p1y; + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000')); + c.begin(); + c.moveTo(pe.x - nx * 10 - ny * 5, pe.y - ny * 10 + nx * 5); + c.lineTo(pe.x, pe.y); + c.lineTo(pe.x - nx * 10 + ny * 5, pe.y - ny * 10 - nx * 5); + c.fillAndStroke(); +}; + +// Registers the electronic info shape +mxCellRenderer.registerShape('mxgraph.lean_mapping.electronic_info_flow_edge', mxLeanElectronicInfoShape); + +//********************************************************************************************************************************************************** +//Manual Info +//********************************************************************************************************************************************************** +function mxLeanManualInfoShape() +{ + mxArrow.call(this); +}; + +mxUtils.extend(mxLeanManualInfoShape, mxArrow); + +mxLeanManualInfoShape.prototype.paintEdgeShape = function(c, pts) +{ + // Base vector (between end points) + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(pe.x, pe.y); + c.stroke(); + + c.setFillColor(mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000')); + c.begin(); + c.moveTo(pe.x - nx * 10 - ny * 5, pe.y - ny * 10 + nx * 5); + c.lineTo(pe.x, pe.y); + c.lineTo(pe.x - nx * 10 + ny * 5, pe.y - ny * 10 - nx * 5); + c.fillAndStroke(); +}; + +//Registers the electronic info shape +mxCellRenderer.registerShape('mxgraph.lean_mapping.manual_info_flow_edge', mxLeanManualInfoShape); + +//********************************************************************************************************************************************************** +//Timeline +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeLeanTimeline(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeLeanTimeline, mxShape); + +mxShapeLeanTimeline.prototype.cst = { + SHAPE_TIMELINE : 'mxgraph.lean_mapping.timeline2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeLeanTimeline.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var dy1 = mxUtils.getValue(this.style, 'dy1', '0'); + var dx2 = mxUtils.getValue(this.style, 'dx2', '0'); + var dy2 = mxUtils.getValue(this.style, 'dy2', '0'); + var dx3 = mxUtils.getValue(this.style, 'dx3', '0'); + var dy3 = mxUtils.getValue(this.style, 'dy3', '0'); + var dx4 = mxUtils.getValue(this.style, 'dx4', '0'); + var dy4 = mxUtils.getValue(this.style, 'dy4', '0'); + var dx5 = mxUtils.getValue(this.style, 'dx5', '0'); + var dy5 = mxUtils.getValue(this.style, 'dy5', '0'); + var dy6 = mxUtils.getValue(this.style, 'dy6', '0'); + + var lastUp = true; + + c.begin(); + + if (dy1 <= 0.5) + { + c.moveTo(0, 0); + lastUp = true; + } + else + { + c.moveTo(0, h); + lastUp = false; + } + + //2 + if (dy2 <= 0.5 && lastUp) + { + c.lineTo(dx2, 0); + lastUp = true; + } + else if (dy2 > 0.5 && !lastUp) + { + c.lineTo(dx2, h); + lastUp = false; + } + else if (dy2 <= 0.5 && !lastUp) + { + c.lineTo(dx2, h); + c.lineTo(dx2, 0); + lastUp = true; + } + else + { + c.lineTo(dx2, 0); + c.lineTo(dx2, h); + lastUp = false; + } + + //3 + if (dy3 <= 0.5 && lastUp) + { + c.lineTo(dx3, 0); + lastUp = true; + } + else if (dy3 > 0.5 && !lastUp) + { + c.lineTo(dx3, h); + lastUp = false; + } + else if (dy3 <= 0.5 && !lastUp) + { + c.lineTo(dx3, h); + c.lineTo(dx3, 0); + lastUp = true; + } + else + { + c.lineTo(dx3, 0); + c.lineTo(dx3, h); + lastUp = false; + } + + //4 + if (dy4 <= 0.5 && lastUp) + { + c.lineTo(dx4, 0); + lastUp = true; + } + else if (dy4 > 0.5 && !lastUp) + { + c.lineTo(dx4, h); + lastUp = false; + } + else if (dy4 <= 0.5 && !lastUp) + { + c.lineTo(dx4, h); + c.lineTo(dx4, 0); + lastUp = true; + } + else + { + c.lineTo(dx4, 0); + c.lineTo(dx4, h); + lastUp = false; + } + + //5 + if (dy5 <= 0.5 && lastUp) + { + c.lineTo(dx5, 0); + lastUp = true; + } + else if (dy5 > 0.5 && !lastUp) + { + c.lineTo(dx5, h); + lastUp = false; + } + else if (dy5 <= 0.5 && !lastUp) + { + c.lineTo(dx5, h); + c.lineTo(dx5, 0); + lastUp = true; + } + else + { + c.lineTo(dx5, 0); + c.lineTo(dx5, h); + lastUp = false; + } + + //6 + if (dy6 <= 0.5 && lastUp) + { + c.lineTo(w, 0); + lastUp = true; + } + else if (dy6 > 0.5 && !lastUp) + { + c.lineTo(w, h); + lastUp = false; + } + else if (dy6 <= 0.5 && !lastUp) + { + c.lineTo(w, h); + c.lineTo(w, 0); + lastUp = true; + } + else + { + c.lineTo(w, 0); + c.lineTo(w, h); + lastUp = false; + } + + //end + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeLeanTimeline.prototype.cst.SHAPE_TIMELINE, mxShapeLeanTimeline); + +Graph.handleFactory[mxShapeLeanTimeline.prototype.cst.SHAPE_TIMELINE] = function(state) +{ + var handles = [Graph.createHandle(state, ['dy1'], function(bounds) + { + var dy1 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy1', 0)))); + + return new mxPoint(bounds.x, bounds.y + dy1 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy1'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + })]; + + var handle2 = Graph.createHandle(state, ['dx2', 'dy2'], function(bounds) + { + + var dx2 = Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)))); + var dy2 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy2', 0)))); + + return new mxPoint(bounds.x + dx2, bounds.y + dy2 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dx2'] = Math.round(1000 * Math.max(0, Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), (pt.x - bounds.x)))) / 1000; + this.state.style['dy2'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + + handles.push(handle2); + + var handle3 = Graph.createHandle(state, ['dx3', 'dy3'], function(bounds) + { + var dx3 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)))); + var dy3 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy3', 0)))); + + return new mxPoint(bounds.x + dx3, bounds.y + dy3 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dx3'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx2', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), (pt.x - bounds.x)))) / 1000; + this.state.style['dy3'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + + handles.push(handle3); + + var handle4 = Graph.createHandle(state, ['dx4', 'dy4'], function(bounds) + { + var dx4 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)), parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)))); + var dy4 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy4', 0)))); + + return new mxPoint(bounds.x + dx4, bounds.y + dy4 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dx4'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx3', 0)), Math.min(parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)), (pt.x - bounds.x)))) / 1000; + this.state.style['dy4'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + + handles.push(handle4); + + var handle5 = Graph.createHandle(state, ['dx5', 'dy5'], function(bounds) + { + var dx5 = Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'dx5', 0)))); + var dy5 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy5', 0)))); + + return new mxPoint(bounds.x + dx5, bounds.y + dy5 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dx5'] = Math.round(1000 * Math.max(parseFloat(mxUtils.getValue(this.state.style, 'dx4', 0)), Math.min(bounds.width, (pt.x - bounds.x)))) / 1000; + this.state.style['dy5'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + + handles.push(handle5); + + var handle6 = Graph.createHandle(state, ['dy6'], function(bounds) + { + var dy6 = Math.max(0, Math.min(100, parseFloat(mxUtils.getValue(this.state.style, 'dy6', 0)))); + + return new mxPoint(bounds.x + bounds.width, bounds.y + dy6 * bounds.height); + }, function(bounds, pt) + { + this.state.style['dy6'] = Math.round(1000 * Math.max(0, Math.min(1, (pt.y - bounds.y) / bounds.height))) / 1000; + }); + + handles.push(handle6); + + return handles; +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxNetworks.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxNetworks.js new file mode 100644 index 0000000000000..1ea600fa7fa06 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxNetworks.js @@ -0,0 +1,120 @@ +/** + * $Id: mxNetworks.js,v 1.0 2015/06/15 17:05:39 mate Exp $ + * Copyright (c) 2006-2015, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Bus +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeNetworksBus(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeNetworksBus, mxShape); + +mxShapeNetworksBus.prototype.cst = { + SHAPE_BUS : 'mxgraph.networks.bus' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeNetworksBus.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeNetworksBus.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, 8, h * 0.5 - 10); + c.lineTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.close(); + c.fillAndStroke(); +}; + +mxShapeNetworksBus.prototype.foreground = function(c, x, y, w, h) +{ + c.setFillColor('#ffffff'); + c.begin(); + c.moveTo(w - 8, h * 0.5 - 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 + 10); + c.arcTo(12, 12, 0, 0, 1, w - 8, h * 0.5 - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeNetworksBus.prototype.cst.SHAPE_BUS, mxShapeNetworksBus); + +//********************************************************************************************************************************************************** +//Comm Link +//********************************************************************************************************************************************************** +function mxShapeNetworksCommLinkEdge() +{ + mxArrow.call(this); +}; + +mxUtils.extend(mxShapeNetworksCommLinkEdge, mxArrow); + +mxShapeNetworksCommLinkEdge.prototype.paintEdgeShape = function(c, pts) +{ + // Base vector (between end points) + var p0 = pts[0]; + var pe = pts[pts.length - 1]; + + var dx = pe.x - p0.x; + var dy = pe.y - p0.y; + + p0.x = p0.x + dx * 0.05; + p0.y = p0.y + dy * 0.05; + pe.x = pe.x - dx * 0.05; + pe.y = pe.y - dy * 0.05; + dx = pe.x - p0.x; + dy = pe.y - p0.y; + + var dist = Math.sqrt(dx * dx + dy * dy); + var nx = dx / dist; + var ny = dy / dist; + var midX = p0.x + dx * 0.5; + var midY = p0.y + dy * 0.5; + + var p1x = midX + nx * dist / 3 * 0.1 - ny / 3 * dist * 0.1; + var p1y = midY + ny * dist / 3 * 0.1 + nx / 3 * dist * 0.1; + var p2x = midX + nx * dist * 0.1 + ny * dist * 0.1; + var p2y = midY + ny * dist * 0.1 - nx * dist * 0.1; + + var p3x = midX - nx * dist / 3 * 0.1 + ny / 3 * dist * 0.1; + var p3y = midY - ny * dist / 3 * 0.1 - nx / 3 * dist * 0.1; + var p4x = midX - nx * dist * 0.1 - ny * dist * 0.1; + var p4y = midY - ny * dist * 0.1 + nx * dist * 0.1; + + c.begin(); + c.moveTo(p0.x, p0.y); + c.lineTo(p2x, p2y); + c.lineTo(p1x, p1y); + c.lineTo(pe.x, pe.y); + c.lineTo(p4x, p4y); + c.lineTo(p3x, p3y); + c.close(); + c.fillAndStroke(); +}; + +//Registers the comm link edge +mxCellRenderer.registerShape('mxgraph.networks.comm_link_edge', mxShapeNetworksCommLinkEdge); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/mxSysML.js b/data/plugins/grafana-flowcharting/src/libs/shapes/mxSysML.js new file mode 100644 index 0000000000000..54e0d79023188 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/mxSysML.js @@ -0,0 +1,3144 @@ +/** + * $Id: mxSysML.js,v 1.0 2014/07/23 07:05:39 mate Exp $ + * Copyright (c) 2006-2014, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Composite +//********************************************************************************************************************************************************** +function mxShapeSysMLComposite() +{ + mxCylinder.call(this); +}; + +mxUtils.extend(mxShapeSysMLComposite, mxShape); + +mxShapeSysMLComposite.prototype.isHtmlAllowed = function() +{ + return false; +}; + +mxShapeSysMLComposite.prototype.paintForeground = function(c, x, y, w, h) +{ + if (this.style != null) + { + var shape = mxCellRenderer.defaultShapes[this.style['symbol0']]; + + c.save(); + + var tmp = new shape(); + tmp.style = this.style; + shape.prototype.paintVertexShape.call(tmp, c, x, y, w, h); + c.restore(); + + c.setDashed(false); + + // Draws the symbols defined in the style. The symbols are + // numbered from 1...n. Possible postfixes are align, + // verticalAlign, spacing, arcSpacing, width, height + var counter = 1; + + do + { + shape = mxCellRenderer.defaultShapes[this.style['symbol' + counter]]; + + if (shape != null) + { + var align = this.style['symbol' + counter + 'Align']; + var valign = this.style['symbol' + counter + 'VerticalAlign']; + var width = this.style['symbol' + counter + 'Width']; + var height = this.style['symbol' + counter + 'Height']; + var spacing = this.style['symbol' + counter + 'Spacing'] || 0; + var vspacing = this.style['symbol' + counter + 'VSpacing'] || 0; + var arcspacing = this.style['symbol' + counter + 'ArcSpacing']; + var direction = this.style['symbol' + counter + 'Direction']; + + if (arcspacing != null) + { + spacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + vspacing += this.getArcSize(w + this.strokewidth, h + this.strokewidth) * arcspacing; + } + + var x2 = x; + var y2 = y; + + if (align == mxConstants.ALIGN_CENTER) + { + x2 += (w - width) / 2; + } + else if (align == mxConstants.ALIGN_RIGHT) + { + x2 += w - width - spacing; + } + else + { + x2 += spacing; + } + + if (valign == mxConstants.ALIGN_MIDDLE) + { + y2 += (h - height) / 2; + } + else if (valign == mxConstants.ALIGN_BOTTOM) + { + y2 += h - height - vspacing; + } + else + { + y2 += vspacing; + } + + c.save(); + + var tmp = new shape(); + + tmp.style = mxUtils.clone(this.style); + tmp.direction = direction; + tmp.updateTransform(c, x2, y2, width, height); + shape.prototype.paintVertexShape.call(tmp, c, x2, y2, width, height); + c.restore(); + } + + counter++; + } + while (shape != null); + } +}; + +mxCellRenderer.registerShape('mxgraph.sysml.composite', mxShapeSysMLComposite); + +//********************************************************************************************************************************************************** +//Package +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPackage(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPackage, mxShape); + +mxShapeSysMLPackage.prototype.cst = { + PACKAGE : 'mxgraph.sysml.package', + LABEL_X : 'labelX' +}; + +mxShapeSysMLPackage.prototype.customProperties = [ + {name: 'labelX', dispName: 'Header Width', type: 'float', min:0, defVal:90} +]; + +mxShapeSysMLPackage.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPackage.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLPackage.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLPackage.prototype.foreground = function(c, x, y, w, h) +{ + var xSize = parseInt(mxUtils.getValue(this.style, mxShapeSysMLPackage.prototype.cst.LABEL_X, '90')); + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLPackage.prototype.cst.PACKAGE, mxShapeSysMLPackage); + +Graph.handleFactory[mxShapeSysMLPackage.prototype.cst.PACKAGE] = function(state) +{ + var handles = [Graph.createHandle(state, ['labelX'], function(bounds) + { + var labelX = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'labelX', 90)))); + + return new mxPoint(bounds.x + labelX, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['labelX'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + + return handles; + +} + +//********************************************************************************************************************************************************** +//Package2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPackage2(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPackage2, mxShape); + +mxShapeSysMLPackage2.prototype.cst = { + PACKAGE2 : 'mxgraph.sysml.package2', + LABEL_X : 'labelX' +}; + +mxShapeSysMLPackage2.prototype.customProperties = [ + {name: 'labelX', dispName: 'Header Width', type: 'float', min:0, defVal:90} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPackage2.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLPackage2.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.stroke(); +}; + +mxShapeSysMLPackage2.prototype.foreground = function(c, x, y, w, h) +{ + var xSize = parseInt(mxUtils.getValue(this.style, mxShapeSysMLPackage2.prototype.cst.LABEL_X, '90')); + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLPackage2.prototype.cst.PACKAGE2, mxShapeSysMLPackage2); + +Graph.handleFactory[mxShapeSysMLPackage2.prototype.cst.PACKAGE2] = function(state) +{ + var handles = [Graph.createHandle(state, ['labelX'], function(bounds) + { + var labelX = Math.max(0, Math.min(bounds.width, parseFloat(mxUtils.getValue(this.state.style, 'labelX', 90)))); + + return new mxPoint(bounds.x + labelX, bounds.y + 10); + }, function(bounds, pt) + { + this.state.style['labelX'] = Math.round(100 * Math.max(0, Math.min(bounds.width, pt.x - bounds.x))) / 100; + })]; + + return handles; + +} + +//********************************************************************************************************************************************************** +//None +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLNone(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLNone, mxShape); + +mxShapeSysMLNone.prototype.cst = { + NONE : 'mxgraph.sysml.none' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLNone.prototype.paintVertexShape = function(c, x, y, w, h) +{ +}; + +mxCellRenderer.registerShape(mxShapeSysMLNone.prototype.cst.NONE, mxShapeSysMLNone); + +//********************************************************************************************************************************************************** +//Rectangle +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLRect(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLRect, mxShape); + +mxShapeSysMLRect.prototype.cst = { + RECT : 'mxgraph.sysml.rect' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLRect.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x, y, w, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLRect.prototype.cst.RECT, mxShapeSysMLRect); + +//********************************************************************************************************************************************************** +//Port +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPortOne(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPortOne, mxShape); + +mxShapeSysMLPortOne.prototype.cst = { + PORT1 : 'mxgraph.sysml.port1' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPortOne.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + w * 0.05, y, w - w * 0.1, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortOne.prototype.cst.PORT1, mxShapeSysMLPortOne); + +mxShapeSysMLPortOne.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Port2 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPortTwo(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPortTwo, mxShape); + +mxShapeSysMLPortTwo.prototype.cst = { + PORT2 : 'mxgraph.sysml.port2' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPortTwo.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + w * 0.05, y, w * 0.8, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortTwo.prototype.cst.PORT2, mxShapeSysMLPortTwo); + +mxShapeSysMLPortTwo.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.95, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.05, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Port3 +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPortThree(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPortThree, mxShape); + +mxShapeSysMLPortThree.prototype.cst = { + PORT3 : 'mxgraph.sysml.port3' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPortThree.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + w * 0.07, y, w * 0.86, h); + c.fillAndStroke(); + c.rect(x, y + h * 0.125, w * 0.14, h * 0.25); + c.fillAndStroke(); + c.rect(x, y + h * 0.625, w * 0.14, h * 0.25); + c.fillAndStroke(); + c.rect(x + w * 0.86, y + h * 0.375, w * 0.14, h * 0.25); + c.fillAndStroke(); + this.drawIn(c, x + w * 0.01, y + h * 0.2, w * 0.11, h * 0.10); + this.drawOut(c, x + w * 0.02, y + h * 0.7, w * 0.11, h * 0.10); + this.drawInOut(c, x + w * 0.88, y + h * 0.45, w * 0.1, h * 0.10); +}; + +mxShapeSysMLPortThree.prototype.drawIn = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.stroke(); +} + +mxShapeSysMLPortThree.prototype.drawOut = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +} + +mxShapeSysMLPortThree.prototype.drawInOut = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +} + +mxCellRenderer.registerShape(mxShapeSysMLPortThree.prototype.cst.PORT3, mxShapeSysMLPortThree); + +//********************************************************************************************************************************************************** +//Port +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLPortFour(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLPortFour, mxShape); + +mxShapeSysMLPortFour.prototype.cst = { + PORT4 : 'mxgraph.sysml.port4' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLPortFour.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + w * 0.05, y, w - w * 0.05, h); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLPortFour.prototype.cst.PORT4, mxShapeSysMLPortFour); + +mxShapeSysMLPortFour.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true) + ]; + +//********************************************************************************************************************************************************** +//Item Flow +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLItemFlow(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLItemFlow, mxShape); + +mxShapeSysMLItemFlow.prototype.cst = { + ITEM_FLOW : 'mxgraph.sysml.itemFlow', + FLOW_DIR : 'flowDir', + FLOW_TYPE : 'flowType' +}; + +mxShapeSysMLItemFlow.prototype.customProperties = [ + {name: 'flowDir', dispName: 'Flow Direction', type: 'enum', + enumList:[ + {val:'n', dispName:'North'}, + {val:'s', dispName:'South'}, + {val:'e', dispName:'East'}, + {val:'w', dispName:'West'} + ]}, + {name: 'flowType', dispName: 'Flow Type', type: 'enum', + enumList:[ + {val:'in', dispName:'In'}, + {val:'out', dispName:'Out'} +]}]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLItemFlow.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var flowDir = mxUtils.getValue(this.style, mxShapeSysMLItemFlow.prototype.cst.FLOW_DIR, 'none').toLowerCase(); + var flowType = mxUtils.getValue(this.style, mxShapeSysMLItemFlow.prototype.cst.FLOW_TYPE, 'none'); + + if (flowDir === 'n') + { + c.rect(x, y + 10, w, h - 10); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(x + w * 0.5 - 10, y, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') + { + this.drawDown(c, x + w * 0.5 - 5, y + 2, 10, 16); + } + else if (flowType === 'out') + { + this.drawUp(c, x + w * 0.5 - 5, y + 2, 10, 16); + } + } + else if (flowDir === 's') + { + c.rect(x, y, w, h - 10); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(x + w * 0.5 - 10, y + h - 20, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') + { + this.drawUp(c, x + w * 0.5 - 5, y + h - 18, 10, 16); + } + else if (flowType === 'out') + { + this.drawDown(c, x + w * 0.5 - 5, y + h - 18, 10, 16); + } + } + else if (flowDir === 'w') + { + c.rect(x + 10, y, w - 10, h); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(x, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') + { + this.drawRight(c, x + 2, y + h * 0.5 - 5, 16, 10); + } + else if (flowType === 'out') + { + this.drawLeft(c, x + 2, y + h * 0.5 - 5, 16, 10); + } + } + else if (flowDir === 'e') + { + c.rect(x, y, w - 10, h); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(x + w - 20, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + + if (flowType === 'in') + { + this.drawLeft(c, x + w - 18, y + h * 0.5 - 5, 16, 10); + } + else if (flowType === 'out') + { + this.drawRight(c, x + w - 18, y + h * 0.5 - 5, 16, 10); + } + } +}; + +mxShapeSysMLItemFlow.prototype.drawRight = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.75, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w * 0.75, y + h); + c.stroke(); +} + +mxShapeSysMLItemFlow.prototype.drawDown = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x + w * 0.5, y); + c.lineTo(x + w * 0.5, y + h); + c.moveTo(x, y + h * 0.75); + c.lineTo(x + w * 0.5, y + h); + c.lineTo(x + w, y + h * 0.75); + c.stroke(); +} + +mxShapeSysMLItemFlow.prototype.drawLeft = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.moveTo(x + w * 0.25, y); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w * 0.25, y + h); + c.stroke(); +} + +mxShapeSysMLItemFlow.prototype.drawUp = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x + w * 0.5, y + h); + c.lineTo(x + w * 0.5, y); + c.moveTo(x, y + h * 0.25); + c.lineTo(x + w * 0.5, y); + c.lineTo(x + w, y + h * 0.25); + c.stroke(); +} + +mxCellRenderer.registerShape(mxShapeSysMLItemFlow.prototype.cst.ITEM_FLOW, mxShapeSysMLItemFlow); + +mxShapeSysMLItemFlow.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true) + ]; + +//********************************************************************************************************************************************************** +//Item Flow Left +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLItemFlowLeft(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLItemFlowLeft, mxShape); + +mxShapeSysMLItemFlowLeft.prototype.cst = { + ITEM_FLOW_LEFT : 'mxgraph.sysml.itemFlowLeft' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLItemFlowLeft.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + 10, y, w - 10, h); + c.fillAndStroke(); + c.rect(x, y + h * 0.25 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x, y + h * 0.75 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLItemFlowLeft.prototype.cst.ITEM_FLOW_LEFT, mxShapeSysMLItemFlowLeft); + +mxShapeSysMLItemFlowLeft.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.25), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0.75), true) + ]; + +//********************************************************************************************************************************************************** +//Item Flow Right +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLItemFlowRight(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLItemFlowRight, mxShape); + +mxShapeSysMLItemFlowRight.prototype.cst = { + ITEM_FLOW_RIGHT : 'mxgraph.sysml.itemFlowRight' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLItemFlowRight.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x, y, w - 10, h); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.25 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.5 - 10, 20, 20); + c.fillAndStroke(); + c.rect(x + w - 20, y + h * 0.75 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLItemFlowRight.prototype.cst.ITEM_FLOW_RIGHT, mxShapeSysMLItemFlowRight); + +mxShapeSysMLItemFlowRight.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(1, 0.25), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.75), true) + ]; + +//********************************************************************************************************************************************************** +//Nested Port +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLNestedPort(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLNestedPort, mxShape); + +mxShapeSysMLNestedPort.prototype.cst = { + NESTED_PORT : 'mxgraph.sysml.nestedPort' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLNestedPort.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x + w * 0.08, y, w * 0.92, h); + c.fillAndStroke(); + c.rect(x + w * 0.03, y + h * 0.1, w * 0.1, h * 0.8); + c.fillAndStroke(); + c.rect(x, y + h * 0.15, w * 0.06, h * 0.16); + c.fillAndStroke(); + c.rect(x, y + h * 0.42, w * 0.06, h * 0.16); + c.fillAndStroke(); + c.rect(x, y + h * 0.69, w * 0.06, h * 0.16); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLNestedPort.prototype.cst.NESTED_PORT, mxShapeSysMLNestedPort); + +//********************************************************************************************************************************************************** +//Package Containment +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLPackCont', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + c.stroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Required Interface +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLReqInt', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + var fillColor = mxUtils.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, 'none'); + c.setFillColor(fillColor); + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + c.fillAndStroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Provided Interface +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLProvInt', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + var fillColor = mxUtils.getValue(shape.style, mxConstants.STYLE_FILLCOLOR, 'none'); + c.setFillColor(fillColor); + c.begin(); + c.moveTo(pe.x - ny / 2, pe.y + nx / 2); + c.arcTo(a, a, 0, 0, 1, pe.x + ny / 2, pe.y - nx / 2); + c.fillAndStroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Parametric Diagram +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLParametricDiagram(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLParametricDiagram, mxShape); + +mxShapeSysMLParametricDiagram.prototype.cst = { + PARAM_DGM : 'mxgraph.sysml.paramDgm' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLParametricDiagram.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.roundrect(x, y, w, h, 10, 10); + c.fillAndStroke(); + + c.setShadow(false); + + if (h > 60) + { + c.rect(x, y + h * 0.25 - 10, 20, 20); + c.stroke(); + c.rect(x, y + h * 0.75 - 10, 20, 20); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLParametricDiagram.prototype.cst.PARAM_DGM, mxShapeSysMLParametricDiagram); + +//********************************************************************************************************************************************************** +//Constraint Property +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLConstraintProperty(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLConstraintProperty, mxShape); + +mxShapeSysMLConstraintProperty.prototype.cst = { + CONS_PROP : 'mxgraph.sysml.consProp' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLConstraintProperty.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.rect(x, y, w, h); + c.fillAndStroke(); + + c.setShadow(false); + + if (h > 60) + { + c.rect(x, y + 50, 20, 20); + c.stroke(); + c.rect(x, y + 80, 20, 20); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLConstraintProperty.prototype.cst.CONS_PROP, mxShapeSysMLConstraintProperty); + +//********************************************************************************************************************************************************** +//Call Behavior Action +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLCallBehaviorAction(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLCallBehaviorAction, mxShape); + +mxShapeSysMLCallBehaviorAction.prototype.cst = { + CALL_BEH_ACT : 'mxgraph.sysml.callBehAct' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLCallBehaviorAction.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.roundrect(x, y, w, h, 10, 10); + c.fillAndStroke(); + + if ((h > 30) && (w > 40)) + { + c.setShadow(false); + + this.drawSymb(c, x + w - 30, y + h - 30, 20, 20); + } +}; + +mxShapeSysMLCallBehaviorAction.prototype.drawSymb = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x + w * 0.5, y); + c.lineTo(x + w * 0.5, y + h); + c.moveTo(x, y + h); + c.lineTo(x, y + h * 0.5); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w, y + h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCallBehaviorAction.prototype.cst.CALL_BEH_ACT, mxShapeSysMLCallBehaviorAction); + +mxShapeSysMLCallBehaviorAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false, null, 2.9, -2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Accept Event Action +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLAcceptEventAction(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLAcceptEventAction, mxShape); + +mxShapeSysMLAcceptEventAction.prototype.cst = { + ACC_EVENT : 'mxgraph.sysml.accEvent' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLAcceptEventAction.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x + w, y + h); + c.lineTo(x, y + h); + c.lineTo(x + h * 0.3, y + h * 0.5); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLAcceptEventAction.prototype.cst.ACC_EVENT, mxShapeSysMLAcceptEventAction); + +mxShapeSysMLAcceptEventAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, h * 0.3, 0)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Time Event +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLTimeEvent(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLTimeEvent, mxShape); + +mxShapeSysMLTimeEvent.prototype.cst = { + TIME_EVENT : 'mxgraph.sysml.timeEvent' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLTimeEvent.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w, y); + c.lineTo(x, y + h); + c.lineTo(x + w, y + h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLTimeEvent.prototype.cst.TIME_EVENT, mxShapeSysMLTimeEvent); + +mxShapeSysMLTimeEvent.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Send Signal Action +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLSendSignalAction(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLSendSignalAction, mxShape); + +mxShapeSysMLSendSignalAction.prototype.cst = { + SEND_SIG_ACT : 'mxgraph.sysml.sendSigAct' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLSendSignalAction.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(x, y); + c.lineTo(x + w - h * 0.3, y); + c.lineTo(x + w, y + h * 0.5); + c.lineTo(x + w - h * 0.3, y + h); + c.lineTo(x, y + h); + c.close(); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSendSignalAction.prototype.cst.SEND_SIG_ACT, mxShapeSysMLSendSignalAction); + +mxShapeSysMLSendSignalAction.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false, null, -h * 0.3, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Activity Final +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLActivityFinal(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLActivityFinal, mxShape); + +mxShapeSysMLActivityFinal.prototype.cst = { + ACT_FINAL : 'mxgraph.sysml.actFinal' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLActivityFinal.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.ellipse(x, y, w, h); + c.fillAndStroke(); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + + c.ellipse(x + 5, y + 5, w - 10, h - 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityFinal.prototype.cst.ACT_FINAL, mxShapeSysMLActivityFinal); + +mxShapeSysMLActivityFinal.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Activity Parameter Node +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLActivityParameterNode(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLActivityParameterNode, mxShape); + +mxShapeSysMLActivityParameterNode.prototype.cst = { + ACT_PARAM_NODE : 'mxgraph.sysml.actParamNode' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLActivityParameterNode.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + var minX = Math.max(w * 0.35, 70); + var maxX = Math.min(w * 0.65, w - 10); + c.begin(); + c.moveTo(minX, h); + c.lineTo(10, h); + c.lineTo(10, 0); + c.lineTo(minX, 0); + c.moveTo(maxX, h); + c.lineTo(w - 10, h); + c.lineTo(w - 10, 0); + c.lineTo(maxX, 0); + c.stroke(); + + var xSize = 50; + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(10, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(10, 0); + c.close(); + c.fillAndStroke(); + } + + c.rect(0, h * 0.35 - 10, 20, 20); + c.fillAndStroke(); + c.rect(0, h * 0.65 - 10, 20, 20); + c.fillAndStroke(); + c.rect(w - 20, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityParameterNode.prototype.cst.ACT_PARAM_NODE, mxShapeSysMLActivityParameterNode); + +mxShapeSysMLActivityParameterNode.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.35), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.65), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Control Operator +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLControlOperator(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLControlOperator, mxShape); + +mxShapeSysMLControlOperator.prototype.cst = { + CONT_OPER : 'mxgraph.sysml.contOper' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLControlOperator.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLControlOperator.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLControlOperator.prototype.foreground = function(c, x, y, w, h) +{ + var xSize = 130; + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLControlOperator.prototype.cst.CONT_OPER, mxShapeSysMLControlOperator); + +//********************************************************************************************************************************************************** +//Flow Final +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLFlowFinal(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLFlowFinal, mxShape); + +mxShapeSysMLFlowFinal.prototype.cst = { + FLOW_FINAL : 'mxgraph.sysml.flowFinal' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLFlowFinal.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + c.setShadow(false); + + c.begin(); + c.moveTo(w * 0.145, h * 0.145); + c.lineTo(w * 0.855, h * 0.855); + c.moveTo(w * 0.855, h * 0.145); + c.lineTo(w * 0.145, h * 0.855); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLFlowFinal.prototype.cst.FLOW_FINAL, mxShapeSysMLFlowFinal); + +mxShapeSysMLFlowFinal.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Is Control +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLIsControl(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLIsControl, mxShape); + +mxShapeSysMLIsControl.prototype.cst = { + IS_CONTROL : 'mxgraph.sysml.isControl' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLIsControl.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsControl.prototype.cst.IS_CONTROL, mxShapeSysMLIsControl); + +mxShapeSysMLIsControl.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Is Stream +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLIsStream(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLIsStream, mxShape); + +mxShapeSysMLIsStream.prototype.cst = { + IS_STREAM : 'mxgraph.sysml.isStream' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLIsStream.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + + c.setFillColor(strokeColor); + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + + c.setFillColor(fillColor); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + + c.setFillColor(strokeColor); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsStream.prototype.cst.IS_STREAM, mxShapeSysMLIsStream); + +mxShapeSysMLIsStream.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Is Activity Stream +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLIsActStream(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLIsActStream, mxShape); + +mxShapeSysMLIsActStream.prototype.cst = { + IS_ACT_STREAM : 'mxgraph.sysml.isActStream' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLIsActStream.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.rect(0, 0, w - 10, h); + c.fillAndStroke(); + + var xSize = 40; + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } + + c.rect(w - 20, h * 0.5 - 10, 20, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLIsActStream.prototype.cst.IS_ACT_STREAM, mxShapeSysMLIsActStream); + +mxShapeSysMLIsActStream.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Parameter Set +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLParameterSet(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLParameterSet, mxShape); + +mxShapeSysMLParameterSet.prototype.cst = { + PARAM_SET : 'mxgraph.sysml.paramSet' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLParameterSet.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, h * 0.5 - 28, 10, 56); + c.fillAndStroke(); + c.roundrect(10, 0, w - 20, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 28, 10, 56); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(4, h * 0.5 - 24, 6, 20); + c.fillAndStroke(); + c.rect(4, h * 0.5 + 4, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 + 4, 6, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLParameterSet.prototype.cst.PARAM_SET, mxShapeSysMLParameterSet); + +mxShapeSysMLParameterSet.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Is Parameter Activity Set +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLParameterActivitySet(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLParameterActivitySet, mxShape); + +mxShapeSysMLParameterActivitySet.prototype.cst = { + PARAM_ACT_SET : 'mxgraph.sysml.paramActSet' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLParameterActivitySet.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.rect(10, 0, w - 20, h); + c.fillAndStroke(); + + var xSize = 50; + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(10, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(10, 0); + c.close(); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (h > 70) + { + c.rect(0, h * 0.5 - 28, 15, 56); + c.fillAndStroke(); + c.rect(4, h * 0.5 - 24, 15, 20); + c.fillAndStroke(); + c.rect(4, h * 0.5 + 4, 15, 20); + c.fillAndStroke(); + + c.rect(w - 15, h * 0.5 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.5 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.5 + 4, 15, 20); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLParameterActivitySet.prototype.cst.PARAM_ACT_SET, mxShapeSysMLParameterActivitySet); + +mxShapeSysMLParameterActivitySet.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Probability +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLProbability(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLProbability, mxShape); + +mxShapeSysMLProbability.prototype.cst = { + PROBABILITY : 'mxgraph.sysml.probability' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLProbability.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.25 - 28, 10, 56); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 - 28, 10, 56); + c.fillAndStroke(); + + c.setShadow(false); + + c.rect(w - 10, h * 0.25 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.25 + 4, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 - 24, 6, 20); + c.fillAndStroke(); + c.rect(w - 10, h * 0.75 + 4, 6, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLProbability.prototype.cst.PROBABILITY, mxShapeSysMLProbability); + +mxShapeSysMLProbability.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Is Activity Stream +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLActivityProbability(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLActivityProbability, mxShape); + +mxShapeSysMLActivityProbability.prototype.cst = { + ACT_PROB : 'mxgraph.sysml.actProb' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLActivityProbability.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.rect(0, 0, w - 10, h); + c.fillAndStroke(); + + var xSize = 40; + var ySize = 20; + + xSize = Math.min(xSize, w); + + if (xSize > ySize) + { + c.begin(); + c.moveTo(0, ySize); + c.lineTo(xSize - ySize * 0.5, ySize); + c.lineTo(xSize, ySize * 0.5); + c.lineTo(xSize, 0); + c.lineTo(0, 0); + c.close(); + c.fillAndStroke(); + } + + c.setShadow(false); + + if (h > 70) + { + c.rect(w - 15, h * 0.25 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.25 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.25 + 4, 15, 20); + c.fillAndStroke(); + + c.rect(w - 15, h * 0.75 - 28, 15, 56); + c.fillAndStroke(); + c.rect(w - 19, h * 0.75 - 24, 15, 20); + c.fillAndStroke(); + c.rect(w - 19, h * 0.75 + 4, 15, 20); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityProbability.prototype.cst.ACT_PROB, mxShapeSysMLActivityProbability); + +mxShapeSysMLActivityProbability.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, -14)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, 0, 14)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false, null, -5, 0)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Object Flow Right +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLObjectFlowRight(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLObjectFlowRight, mxShape); + +mxShapeSysMLObjectFlowRight.prototype.cst = { + OBJ_FLOW_R : 'mxgraph.sysml.objFlowR' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLObjectFlowRight.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); + c.rect(w - 10, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowRight.prototype.cst.OBJ_FLOW_R, mxShapeSysMLObjectFlowRight); + +mxShapeSysMLObjectFlowRight.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, -5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, -5, 0)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Object Flow Left +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLObjectFlowLeft(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLObjectFlowLeft, mxShape); + +mxShapeSysMLObjectFlowLeft.prototype.cst = { + OBJ_FLOW_L : 'mxgraph.sysml.objFlowL' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLObjectFlowLeft.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.rect(0, h * 0.5 - 10, 10, 20); + c.fillAndStroke(); + c.roundrect(10, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLObjectFlowLeft.prototype.cst.OBJ_FLOW_L, mxShapeSysMLObjectFlowLeft); + +mxShapeSysMLObjectFlowLeft.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 5, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false, null, 5, 0)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Activity Partition +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLActivityPartition(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLActivityPartition, mxShape); + +mxShapeSysMLActivityPartition.prototype.cst = { + ACT_PART : 'mxgraph.sysml.actPart' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLActivityPartition.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, h); + c.moveTo(w, 0); + c.lineTo(w, h); + c.stroke(); + +}; + +mxCellRenderer.registerShape(mxShapeSysMLActivityPartition.prototype.cst.ACT_PART, mxShapeSysMLActivityPartition); + +//********************************************************************************************************************************************************** +//Continuation +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLContinuation(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLContinuation, mxShape); + +mxShapeSysMLContinuation.prototype.cst = { + CONT : 'mxgraph.sysml.cont' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLContinuation.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + if (w > h) + { + var r = h * 0.5; + + c.begin(); + c.moveTo(w - r, 0); + c.arcTo(r, r, 0, 0, 1, w - r, h); + c.lineTo(r, h); + c.arcTo(r, r, 0, 0, 1, r, 0); + c.close(); + c.fillAndStroke(); + } + else + { + var r = w * 0.5; + + c.begin(); + c.moveTo(0, h - r); + c.arcTo(r, r, 0, 0, 0, w, h - r); + c.lineTo(w, r); + c.arcTo(r, r, 0, 0, 0, 0, r); + c.close(); + c.fillAndStroke(); + } +}; + +mxCellRenderer.registerShape(mxShapeSysMLContinuation.prototype.cst.CONT, mxShapeSysMLContinuation); + +mxShapeSysMLContinuation.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + + if (w > h) + { + var r = h * 0.5; + + if (w > 2 * h) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + } + } + else + { + var r = w * 0.5; + + if (h > 2 * w) + { + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + } + } + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, r * 0.29, h - r * 0.29)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - r * 0.29, h - r * 0.29)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Coregion +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLCoregion(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLCoregion, mxShape); + +mxShapeSysMLCoregion.prototype.cst = { + COREGION : 'mxgraph.sysml.coregion' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLCoregion.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + var brack = 10; + + brack = Math.min(brack, h); + + c.begin(); + c.moveTo(0, brack); + c.lineTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w, brack); + c.moveTo(0, h - brack); + c.lineTo(0, h); + c.lineTo(w, h); + c.lineTo(w, h - brack); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCoregion.prototype.cst.COREGION, mxShapeSysMLCoregion); + +//********************************************************************************************************************************************************** +//X marker +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLx', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + + return function() + { + c.begin(); + c.moveTo(pe.x - nx / 2 - ny / 2, pe.y - ny / 2 + nx / 2); + c.lineTo(pe.x + nx / 2 + ny / 2, pe.y + ny / 2 - nx / 2); + + c.moveTo(pe.x + nx / 2 - ny / 2, pe.y + ny / 2 + nx / 2); + c.lineTo(pe.x - nx / 2 + ny / 2, pe.y - ny / 2 - nx / 2); + c.stroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Dimension +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLDimension(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLDimension, mxShape); + +mxShapeSysMLDimension.prototype.cst = { + DIMENSION : 'mxgraph.sysml.dimension' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLDimension.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeSysMLDimension.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.moveTo(10, 15); + c.lineTo(0, 20); + c.lineTo(10, 25); + c.moveTo(w - 10, 15); + c.lineTo(w, 20); + c.lineTo(w - 10, 25); + c.moveTo(0, 15); + c.lineTo(0, h); + c.moveTo(w, 15); + c.lineTo(w, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLDimension.prototype.cst.DIMENSION, mxShapeSysMLDimension); + +//********************************************************************************************************************************************************** +//Lost marker +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLLost', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + c.begin(); + c.moveTo(pe.x - 1.5 * nx - ny / 2, pe.y - 1.5 * ny + nx / 2); + c.lineTo(pe.x - nx / 2, pe.y - ny / 2); + c.lineTo(pe.x - 1.5 * nx + ny / 2, pe.y - 1.5 * ny - nx / 2); + c.stroke(); + + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + + var strokeColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.fillAndStroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Found marker +//********************************************************************************************************************************************************** +mxMarker.addMarker('sysMLFound', function(c, shape, type, pe, unitX, unitY, size, source, sw, filled) +{ + var nx = unitX * (size + sw + 1); + var ny = unitY * (size + sw + 1); + var a = size / 2; + + return function() + { + c.ellipse(pe.x - 0.5 * nx - a, pe.y - 0.5 * ny - a, 2 * a, 2 * a); + + var strokeColor = mxUtils.getValue(shape.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeColor); + c.fillAndStroke(); + }; +}); + +//********************************************************************************************************************************************************** +//Composite State +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLCompositeState(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLCompositeState, mxShape); + +mxShapeSysMLCompositeState.prototype.cst = { + COMP_STATE : 'mxgraph.sysml.compState' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLCompositeState.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); +}; + +mxShapeSysMLCompositeState.prototype.background = function(c, x, y, w, h) +{ + var tabH = 20; + var tabW = 110; + c.roundrect(0, tabH, w, h - tabH, 10, 10); + c.fillAndStroke(); + c.rect(15, 0, tabW, tabH); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLCompositeState.prototype.cst.COMP_STATE, mxShapeSysMLCompositeState); + +mxShapeSysMLCompositeState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 70, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 125, 0)); + + if (w * 0.75 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 125) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Region +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLRegion(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLRegion, mxShape); + +mxShapeSysMLRegion.prototype.cst = { + REGION : 'mxgraph.sysml.region' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLRegion.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var tabH = 20; + var tabW = 50; + + c.translate(x, y); + this.background(c, x, y, w, h, tabH, tabW); + c.setShadow(false); + this.foreground(c, x, y, w, h, tabH, tabW); +}; + +mxShapeSysMLRegion.prototype.background = function(c, x, y, w, h, tabH, tabW) +{ + var strokeW = parseInt(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1')); + c.roundrect(0, tabH, w, h - tabH, 10, 10); + c.fillAndStroke(); + + c.setStrokeWidth(strokeW * 2); + c.rect(15, 0, tabW, tabH); + c.fillAndStroke(); + c.setStrokeWidth(strokeW); +}; + +mxShapeSysMLRegion.prototype.foreground = function(c, x, y, w, h, tabH, tabW) +{ + c.setDashed(true); + c.begin(); + c.moveTo(w * 0.5, tabH); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLRegion.prototype.cst.REGION, mxShapeSysMLRegion); + +mxShapeSysMLRegion.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 22.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.25 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.5 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false, null, 0, (h - 20) * 0.75 + 20)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 15, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 40, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 65, 0)); + + if (w * 0.75 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false, null, 0, 20)); + + if (w * 0.5 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false, null, 0, 20)); + + if (w * 0.25 > 65) + { + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false, null, 0, 20)); + } + } + } + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Simple State +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLSimpleState(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLSimpleState, mxShape); + +mxShapeSysMLSimpleState.prototype.cst = { + SIMPLE_STATE : 'mxgraph.sysml.simpleState' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLSimpleState.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); +// this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLSimpleState.prototype.background = function(c, x, y, w, h) +{ + var strokeW = parseInt(mxUtils.getValue(this.style, mxConstants.STYLE_STROKEWIDTH, '1')); + c.roundrect(0, 0, w, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLSimpleState.prototype.foreground = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, 20); + c.lineTo(w, 20); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSimpleState.prototype.cst.SIMPLE_STATE, mxShapeSysMLSimpleState); + +mxShapeSysMLSimpleState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//State Machine +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLStateMachine(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLStateMachine, mxShape); + +mxShapeSysMLStateMachine.prototype.cst = { + STATE_MACHINE : 'mxgraph.sysml.stateMachine' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLStateMachine.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLStateMachine.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLStateMachine.prototype.foreground = function(c, x, y, w, h) +{ + var strokeC = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeC); + + c.ellipse(w - 20, h * 0.5 - 10, 20, 20); + c.stroke(); + + c.ellipse(w - 17, h * 0.5 - 7, 14, 14); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLStateMachine.prototype.cst.STATE_MACHINE, mxShapeSysMLStateMachine); + +mxShapeSysMLStateMachine.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +// X +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLX(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLX, mxShape); + +mxShapeSysMLX.prototype.cst = { + X : 'mxgraph.sysml.x' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLX.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, h); + c.moveTo(0, h); + c.lineTo(w, 0); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLX.prototype.cst.X, mxShapeSysMLX); + +mxShapeSysMLX.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 1), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Submachine State +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLSubmachineState(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLSubmachineState, mxShape); + +mxShapeSysMLSubmachineState.prototype.cst = { + SUBMACHINE_STATE : 'mxgraph.sysml.submState' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLSubmachineState.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLSubmachineState.prototype.background = function(c, x, y, w, h) +{ + c.roundrect(0, 0, w - 10, h, 10, 10); + c.fillAndStroke(); +}; + +mxShapeSysMLSubmachineState.prototype.foreground = function(c, x, y, w, h) +{ + var strokeC = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + c.setFillColor(strokeC); + + c.ellipse(w - 20, h * 0.5 - 10, 20, 20); + c.stroke(); + + c.ellipse(w - 17, h * 0.5 - 7, 14, 14); + c.fillAndStroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLSubmachineState.prototype.cst.SUBMACHINE_STATE, mxShapeSysMLSubmachineState); + +mxShapeSysMLSubmachineState.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, 2.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0), false, null, w - 12.9, h - 2.9)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.25, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.75, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.25), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.75), false, null, -10, 0)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.25), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.75), false)); + + return (constr); +}; + +//********************************************************************************************************************************************************** +//Use Case with Extension Points +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapeSysMLUseCaseExtensionPoints(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapeSysMLUseCaseExtensionPoints, mxShape); + +mxShapeSysMLUseCaseExtensionPoints.prototype.cst = { + USE_CASE_EXT_PT : 'mxgraph.sysml.useCaseExtPt' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapeSysMLUseCaseExtensionPoints.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapeSysMLUseCaseExtensionPoints.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapeSysMLUseCaseExtensionPoints.prototype.foreground = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(w * 0.02, h * 0.35); + c.lineTo(w * 0.98, h * 0.35); + c.stroke(); +}; + +mxCellRenderer.registerShape(mxShapeSysMLUseCaseExtensionPoints.prototype.cst.USE_CASE_EXT_PT, mxShapeSysMLUseCaseExtensionPoints); + +mxShapeSysMLUseCaseExtensionPoints.prototype.getConstraints = function(style, w, h) +{ + var constr = []; + + constr.push(new mxConnectionConstraint(new mxPoint(0, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(1, 0.5), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 0), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.5, 1), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.145), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.145, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.855), false)); + constr.push(new mxConnectionConstraint(new mxPoint(0.855, 0.145), false)); + + return (constr); +}; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidInstruments.js b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidInstruments.js new file mode 100644 index 0000000000000..b4ab50295be59 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidInstruments.js @@ -0,0 +1,685 @@ +/** + * $Id: mxPidInstruments.js,v 1.4 2014/01/21 13:10:17 gaudenz Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Discrete Instrument +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidDiscInst(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidDiscInst, mxShape); + +mxShapePidDiscInst.prototype.cst = { + SHAPE_DISC_INST : 'mxgraph.pid2inst.discInst', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local' +}; + +mxShapePidDiscInst.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidDiscInst.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidDiscInst.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidDiscInst.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidDiscInst.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidDiscInst.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidDiscInst.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.005, h * 0.48); + c.lineTo(w * 0.995, h * 0.48); + c.moveTo(w * 0.005, h * 0.52); + c.lineTo(w * 0.995, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidDiscInst.prototype.cst.SHAPE_DISC_INST, mxShapePidDiscInst); + +mxShapePidDiscInst.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.145, 0.145), false), + new mxConnectionConstraint(new mxPoint(0.145, 0.855), false), + new mxConnectionConstraint(new mxPoint(0.855, 0.145), false), + new mxConnectionConstraint(new mxPoint(0.855, 0.855), false) + ]; + +//********************************************************************************************************************************************************** +//Shared Control/Display +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidSharedCont(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapePidSharedCont, mxShape); + +mxShapePidSharedCont.prototype.cst = { + SHAPE_SHARED_CONT : 'mxgraph.pid2inst.sharedCont', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local' +}; + +mxShapePidSharedCont.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidSharedCont.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidSharedCont.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidSharedCont.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidSharedCont.prototype.cst.MOUNTING, 'field'); + + c.ellipse(0, 0, w, h); + c.fillAndStroke(); + + if (mounting === mxShapePidSharedCont.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidSharedCont.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.005, h * 0.48); + c.lineTo(w * 0.995, h * 0.48); + c.moveTo(w * 0.005, h * 0.52); + c.lineTo(w * 0.995, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidSharedCont.prototype.cst.SHAPE_SHARED_CONT, mxShapePidSharedCont); + +mxShapePidSharedCont.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0), false), + new mxConnectionConstraint(new mxPoint(0, 1), false), + new mxConnectionConstraint(new mxPoint(1, 0), false), + new mxConnectionConstraint(new mxPoint(1, 1), false) + ]; + +//********************************************************************************************************************************************************** +//Computer Function +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidCompFunc(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapePidCompFunc, mxShape); + +mxShapePidCompFunc.prototype.cst = { + SHAPE_COMP_FUNC : 'mxgraph.pid2inst.compFunc', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local' +}; + +mxShapePidCompFunc.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidCompFunc.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidCompFunc.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.75, h); + c.lineTo(w * 0.25, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidCompFunc.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidCompFunc.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidCompFunc.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidCompFunc.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.01, h * 0.48); + c.lineTo(w * 0.99, h * 0.48); + c.moveTo(w * 0.01, h * 0.52); + c.lineTo(w * 0.99, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidCompFunc.prototype.cst.SHAPE_COMP_FUNC, mxShapePidCompFunc); + +mxShapePidCompFunc.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 0), false), + new mxConnectionConstraint(new mxPoint(0.75, 0), false), + new mxConnectionConstraint(new mxPoint(0.25, 1), false), + new mxConnectionConstraint(new mxPoint(0.75, 1), false) + ]; + +//********************************************************************************************************************************************************** +//Computer Function +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidProgLogCont(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapePidProgLogCont, mxShape); + +mxShapePidProgLogCont.prototype.cst = { + SHAPE_PROG_LOG_CONT : 'mxgraph.pid2inst.progLogCont', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local' +}; + +mxShapePidProgLogCont.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidProgLogCont.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidProgLogCont.prototype.background = function(c, x, y, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidProgLogCont.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidProgLogCont.prototype.cst.MOUNTING, 'field'); + + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.stroke(); + + if (mounting === mxShapePidProgLogCont.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidProgLogCont.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidDiscInst.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.02, h * 0.48); + c.lineTo(w * 0.98, h * 0.48); + c.moveTo(w * 0.02, h * 0.52); + c.lineTo(w * 0.98, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidProgLogCont.prototype.cst.SHAPE_PROG_LOG_CONT, mxShapePidProgLogCont); + +mxShapePidProgLogCont.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0, 0), false), + new mxConnectionConstraint(new mxPoint(0, 1), false), + new mxConnectionConstraint(new mxPoint(1, 0), false), + new mxConnectionConstraint(new mxPoint(1, 1), false) + ]; + +//********************************************************************************************************************************************************** +//Indicator +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidIndicator(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapePidIndicator, mxShape); + +mxShapePidIndicator.prototype.cst = { + SHAPE_INDICATOR : 'mxgraph.pid2inst.indicator', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local', + IND_TYPE : 'indType', + INSTRUMENT : 'inst', + CONTROL : 'ctrl', + FUNCTION : 'func', + PLC : 'plc' +}; + +mxShapePidIndicator.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]}, + {name: 'indType', dispName: 'Type', type: 'enum', defVal:'inst', + enumList: [ + {val:'inst', dispName:'Instrument'}, + {val:'ctrl', dispName:'Control'}, + {val:'func', dispName:'Function'}, + {val:'plc', dispName:'PLC'} + ]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidIndicator.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidIndicator.prototype.background = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst'); + + c.begin(); + c.moveTo(w * 0.5, w); + c.lineTo(w * 0.5, h); + c.stroke(); + + if (type === mxShapePidIndicator.prototype.cst.INSTRUMENT) + { + c.ellipse(0, 0, w, w); + c.fillAndStroke(); + } + else if (type === mxShapePidIndicator.prototype.cst.CONTROL) + { + c.rect(0, 0, w, w); + c.fillAndStroke(); + } + else if (type === mxShapePidIndicator.prototype.cst.FUNCTION) + { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w * 0.25, 0); + c.lineTo(w * 0.75, 0); + c.lineTo(w, w * 0.5); + c.lineTo(w * 0.75, w); + c.lineTo(w * 0.25, w); + c.close(); + c.fillAndStroke(); + } + else if (type === mxShapePidIndicator.prototype.cst.PLC) + { + c.rect(0, 0, w, w); + c.fillAndStroke(); + } +}; + +mxShapePidIndicator.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.MOUNTING, 'field'); + var type = mxUtils.getValue(this.style, mxShapePidIndicator.prototype.cst.IND_TYPE, 'inst'); + + if (type === mxShapePidIndicator.prototype.cst.CONTROL) + { + c.ellipse(0, 0, w, w); + c.stroke(); + } + else if (type === mxShapePidIndicator.prototype.cst.PLC) + { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, w * 0.5); + c.lineTo(w * 0.5, w); + c.close(); + c.stroke(); + } + + if (mounting === mxShapePidIndicator.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w, w * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidIndicator.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, w * 0.5); + c.lineTo(w, w * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidIndicator.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.005, w * 0.48); + c.lineTo(w * 0.995, w * 0.48); + c.moveTo(w * 0.005, w * 0.52); + c.lineTo(w * 0.995, w * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidIndicator.prototype.cst.SHAPE_INDICATOR, mxShapePidIndicator); + +mxShapePidIndicator.prototype.constraints = [new mxConnectionConstraint(new mxPoint(0.5, 1), true)]; + +//********************************************************************************************************************************************************** +//Logic +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidLogic(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxShapePidLogic, mxShape); + +mxShapePidLogic.prototype.cst = { + SHAPE_LOGIC : 'mxgraph.pid2inst.logic', + MOUNTING : 'mounting', + FIELD : 'field', + ROOM : 'room', + INACCESSIBLE : 'inaccessible', + LOCAL : 'local' +}; + +mxShapePidLogic.prototype.customProperties = [ + {name: 'mounting', dispName: 'Mounting', type: 'enum', defVal:'field', + enumList: [ + {val:'field', dispName:'Field'}, + {val:'room', dispName:'Room'}, + {val:'inaccessible', dispName:'Inaccessible'}, + {val:'local', dispName:'Local'} + ]} +]; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidLogic.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidLogic.prototype.background = function(c, x, y, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidLogic.prototype.foreground = function(c, x, y, w, h) +{ + var mounting = mxUtils.getValue(this.style, mxShapePidLogic.prototype.cst.MOUNTING, 'field'); + + if (mounting === mxShapePidLogic.prototype.cst.ROOM) + { + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidLogic.prototype.cst.INACCESSIBLE) + { + c.setDashed(true); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w, h * 0.5); + c.stroke(); + } + else if (mounting === mxShapePidLogic.prototype.cst.LOCAL) + { + c.begin(); + c.moveTo(w * 0.02, h * 0.48); + c.lineTo(w * 0.98, h * 0.48); + c.moveTo(w * 0.02, h * 0.52); + c.lineTo(w * 0.98, h * 0.52); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidLogic.prototype.cst.SHAPE_LOGIC, mxShapePidLogic); + +mxShapePidLogic.prototype.constraints = [ + new mxConnectionConstraint(new mxPoint(0.5, 0), true), + new mxConnectionConstraint(new mxPoint(0.5, 1), true), + new mxConnectionConstraint(new mxPoint(0, 0.5), true), + new mxConnectionConstraint(new mxPoint(1, 0.5), true), + new mxConnectionConstraint(new mxPoint(0.25, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.25, 0.75), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.25), false), + new mxConnectionConstraint(new mxPoint(0.75, 0.75), false) + ]; diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidMisc.js b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidMisc.js new file mode 100644 index 0000000000000..b02797ef2b4df --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidMisc.js @@ -0,0 +1,500 @@ +/** + * $Id: mxPidMisc.js,v 1.4 2013/11/22 10:46:56 mate Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Fan +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidFan(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidFan, mxShape); + +mxShapePidFan.prototype.cst = { + SHAPE_FAN : 'mxgraph.pid2misc.fan', + FAN_TYPE : 'fanType', + COMMON : 'common', + AXIAL : 'axial', + RADIAL : 'radial' +}; + +mxShapePidFan.prototype.customProperties = [ + {name: 'fanType', dispName: 'Type', type: 'enum', defVal:'field', + enumList: [ + {val:'common', dispName:'Common'}, + {val:'axial', dispName:'Axial'}, + {val:'radial', dispName:'Radial'} + ]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidFan.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidFan.prototype.background = function(c, x, y, w, h) +{ + c.ellipse(0, 0, w, h); + c.fillAndStroke(); +}; + +mxShapePidFan.prototype.foreground = function(c, x, y, w, h) +{ + + c.begin(); + c.moveTo(w * 0.3, h * 0.045); + c.lineTo(w * 0.97, h * 0.33); + c.moveTo(w * 0.3, h * 0.955); + c.lineTo(w * 0.97, h * 0.67); + + c.moveTo(w * 0.4228, h * 0.3655); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.5, h * 0.5); + c.arcTo(w * 0,15, h * 0.03, 50, 0, 1, w * 0.3772, h * 0.4045); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.3025, h * 0.271); + c.arcTo(w * 0.15, h * 0.03, 50, 0, 1, w * 0.4228, h * 0.3655); + c.close(); + + c.moveTo(w * 0.377, h * 0.5973); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.4966, h * 0.5019); + c.arcTo(w * 0,15, h * 0.03, -50, 0, 1, w * 0.423, h * 0.636); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.3034, h * 0.7314); + c.arcTo(w * 0.15, h * 0.03, -50, 0, 1, w * 0.377, h * 0.5973); + c.close(); + c.stroke(); + + c.ellipse(w * 0.5, h * 0.47, w * 0.3, h * 0.06); + c.stroke(); + + var type = mxUtils.getValue(this.style, mxShapePidFan.prototype.cst.FAN_TYPE, 'common'); + + if (type === mxShapePidFan.prototype.cst.AXIAL) + { + c.begin(); + c.moveTo(w * 0.1, h * 0.5); + c.lineTo(w * 0.3, h * 0.5); + c.stroke(); + } + else if (type === mxShapePidFan.prototype.cst.RADIAL) + { + c.begin(); + c.moveTo(w * 0.2, h * 0.4); + c.lineTo(w * 0.2, h * 0.6); + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidFan.prototype.cst.SHAPE_FAN, mxShapePidFan); + +//********************************************************************************************************************************************************** +//Column +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidColumn(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidColumn, mxShape); + +mxShapePidColumn.prototype.cst = { + SHAPE_COLUMN : 'mxgraph.pid2misc.column', + COLUMN_TYPE : 'columnType', + COMMON : 'common', + FIXED : 'fixed', + FLUIDIZED : 'fluid', + BAFFLE : 'baffle', + VALVE : 'valve', + BUBBLE : 'bubble', + NOZZLE : 'nozzle', + TRAY : 'tray' +}; + +mxShapePidColumn.prototype.customProperties = [ + {name: 'columnType', dispName: 'Type', type: 'enum', defVal:'field', + enumList: [ + {val:'common', dispName:'Common'}, + {val:'fixed', dispName:'Fixed'}, + {val:'fluid', dispName:'Fluid'}, + {val:'baffle', dispName:'Baffle'}, + {val:'valve', dispName:'Valve'}, + {val:'bubble', dispName:'Bubble'}, + {val:'nozzle', dispName:'Nozzle'}, + {val:'tray', dispName:'Tray'} + ]} +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidColumn.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); + this.foreground(c, x, y, w, h); +}; + +mxShapePidColumn.prototype.background = function(c, x, y, w, h) +{ + h = Math.max(h, 30); + + c.begin(); + c.moveTo(0, 15); + c.arcTo(w * 0.5, 15, 0, 0, 1, w, 15); + c.lineTo(w, h - 15); + c.arcTo(w * 0.5, 15, 0, 0, 1, 0, h - 15); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidColumn.prototype.foreground = function(c, x, y, w, h) +{ + var type = mxUtils.getValue(this.style, mxShapePidColumn.prototype.cst.COLUMN_TYPE, 'common'); + + if (type === mxShapePidColumn.prototype.cst.FIXED) + { + var step = w * 1.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + + c.begin(); + + for (var i = 0; i <= range - step; i += step) + { + c.moveTo(0, i + off + step * 0.1); + c.lineTo(w, i + off + step * 0.1); + c.moveTo(0, i + off + step * 0.9); + c.lineTo(w, i + off + step * 0.9); + c.moveTo(0, i + off + step * 0.1); + c.lineTo(w, i + off + step * 0.9); + c.moveTo(0, i + off + step * 0.9); + c.lineTo(w, i + off + step * 0.1); + } + + c.stroke(); + } + else if (type === mxShapePidColumn.prototype.cst.TRAY) + { + var step = w * 0.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + + c.setDashed(true); + c.begin(); + + for (var i = 0; i <= range; i += step) + { + c.moveTo(0, i + off); + c.lineTo(w, i + off); + } + + c.stroke(); + } + else if (type === mxShapePidColumn.prototype.cst.FLUIDIZED) + { + var stepY = w * 0.1; + var stepX = w * 0.1; + var range = h - 50; + var rem = range % stepY; + var off = 25; + var dot = Math.min(w, h) * 0.02; + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + var odd = 0; + + c.setFillColor(strokeColor); + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + + if (dashed === '0') + { + c.setDashed(false); + } + else + { + c.setDashed(true); + } + + var counter = 0; + + for (var i = off + stepY * 0.5; i < range + off - dot; i += stepY) + { + var startJ = stepX; + odd = counter % 2; + + if (odd === 0) + { + startJ = stepX * 0.5; + } + + for (var j = startJ; j < w; j += stepX ) + { + c.ellipse(j, i, dot, dot); + c.fillAndStroke(); + } + + counter++; + } + } + else if (type === mxShapePidColumn.prototype.cst.BAFFLE) + { + var stepY = w * 0.2; + var range = h - 50 - stepY; + var rem = range % stepY; + var off = 25 + stepY * 0.5; + var odd = 0; + + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + + var counter = 0; + + c.begin(); + + for (var i = off + stepY * 0.5; i < range + off; i += stepY) + { + odd = counter % 2; + + if (odd === 0) + { + c.moveTo(0, i); + c.lineTo(w * 0.9, i); + c.lineTo(w * 0.9, i - stepY * 0.3); + } + else + { + c.moveTo(w * 0.1, i - stepY * 0.5); + c.lineTo(w * 0.1, i); + c.lineTo(w, i); + } + + + counter++; + } + + c.stroke(); + } + else if (type === mxShapePidColumn.prototype.cst.VALVE || type === mxShapePidColumn.prototype.cst.BUBBLE) + { + var stepY = w * 0.2; + var range = h - 50 - stepY; + var rem = range % stepY; + var off = 25 + stepY * 0.5; + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, '0'); + var odd = 0; + + c.setFillColor(strokeColor); + c.setDashed(true); + c.begin(); + c.moveTo(0, 25); + c.lineTo(w, 25); + c.moveTo(0, h - 25); + c.lineTo(w, h - 25); + c.stroke(); + + if (dashed === '0') + { + c.setDashed(false); + } + else + { + c.setDashed(true); + } + + c.begin(); + + for (var i = off + stepY * 0.5; i < range + off; i += stepY) + { + c.moveTo(0, i); + c.lineTo(w * 0.4, i); + + if (type === mxShapePidColumn.prototype.cst.VALVE) + { + c.moveTo(w * 0.4, i - stepY * 0.2); + c.lineTo(w * 0.6, i - stepY * 0.2); + } + else if (type === mxShapePidColumn.prototype.cst.BUBBLE) + { + c.moveTo(w * 0.25, i - stepY * 0.2); + c.arcTo(stepY * 3, stepY * 3, 0, 0, 1, w * 0.75, i - stepY * 0.2); + } + + c.moveTo(w * 0.6, i); + c.lineTo(w, i); + } + + c.stroke(); + } + else if (type === mxShapePidColumn.prototype.cst.NOZZLE) + { + var step = w * 1.2; + var range = h - 50; + var rem = range % step; + var off = rem * 0.5 + 25; + var dashed = mxUtils.getValue(this.style, mxConstants.STYLE_DASHED, 0); + + + for (var i = 0; i <= range - step; i += step) + { + c.setDashed(true); + + c.begin(); + c.moveTo(0, i + off + step * 0.2); + c.lineTo(w, i + off + step * 0.2); + c.moveTo(0, i + off + step * 0.8); + c.lineTo(w, i + off + step * 0.8); + c.stroke(); + + if (dashed === 0) + { + c.setDashed(false); + } + else + { + c.setDashed(true); + } + + c.begin(); + c.moveTo(0, i + off + step * 0.2); + c.lineTo(w, i + off + step * 0.8); + c.moveTo(0, i + off + step * 0.8); + c.lineTo(w, i + off + step * 0.2); + + if (i !== 0) + { + c.moveTo(0, i + off); + c.lineTo(w * 0.5, i + off); + c.moveTo(w * 0.5 - step * 0.08, i + off + step * 0.08); + c.lineTo(w * 0.5, i + off); + c.lineTo(w * 0.5 + step * 0.08, i + off + step * 0.08); + c.moveTo(w * 0.5, i + off); + c.lineTo(w * 0.5, i + off + step * 0.08); + } + + c.stroke(); + } + + c.stroke(); + } +}; + +mxCellRenderer.registerShape(mxShapePidColumn.prototype.cst.SHAPE_COLUMN, mxShapePidColumn); + +//********************************************************************************************************************************************************** +//Conveyor +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidConveyor(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidConveyor, mxShape); + +mxShapePidConveyor.prototype.cst = { + SHAPE_CONVEYOR : 'mxgraph.pid2misc.conveyor' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidConveyor.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, x, y, w, h); + c.setShadow(false); +}; + +mxShapePidConveyor.prototype.background = function(c, x, y, w, h) +{ + var wheelSize = Math.min(h, w * 0.5); + + c.begin(); + c.moveTo(wheelSize * 0.5, 0); + c.lineTo(w - wheelSize * 0.5, 0); + c.stroke(); + + c.ellipse(0, 0, wheelSize, wheelSize); + c.fillAndStroke(); + c.ellipse(w - wheelSize, 0, wheelSize, wheelSize); + c.fillAndStroke(); + + c.begin(); + c.moveTo(wheelSize * 0.5, wheelSize); + c.lineTo(w - wheelSize * 0.5, wheelSize); + c.stroke(); + + //holders + + var dist = w - wheelSize * 1.8; + var startX = wheelSize * 0.9; + var step = wheelSize * 0.7; + + for (var i = 0; i < dist; i = i + step) + { + c.rect(startX + i, 0, wheelSize * 0.2, wheelSize * 0.1); + c.fillAndStroke(); + c.rect(startX + i, wheelSize * 0.9, wheelSize * 0.2, wheelSize * 0.1); + c.fillAndStroke(); + } + +}; + +mxCellRenderer.registerShape(mxShapePidConveyor.prototype.cst.SHAPE_CONVEYOR, mxShapePidConveyor); + diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidValves.js b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidValves.js new file mode 100644 index 0000000000000..97235c5360d7c --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/pid2/mxPidValves.js @@ -0,0 +1,1149 @@ +/** + * $Id: mxPidValves.js,v 1.5 2013/10/22 12:55:55 mate Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ + +//********************************************************************************************************************************************************** +//Valve +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidValve(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidValve, mxShape); + +mxShapePidValve.prototype.cst = { + SHAPE_VALVE : 'mxgraph.pid2valves.valve', + //states + DEFAULT_STATE : 'defState', + CLOSED : 'closed', + OPEN : 'open', + //actuators + ACTUATOR : 'actuator', + MANUAL : 'man', + DIAPHRAGM : 'diaph', + BALANCED_DIAPHRAGM : 'balDiaph', + MOTOR : 'motor', + NONE : 'none', + SPRING : 'spring', + PILOT : 'pilot', + POWERED: 'powered', + SOLENOID : 'solenoid', + SOLENOID_MANUAL_RESET : 'solenoidManRes', + SINGLE_ACTING : 'singActing', + DOUBLE_ACTING : 'dblActing', + PILOT_CYLINDER : 'pilotCyl', + DIGITAL : 'digital', + WEIGHT : 'weight', + KEY : 'key', + ELECTRO_HYDRAULIC : 'elHyd', + //types + VALVE_TYPE : 'valveType', + BUTTERFLY : 'butterfly', + CHECK : 'check', + GATE : 'gate', + GLOBE : 'globe', + NEEDLE : 'needle', + PLUG : 'plug', + SELF_DRAINING : 'selfDrain', + ANGLE : 'angle', + ANGLE_GLOBE : 'angleGlobe', + THREE_WAY : 'threeWay', + ANGLE_BLOWDOWN : 'angBlow', + BALL : 'ball' +}; + +mxShapePidValve.prototype.customProperties = [ + {name: 'defState', dispName: 'Default State', type: 'enum', defVal:'open', + enumList: [ + {val:'closed', dispName:'Closed'}, + {val:'open', dispName:'Open'} + ]}, + {name: 'actuator', dispName: 'Actuator', type: 'enum', defVal:'man', + enumList: [ + {val:'man', dispName:'Manual'}, + {val:'diaph', dispName:'Diphragm'}, + {val:'balDiaph', dispName:'Balanced Diaphragm'}, + {val:'motor', dispName:'Motor'}, + {val:'none', dispName:'None'}, + {val:'spring', dispName:'Spring'}, + {val:'pilot', dispName:'Pilot'}, + {val:'powered', dispName:'Powered'}, + {val:'solenoid', dispName:'Solenoid'}, + {val:'solenoidManRes', dispName:'Solenoid w/ Manual Reset'}, + {val:'singActing', dispName:'Single Acting'}, + {val:'dblActing', dispName:'Double Acting'}, + {val:'pilotCyl', dispName:'Pilot Cylinder'}, + {val:'digital', dispName:'Digital'}, + {val:'weight', dispName:'Weight'}, + {val:'key', dispName:'Key'}, + {val:'elHyd', dispName:'Electro-Hidraulic'} + ]}, + {name: 'valveType', dispName: 'Type', type: 'enum', defVal:'gate', + enumList: [ + {val:'butterfly', dispName:'Butterfly'}, + {val:'check', dispName:'check'}, + {val:'gate', dispName:'Gate'}, + {val:'globe', dispName:'Globe'}, + {val:'needle', dispName:'Needle'}, + {val:'plug', dispName:'Plug'}, + {val:'selfDrain', dispName:'Self Draining'}, + {val:'angle', dispName:'Angle'}, + {val:'angleGlobe', dispName:'Angle Globe'}, + {val:'threeWay', dispName:'Three Way'}, +// {val:'angBlow', dispName:'Angle Blowdown'}, + {val:'ball', dispName:'Ball'} + ]}, +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidValve.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); + var actuator = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.ACTUATOR, mxShapePidValve.prototype.cst.NONE); + var actH = 0; + + if (actuator !== 'none') + { + if (this.isAngleVariant(valveType)) + { + actH = h * 0.3333; + } + else + { + actH = h * 0.4; + } + } + + c.translate(x, y); + c.setLineJoin('round'); + + this.background(c, x, y, w, h, valveType, actuator, actH); + c.setShadow(false); + this.foreground(c, x, y, w, h, valveType, actuator, actH); +}; + +mxShapePidValve.prototype.background = function(c, x, y, w, h, valveType, actuator, actH) +{ + //draw the actuator + if (actuator !== mxShapePidValve.prototype.cst.NONE) + { + if (this.isAngleVariant(valveType)) + { + this.drawActuatorBg(c, x, y, w, h / 1.2, actuator, actH); + } + else + { + this.drawActuatorBg(c, x, y, w, h, actuator, actH); + } + } + + //draw the valve body + if (this.isGateVariant(valveType)) + { + this.drawGateVariantBg(c, 0, 0, w, h, valveType, actuator, actH); + } + else if (this.isAngleVariant(valveType)) + { + this.drawAngleVariantBg(c, 0, 0, w, h, valveType, actuator, actH); + } + else if (valveType === mxShapePidValve.prototype.cst.BUTTERFLY) + { + this.drawButterflyValve(c, 0, 0, w, h, actuator, actH); + } + else if (valveType === mxShapePidValve.prototype.cst.CHECK) + { + this.drawCheckValve(c, 0, 0, w, h, actuator, actH); + } +}; + +mxShapePidValve.prototype.foreground = function(c, x, y, w, h, valveType, actuator, actH) +{ + var valveType = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.VALVE_TYPE, 'gate'); + + //draw the actuator + if (actuator !== mxShapePidValve.prototype.cst.NONE) + { + if (this.isAngleVariant(valveType)) + { + this.drawActuatorFg(c, x, y, w, h / 1.2, actuator, actH); + } + else + { + this.drawActuatorFg(c, x, y, w, h, actuator, actH); + } + } + + if (this.isGateVariant(valveType)) + { + this.drawGateVariantFg(c, 0, 0, w, h, valveType, actuator, actH); + } + if (this.isAngleVariant(valveType)) + { + this.drawAngleVariantFg(c, 0, 0, w, h, valveType, actuator, actH); + } +}; + +mxShapePidValve.prototype.drawActuatorBg = function(c, x, y, w, h, actuator) +{ + if (this.isSquareVariant(actuator)) + { + c.translate(w * 0.325, 0); + this.drawSquareAct(c, w * 0.35, h * 0.7, actuator); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.MANUAL) + { + c.translate(w * 0.25, h * 0.15); + this.drawManAct(c, w * 0.5, h * 0.55); + c.translate(- w * 0.25, - h * 0.15); + } + else if (actuator === mxShapePidValve.prototype.cst.DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.1); + this.drawDiaphAct(c, w * 0.5, h * 0.6); + c.translate(- w * 0.25, - h * 0.1); + } + else if (actuator === mxShapePidValve.prototype.cst.BALANCED_DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.1); + this.drawBalDiaphActBg(c, w * 0.5, h * 0.6); + c.translate(- w * 0.25, - h * 0.1); + } + else if (actuator === mxShapePidValve.prototype.cst.MOTOR || actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) + { + c.translate(w * 0.325, 0); + this.drawCircleAct(c, w * 0.35, h * 0.7, actuator); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.SPRING) + { + c.translate(w * 0.36, 0); + this.drawSpringAct(c, w * 0.28, h * 0.7); + c.translate(- w * 0.36, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.SOLENOID_MANUAL_RESET) + { + c.translate(w * 0.325, 0); + this.drawSolenoidManResetAct(c, w * 0.575, h * 0.7); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.SINGLE_ACTING) + { + c.translate(w * 0.35, 0); + this.drawSingActingActBg(c, w * 0.65, h * 0.7); + c.translate(- w * 0.35, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.DOUBLE_ACTING) + { + c.translate(w * 0.35, 0); + this.drawDblActingActBg(c, w * 0.65, h * 0.7); + c.translate(- w * 0.35, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.PILOT_CYLINDER) + { + c.translate(w * 0.35, 0); + this.drawPilotCylinderActBg(c, w * 0.65, h * 0.7); + c.translate(- w * 0.35, 0); + } + else if (actuator === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) + { + c.translate(w * 0.5, h * 0.2); + this.drawAngleBlowdownAct(c, w * 0.4, h * 0.5); + c.translate(- w * 0.5, - h * 0.2); + } +}; + +mxShapePidValve.prototype.drawActuatorFg = function(c, x, y, w, h, actuator) +{ + if (actuator === mxShapePidValve.prototype.cst.BALANCED_DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.1); + this.drawBalDiaphActFg(c, w * 0.5, h * 0.6); + c.translate(- w * 0.25, - h * 0.1); + } + else if (actuator === mxShapePidValve.prototype.cst.SINGLE_ACTING || + actuator === mxShapePidValve.prototype.cst.DOUBLE_ACTING || + actuator === mxShapePidValve.prototype.cst.PILOT_CYLINDER) + { + c.translate(w * 0.35, 0); + this.drawActingActFg(c, w * 0.65, h * 0.7); + c.translate(- w * 0.35, 0); + } +}; + +mxShapePidValve.prototype.drawManAct = function(c, w, h) +{ + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapePidValve.prototype.drawDiaphAct = function(c, w, h) +{ + c.begin(); + c.moveTo(w * 0.5, h * 0.2); + c.lineTo(w * 0.5, h); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.2); + c.arcTo(w * 0.6, h * 0.4, 0, 0, 1, w, h * 0.2); + c.close(); + c.fillAndStroke(); +}; + +mxShapePidValve.prototype.drawBalDiaphActBg = function(c, w, h) +{ + c.ellipse(0, 0, w, h * 0.3); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.3); + c.lineTo(w * 0.5, h); + c.stroke(); +}; + +mxShapePidValve.prototype.drawBalDiaphActFg = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h * 0.15); + c.lineTo(w, h * 0.15); + c.stroke(); +}; + +mxShapePidValve.prototype.drawCircleAct = function(c, w, h, actuator) +{ + c.ellipse(0, 0, w, h * 0.5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.stroke(); + + var m = ''; + + if (actuator === mxShapePidValve.prototype.cst.MOTOR) + { + m = 'M'; + } + else if (actuator === mxShapePidValve.prototype.cst.ELECTRO_HYDRAULIC) + { + m = 'E/H'; + } + + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawSpringAct = function(c, w, h) +{ + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h); + c.moveTo(w * 0.32, h * 0.16); + c.lineTo(w * 0.68, h * 0.08); + c.moveTo(w * 0.21, h * 0.32); + c.lineTo(w * 0.79, h * 0.20); + c.moveTo(w * 0.1, h * 0.52); + c.lineTo(w * 0.9, h * 0.36); + c.moveTo(0, h * 0.72); + c.lineTo(w, h * 0.5); + c.stroke(); +}; + +mxShapePidValve.prototype.drawSolenoidManResetAct = function(c, w, h) +{ + c.rect(0, 0, w * 0.61, h * 0.46); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.56, h * 0.6); + c.lineTo(w * 0.78, h * 0.5); + c.lineTo(w, h * 0.6); + c.lineTo(w * 0.78, h * 0.7); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.305, h * 0.46); + c.lineTo(w * 0.305, h); + c.moveTo(w * 0.305, h * 0.6); + c.lineTo(w * 0.56, h * 0.6); + c.stroke(); + + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.305, h * 0.23, 0, 0, 'S', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + + c.setFontStyle(0); + c.setFontSize(Math.min(w, h) * 0.15); + c.text(w * 0.78, h * 0.6, 0, 0, 'R', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawSingActingActBg = function(c, w, h) +{ + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.23); + c.lineTo(w, h * 0.23); + c.moveTo(w * 0.77, h * 0.15); + c.lineTo(w * 0.69, h * 0.31); + c.moveTo(w * 0.82, h * 0.15); + c.lineTo(w * 0.74, h * 0.31); + c.stroke(); +}; + +mxShapePidValve.prototype.drawActingActFg = function(c, w, h) +{ + c.begin(); + c.moveTo(w * 0.23, h * 0.23); + c.lineTo(w * 0.23, h * 0.46); + c.moveTo(0, h * 0.23); + c.lineTo(w * 0.46, h * 0.23); + c.stroke(); +}; + +mxShapePidValve.prototype.drawDblActingActBg = function(c, w, h) +{ + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.115); + c.lineTo(w, h * 0.115); + c.moveTo(w * 0.77, h * 0.035); + c.lineTo(w * 0.69, h * 0.195); + c.moveTo(w * 0.82, h * 0.035); + c.lineTo(w * 0.74, h * 0.195); + c.moveTo(w * 0.46, h * 0.345); + c.lineTo(w, h * 0.345); + c.moveTo(w * 0.77, h * 0.265); + c.lineTo(w * 0.69, h * 0.425); + c.moveTo(w * 0.82, h * 0.265); + c.lineTo(w * 0.74, h * 0.425); + c.stroke(); +}; + +mxShapePidValve.prototype.drawPilotCylinderActBg = function(c, w, h) +{ + c.rect(0, 0, w * 0.46, h * 0.46); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.23, h * 0.46); + c.lineTo(w * 0.23, h); + c.moveTo(w * 0.46, h * 0.23); + c.lineTo(w * 0.77, h * 0.23); + c.stroke(); + + c.rect(w * 0.77, h * 0.115, w * 0.23, h * 0.23); + c.fillAndStroke(); + + c.setFontStyle(0); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.15); + c.text(w * 0.885, h * 0.23, 0, 0, 'P', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawAngleBlowdownAct = function(c, w, h) +{ + c.begin(); + c.moveTo(w * 0.34, 0); + c.lineTo(w, h * 0.405); + c.moveTo(0, h); + c.lineTo(w * 0.665, h * 0.205); + c.stroke(); +}; + +mxShapePidValve.prototype.drawSquareAct = function(c, w, h, actuator) +{ + c.rect(0, 0, w, h * 0.5); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.5); + c.lineTo(w * 0.5, h); + c.stroke(); + + var m = ''; + + if (actuator === mxShapePidValve.prototype.cst.PILOT) + { + m = 'P'; + } + else if (actuator === mxShapePidValve.prototype.cst.SOLENOID) + { + m = 'S'; + } + else if (actuator === mxShapePidValve.prototype.cst.DIGITAL) + { + m = 'D'; + } + else if (actuator === mxShapePidValve.prototype.cst.WEIGHT) + { + m = 'W'; + } + else if (actuator === mxShapePidValve.prototype.cst.KEY) + { + m = 'K'; + } + + c.setFontStyle(1); + c.setFontFamily('Helvetica'); + c.setFontSize(Math.min(w, h) * 0.4); + c.text(w * 0.5, h * 0.25, 0, 0, m, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +mxShapePidValve.prototype.drawGateVariantFg = function(c, x, y, w, h, valveType, actuator, actH) +{ + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + if (valveType === mxShapePidValve.prototype.cst.BALL) + { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.fillAndStroke(); + } + else if (valveType === mxShapePidValve.prototype.cst.GLOBE) + { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } + else if (valveType === mxShapePidValve.prototype.cst.PLUG) + { + this.drawPlug(c, x + w * 0.4, y + actH + (h - actH) * 0.25, w * 0.2, (h - actH) * 0.5); + } + else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) + { + this.drawNeedle(c, x + w * 0.45, y + actH + (h - actH) * 0.1, w * 0.1, (h - actH) * 0.9); + } + else if (valveType === mxShapePidValve.prototype.cst.SELF_DRAINING) + { + this.drawDrain(c, x + w * 0.48, y + actH + (h - actH) * 0.5, w * 0.04, (h - actH) * 0.49); + } +}; + +mxShapePidValve.prototype.drawAngleVariantFg = function(c, x, y, w, h, valveType, actuator, actH) +{ + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + if (valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE) + { + if (actuator === 'none') + { + c.ellipse(w * 0.34, h * 0.175, w * 0.32, h * 0.4); + } + else + { + c.ellipse(w * 0.34, h * 0.45, w * 0.32, h * 0.2667); + } + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } +}; + +mxShapePidValve.prototype.drawGateVariantBg = function(c, x, y, w, h, valveType, actuator, actH) +{ + if (valveType === mxShapePidValve.prototype.cst.GATE) + { + this.drawGateValve(c, x, y + actH, w, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.BALL || valveType === mxShapePidValve.prototype.cst.GLOBE) + { + c.ellipse(x + w * 0.3, y + actH + (h - actH) * 0.18, w * 0.4, (h - actH) * 0.64); + c.fillAndStroke(); + this.drawGateValve(c, x, y + actH, w, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.PLUG) + { + this.drawPlug(c, x + w * 0.4, y + actH + (h - actH) * 0.25, w * 0.2, (h - actH) * 0.5); + this.drawGateValve(c, x, y + actH, w, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.NEEDLE) + { + this.drawNeedle(c, x + w * 0.45, y + actH + (h - actH) * 0.1, w * 0.1, (h - actH) * 0.9); + this.drawGateValve(c, x, y + actH, w, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.SELF_DRAINING) + { + this.drawDrain(c, x + w * 0.48, y + actH + (h - actH) * 0.5, w * 0.04, (h - actH) * 0.49); + this.drawGateValve(c, x, y + actH, w, h - actH); + } +}; + +mxShapePidValve.prototype.drawAngleVariantBg = function(c, x, y, w, h, valveType, actuator, actH) +{ + if (valveType === mxShapePidValve.prototype.cst.ANGLE) + { + this.drawAngleValve(c, w * 0.2, y + actH, w * 0.8, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE) + { + this.drawAngleGlobeValveBg(c, w * 0.2, y + actH, w * 0.8, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.THREE_WAY) + { + this.drawThreeWayValve(c, 0, y + actH, w, h - actH); + } + else if (valveType === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) + { + this.drawAngleBlowdownValve(c, x, y + actH, w, h - actH); + } +}; + +mxShapePidValve.prototype.drawPlug = function(c, x, y, w, h) +{ + c.translate(x, y); + c.begin(); + c.moveTo(0, h * 0.5); + c.lineTo(w * 0.5, 0); + c.lineTo(w, h * 0.5); + c.lineTo(w * 0.5, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawNeedle = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w, 0); + c.lineTo(w * 0.5, h); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawDrain = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + c.translate(x, y); + c.begin(); + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.5, h * 0.96); + c.stroke(); + + c.begin(); + c.moveTo(0, h * 0.9); + c.lineTo(w, h * 0.9); + c.lineTo(w * 0.5, h); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawGateValve = function(c, x, y, w, h) +{ + var defState = mxUtils.getValue(this.style, mxShapePidValve.prototype.cst.DEFAULT_STATE, 'open'); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(0, h); + c.close(); + c.moveTo(w, 0); + c.lineTo(w * 0.5, h * 0.5); + c.lineTo(w, h); + c.close(); + + if (defState === mxShapePidValve.prototype.cst.CLOSED) + { + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + } + else + { + c.fillAndStroke(); + } + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleValve = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.close(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleGlobeValveBg = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.ellipse(w * 0.175, h * 0.175, w * 0.4, h * 0.4); + c.fillAndStroke(); + c.begin(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w, 0); + c.lineTo(w, h * 0.75); + c.close(); + c.moveTo(w * 0.375, h * 0.375); + c.lineTo(w * 0.75, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleGlobeValveFg = function(c, x, y, w, h) +{ + c.translate(x, y); + c.ellipse(w * 0.275, h * 0.275, w * 0.2, h * 0.2); + c.fillAndStroke(); + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawThreeWayValve = function(c, x, y, w, h) +{ + c.translate(x, y); + + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.375); + c.lineTo(0, h * 0.75); + c.close(); + + c.moveTo(w, 0); + c.lineTo(w * 0.5, h * 0.375); + c.lineTo(w, h * 0.75); + c.close(); + + c.moveTo(w * 0.5, h * 0.375); + c.lineTo(w * 0.8, h); + c.lineTo(w * 0.2, h); + c.close(); + c.fillAndStroke(); + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawAngleBlowdownValve = function(c, x, y, w, h) +{ + +}; + + +mxShapePidValve.prototype.drawButterflyValve = function(c, x, y, w, h, actuator, actH) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var yv = y + actH; + var hv = h - actH; + + c.translate(x, yv); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, hv); + c.moveTo(w, 0); + c.lineTo(w, hv); + + c.moveTo(w * 0.05, hv * 0.05); + c.lineTo(w * 0.95, hv * 0.95); + + c.fillAndStroke(); + + c.ellipse(w * 0.4, hv * 0.33, w * 0.2, hv * 0.33); + c.fillAndStroke(); + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.drawCheckValve = function(c, x, y, w, h, actuator, actH) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + var yv = y + actH; + var hv = h - actH; + + c.translate(x, yv); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, hv); + c.moveTo(w, 0); + c.lineTo(w, hv); + c.moveTo(w * 0.05, hv * 0.05); + c.lineTo(w * 0.95, hv * 0.95); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.8925, hv * 0.815); + c.lineTo(w * 0.957, hv * 0.955); + c.lineTo(w * 0.85, hv * 0.928); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); + + c.translate(-x, -y); +}; + +mxShapePidValve.prototype.isGateVariant = function(valveType) +{ + if (valveType === mxShapePidValve.prototype.cst.GATE || + valveType === mxShapePidValve.prototype.cst.BALL || + valveType === mxShapePidValve.prototype.cst.PLUG || + valveType === mxShapePidValve.prototype.cst.NEEDLE || + valveType === mxShapePidValve.prototype.cst.SELF_DRAINING || + valveType === mxShapePidValve.prototype.cst.GLOBE) + { + return true; + } + else + { + return false; + } +}; + +mxShapePidValve.prototype.isAngleVariant = function(valveType) +{ + if (valveType === mxShapePidValve.prototype.cst.ANGLE || + valveType === mxShapePidValve.prototype.cst.ANGLE_GLOBE || + valveType === mxShapePidValve.prototype.cst.THREE_WAY || + valveType === mxShapePidValve.prototype.cst.ANGLE_BLOWDOWN) + { + return true; + } + else + { + return false; + } +}; + +mxShapePidValve.prototype.isSquareVariant = function(actType) +{ + if (actType === mxShapePidValve.prototype.cst.PILOT || + actType === mxShapePidValve.prototype.cst.SOLENOID || + actType === mxShapePidValve.prototype.cst.POWERED || + actType === mxShapePidValve.prototype.cst.DIGITAL || + actType === mxShapePidValve.prototype.cst.WEIGHT || + actType === mxShapePidValve.prototype.cst.KEY) + { + return true; + } + else + { + return false; + } +}; + +mxCellRenderer.registerShape(mxShapePidValve.prototype.cst.SHAPE_VALVE, mxShapePidValve); + +//********************************************************************************************************************************************************** +//Integrated Block And Bleed Valve +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxShapePidIntBlockBleedValve(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShapePidValve. +*/ +mxUtils.extend(mxShapePidIntBlockBleedValve, mxShapePidValve); + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxShapePidIntBlockBleedValve.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var actuator = mxUtils.getValue(this.style, mxShapePidIntBlockBleedValve.prototype.cst.ACTUATOR, mxShapePidIntBlockBleedValve.prototype.cst.NONE); + var actH = 0; + + if (actuator !== 'none') + { + actH = h * 0.2353; + } + + c.translate(x, y); + c.setLineJoin('round'); + + this.background(c, x, y, w, h, actuator, actH); + c.setShadow(false); + this.foreground(c, x, y, w, h, actuator, actH); +}; + +mxShapePidIntBlockBleedValve.prototype.background = function(c, x, y, w, h, actuator, actH) +{ + //draw the actuator + if (actuator !== mxShapePidIntBlockBleedValve.prototype.cst.NONE) + { + this.drawActuatorBg(c, x, y, w, h, actuator); + } + + //draw the valve body + this.drawValveBg(c, 0, actH, w, h - actH); +}; + +mxShapePidIntBlockBleedValve.prototype.foreground = function(c, x, y, w, h, actuator, actH) +{ + //draw the actuator + if (actuator !== mxShapePidIntBlockBleedValve.prototype.cst.NONE) + { + this.drawActuatorFg(c, x, y, w, h, actuator); + } +}; + +mxShapePidIntBlockBleedValve.prototype.drawValveBg = function(c, x, y, w, h) +{ + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + c.translate(x, y); + c.begin(); + c.moveTo(0, 0); + c.lineTo(w * 0.5, h * 0.23); + c.lineTo(0, h * 0.46); + c.close(); + c.moveTo(w * 0.5, h * 0.23); + c.lineTo(w, 0); + c.lineTo(w, h * 0.46); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.5, h * 0.23); + c.lineTo(w * 0.5, h * 0.5); + c.stroke(); + + c.setFillColor(strokeColor); + c.begin(); + c.moveTo(w * 0.3, h * 0.5); + c.lineTo(w * 0.7, h * 0.5); + c.lineTo(w * 0.5, h * 0.75); + c.close(); + c.fillAndStroke(); + + c.begin(); + c.moveTo(w * 0.3, h); + c.lineTo(w * 0.5, h * 0.75); + c.lineTo(w * 0.7, h); + c.fillAndStroke(); + c.setFillColor(fillColor); + + c.translate(-x, -y); +}; + +mxShapePidIntBlockBleedValve.prototype.drawActuatorBg = function(c, x, y, w, h, actuator) +{ + if (this.isSquareVariant(actuator)) + { + c.translate(w * 0.325, 0); + this.drawSquareAct(c, w * 0.35, h * 0.4112, actuator); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.MANUAL) + { + c.translate(w * 0.25, h * 0.0882); + this.drawManAct(c, w * 0.5, h * 0.323); + c.translate(- w * 0.25, - h * 0.0882); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.0588); + this.drawDiaphAct(c, w * 0.5, h * 0.3524); + c.translate(- w * 0.25, - h * 0.0588); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.BALANCED_DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.0588); + this.drawBalDiaphActBg(c, w * 0.5, h * 0.3524); + c.translate(- w * 0.25, - h * 0.0588); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.MOTOR || actuator === mxShapePidIntBlockBleedValve.prototype.cst.ELECTRO_HYDRAULIC) + { + c.translate(w * 0.325, 0); + this.drawCircleAct(c, w * 0.35, h * 0.4112, actuator); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SPRING) + { + c.translate(w * 0.36, 0); + this.drawSpringAct(c, w * 0.28, h * 0.4112); + c.translate(- w * 0.36, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SOLENOID_MANUAL_RESET) + { + c.translate(w * 0.325, 0); + this.drawSolenoidManResetAct(c, w * 0.575, h * 0.4112); + c.translate(- w * 0.325, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SINGLE_ACTING) + { + c.translate(w * 0.35, 0); + this.drawSingActingActBg(c, w * 0.65, h * 0.4112); + c.translate(- w * 0.35, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.DOUBLE_ACTING) + { + c.translate(w * 0.35, 0); + this.drawDblActingActBg(c, w * 0.65, h * 0.4112); + c.translate(- w * 0.35, 0); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.PILOT_CYLINDER) + { + c.translate(w * 0.35, 0); + this.drawPilotCylinderActBg(c, w * 0.65, h * 0.4112); + c.translate(- w * 0.35, 0); + } +}; + +mxShapePidIntBlockBleedValve.prototype.drawActuatorFg = function(c, x, y, w, h, actuator) +{ + if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.BALANCED_DIAPHRAGM) + { + c.translate(w * 0.25, h * 0.0588); + this.drawBalDiaphActFg(c, w * 0.5, h * 0.3524); + c.translate(- w * 0.25, - h * 0.0588); + } + else if (actuator === mxShapePidIntBlockBleedValve.prototype.cst.SINGLE_ACTING || + actuator === mxShapePidIntBlockBleedValve.prototype.cst.DOUBLE_ACTING || + actuator === mxShapePidIntBlockBleedValve.prototype.cst.PILOT_CYLINDER) + { + c.translate(w * 0.35, 0); + this.drawActingActFg(c, w * 0.65, h * 0.4112); + c.translate(- w * 0.35, 0); + } +}; + +mxCellRenderer.registerShape('mxgraph.pid2valves.blockBleedValve', mxShapePidIntBlockBleedValve); + +//********************************************************************************************************************************************************** +//Auto Recirculation Valve +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxShapePidAutoRecircValve(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxShapePidAutoRecircValve, mxShape); + + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxShapePidAutoRecircValve.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.setLineJoin('round'); + c.translate(x, y); + + //background + c.rect(0, 0, w, h); + c.fillAndStroke(); + c.setShadow(false); + + //foreground + c.begin(); + c.moveTo(w * 0.08, h * 0.08); + c.lineTo(w * 0.08, h * 0.92); + c.moveTo(w * 0.92, h * 0.08); + c.lineTo(w * 0.92, h * 0.92); + c.moveTo(w * 0.12, h * 0.122); + c.lineTo(w * 0.8738, h * 0.8837); + + c.moveTo(w * 0.5, 0); + c.lineTo(w * 0.55, h * 0.05); + c.lineTo(w * 0.45, h * 0.15); + c.lineTo(w * 0.55, h * 0.25); + c.lineTo(w * 0.45, h * 0.35); + c.lineTo(w * 0.55, h * 0.45); + c.lineTo(w * 0.49, h * 0.5); + c.stroke(); + + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var strokeColor = mxUtils.getValue(this.style, mxConstants.STYLE_STROKECOLOR, '#000000'); + + c.begin(); + c.moveTo(w * 0.8257, h * 0.7695); + c.lineTo(w * 0.8797, h * 0.888); + c.lineTo(w * 0.79, h * 0.8651); + c.close(); + c.setFillColor(strokeColor); + c.fillAndStroke(); + c.setFillColor(fillColor); +}; + +mxCellRenderer.registerShape('mxgraph.pid2valves.autoRecircValve', mxShapePidAutoRecircValve); diff --git a/data/plugins/grafana-flowcharting/src/libs/shapes/rack/mxRack.js b/data/plugins/grafana-flowcharting/src/libs/shapes/rack/mxRack.js new file mode 100644 index 0000000000000..ef6df7708e777 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/libs/shapes/rack/mxRack.js @@ -0,0 +1,1263 @@ +/** + * $Id: mxRack.js,v 1.5 2014/01/21 13:10:37 gaudenz Exp $ + * Copyright (c) 2006-2013, JGraph Ltd + */ +//********************************************************************************************************************************************************** +//Rack Numbering +//********************************************************************************************************************************************************** + +//********************************************************************************************************************************************************** +// v2 Rack cabinet, old versions below this +//********************************************************************************************************************************************************** + +//********************************************************************************************************************************************************** +//START LEGACY RACKS +//********************************************************************************************************************************************************** +function mxRackContainer(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxRackContainer, mxShape); + +mxRackContainer.unitSize = 20; + +mxRackContainer.prototype.cst = +{ + SHAPE_RACK_CONTAINER : 'mxgraph.rackGeneral.container', + TEXT_COLOR : 'textColor', + NUMBER_DISPLAY : 'numDisp', + OFF : 'off', + DIR_ASC : 'ascend', + DIR_DESC : 'descend' +}; + +mxRackContainer.prototype.customProperties = [ + {name: 'fillColor2', dispName: 'Cabinet Color', type: 'color'}, + {name: 'textColor', dispName: 'Numbers Color', type: 'color'}, + {name: 'numDisp', dispName: 'Display Numbers', type: 'enum', + enumList: [{val: 'off', dispName: 'Off'}, {val: 'ascend', dispName: 'Ascending'}, {val: 'descend', dispName: 'Descending'}], + onChange: function(graph, newValue) + { + graph.setCellStyles('marginLeft', (newValue == 'off') ? 9 : 33, graph.getSelectionCells()); + } + } +]; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxRackContainer.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var fontSize = 12; + var displayNumbers = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.NUMBER_DISPLAY, mxRackContainer.prototype.cst.DIR_ASC); + var fillColor = mxUtils.getValue(this.style, mxConstants.STYLE_FILLCOLOR, '#ffffff'); + var fillColor2 = mxUtils.getValue(this.style, 'fillColor2', '#f4f4f4'); + + if (displayNumbers !== mxRackContainer.prototype.cst.OFF) + { + c.translate(x + fontSize * 2, y); + w = Math.max(w - fontSize * 2, 0); + } + else + { + c.translate(x, y); + }; + + c.setFillColor(fillColor); + this.background(c, w, h, fontSize); + c.setShadow(false); + c.setFillColor(fillColor2); + this.foreground(c, w, h, fontSize); + + if (displayNumbers !== mxRackContainer.prototype.cst.OFF && w > 18 + fontSize * 2) + { + this.sideText(c, w, h, fontSize); + }; +}; + +mxRackContainer.prototype.background = function(c, w, h, fontSize) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackContainer.prototype.foreground = function(c, w, h, fontSize) +{ + if (w > 18 + fontSize * 2 && h > 42) + { + c.rect(0, 0, w, 21); + c.fillAndStroke(); + c.rect(0, h - 21, w, 21); + c.fillAndStroke(); + c.rect(0, 21, 9, h - 42); + c.fillAndStroke(); + c.rect(w - 9, 21, 9, h - 42); + c.fillAndStroke(); + c.ellipse(2.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(w - 8.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(2.5, h - 13.5, 6, 6); + c.stroke(); + c.ellipse(w - 8.5, h - 13.5, 6, 6); + c.stroke(); + } +}; + +mxRackContainer.prototype.sideText = function(c, w, h, fontSize) +{ + var fontColor = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.TEXT_COLOR, '#666666'); + var displayNumbers = mxUtils.getValue(this.style, mxRackContainer.prototype.cst.NUMBER_DISPLAY, mxRackContainer.prototype.cst.DIR_ASC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + // Calculate number of units + var units = Math.floor((Math.abs(h) - 42) / mxRackContainer.unitSize); + + for (var i = 0; i < units; i++) + { + var displayNumber = (displayNumbers === mxRackContainer.prototype.cst.DIR_DESC) ? (i + 1).toString() : (units - i).toString(); + c.text(-fontSize, 21 + mxRackContainer.unitSize * 0.5 + i * mxRackContainer.unitSize, 0, 0, displayNumber, mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + } + + c.begin(); + + for (var i = 0; i < units + 1; i++) + { + c.moveTo(-2 * fontSize, 21 + i * mxRackContainer.unitSize); + c.lineTo(0, 21 + i * mxRackContainer.unitSize); + }; + + c.stroke(); +}; + +/** +* Extends mxShape. +*/ +function mxRackPlate(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackPlate, mxShape); + +mxRackPlate.prototype.cst = +{ + SHAPE_RACK_PLATE : 'mxgraph.rackGeneral.plate' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackPlate.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackPlate.prototype.background = function(c, w, h) +{ + c.begin(); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackPlate.prototype.foreground = function(c, w, h) +{ + var bufferSize = 9; + + if (w > bufferSize * 2) + { + c.save(); + c.setFillColor('#000000'); + c.setAlpha(0.23); + c.rect(0,0, bufferSize, h); + c.fill(); + c.rect(w - bufferSize,0, bufferSize, h); + c.fill(); + c.restore(); + c.rect(0, 0, w, h); + c.stroke(); + c.rect(bufferSize, 0, w - bufferSize * 2, h); + c.stroke(); + } +}; + +//********************************************************************************************************************************************************** +//Horizontal Cable Duct +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackHorCableDuct(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorCableDuct, mxShape); + +mxRackHorCableDuct.prototype.cst = +{ + SHAPE_RACK_HOR_CABLE_DUCT : 'mxgraph.rackGeneral.horCableDuct' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorCableDuct.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackHorCableDuct.prototype.foreground = function(c, w, h) +{ + // Divide the space equally with 33 between each duct + var spaceBuffer = 20; + var unitSpacing = 33; + var unitsAcross = Math.floor((w - spaceBuffer) / unitSpacing); + var buffer = spaceBuffer / 2 + Math.floor(((w - spaceBuffer) - unitsAcross * unitSpacing) / 2); + + if (unitsAcross > 0) + { + for (var i = 0; i <= unitsAcross; i++) + { + c.rect(buffer, 0, 3, 7); + c.stroke(); + c.rect(buffer, 7, 3, 7.8); + c.stroke(); + + buffer += unitSpacing; + } + } +}; + +function mxRackHorRoutingBank(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorRoutingBank, mxShape); + +mxRackHorRoutingBank.prototype.cst = +{ + SHAPE_RACK_HOR_ROUTING_BANK : 'mxgraph.rackGeneral.horRoutingBank' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorRoutingBank.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank.prototype.background = function(c, w, h) +{ + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank.prototype.foreground = function(c, w, h) +{ + // Divide the space equally with 33 between each duct + var spaceBuffer = 20; + var unitSpacing = 22; + var rectWidth = 16; + var unitsAcross = Math.floor((w - spaceBuffer - rectWidth) / unitSpacing); + var unitsDown = Math.floor(h / mxRackContainer.unitSize); + + if (unitsAcross > 0 && unitsDown > 0) + { + for (var i = 0; i < unitsDown; i++) + { + var buffer = (spaceBuffer + rectWidth) / 2 + Math.floor(((w - spaceBuffer - rectWidth) - unitsAcross * unitSpacing) / 2) - rectWidth / 2; + + for (var j = 0; j <= unitsAcross; j++) + { + c.rect(buffer, 4 + (i * mxRackContainer.unitSize), rectWidth, 6.8); + c.stroke(); + + buffer += unitSpacing; + } + } + } +}; + +function mxRackNeatPatch(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackNeatPatch, mxShape); + +mxRackNeatPatch.prototype.cst = +{ + SHAPE_RACK_NEAT_PATCH : 'mxgraph.rackGeneral.neatPatch' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackNeatPatch.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.mainText(c, w, h); +}; + +mxRackNeatPatch.prototype.background = function(c, w, h) +{ + c.setFillColor('#666666'); + c.rect(0, 0, w, h); + c.fillAndStroke(); +}; + +mxRackNeatPatch.prototype.mainText = function(c, w, h) +{ + c.setFontSize('12'); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(w / 2, h - 6, 0, 0, 'NEAT-PATCH', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +function mxRackShelf(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackShelf, mxShape); + +mxRackShelf.prototype.cst = +{ + SHAPE_RACK_SHELF : 'mxgraph.rackGeneral.shelf' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackShelf.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf.prototype.background = function(c, w, h) +{ + c.setStrokeWidth(2); + c.begin(); + c.moveTo(1, 0); + c.lineTo(1, h - 1); + c.lineTo(w - 1, h - 1); + c.lineTo(w - 1, 1); + c.fillAndStroke(); +}; + +function mxRackRackNumbering(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxRackRackNumbering, mxShape); + +mxRackRackNumbering.prototype.cst = +{ + SHAPE_RACK_RACK_NUMBERING : 'mxgraph.rackGeneral.rackNumbering', + UNIT_NUM : 'unitNum', + UNIT_HEIGHT : 'unitHeight', + TEXT_COLOR : 'textColor', + NUM_DIR : 'numDir', + DIR_ASC : 'ascend', + DIR_DESC : 'descend', + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxRackRackNumbering.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var unitNum = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.UNIT_NUM, '42')); + var unitH = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.UNIT_HEIGHT, '14.8')); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.TEXT_SIZE, '12')); + c.translate(x, y); + + var h = unitNum * unitH; + this.background(c, w, h, fontSize); + c.setShadow(false); + this.sideText(c, w, h, unitNum, unitH, fontSize); +}; + +mxRackRackNumbering.prototype.background = function(c, w, h, fontSize) +{ + c.rect(fontSize * 3, 0, 160.9, h); + c.fillAndStroke(); +}; + +mxRackRackNumbering.prototype.sideText = function(c, w, h, unitNum, unitH, fontSize) +{ + var fontColor = mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.TEXT_COLOR, '#666666'); + var numDir = mxUtils.getValue(this.style, mxRackRackNumbering.prototype.cst.NUM_DIR, mxRackRackNumbering.prototype.cst.DIR_DESC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (numDir === mxRackRackNumbering.prototype.cst.DIR_ASC) + { + for (var i = 0; i < unitNum; i++) + { + c.text(fontSize, unitH * 0.5 + i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + }; + } + else + { + for (var i = 0; i < unitNum; i++) + { + c.text(fontSize, h - unitH * 0.5 - i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + }; + }; + + c.setStrokeColor('#dddddd'); + + c.begin(); + + for (var i = 0; i < unitNum + 1; i++) + { + c.moveTo(0, i * unitH); + c.lineTo(fontSize * 3, i * unitH); + }; + + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//Rack Cabinet +//********************************************************************************************************************************************************** +/** + * Extends mxShape. + */ +function mxRackRackCabinet(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxRackRackCabinet, mxShape); + +mxRackRackCabinet.prototype.cst = +{ + SHAPE_RACK_RACK_CABINET : 'mxgraph.rackGeneral.rackCabinet', + UNIT_NUM : 'unitNum', + UNIT_HEIGHT : 'unitHeight', + TEXT_COLOR : 'textColor', + NUM_DIR : 'numDir', + NUMBER_DISPLAY : 'numDisp', + ON : 'on', + OFF : 'off', + DIR_ASC : 'ascend', + DIR_DESC : 'descend', + TEXT_SIZE : 'textSize' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxRackRackCabinet.prototype.paintVertexShape = function(c, x, y, w, h) +{ + var unitNum = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.UNIT_NUM, '12')); + var unitH = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.UNIT_HEIGHT, '14.8')); + var fontSize = parseFloat(mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.TEXT_SIZE, '12')); + var numDis = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.NUMBER_DISPLAY, mxRackRackCabinet.prototype.cst.ON); + + if (numDis === mxRackRackCabinet.prototype.cst.ON) + { + c.translate(x + fontSize * 2, y); + } + else + { + c.translate(x, y); + }; + + var h = unitNum * unitH + 42; + this.background(c, w, h, fontSize); + c.setShadow(false); + this.foreground(c, w, h, fontSize); + + if (numDis === mxRackRackCabinet.prototype.cst.ON) + { + this.sideText(c, w, h, unitNum, unitH, fontSize); + }; +}; + +mxRackRackCabinet.prototype.background = function(c, w, h, fontSize) +{ + c.setFillColor('#ffffff'); + c.rect(0, 0, 180, h); + c.fillAndStroke(); +}; + +mxRackRackCabinet.prototype.foreground = function(c, w, h, fontSize) +{ + c.setFillColor('#f4f4f4'); + c.rect(0, 0, 180, 21); + c.fillAndStroke(); + c.rect(0, h - 21, 180, 21); + c.fillAndStroke(); + c.rect(0, 21, 9, h - 42); + c.fillAndStroke(); + c.rect(171, 21, 9, h - 42); + c.fillAndStroke(); + c.ellipse(2.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(171.5, 7.5, 6, 6); + c.stroke(); + c.ellipse(2.5, h - 13.5, 6, 6); + c.stroke(); + c.ellipse(171.5, h - 13.5, 6, 6); + c.stroke(); +}; + +mxRackRackCabinet.prototype.sideText = function(c, w, h, unitNum, unitH, fontSize) +{ + var fontColor = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.TEXT_COLOR, '#666666'); + var numDir = mxUtils.getValue(this.style, mxRackRackCabinet.prototype.cst.NUM_DIR, mxRackRackCabinet.prototype.cst.DIR_DESC); + c.setFontSize(fontSize); + c.setFontColor(fontColor); + + if (numDir === mxRackRackCabinet.prototype.cst.DIR_ASC) + { + for (var i = 0; i < unitNum; i++) + { + c.text(-fontSize, 21 + unitH * 0.5 + i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + }; + } + else + { + for (var i = 0; i < unitNum; i++) + { + c.text(-fontSize, h - 21 - unitH * 0.5 - i * unitH, 0, 0, (i + 1).toString(), mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); + }; + }; + + c.setStrokeColor('#dddddd'); + + c.begin(); + + for (var i = 0; i < unitNum + 1; i++) + { + c.moveTo(-2 * fontSize, 21 + i * unitH); + c.lineTo(0, 21 + i * unitH); + }; + + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//1U Horizontal Cable Duct +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackHorCableDuct1U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorCableDuct1U, mxShape); + +mxRackHorCableDuct1U.prototype.cst = +{ + SHAPE_RACK_HOR_CABLE_DUCT_1U : 'mxgraph.rackGeneral.horCableDuct1U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorCableDuct1U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct1U.prototype.background = function(c, w, h) +{ + c.rect(0, 0, 160.9, 14.8); + c.fillAndStroke(); +}; + +mxRackHorCableDuct1U.prototype.foreground = function(c, w, h) +{ + c.rect(12, 0, 3, 7); + c.stroke(); + c.rect(12, 7, 3, 7.8); + c.stroke(); + + c.rect(45.5, 0, 3, 7); + c.stroke(); + c.rect(45.5, 7, 3, 7.8); + c.stroke(); + + c.rect(79, 0, 3, 7); + c.stroke(); + c.rect(79, 7, 3, 7.8); + c.stroke(); + + c.rect(112.5, 0, 3, 7); + c.stroke(); + c.rect(112.5, 7, 3, 7.8); + c.stroke(); + + c.rect(146, 0, 3, 7); + c.stroke(); + c.rect(146, 7, 3, 7.8); + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//2U Horizontal Cable Duct +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackHorCableDuct2U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorCableDuct2U, mxShape); + +mxRackHorCableDuct2U.prototype.cst = +{ + SHAPE_RACK_HOR_CABLE_DUCT_2U : 'mxgraph.rackGeneral.horCableDuct2U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorCableDuct2U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorCableDuct2U.prototype.background = function(c, w, h) +{ + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackHorCableDuct2U.prototype.foreground = function(c, w, h) +{ + c.rect(12, 0, 3, 7); + c.stroke(); + c.rect(12, 7, 3, 22.6); + c.stroke(); + + c.rect(45.5, 0, 3, 7); + c.stroke(); + c.rect(45.5, 7, 3, 22.6); + c.stroke(); + + c.rect(79, 0, 3, 7); + c.stroke(); + c.rect(79, 7, 3, 22.6); + c.stroke(); + + c.rect(112.5, 0, 3, 7); + c.stroke(); + c.rect(112.5, 7, 3, 22.6); + c.stroke(); + + c.rect(146, 0, 3, 7); + c.stroke(); + c.rect(146, 7, 3, 22.6); + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//1U Cable Routing Bank +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackHorRoutingBank1U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorRoutingBank1U, mxShape); + +mxRackHorRoutingBank1U.prototype.cst = +{ + SHAPE_RACK_HOR_ROUTING_BANK_1U : 'mxgraph.rackGeneral.horRoutingBank1U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorRoutingBank1U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank1U.prototype.background = function(c, w, h) +{ + c.rect(0, 0, 160.9, 14.8); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank1U.prototype.foreground = function(c, w, h) +{ + c.rect(10, 4, 17, 6.8); + c.stroke(); + c.rect(31, 4, 17, 6.8); + c.stroke(); + c.rect(52, 4, 17, 6.8); + c.stroke(); + c.rect(73, 4, 17, 6.8); + c.stroke(); + c.rect(94, 4, 17, 6.8); + c.stroke(); + c.rect(115, 4, 17, 6.8); + c.stroke(); + c.rect(136, 4, 17, 6.8); + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//2U Cable Routing Bank +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackHorRoutingBank2U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackHorRoutingBank2U, mxShape); + +mxRackHorRoutingBank2U.prototype.cst = +{ + SHAPE_RACK_HOR_ROUTING_BANK_2U : 'mxgraph.rackGeneral.horRoutingBank2U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackHorRoutingBank2U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackHorRoutingBank2U.prototype.background = function(c, w, h) +{ + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackHorRoutingBank2U.prototype.foreground = function(c, w, h) +{ + c.rect(10, 4, 17, 6.8); + c.stroke(); + c.rect(31, 4, 17, 6.8); + c.stroke(); + c.rect(52, 4, 17, 6.8); + c.stroke(); + c.rect(73, 4, 17, 6.8); + c.stroke(); + c.rect(94, 4, 17, 6.8); + c.stroke(); + c.rect(115, 4, 17, 6.8); + c.stroke(); + c.rect(136, 4, 17, 6.8); + c.stroke(); + + c.rect(10, 18.8, 17, 6.8); + c.stroke(); + c.rect(31, 18.8, 17, 6.8); + c.stroke(); + c.rect(52, 18.8, 17, 6.8); + c.stroke(); + c.rect(73, 18.8, 17, 6.8); + c.stroke(); + c.rect(94, 18.8, 17, 6.8); + c.stroke(); + c.rect(115, 18.8, 17, 6.8); + c.stroke(); + c.rect(136, 18.8, 17, 6.8); + c.stroke(); +}; + +//********************************************************************************************************************************************************** +//2U Neat-Patch +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackNeatPatch2U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackNeatPatch2U, mxShape); + +mxRackNeatPatch2U.prototype.cst = +{ + SHAPE_RACK_NEAT_PATCH_2U : 'mxgraph.rackGeneral.neatPatch2U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackNeatPatch2U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); + c.setShadow(false); + this.mainText(c, w, h); +}; + +mxRackNeatPatch2U.prototype.background = function(c, w, h) +{ + c.setFillColor('#666666'); + c.rect(0, 0, 160.9, 29.6); + c.fillAndStroke(); +}; + +mxRackNeatPatch2U.prototype.mainText = function(c, w, h) +{ + c.setFontSize('12'); + c.setFontColor('#ffffff'); + c.setFontStyle(mxConstants.FONT_BOLD); + c.text(80.45, 24, 0, 0, 'NEAT-PATCH', mxConstants.ALIGN_CENTER, mxConstants.ALIGN_MIDDLE, 0, null, 0, 0, 0); +}; + +//********************************************************************************************************************************************************** +//1U shelf +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackShelf1U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackShelf1U, mxShape); + +mxRackShelf1U.prototype.cst = +{ + SHAPE_RACK_SHELF_1U : 'mxgraph.rackGeneral.shelf1U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackShelf1U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf1U.prototype.background = function(c, w, h) +{ + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 14.8); + c.lineTo(160.9, 14.8); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +//********************************************************************************************************************************************************** +//2U shelf +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackShelf2U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackShelf2U, mxShape); + +mxRackShelf2U.prototype.cst = +{ + SHAPE_RACK_SHELF_2U : 'mxgraph.rackGeneral.shelf2U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackShelf2U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf2U.prototype.background = function(c, w, h) +{ + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 29.6); + c.lineTo(160.9, 29.6); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +//********************************************************************************************************************************************************** +//4U shelf +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackShelf4U(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackShelf4U, mxShape); + +mxRackShelf4U.prototype.cst = +{ + SHAPE_RACK_SHELF_4U : 'mxgraph.rackGeneral.shelf4U' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackShelf4U.prototype.paintVertexShape = function(c, x, y, w, h) +{ + c.translate(x, y); + this.background(c, w, h); +}; + +mxRackShelf4U.prototype.background = function(c, w, h) +{ + c.setStrokeWidth(2); + c.begin(); + c.moveTo(0, 0); + c.lineTo(0, 59.2); + c.lineTo(160.9, 59.2); + c.lineTo(160.9, 0); + c.fillAndStroke(); +}; + +//********************************************************************************************************************************************************** +//END LEGACY RACKS +//********************************************************************************************************************************************************** + + +//********************************************************************************************************************************************************** +//Channel Base +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackChannelBase(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** + * Extends mxShape. + */ +mxUtils.extend(mxRackChannelBase, mxShape); + +mxRackChannelBase.prototype.cst = +{ + SHAPE_RACK_CHANNEL_BASE : 'mxgraph.rackGeneral.channelBase' +}; + +/** + * Function: paintVertexShape + * + * Paints the vertex shape. + */ +mxRackChannelBase.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(w, 20); + h = Math.max(h, 20); + c.translate(x, y); + + this.background(c, w, h); + c.setShadow(false); + this.foreground(c, w, h); +}; + +mxRackChannelBase.prototype.background = function(c, w, h) +{ + c.rect(10, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(w - 15, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(0, 0, w, h - 5); + c.fillAndStroke(); +}; + +mxRackChannelBase.prototype.foreground = function(c, w, h) +{ + c.setFillColor('#000000'); + c.rect(10, h - 15, 5, 15); + c.fillAndStroke(); + c.rect(w - 15, h - 15, 5, 15); + c.fillAndStroke(); +}; + +//********************************************************************************************************************************************************** +//Cabinet Leg +//********************************************************************************************************************************************************** +/** +* Extends mxShape. +*/ +function mxRackCabinetLeg(bounds, fill, stroke, strokewidth) +{ + mxShape.call(this); + this.bounds = bounds; + this.fill = fill; + this.stroke = stroke; + this.strokewidth = (strokewidth != null) ? strokewidth : 1; +}; + +/** +* Extends mxShape. +*/ +mxUtils.extend(mxRackCabinetLeg, mxShape); + +mxRackCabinetLeg.prototype.cst = +{ + SHAPE_RACK_CABINET_LEG : 'mxgraph.rackGeneral.cabinetLeg' +}; + +/** +* Function: paintVertexShape +* +* Paints the vertex shape. +*/ +mxRackCabinetLeg.prototype.paintVertexShape = function(c, x, y, w, h) +{ + w = Math.max(w, 20); + h = Math.max(h, 20); + c.translate(x, y); + + this.background(c, w, h); +}; + +mxRackCabinetLeg.prototype.background = function(c, w, h) +{ + c.begin(); + c.moveTo(0, h - 10); + c.lineTo(5, h - 10); + c.lineTo(5, h - 12); + c.lineTo(9, h - 12); + c.lineTo(9, h - 10); + c.lineTo(w - 10, h - 10); + c.lineTo(w - 10, 9); + c.lineTo(w - 12, 9); + c.lineTo(w - 12, 5); + c.lineTo(w - 10, 5); + c.lineTo(w - 10, 0); + c.lineTo(w, 0); + c.lineTo(w, h); + c.lineTo(0, h); + c.close(); + c.fillAndStroke(); +}; + +// New generic unit size implementations +mxCellRenderer.registerShape(mxRackContainer.prototype.cst.SHAPE_RACK_CONTAINER, mxRackContainer); +mxCellRenderer.registerShape(mxRackHorCableDuct.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT, mxRackHorCableDuct); +mxCellRenderer.registerShape(mxRackHorRoutingBank.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK, mxRackHorRoutingBank); +mxCellRenderer.registerShape(mxRackNeatPatch.prototype.cst.SHAPE_RACK_NEAT_PATCH, mxRackNeatPatch); +mxCellRenderer.registerShape(mxRackShelf.prototype.cst.SHAPE_RACK_SHELF, mxRackShelf); +mxCellRenderer.registerShape(mxRackPlate.prototype.cst.SHAPE_RACK_PLATE, mxRackPlate); + +// Legacy resizable / fixed unit size implementations +mxCellRenderer.registerShape(mxRackRackNumbering.prototype.cst.SHAPE_RACK_RACK_NUMBERING, mxRackRackNumbering); +mxCellRenderer.registerShape(mxRackRackCabinet.prototype.cst.SHAPE_RACK_RACK_CABINET, mxRackRackCabinet); +mxCellRenderer.registerShape(mxRackHorCableDuct1U.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT_1U, mxRackHorCableDuct1U); +mxCellRenderer.registerShape(mxRackHorCableDuct2U.prototype.cst.SHAPE_RACK_HOR_CABLE_DUCT_2U, mxRackHorCableDuct2U); +mxCellRenderer.registerShape(mxRackHorRoutingBank1U.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK_1U, mxRackHorRoutingBank1U); +mxCellRenderer.registerShape(mxRackHorRoutingBank2U.prototype.cst.SHAPE_RACK_HOR_ROUTING_BANK_2U, mxRackHorRoutingBank2U); +mxCellRenderer.registerShape(mxRackNeatPatch2U.prototype.cst.SHAPE_RACK_NEAT_PATCH_2U, mxRackNeatPatch2U); +mxCellRenderer.registerShape(mxRackShelf1U.prototype.cst.SHAPE_RACK_SHELF_1U, mxRackShelf1U); +mxCellRenderer.registerShape(mxRackShelf2U.prototype.cst.SHAPE_RACK_SHELF_2U, mxRackShelf2U); +mxCellRenderer.registerShape(mxRackShelf4U.prototype.cst.SHAPE_RACK_SHELF_4U, mxRackShelf4U); + +mxCellRenderer.registerShape(mxRackChannelBase.prototype.cst.SHAPE_RACK_CHANNEL_BASE, mxRackChannelBase); +mxCellRenderer.registerShape(mxRackCabinetLeg.prototype.cst.SHAPE_RACK_CABINET_LEG, mxRackCabinetLeg); \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/mapping_options.js b/data/plugins/grafana-flowcharting/src/mapping_options.js new file mode 100644 index 0000000000000..c2ad6da9a34f9 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/mapping_options.js @@ -0,0 +1,204 @@ +// eslint-disable-next-line import/no-unresolved +import kbn from 'app/core/utils/kbn'; +import { plugin } from './plugin'; + +export class MappingOptionsCtrl { + /** @ngInject */ + constructor($scope) { + $scope.editor = this; + $scope.GF_PLUGIN = window.GF_PLUGIN; + this.$scope = $scope; + this.panelCtrl = $scope.ctrl; + this.panel = this.panelCtrl.panel; + $scope.rulesHandler = this.panelCtrl.rulesHandler; + $scope.flowchartHandler = this.panelCtrl.flowchartHandler; + this.flowchartHandler = $scope.ctrl.flowchartHandler; + this.rulesHandler = this.panelCtrl.rulesHandler; + this.unitFormats = kbn.getUnitFormats(); + this.style = [ + { text: 'Disabled', value: 'disabled' }, + { text: 'Stroke', value: 'strokeColor' }, + { text: 'Fill', value: 'fillColor' }, + { text: 'Text', value: 'fontColor' }, + { text: 'Background (image)', value: 'imageBackground' }, + { text: 'Border (image)', value: 'imageBorder' }, + ]; + this.colorOn = [ + { text: 'Never', value: 'n' }, + { text: 'Warning / Critical', value: 'wc' }, + { text: 'Always', value: 'a' } + ]; + this.linkOn = [{ text: 'Warning / Critical', value: 'wc' }, { text: 'Always', value: 'a' }]; + this.tooltipOn = [{ text: 'Warning / Critical', value: 'wc' }, { text: 'Always', value: 'a' }]; + this.tpDirection = [{ text: 'Vertical', value: 'v' }, { text: 'Horizontal ', value: 'h' }]; + this.textOn = [ + { text: 'Never', value: 'n' }, + { text: 'When Metric Displayed', value: 'wmd' }, + { text: 'Warning / Critical', value: 'wc' }, + { text: 'Critical Only', value: 'co' } + ]; + this.textReplace = [ + { text: 'All content', value: 'content' }, + { text: 'Substring', value: 'pattern' }, + { text: 'Append (Space) ', value: 'as' }, + { text: 'Append (New line) ', value: 'anl' } + ]; + this.propTypes = [ + { text: 'Id', value: 'id' } + // { text: "Value", value: "value" } + ]; + this.textPattern = '/.*/'; + this.metricTypes = [ + { text: 'Number', value: 'number' }, + { text: 'String', value: 'string' }, + { text: 'Date', value: 'date' } + ]; + this.dateFormats = [ + { text: 'YYYY-MM-DD HH:mm:ss', value: 'YYYY-MM-DD HH:mm:ss' }, + { text: 'YYYY-MM-DD HH:mm:ss.SSS', value: 'YYYY-MM-DD HH:mm:ss.SSS' }, + { text: 'MM/DD/YY h:mm:ss a', value: 'MM/DD/YY h:mm:ss a' }, + { text: 'MMMM D, YYYY LT', value: 'MMMM D, YYYY LT' }, + { text: 'YYYY-MM-DD', value: 'YYYY-MM-DD' } + ]; + this.aggregationTypes = [ + { text: 'First', value: 'first' }, + { text: 'Last', value: 'current' }, + { text: 'Min', value: 'min' }, + { text: 'Max', value: 'max' }, + { text: 'Sum', value: 'total' }, + { text: 'Avg', value: 'avg' }, + { text: 'Count', value: 'count' }, + { text: 'Delta', value: 'delta' }, + { text: 'Range', value: 'range' }, + { text: 'Diff', value: 'diff' } + ]; + this.mappingTypes = [{ text: 'Value to text', value: 1 }, { text: 'Range to text', value: 2 }]; + this.tpGraphType = [ + { text: 'Line', value: 'line'}, + // { text: 'Histogram', value: 'bar'}, + ]; + this.tpGraphSize = [ + { text: 'Adjustable', value: '100%'}, + { text: 'Small', value: '100px'}, + { text: 'Medium', value: '200px'}, + { text: 'Large', value: '400px'}, + ]; + + this.getMetricNames = () => { + if (!this.panelCtrl.series) { + return []; + } + return _.map(this.panelCtrl.series, t => t.alias); + }; + + this.getCellNamesForShape = () => { + u.log(1, 'MappingOptionsCtrl.getCellNamesForShape()'); + const flowchart = this.flowchartHandler.getFlowchart(0); + const cells = flowchart.getNamesByProp('id'); + return _.map(cells, t => t); + }; + + this.getCellNamesForText = () => { + u.log(1, 'MappingOptionsCtrl.getCellNamesForText()'); + const flowchart = this.flowchartHandler.getFlowchart(0); + const cells = flowchart.getNamesByProp('id'); + return _.map(cells, t => t); + }; + + this.getCellNamesForLink = () => { + u.log(1, 'MappingOptionsCtrl.getCellNamesForLink()'); + const flowchart = this.flowchartHandler.getFlowchart(0); + const cells = flowchart.getNamesByProp('id'); + return _.map(cells, t => t); + }; + + this.getVariables = () => { + u.log('MappingOptionsCtrl.getVariables'); + return this.panelCtrl.getVariables(); + }; + } + + render() { + this.panelCtrl.render(); + } + + setUnitFormat(rule, subItem) { + rule.unit = subItem.value; + this.onRulesChange(); + } + + onRulesChange() { + u.log(1, 'MappingOptionsCtrl.onRulesChange()'); + this.flowchartHandler.ruleChanged(); + this.render(); + } + + /** + * Add Color + * + * @param {Number} ruleIndex + * @param {Number} colorIndex + * @memberof MappingOptionsCtrl + */ + onColorChange(ruleIndex, colorIndex) { + return newColor => { + const rule = this.rulesHandler.getRule(ruleIndex); + rule.data.colors[colorIndex] = newColor; + this.onRulesChange(); + }; + } + + /** + * Display cell selection in graph + * @param {} prop + * @param {} value + */ + selectCell(prop, value) { + const flowchart = this.flowchartHandler.getFlowchart(0); + const xgraph = flowchart.getXGraph(); + xgraph.selectMxCells(prop, value); + } + + /** + * Undisplay cell selection + * + * @memberof MappingOptionsCtrl + */ + unselectCell(prop, value) { + const flowchart = this.flowchartHandler.getFlowchart(0); + const xgraph = flowchart.getXGraph(); + xgraph.unselectMxCells(prop, value); + } + + /** + *Turn Highlight on of cells in rule + * + * @param {*} rule + * @memberof MappingOptionsCtrl + */ + highlightCells(rule) { + rule.highlightCells(); + } + + /** + *Turn Highlight off of cells in rule + * + * @param {*} rule + * @memberof MappingOptionsCtrl + */ + unhighlightCells(rule) { + rule.unhighlightCells(); + } + +} + +/** @ngInject */ +export function mappingOptionsTab($q, uiSegmentSrv) { + 'use strict'; + return { + restrict: 'E', + scope: true, + templateUrl: `${GF_PLUGIN.getPartialPath()}/mapping_options.html`, + controller: MappingOptionsCtrl + }; +} diff --git a/data/plugins/grafana-flowcharting/src/module.js b/data/plugins/grafana-flowcharting/src/module.js new file mode 100644 index 0000000000000..298249f549612 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/module.js @@ -0,0 +1,10 @@ +import { loadPluginCss } from 'app/plugins/sdk'; +import { FlowchartCtrl } from './flowchart_ctrl'; + + +loadPluginCss({ + dark: 'plugins/agenty-flowcharting-panel/css/flowchart.dark.css', + light: 'plugins/agenty-flowcharting-panel/css/flowchart.light.css', +}); + +export { FlowchartCtrl as PanelCtrl }; diff --git a/data/plugins/grafana-flowcharting/src/partials/flowchart_options.html b/data/plugins/grafana-flowcharting/src/partials/flowchart_options.html new file mode 100644 index 0000000000000..e79e9c801db02 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/partials/flowchart_options.html @@ -0,0 +1,278 @@ +
+
+
+
+ mxGraph Edition + +
+ +
+
+ Definition + +
+ +
+ + +
+
+ + +
+ +
+
+
+ + Source Type + + + +
+ +
+
+ +
+
+ + URL + + This service should respond with a xml/plain response containing mxgraph syntax + + + +
+
+ +
+ + Source Content + + + + +
+ + +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
Advanced
+
+
+ Display + + +
+ + + + + + +
+ + + + + +
+ +
+ + Zoom + + + + +
+
+
+
+ Others options + + +
+ + + + + + + + + +
+
+
+
diff --git a/data/plugins/grafana-flowcharting/src/partials/inspect_options.html b/data/plugins/grafana-flowcharting/src/partials/inspect_options.html new file mode 100644 index 0000000000000..4a2c02f72ebb4 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/partials/inspect_options.html @@ -0,0 +1,191 @@ +
+
+
+
Inspector
+
+
+ +
+
Graph inspect + Id + + + + +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ Id + + + + +
+
+
+ Text
+
+
+ Level +
+
+
+ Font Col. +
+
+
+ Fill Col. +
+
+
+ Stoke Col. +
+
+
+ Match +
+
+
+
{{state.cellId}}
+
{{state.cellId}}
+
+ +
+
+
+
+ {{state.getCellProp('value')}} +
+
+
+ {{state.getTextLevel()}} +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + + + + +
+
Debug Mode
+
+
+ Display + +
+
+ Level + +
+
+
+
\ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/partials/mapping_options copy.html b/data/plugins/grafana-flowcharting/src/partials/mapping_options copy.html new file mode 100644 index 0000000000000..d6464372ea933 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/partials/mapping_options copy.html @@ -0,0 +1,616 @@ +
+
+
+ +
+
+ + + + {{ rule.data.order }} : Rule + + [{{ rule.data.alias }}] + +
+
+ +
+ + +
+
+
+ + +
+ +
+
+ Options + + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + +
+
Type + + + + +
+
+ +
+ +
+
+
+ + + +
+ +
+ +
+
+ + +
+ +
+
+ +
+
+
+ + +
+
+
+ + +
+
+ Thresholds (Ok > Warn > Critical) + + +
+
+ Thresholds (Critical > Warn > Ok) + + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + + + + + + + + + +
+ Invert +
+
+ + +
+ + +
+
Display + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ + +
+
Tooltips + + + + +
+ +
+ + +
+
+ +
+ +
+
+ + +
+ + + +
+
Link + + + + +
+ +
+ +
+ +
+
+
+ + +
+ + + +
+ + +
+ +
+
Color Mappings + + + + +
+
+ + Props + + +
+ +
+
+
+ + + + + + +
+
+ +
+
+ + +
+
Text Mappings + + + + +
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Link Mappings
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Value Mappings
+
+
+ + Type + +
+ +
+
+ +
+
+ + + + + + +
+
+ +
+
+ +
+
+ + + + From + + To + + Text + +
+
+ +
+
+
+
+
+ +
+ + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/partials/mapping_options.html b/data/plugins/grafana-flowcharting/src/partials/mapping_options.html new file mode 100644 index 0000000000000..b7a1ea842e47d --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/partials/mapping_options.html @@ -0,0 +1,1085 @@ +
+
+
+ +
+ + + + + {{ rule.data.order }} : Rule [{{ rule.data.alias }}] + + + + +
+ + +
+ +
+
+ Options + + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + +
+
+ Type + + + + +
+
+ +
+ +
+
+
+ + + +
+ +
+ +
+
+ + +
+ +
+
+ +
+
+
+ + +
+
+
+ + +
+
+ Thresholds (Ok > Warn > Critical) + + +
+
+ Thresholds (Critical > Warn > Ok) + + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
+ + + + + + + + + + +
+ Invert +
+
+ + +
+ + +
+
+ Display + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ + +
+
+ Tooltips + + + + +
+ + +
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ + +
+
+ Graph Tooltips + + + + +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+ Link + + + + +
+ +
+ +
+ +
+
+
+ + +
+ + + +
+ + +
+ +
+
+ Color Mappings + + + + +
+
+ + Props + + +
+ +
+
+
+ + + + + + +
+
+ +
+
+ + +
+
+ Text Mappings + + + + +
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Link Mappings
+
+ + Props + +
+ +
+
+
+ + + + + + + +
+ +
+ +
+
+ + +
+
Value Mappings
+
+
+ + Type + +
+ +
+
+ +
+
+ + + + + + +
+
+ +
+
+ +
+
+ + + + From + + To + + Text + +
+
+ +
+
+
+
+
+ +
+ + +
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+
diff --git a/data/plugins/grafana-flowcharting/src/partials/module.html b/data/plugins/grafana-flowcharting/src/partials/module.html new file mode 100644 index 0000000000000..63e6e2f365678 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/partials/module.html @@ -0,0 +1,14 @@ +
+
+ +
+
+
+ Select Object to map + +
+
+ \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/plugin.js b/data/plugins/grafana-flowcharting/src/plugin.js new file mode 100644 index 0000000000000..7504d138c55fd --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/plugin.js @@ -0,0 +1,70 @@ +import $ from 'jquery'; + +const plugin = {}; +plugin.dirname = `${__dirname}/`; +plugin.repository = 'https://algenty.github.io/flowcharting-repository/'; +plugin.mxBasePath = `${plugin.dirname}libs/mxgraph/javascript/dist/`; +plugin.mxImagePath = `${plugin.mxBasePath}images/`; +plugin.partialPath = `${plugin.dirname}/partials/`; +plugin.data = {}; + +$.ajaxSetup({ + async: false, +}); + +$.getJSON(`${plugin.dirname}/plugin.json`, (data) => { + plugin.data = data; +}); + +plugin.getRootPath = function () { + return this.dirname; +}; + +plugin.getLibsPath = function () { + return `${this.dirname}/libs`; +}; + +plugin.getShapesPath = function () { + return `${this.dirname}libs/shapes`; +}; + +plugin.getMxBasePath = function () { + return this.mxBasePath; +}; + +plugin.getMxImagePath = function () { + return this.mxImagePath; +}; + +plugin.getName = function () { + return this.data.id; +}; + +plugin.getPartialPath = function () { + return this.partialPath; +}; + +// eslint-disable-next-line func-names +plugin.popover = function (text, tagBook, tagImage) { + const url = this.repository; + const images = `${this.repository}images/`; + const textEncoded = String(text).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"'); + const desc = `${textEncoded}`; + let book = ''; + let image = ''; + if (tagBook) book = `Help`; + if (tagImage) image = `Example`; + return ` +
+
${desc}
+
${book}
+
${image}
+
`; +}; + +plugin.logLevel = 1; +plugin.logDisplay = false; + +window.GF_PLUGIN = window.GF_PLUGIN || plugin; + +export default plugin; diff --git a/data/plugins/grafana-flowcharting/src/plugin.json b/data/plugins/grafana-flowcharting/src/plugin.json new file mode 100644 index 0000000000000..641da7ed91e11 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/plugin.json @@ -0,0 +1,48 @@ +{ + "type": "panel", + "name": "FlowCharting", + "id": "agenty-flowcharting-panel", + "info": { + "description": "Flowcharting is a plugin for grafana. It aims to display complexe diagram draws with draw.io like Visio", + "author": { + "name": "Arnaud GENTY", + "url": "https://github.com/algenty/grafana-flowcharting" + }, + "keywords": [ + "flowchart", + "panel", + "diagram", + "workflow", + "floorplan", + "map", + "organigram", + "draw.io", + "visio", + "mxgraph" + ], + "links": [ + { + "name": "Project site", + "url": "https://github.com/algenty/grafana-flowcharting" + }, + { + "name": "Apache License", + "url": "https://github.com/algenty/grafana-flowcharting/blob/master/LICENSE" + }, + { + "name": "Documentation", + "url": "https://algenty.github.io/flowcharting-repository/" + } + ], + "version": "0.5.0", + "updated": "2019-09-26", + "logos": { + "small": "img/agenty-flowcharting.svg", + "large": "img/agenty-flowcharting.svg" + } + }, + "dependencies": { + "grafanaVersion": "5.x.x", + "plugins": [] + } +} \ No newline at end of file diff --git a/data/plugins/grafana-flowcharting/src/rule_class.js b/data/plugins/grafana-flowcharting/src/rule_class.js new file mode 100644 index 0000000000000..bf69c552610e0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/rule_class.js @@ -0,0 +1,999 @@ +/* eslint-disable no-use-before-define */ +// eslint-disable-next-line import/no-unresolved +import kbn from 'app/core/utils/kbn'; +// eslint-disable-next-line import/no-extraneous-dependencies +import moment from 'moment'; + +/** + *Rule definition + * + * @export + * @class Rule + */ +export default class Rule { + /** + *Creates an instance of Rule. + * @param {string} pattern + * @param {*} data + * @memberof Rule + */ + constructor(pattern, data) { + this.data = data; + this.data.pattern = pattern; + this.shapeMaps = []; + this.textMaps = []; + this.linkMaps = []; + this.valueMaps = []; + this.rangeMaps = []; + this.id = u.uniqueID(); + this.import(data); + const LEVEL_OK = 0; + const LEVEL_WARN = 1; + const LEVEL_ERROR = 2; + } + + /** + * return data of rule + * + * @returns {data} + * @memberof Rule + */ + getData() { + return this.data; + } + + /** + * import data in rule + * + * @param {data} obj + * @memberof Rule + */ + import(obj) { + this.data.unit = obj.unit || 'short'; + this.data.type = obj.type || 'number'; + this.data.alias = obj.alias || 'No name'; + this.data.aggregation = obj.aggregation || 'current'; + this.data.decimals = obj.decimals !== undefined ? obj.decimals : 2; + this.data.colors = obj.colors + ? [...obj.colors] + : ['rgba(245, 54, 54, 0.9)', 'rgba(237, 129, 40, 0.89)', 'rgba(50, 172, 45, 0.97)']; + this.data.reduce = true; + this.data.style = obj.style || obj.colorMode || 'fillColor'; + this.data.colorOn = obj.colorOn || 'a'; + this.data.link = obj.link !== undefined ? obj.link : false; + this.data.linkOn = obj.colorOn || 'a'; + this.data.linkUrl = obj.linkUrl || ''; + this.data.linkParams = obj.linkParams !== undefined ? obj.linkParams : false; + this.data.textOn = obj.textOn || 'wmd'; + this.data.textReplace = obj.textReplace || 'content'; + this.data.textPattern = obj.textPattern || '/.*/'; + this.data.pattern = obj.pattern || this.data.pattern; + this.data.dateFormat = obj.dateFormat || 'YYYY-MM-DD HH:mm:ss'; + this.data.thresholds = obj.thresholds !== undefined ? [...obj.thresholds] : []; + this.data.stringWarning = obj.stringWarning || ''; + this.data.stringCritical = obj.stringCritical || ''; + this.data.invert = obj.invert !== undefined ? obj.invert : false; + this.data.overlayIcon = obj.overlayIcon !== undefined ? obj.overlayIcon : false; + this.data.tooltip = obj.tooltip !== undefined ? obj.tooltip : false; + this.data.tooltipLabel = obj.tooltipLabel !== undefined ? obj.tooltipLabel : this.data.alias; + this.data.tooltipColors = obj.tooltipColors !== undefined ? obj.tooltipColors : false; + this.data.tooltipOn = obj.tooltipOn !== undefined ? obj.tooltipOn : 'a'; + this.data.tpDirection = obj.tpDirection !== undefined ? obj.tpDirection : 'v'; + this.data.tpGraph = obj.tpGraph !== undefined ? obj.tpGraph : false; + this.data.tpGraphSize = obj.tpGraphSize !== undefined ? obj.tpGraphSize : '100%'; + this.data.tpGraphType = obj.tpGraphType !== undefined ? obj.tpGraphType : 'line'; + let maps = []; + + // SHAPES + this.data.shapeProp = obj.shapeProp || 'id'; + this.data.shapeData = []; + // For 0.2.0 + maps = []; + if (obj.shapeMaps !== undefined && obj.shapeMaps !== null && obj.shapeMaps.length > 0) + maps = obj.shapeMaps; + else maps = obj.shapeData; + + if (maps !== undefined && maps !== null && maps.length > 0) { + maps.forEach(map => { + const newData = {}; + const sm = new ShapeMap(map.pattern, newData); + sm.import(map); + this.shapeMaps.push(sm); + this.data.shapeData.push(newData); + }); + } + + // TEXT + this.data.textProp = obj.textProp || 'id'; + this.data.textData = []; + // For 0.2.0 + maps = []; + if (obj.shapeMaps !== undefined && obj.shapeMaps !== null && obj.shapeMaps.length > 0) + maps = obj.textMaps; + else maps = obj.textData; + if (maps !== undefined && maps != null && maps.length > 0) { + maps.forEach(map => { + const newData = {}; + const tm = new TextMap(map.pattern, newData); + tm.import(map); + this.textMaps.push(tm); + this.data.textData.push(newData); + }); + } + + // LINK + this.data.linkProp = obj.linkProp || 'id'; + this.data.linkData = []; + if (obj.linkData !== undefined && obj.linkData != null && obj.linkData.length > 0) { + obj.linkData.forEach(map => { + const newData = {}; + const lm = new LinkMap(map.pattern, newData); + lm.import(map); + this.linkMaps.push(lm); + this.data.linkData.push(newData); + }); + } + + this.data.mappingType = obj.mappingType || 1; + + // VALUES + this.data.valueData = []; + if (obj.valueData !== undefined && obj.valueData != null && obj.valueData.length > 0) { + obj.valueData.forEach(map => { + const newData = {}; + const vm = new ValueMap(map.value, map.text, newData); + vm.import(map); + this.valueMaps.push(vm); + this.data.valueData.push(newData); + }); + } + + // RANGE + this.data.rangeData = []; + if (obj.rangeData !== undefined && obj.rangeData != null && obj.rangeData.length > 0) { + obj.rangeData.forEach(map => { + const newData = {}; + const rm = new RangeMap(map.from, map.to, map.text, newData); + this.rangeMaps.push(rm); + this.data.rangeData.push(newData); + }); + } + + this.data.sanitize = obj.sanitize || false; + } + + /** + *return uniq id of rule + * + * @returns + * @memberof Rule + */ + getId() { + return this.id; + } + + /** + *Highlight Cells in rule (mapping color text and link) + * + * @memberof Rule + */ + highlightCells() { + if(this.states) { + this.states.forEach(state => { + state.highlightCell(); + }); + } + } + + /** + *Highlight Cells in rule (mapping color text and link) + * + * @memberof Rule + */ + unhighlightCells() { + if(this.states) { + this.states.forEach(state => { + state.unhighlightCell(); + }); + } + } + + /** + *Return the order of this rule + *Grafana 6+ have a bug when reload dashboad, array are not in order + * + * @param {number} order + * @memberof Rule + */ + setOrder(order) { + this.data.order = order; + } + + /** + *Return order of rule + * + * @memberof Rule + */ + getOrder() { + return this.data.order; + } + + /** + *Invert color order + * + * @memberof Rule + */ + invertColorOrder() { + const ref = this.data.colors; + const copy = ref[0]; + ref[0] = ref[2]; + ref[2] = copy; + if (this.data.invert) this.data.invert = false; + else this.data.invert = true; + } + + // + // Conditions + // + /** + *Return true or false for condition to colorize + * + * @param {number} level + * @returns + * @memberof Rule + */ + toColorize(level) { + if (level === -1) return false; + if (this.data.colorMode === "disabled") return false; + if (this.data.colorOn === 'n') return false; + if (this.data.colorOn === 'a') return true; + if (this.data.colorOn === 'wc' && level >= 1) return true; + return false; + } + + /** + *Return true or false for condition to change label + * + * @param {number} level + * @returns + * @memberof Rule + */ + toLabelize(level) { + // if (this.data.textOn === 'wmd' && level > 0) return true; + // if (this.data.textOn === 'wmd' && level === -1) return false; + if (this.data.textOn === 'wmd') return true; + if (this.data.textOn === 'n') return false; + if (this.data.textOn === 'wc' && level >= 1) return true; + if (this.data.textOn === 'co' && level >= 2) return true; + return false; + } + + /** + *Return true or false for condition to display icon warning + * + * @param {level} level + * @returns + * @memberof Rule + */ + toIconize(level) { + if (this.data.overlayIcon === false) return false; + if (this.data.overlayIcon === true && level >= 1) return true; + return false; + } + + /** + *Return true or false for condition to add/replace link + * + * @param {number} level + * @returns + * @memberof Rule + */ + toLinkable(level) { + if (this.data.link === false) return false; + if (this.data.linkOn === 'n') return false; + if (this.data.linkOn === 'a') return true; + if (this.data.linkOn === 'wc' && level >= 1) return true; + return false; + } + + /** + *Return true or false for condition to display tooltip with values + * + * @param {number} level + * @returns + * @memberof Rule + */ + toTooltipize(level) { + if (this.data.tooltip === false) return false; + if (this.data.tooltipOn === 'n') return false; + if (this.data.tooltipOn === 'a') return true; + if (this.data.tooltipOn === 'wc' && level >= 1) return true; + return false; + } + + // + // Series + // + /** + *Return boolean if serie is matched by rule + * + * @param {*} serie + * @returns + * @memberof Rule + */ + matchSerie(serie) { + return u.matchString(serie.alias, this.data.pattern); + } + + // + // SHAPE MAPS + // + /** + *Add new shape for rule + * + * @param {*} pattern + * @memberof Rule + */ + addShapeMap(pattern) { + const data = {}; + const m = new ShapeMap(pattern, data); + m.import(data); + this.shapeMaps.push(m); + this.data.shapeData.push(data); + } + + /** + *Remove shape for rule + * + * @param {number} index + * @memberof Rule + */ + removeShapeMap(index) { + this.data.shapeData.splice(index, 1); + this.shapeMaps.splice(index, 1); + } + + /** + *Return shape objet in index position + * + * @param {number} index + * @returns {ShapeMap} + * @memberof Rule + */ + getShapeMap(index) { + return this.shapeMaps[index]; + } + + /** + *Return all ShapeMaps + * + * @returns {Array} + * @memberof Rule + */ + getShapeMaps() { + return this.shapeMaps; + } + + /** + *Return bool if shape name (value|id) is in rule + * + * @param {string} pattern + * @returns + * @memberof Rule + */ + matchShape(pattern) { + let found = false; + this.shapeMaps.forEach(element => { + if (element.match(pattern)) found = true; + }); + return found; + } + + // + // TEXT MAPS + // + addTextMap(pattern) { + const data = {}; + const m = new TextMap(pattern, data); + m.import(data); + this.textMaps.push(m); + this.data.textData.push(data); + } + + removeTextMap(index) { + this.data.textData.splice(index, 1); + this.textMaps.splice(index, 1); + } + + getTextMap(index) { + return this.textMaps[index]; + } + + getTextMaps() { + return this.textMaps; + } + + matchText(pattern) { + let found = false; + this.textMaps.forEach(element => { + if (element.match(pattern)) found = true; + }); + return found; + } + + // + // LINK MAPS + // + addLinkMap(pattern) { + u.log(1, 'Rule.addLinkMap()'); + const data = {}; + const m = new LinkMap(pattern, data); + m.import(data); + this.linkMaps.push(m); + this.data.linkData.push(data); + } + + removeLinkMap(index) { + this.data.linkData.splice(index, 1); + this.linkMaps.splice(index, 1); + } + + getLinkMap(index) { + return this.linkMaps[index]; + } + + getLinkMaps() { + return this.linkMaps; + } + + matchLink(pattern) { + let found = false; + this.linkMaps.forEach(element => { + if (element.match(pattern)) found = true; + }); + return found; + } + + // + // STRING VALUE MAPS + // + addValueMap(value, text) { + const data = {}; + const m = new ValueMap(value, text, data); + m.import(data); + this.valueMaps.push(m); + this.data.valueData.push(data); + } + + removeValueMap(index) { + this.data.valueData.splice(index, 1); + this.valueMaps.splice(index, 1); + } + + getValueMap(index) { + return this.valueMaps[index]; + } + + getValueMaps() { + return this.valueMaps; + } + + // + // STRING RANGE VALUE MAPS + // + addRangeMap(from, to, text) { + const data = {}; + const m = new RangeMap(from, to, text, data); + this.rangeMaps.push(m); + this.data.rangeData.push(data); + } + + removeRangeMap(index) { + this.data.rangeData.splice(index, 1); + this.rangeMaps.splice(index, 1); + } + + getRangeMap(index) { + return this.rangeMaps[index]; + } + + getRangeMaps() { + return this.rangeMaps; + } + + hideRangeMap(index) { + this.rangeMaps[index].hide(); + } + + showRangeMap(index) { + this.rangeMaps[index].show(); + } + + // + // Format value + // + /** + *Get color according to value + * + * @param {*} value + * @returns {string} html color + * @memberof Rule + */ + getColorForValue(value) { + if (!this.data.thresholds || this.data.thresholds.length === 0) { + return null; + } + + for (let i = this.data.thresholds.length; i > 0; i -= 1) { + if (value >= this.data.thresholds[i - 1]) { + return this.data.colors[i]; + } + } + return _.first(this.data.colors); + } + + /** + *Get color according level (-1,0,1,2) + * + * @param {*} level + * @returns + * @memberof Rule + */ + getColorForLevel(level) { + let colors = [...this.data.colors]; + if (!this.data.invert) colors = colors.reverse(); + if (level <= 0) return colors[0]; + else if (colors[level] !== undefined) return colors[level]; + return _.first(colors); + } + + /** + * Return Level according to value and rule options + * + * @param {float} value + * @returns 0, 1 or 2 + * @memberof Rule + */ + getThresholdLevel(value) { + if (this.data.type === 'number') { + let thresholdLevel = 0; + const thresholds = this.data.thresholds; + + if (thresholds === undefined || thresholds.length === 0) return -1; + if (thresholds.length !== 2) return -1; + + // non invert + if (!this.data.invert) { + thresholdLevel = 2; + if (value >= thresholds[0]) thresholdLevel = 1; + if (value >= thresholds[1]) thresholdLevel = 0; + } else { + thresholdLevel = 0; + if (value >= thresholds[0]) thresholdLevel = 1; + if (value >= thresholds[1]) thresholdLevel = 2; + } + return thresholdLevel; + } else if (this.data.type === 'string') { + if (value === this.data.stringWarning) return 1; + if (value === this.data.stringCritical) return 2; + let formatedValue = this.getFormattedValue(value); + if (formatedValue === this.data.stringWarning) return 1; + if (formatedValue === this.data.stringCritical) return 2; + return 0; + } + return 0; + } + + getValueForSerie(serie) { + if (this.matchSerie(serie)) { + let value = _.get(serie.stats, this.data.aggregation); + if (value === undefined || value === null) { + value = serie.datapoints[serie.datapoints.length - 1][0]; + } + return value; + } + return '-'; + } + + getFormattedValueForSerie(serie) { + const formattedValue = this.getValueForSerie(serie); + return this.getFormattedValue(formattedValue); + } + + getLink() { + if (this.data.linkParams) return this.data.linkUrl + window.location.search; + return this.data.linkUrl; + } + + getFormattedValue(value) { + // Number + if (this.data.type === 'number') { + if (!_.isFinite(value)) return 'Invalid Number'; + if (value === null || value === void 0) { + return '-'; + } + let decimals = this.decimalPlaces(value); + decimals = + typeof this.data.decimals === 'number' ? Math.min(this.data.decimals, decimals) : decimals; + return formatValue(value, this.data.unit, this.data.decimals); + } + + if (this.data.type === 'string') { + if (_.isArray(value)) { + value = value.join(', '); + } + const mappingType = this.data.mappingType || 0; + if (mappingType === 1 && this.valueMaps) { + for (let i = 0; i < this.valueMaps.length; i += 1) { + const map = this.valueMaps[i]; + if (map.match(value)) return map.getFormattedText(value); + } + return value.toString(); + } + + if (mappingType === 2 && this.rangeMaps) { + for (let i = 0; i < this.rangeMaps.length; i += 1) { + const map = this.rangeMaps[i]; + if (map.match(value)) return map.getFormattedText(value); + } + return value.toString(); + } + + if (value === null || value === void 0) { + return '-'; + } + } + + if (this.data.type === 'date') { + if (value === undefined || value === null) { + return '-'; + } + + if (_.isArray(value)) { + value = value[0]; + } + const date = moment(value); + // if (this.dashboard.isTimezoneUtc()) { + // date = date.utc(); + // } + return date.format(this.data.dateFormat); + } + + return value; + } + + getReplaceText(text, FormattedValue) { + if (this.data.textReplace === 'content') return FormattedValue; + if (this.data.textReplace === 'pattern') { + const regexVal = u.stringToJsRegex(this.data.textPattern); + if (text.toString().match(regexVal)) return text.toString().replace(regexVal, FormattedValue); + return text; + } + if (this.data.textReplace === 'as') { + return `${text} ${FormattedValue}` + } + if (this.data.textReplace === 'anl') { + return `${text}\n${FormattedValue}` + } + } + + defaultValueFormatter(value) { + if (value === null || value === void 0 || value === undefined) { + return ''; + } + + if (_.isArray(value)) { + value = value.join(', '); + } + + if (this.sanitize) { + return this.$sanitize(value); + } + return _.escape(value); + } + + decimalPlaces(num) { + let match = ('' + num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + if (!match) { + return 0; + } + return Math.max( + 0, + // Number of digits right of decimal point. + (match[1] ? match[1].length : 0) - + // Adjust for scientific notation. + (match[2] ? +match[2] : 0) + ); + } +} + +// +// ShapeMap Class +// +class ShapeMap { + constructor(pattern, data) { + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = undefined; + this.data.pattern = pattern; + this.import(data); + } + + import(obj) { + this.data.pattern = obj.pattern || ''; + this.data.hidden = obj.hidden || false; + } + + match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + + getId() { + return this.id; + } + + show() { + this.data.hidden = false; + } + + hide() { + this.data.hidden = true; + } + + isHidden() { + return this.data.hidden; + } + + export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } + + toVisible() { + if (this.data.hidden) return false; + return true; + } +} + +// +// TextMap Class +// +class TextMap { + constructor(pattern, data) { + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = pattern; + this.import(data); + } + + import(obj) { + this.data.pattern = obj.pattern || this.data.pattern; + this.data.hidden = obj.hidden || false; + } + + match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + + getId() { + return this.id; + } + + show() { + this.data.hidden = false; + } + + hide() { + this.data.hidden = true; + } + + isHidden() { + return this.data.hidden; + } + + export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } +} + +// +// LinkMap Class +// +class LinkMap { + constructor(pattern, data) { + this.data = data; + this.id = u.uniqueID(); + this.data.pattern = pattern; + this.import(data); + } + + import(obj) { + this.data.pattern = obj.pattern || this.data.pattern || ''; + this.data.hidden = obj.hidden || false; + } + + match(text) { + if (text === undefined || text === null || text.length === 0) return false; + return u.matchString(text, this.data.pattern); + } + + getId() { + return this.id; + } + + show() { + this.data.hidden = false; + } + + hide() { + this.data.hidden = true; + } + + isHidden() { + return this.data.hidden; + } + + export() { + return { + pattern: this.data.pattern, + hidden: this.data.hidden + }; + } +} + +// +// RangeMap Class +// +class RangeMap { + constructor(from, to, text, data) { + this.data = data; + this.id = u.uniqueID(); + this.data.from = from; + this.data.to = to; + this.data.text = text; + this.data.hidden = false; + this.import(data); + } + + import(obj) { + this.data.from = obj.from || this.data.from || ''; + this.data.to = obj.to || this.data.to || ''; + this.data.text = obj.text || this.data.text || ''; + this.data.hidden = obj.hidden || this.data.hidden || false; + } + + match(value) { + if (this.data.from === 'null' && this.data.to === 'null') { + return true; + } + if (value === null) { + if (this.data.from === 'null' && this.data.to === 'null') { + return true; + } + } + if (Number(this.data.from) <= Number(value) && Number(this.data.to) >= Number(value)) { + return true; + } + return false; + } + + getId() { + return this.id; + } + + getFormattedText(value) { + if (value === null) { + if (this.data.from === 'null' && this.data.to === 'null') { + return this.data.text; + } + } + if (this.match(value)) { + return this.data.text; + } + return value; + } + + show() { + this.data.hidden = false; + } + + hide() { + this.data.hidden = true; + } + + isHidden() { + return this.data.hidden; + } + + export() { + return { + from: this.data.from, + to: this.data.to, + text: this.data.text, + hidden: this.data.hidden + }; + } +} + +// +// ValueMap Class +// +class ValueMap { + constructor(value, text, data) { + this.data = data; + this.id = u.uniqueID(); + this.data.value = value; + this.data.text = text; + this.data.hidden = false; + this.import(data); + } + + import(obj) { + this.data.value = obj.value || this.data.value || ''; + this.data.text = obj.text || this.data.text || ''; + this.data.hidden = obj.hidden || this.data.hidden || false; + } + + match(value) { + if (value === null || value === undefined) { + if (this.data.value === 'null') { + return true; + } + return false; + } + + if (!_.isString(value) && Number(this.data.value) === Number(value)) { + return true; + } + + return u.matchString(value.toString(), this.data.value); + } + + getId() { + return this.id; + } + + getFormattedText(value) { + if (value === null) { + if (this.data.value === 'null') { + return this.data.text; + } + } + if (this.match(value)) { + return this.data.text; + } + return value; + } + + show() { + this.data.hidden = false; + } + + hide() { + this.data.hidden = true; + } + + isHidden() { + return this.data.hidden; + } + + export() { + return { + value: this.data.value, + text: this.data.text, + hidden: this.data.hidden + }; + } + +} + +function formatValue(value, unit, decimals) { + return kbn.valueFormats[unit](value, decimals, null).toString(); +} diff --git a/data/plugins/grafana-flowcharting/src/rulesHandler.js b/data/plugins/grafana-flowcharting/src/rulesHandler.js new file mode 100644 index 0000000000000..9ebff7253d54d --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/rulesHandler.js @@ -0,0 +1,200 @@ +import Rule from './rule_class'; + +/** + * Rules Handler + * + * @export + * @class RulesHandler + */ +export default class RulesHandler { + /** + *Creates an instance of RulesHandler. + * @param {*} $scope + * @param {*} data + * @memberof RulesHandler + */ + constructor($scope, data) { + u.log(1, 'RulesHandler.constructor()'); + this.$scope = $scope || null; + this.rules = []; + this.data = data; + this.import(this.data); + } + + /** + * import datas in rule + * + * @param {*} obj + * @memberof RulesHandler + */ + import(obj) { + u.log(1, 'RuleHandler.import()'); + u.log(0, 'RuleHandler.import() obj', obj); + this.rules = []; + let index = 1; + if (obj !== undefined && obj !== null && obj.length > 0) { + // Fix bug of grafana 6+ + if (obj[0].order != undefined) obj = _.sortBy(_.sortBy(obj, o => o.order)) + obj.forEach(map => { + const newData = {}; + const rule = new Rule(map.pattern, newData); + rule.import(map); + rule.setOrder(index); + index += 1; + this.rules.push(rule); + this.data.push(newData); + }); + } + } + + /** + * Return array of rules + * + * @returns {Array} of Rules + * @memberof RulesHandler + */ + getRules() { + return this.rules; + } + + /** + * Get Rule at index + * + * @param {number} index + * @returns {Rule} + * @memberof RulesHandler + */ + getRule(index) { + return this.rules[index]; + } + + /** + * Add a new rule + * + * @param {string} pattern + * @returns {Rule} + * @memberof RulesHandler + */ + addRule(pattern) { + const data = {}; + const newRule = new Rule(pattern, data); + this.rules.push(newRule); + this.data.push(data); + newRule.setOrder(this.countRules()); + return newRule; + } + + /** + * count number of rules + * + * @returns {number} + * @memberof RulesHandler + */ + countRules() { + if (this.rules !== undefined && Array.isArray(this.rules)) return this.rules.length; + return 0; + } + + /** + *Redefine Order number of rules + * + * @memberof RulesHandler + */ + setOrder() { + for (let index = 0; index < this.rules.length; index++) { + const rule = this.rules[index]; + rule.setOrder(index + 1); + } + } + + /** + * Remove rule at index + * + * @param {number} index + * @memberof RulesHandler + */ + removeRule(index) { + this.rules.splice(index, 1); + this.data.splice(index, 1); + this.setOrder(); + } + + /** + * Clone rules at index in index - 1 + * + * @param {number} index + * @memberof RulesHandler + */ + cloneRule(index) { + const rule = this.getRule(index); + const data = rule.getData(); + const newData = {}; + this.reduce(); + const newRule = new Rule(newData.pattern, newData); + newRule.import(data); + newData.alias = `Copy of ${newData.alias}`; + this.rules.splice(index, 0, newRule); + this.data.splice(index, 0, newData); + newRule.data.reduce = false; + this.activeRuleIndex = index; + this.setOrder(); + const elt = document.getElementById(newRule.getId()); + // NOT WORK : TODO + if (elt) { + setTimeout(() => { + elt.focus(); + }, 100); + } + } + + /** + *Reduce all rules + * + * @memberof RulesHandler + */ + reduce() { + this.getRules().forEach(rule => { + rule.data.reduce = true; + }); + } + + /** + * Move rule on index in index - 1 + * + * @param {number} index index + * @memberof RulesHandler + */ + moveRuleToUp(index) { + const first = 0; + const rules = this.rules; + const last = rules.length - 1; + if (index !== first && last !== first) { + const curr = rules[index]; + curr.setOrder(index); + const before = rules[index - 1]; + before.setOrder(index + 1); + rules[index - 1] = curr; + rules[index] = before; + } + } + + /** + * Move rule on index in index + 1 + * + * @param {number} index + * @memberof RulesHandler + */ + moveRuleToDown(index) { + const first = 0; + const rules = this.rules; + const last = rules.length - 1; + if (index !== last && last !== first) { + const curr = rules[index]; + curr.setOrder(index + 2); + const after = rules[index + 1]; + after.setOrder(index + 1); + rules[index + 1] = curr; + rules[index] = after; + } + } +} diff --git a/data/plugins/grafana-flowcharting/src/state_class.js b/data/plugins/grafana-flowcharting/src/state_class.js new file mode 100644 index 0000000000000..73f60285234b0 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/state_class.js @@ -0,0 +1,635 @@ +import TooltipHandler from './tooltipHandler'; + +/** + *Class for state of one cell + * + * @export + * @class State + */ +export default class State { + /** + *Creates an instance of State. + * @param {mxCell} mxcell + * @param {XGraph} xgraph + * @param {*} ctrl - ctrl panel + * @memberof State + */ + constructor(mxcell, xgraph, ctrl) { + u.log(1, 'State.constructor()'); + this.mxcell = mxcell; + this.cellId = mxcell.id; + this.xgraph = xgraph; + this.ctrl = ctrl; + this.templateSrv = this.ctrl.templateSrv; + // If Cell is modified + this.changed = false; + this.changedShape = false; + this.changedStyle = { + fillColor: false, + strokeColor: false, + fontColor: false, + imageBorder: false, + imageBackground: false + }; + this.changedText = false; + this.changedLink = false; + + // If state is target + this.matched = false; + this.matchedShape = false; + this.matchedStyle = { + fillColor: false, + strokeColor: false, + fontColor: false, + imageBorder: false, + imageBackground: false + }; + this.matchedText = false; + this.matchedLink = false; + this.globalLevel = -1; + this.styleKeys = ['fillColor', 'strokeColor', 'fontColor', 'imageBorder', 'imageBackground']; + this.level = { + fillColor: -1, + strokeColor: -1, + fontColor: -1, + imageBorder: -1, + imageBackground: -1 + }; + this.tooltipHandler = null; + this.mxcell.GF_tooltipHandler = null; + this.currentColors = {}; + this.originalColors = {}; + this.originalStyle = mxcell.getStyle(); + this.originalText = this.xgraph.getLabel(mxcell); + this.currentText = this.originalText; + let link = this.xgraph.getLink(mxcell); + if (link === undefined) link = null; + this.originalLink = link; + this.currentLink = link; + this.styleKeys.forEach(style => { + const color = this.xgraph.getStyleCell(mxcell, style); + this.currentColors[style] = color; + this.originalColors[style] = color; + }); + } + + /** + *Call applyState() asynchronously + * + * @memberof State + */ + async async_applyState() { + this.applyState(); + } + + /** + *Define state according to 1 rule and 1 serie without apply display + * + * @param {Rule} rule + * @param {Serie} serie + * @memberof State + */ + setState(rule, serie) { + u.log(1, 'State.setState()'); + u.log(0, 'State.setState() Rule', rule); + u.log(0, 'State.setState() Serie', serie); + if (rule.matchSerie(serie)) { + const shapeMaps = rule.getShapeMaps(); + const textMaps = rule.getTextMaps(); + const linkMaps = rule.getLinkMaps(); + const value = rule.getValueForSerie(serie); + const FormattedValue = rule.getFormattedValue(value); + const level = rule.getThresholdLevel(value); + const color = rule.getColorForLevel(level); + const tooltipName = rule.data.alias + "_" + serie.alias; + + // SHAPE + let cellProp = this.getCellProp(rule.data.shapeProp); + shapeMaps.forEach(shape => { + if (!shape.isHidden() && shape.match(cellProp)) { + this.matchedShape = true; + this.matched = true; + // Test + this.mxcell.serie = serie; + // tooltips + if (rule.toTooltipize(level)) { + // Metrics + let tpColor = null; + let label = (rule.data.tooltipLabel == null || rule.data.tooltipLabel.length === 0) ? serie.alias : rule.data.tooltipLabel; + if (rule.data.tooltipColors) tpColor = color; + this.addTooltip(tooltipName, label, FormattedValue, tpColor, rule.data.tpDirection); + // Graph + if (rule.data.tpGraph) + this.addTooltipGraph( + tooltipName, + rule.data.tpGraphType, + rule.data.tpGraphSize, + serie + ); + // Date + this.updateTooltipDate(); + } + + // Color Shape + if (this.globalLevel <= level) { + this.setLevelStyle(rule.data.style, level); + if (rule.toColorize(level)) { + this.setColorStyle(rule.data.style, color); + this.matchedStyle[rule.data.style] = true; + } else if (this.changedShape) { + if (this.changedStyle[rule.data.style]) this.unsetColorStyle(rule.data.style); + } + this.overlayIcon = rule.toIconize(level); + } + } + }); + + // TEXT + cellProp = this.getCellProp(rule.data.textProp); + textMaps.forEach(text => { + if (!text.isHidden() && text.match(cellProp)) { + this.matchedText = true; + this.matched = true; + if (rule.toLabelize(level)) { + const textScoped = this.templateSrv.replaceWithText(FormattedValue); + this.setText(rule.getReplaceText(this.currentText, textScoped)); + } else { + // Hide text + this.setText(rule.getReplaceText(this.currentText, '')); + } + } + }); + + // LINK + cellProp = this.getCellProp(rule.data.linkProp); + linkMaps.forEach(link => { + if (!link.isHidden() && link.match(cellProp)) { + this.matchedLink = true; + this.matched = true; + if (this.globalLevel <= level) { + if (rule.toLinkable(level)) { + const linkScoped = this.templateSrv.replaceWithText(rule.getLink()); + this.setLink(linkScoped); + } + } + } + }); + } + u.log(0, 'State.setState() state', this); + } + + /** + *Restore initial status of state without apply display. + * Use applyState() to apply on graph (color, level and text) + * + * @memberof State + */ + unsetState() { + u.log(1, 'State.unsetState()'); + this.unsetLevel(); + // this.unsetColor(); Replace by reset + this.resetStyle(); + this.unsetText(); + this.unsetLink(); + this.unsetTooltip(); + this.matched = false; + this.matchedShape = false; + this.styleKeys.forEach(key => { + this.matchedStyle[key] = false; + }); + this.matchedText = false; + this.matchedLink = false; + } + + /** + *Flag to indicate state is matching by a rule and series + * + * @returns {boolean} + * @memberof State + */ + isMatched() { + return this.matched; + } + + /** + *Flag to indicate state is changed, need apply state + * + * @returns {boolean} + * @memberof State + */ + isChanged() { + return this.changed; + } + + /** + * + * + * @param {string} prop - id|value + * @returns {string} return original value of id or label of cell + * @memberof State + */ + getCellProp(prop) { + if (prop === 'id') return this.cellId; + if (prop === 'value') return this.originalText; + return '/!\\ Not found'; + } + + /** + *Define color for a style + * + * @param {string} style - fillcolor|fontcolor|stroke + * @param {string} color - html color + * @memberof State + */ + setColorStyle(style, color) { + u.log(1, 'State.setColorStyle()'); + this.currentColors[style] = color; + } + + /** + *Reset color with initial color + * + * @param {string} style - fillcolor|fontcolor|stroke + * @memberof State + */ + unsetColorStyle(style) { + this.currentColors[style] = this.originalColors[style]; + } + + /** + *Restore initial color of cell + * + * @memberof State + */ + unsetColor() { + this.styleKeys.forEach(style => { + this.unsetColorStyle(style); + }); + } + + /** + *Reset default level (-1) for the style + * + * @param {string} style - fillcolor|fontcolor|stroke + * @memberof State + */ + unsetLevelStyle(style) { + this.level[style] = -1; + } + + /** + *Reset tooltip + * + * @memberof State + */ + unsetTooltip() { + if (this.tooltipHandler != null) this.tooltipHandler.destroy(); + this.tooltipHandler = null; + } + + /** + *Reset level to -1 for all style + * + * @memberof State + */ + unsetLevel() { + this.styleKeys.forEach(key => { + this.unsetLevelStyle(key); + }); + this.globalLevel = -1; + } + + /** + *Attribute a level for a style + * + * @param {string} style - fillcolor|fontcolor|stroke + * @param {number} level + * @memberof State + */ + setLevelStyle(style, level) { + u.log(1, 'State.setLevelStyle()'); + this.level[style] = level; + if (this.globalLevel < level) this.globalLevel = level; + } + + /** + *Retrun the level for a style + * + * @param {string} style - fillcolor|fontcolor|stroke + * @returns + * @memberof State + */ + getLevelStyle(style) { + return this.level[style]; + } + + /** + *Get the highest/global level + * + * @returns + * @memberof State + */ + getLevel() { + return this.globalLevel; + } + + /** + *Return the label level of current level + * + * @returns + * @memberof State + */ + getTextLevel() { + const level = this.getLevel(); + switch (level) { + case -1: + return 'NO DATA'; + case 0: + return 'OK'; + case 1: + return 'WARN'; + case 2: + return 'ERROR'; + default: + return 'NULL'; + } + } + + /** + *Attribute new label + * + * @param {string} text + * @memberof State + */ + setText(text) { + this.currentText = text; + } + + /** + *Reset the current label with the initial label + * + * @memberof State + */ + unsetText() { + this.currentText = this.originalText; + } + + /** + *Assign new link + * + * @param {string} url + * @memberof State + */ + setLink(url) { + this.currentLink = url; + } + + /** + *Reset current link with original/initial link + * + * @memberof State + */ + unsetLink() { + this.currentLink = this.originalLink; + } + + /** + *Add metric to tooltip of shape + * + * @param {string} label - Label to display in tooltip + * @param {string} value - Formatted value + * @param {string} color - Color for the value + * @memberof State + */ + addTooltip(name, label, value, color, direction) { + u.log(1, 'State.addTooltipValue()'); + u.log(0, 'State.addTooltipValue() label', label); + u.log(0, 'State.addTooltipValue() value', value); + if (this.tooltipHandler == null) this.tooltipHandler = new TooltipHandler(this.mxcell); + this.tooltipHandler.addMetric(name, label, value, color, direction); + } + + /** + *Add Graph options to tooltip + * + * @param {string} name + * @param {string} type + * @param {string} size + * @param {timeSerie} serie + * @memberof State + */ + addTooltipGraph(name, type, size, serie) { + this.tooltipHandler.addGraph(name, type, size, serie); + } + + updateTooltipDate() { + this.tooltipHandler.updateDate(); + } + + // eslint-disable-next-line class-methods-use-this + isGradient() { + // TODO: next version + } + + /** + *Return true if is a shape/vertex + * + * @returns + * @memberof State + */ + isShape() { + return this.mxcell.isVertex(); + } + + /** + *Return true if is a arrow/connector + * + * @returns + * @memberof State + */ + isConnector() { + return this.mxcell.isEdge(); + } + + /** + *Apply and draw new shape color and form + * + * @memberof State + */ + applyShape() { + this.changedShape = true; + this.applyStyle(); + this.applyIcon(); + } + + applyStyle() { + this.styleKeys.forEach(key => { + if (this.matchedStyle[key]) { + const color = this.currentColors[key]; + this.xgraph.setStyleCell(this.mxcell, key, color); + if (color !== this.originalColors[key]) this.changedStyle[key] = true; + } + }); + } + + applyIcon() { + // Apply icons + if (this.overlayIcon) { + this.changedIcon = true; + this.xgraph.addOverlay(this.getTextLevel(), this.mxcell); + } else { + this.xgraph.removeOverlay(this.mxcell); + } + } + + resetShape() { + this.changedShape = false; + this.resetStyle(); + this.resetIcon(); + } + + resetIcon() { + this.changedIcon = false; + this.xgraph.removeOverlay(this.mxcell); + } + + /** + * unset et apply, reset to old style + * + * @memberof State + */ + resetStyle() { + this.unsetColor(); + this.mxcell.setStyle(this.originalStyle); + this.styleKeys.forEach(key => { + this.changedStyle[key] = false; + }); + } + + /** + *Apply new label + * + * @memberof State + */ + applyText() { + this.changedText = true; + this.xgraph.setLabelCell(this.mxcell, this.currentText); + } + + resetText() { + this.changedText = false; + this.unsetText(); + this.xgraph.setLabelCell(this.mxcell, this.originalText); + } + + /** + *Apply new link + * + * @memberof State + */ + applyLink() { + this.changedLink = true; + this.xgraph.addLink(this.mxcell, this.currentLink); + } + + resetLink() { + this.changedLink = false; + this.unsetLink(); + this.xgraph.addLink(this.mxcell, this.originalLink); + } + + /** + *Apply new tooltip + * + * @memberof State + */ + applyTooltip() { + if (this.tooltipHandler != null && this.tooltipHandler.isChecked()) { + this.mxcell.GF_tooltipHandler = this.tooltipHandler; + } + } + + /** + *Apply new state + * + * @memberof State + */ + applyState() { + u.log(1, 'State.applyState()'); + if (this.matched) { + this.changed = true; + + // TOOLTIP + this.applyTooltip(); + + // SHAPES + if (this.matchedShape) { + this.applyShape(); + } else if (this.changedShape) { + this.resetShape(); + } + + // TEXTS + if (this.matchedText) { + this.applyText(); + } else if (this.changedText) { + this.resetText(); + } + + // LINKS + if (this.matchedLink) { + this.applyLink(); + } else if (this.changedLink) { + this.resetLink(); + } + } else if (this.changed) this.reset(); + } + + /** + *Reset and restore state + * + * @memberof State + */ + reset() { + this.resetShape(); + this.resetText(); + this.resetLink(); + this.changed = false; + } + + /** + *Prepare state for a new rule and serie + * + * @memberof State + */ + prepare() { + if (this.changed) { + this.lastChange = null; + this.unsetLevel(); + this.unsetTooltip(); + this.unsetText(); + this.matched = false; + this.matchedShape = false; + this.matchedText = false; + this.matchedLink = false; + } + } + + /** + *Highlight mxcell + * + * @memberof State + */ + highlightCell() { + this.xgraph.highlightCell(this.mxcell); + } + + /** + * unhighlight mxcell + * + * @memberof State + */ + unhighlightCell() { + this.xgraph.unhighlightCell(this.mxcell); + } +} diff --git a/data/plugins/grafana-flowcharting/src/statesHandler.js b/data/plugins/grafana-flowcharting/src/statesHandler.js new file mode 100644 index 0000000000000..ca883321b1d4c --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/statesHandler.js @@ -0,0 +1,223 @@ +/* global u */ +import State from './state_class'; + +/** + *States Handler class + * + * @export + * @class StateHandler + */ +export default class StateHandler { + constructor(xgraph, ctrl) { + u.log(1, 'StateHandler.constructor()'); + this.states = []; + this.ctrl = ctrl; + this.templateSrv = this.ctrl.templateSrv; + this.xgraph = xgraph; + this.initStates(this.xgraph, ctrl.rulesHandler.getRules()); + } + + /** + * Init states + * + * @param {XGraph} xgraph + * @memberof StateHandler + */ + // initStates(xgraph, rules) { + // u.log(1, 'StateHandler.initStates()'); + // this.xgraph = xgraph; + // this.states = []; + // this.updateStates(rules); + // } + initStates(xgraph,rules) { + u.log(1, 'StateHandler.initStates()'); + this.xgraph = xgraph; + this.states = []; + let mxcells = xgraph.getMxCells(); + _.each(mxcells, mxcell => { + this.addState(mxcell); + }); + } + + /** + *Return states array for a rule + * + * @param {Rule} rule - rule mapping + * @returns {Array} + * @memberof StateHandler + */ + getStatesForRule(rule) { + u.log(1, 'StateHandler.getStatesForRule()'); + let result = []; + let name = null; + let xgraph = this.xgraph; + this.states.forEach(state => { + let mxcell = state.mxcell; + let found = false; + // SHAPES + name = xgraph.getValuePropOfMxCell(rule.data.shapeProp, mxcell); + if (rule.matchShape(name)) { + result.push(state); + found = true; + } + + // TEXTS + if (!found) { + name = xgraph.getValuePropOfMxCell(rule.data.textProp, mxcell); + if (rule.matchText(name)) { + result.push(state); + found = true; + } + } + // LINKS + if (!found) { + name = xgraph.getValuePropOfMxCell(rule.data.linkProp, mxcell); + if (rule.matchLink(name)) { + result.push(state); + found = true; + } + } + }); + return result; + } + + /** + * Update States : Add or remove state in states when rules changed + * + * @param {XGraph} xgraph + * @param {Array} rules + * @memberof StateHandler + */ + // OLD METHOD : see getStatesForRule + updateStates(rules) { + u.log(1, 'StateHandler.updateStates()'); + rules.forEach(rule => { + rule.states = this.getStatesForRule(rule); + }); + } + + /** + * Return array of state + * @returns {Array} Array of state object + */ + getStates() { + return this.states; + } + + /** + * Find state by Id + * @param {string} cellId - Id of cell + * @returns {state} + */ + getState(cellId) { + let foundState = null; + for (let index = 0; index < this.states.length; index++) { + const state = this.states[index]; + if (cellId == state.cellId) { + foundState = state; + break; + } + } + return foundState; + } + + /** + * Add a state + * + * @param {mxCell} mxcell + * @returns {State} created state + * @memberof StateHandler + */ + addState(mxcell) { + let state = this.getState(mxcell.id); + if (state === null) { + state = new State(mxcell, this.xgraph, this.ctrl); + this.states.push(state); + } + return state; + } + + /** + * Remove state + * + * @param {mxCell} mxcell + * @memberof StateHandler + */ + // NOT USED + // removeState(mxcell) { + // this.states = _.without(this.states, mxcell); + // } + + /** + * Count number of state + * + * @returns {Number} + * @memberof StateHandler + */ + countStates() { + return this.states.length; + } + + /** + * Count number of state with level + * + * @param {Number} level - 0 for OK | 1 for Warning | 2 for Error + * @returns {Number} + * @memberof StateHandler + */ + countStatesWithLevel(level) { + let count = 0; + this.states.forEach(state => { + if (state.getLevel() === level) count += 1; + }); + return count; + } + /** + * Restore initial status and prepare states object + */ + prepare() { + this.states.forEach(state => { + state.prepare(); + }); + } + + /** + * Change states according to rules and datas from grafana + * @param {Array} rules - Array of Rule object + * @param {Array} series - Array of serie object + */ + setStates(rules, series) { + u.log(1, 'StateHandler.setStates()'); + u.log(0, 'StatesHandler.setStates() Rules', rules); + u.log(0, 'StatesHandler.setStates() Series', series); + u.log(0, 'StatesHandler.setStates() States', this.states); + this.prepare(); + rules.forEach(rule => { + if (rule.states === undefined || rule.states.length === 0 ) rule.states = this.getStatesForRule(rule); + rule.states.forEach(state => { + series.forEach(serie => { + state.setState(rule, serie); + }); + }); + }); + } + + /** + * Apply color and text + */ + applyStates() { + u.log(1, 'StateHandler.applyStates()'); + this.states.forEach(state => { + state.applyState(); + }); + } + + /** + *Call applyStates asynchronously + * + * @memberof StateHandler + */ + async_applyStates() { + this.applyStates(); + } +} diff --git a/data/plugins/grafana-flowcharting/src/tooltipHandler.js b/data/plugins/grafana-flowcharting/src/tooltipHandler.js new file mode 100644 index 0000000000000..60fcf97a15d88 --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/tooltipHandler.js @@ -0,0 +1,218 @@ +const Chartist = require('chartist'); + +/** + * + * + * @export + * @class TooltipHandler + */ +export default class TooltipHandler { + constructor(mxcell) { + this.defaultColor = '#8c8980'; + this.timeFormat = 'YYYY-MM-DD HH:mm:ss'; + this.mxcell = mxcell; + this.checked = false; + this.metrics = []; + this.lineOptions = { + showPoint: false, + showLine: true, + showArea: true, + fullWidth: true, + showLabel: false, + axisX: { + showGrid: false, + showLabel: false, + offset: 0 + }, + axisY: { + showGrid: false, + showLabel: false, + offset: 0 + }, + chartPadding: 0, + // low: 0 + }; + } + + isChecked() { + return this.checked; + } + + addMetric(name, label, value, color, direction) { + let metric = this.findTooltipValue(name); + this.checked = true; + let found = metric != null ? true : false; + if (!found) { + metric = { + graphOptions: {} + }; + } + metric.name = name; + metric.label = label; + metric.value = value; + metric.color = color != null ? color : this.defaultColor; + metric.direction = direction; + if (!found) this.metrics.push(metric); + } + + addGraph(name, type, size, serie) { + let metric = this.findTooltipValue(name); + let found = metric != null ? true : false; + if (!found) { + metric = { + graphOptions: {} + }; + } + metric.name = name; + metric.graph = true; + metric.graphOptions.type = type; + metric.graphOptions.size = size; + metric.graphOptions.serie = serie; + if (!found) this.metrics.push(metric); + } + + updateDate() { + let current_datetime = new Date(); + this.lastChange = + current_datetime.getFullYear() + + '-' + + (current_datetime.getMonth() + 1) + + '-' + + current_datetime.getDate() + + ' ' + + current_datetime.getHours() + + ':' + + current_datetime.getMinutes() + + ':' + + current_datetime.getSeconds(); + } + + findTooltipValue(name) { + for (let index = 0; index < this.metrics.length; index += 1) { + const metric = this.metrics[index]; + if (metric.name === name) return metric; + } + return null; + } + + destroy() { + if (this.mxcell.GF_tooltipHandler) delete this.mxcell.GF_tooltipHandler; + } + + getTooltipDiv(parentDiv) { + // if (this.div != null) return this.div; + if (!this.checked) return null; + this.div = document.createElement('div'); + let div = this.div; + div.id = this.mxcell.mxObjectId + '_GLOBAL'; + if (parentDiv != undefined) parentDiv.appendChild(div); + if (this.metrics.length > 0) { + this.getDateDiv(div); + let metricsDiv = document.createElement('div'); + div.appendChild(metricsDiv); + for (let index = 0; index < this.metrics.length; index++) { + const metric = this.metrics[index]; + if(metric.div) { + metricsDiv.appendChild(metric.div); + return metric.div; + } + let metricDiv = document.createElement('div'); + metricDiv.className = 'tooltip-metric'; + metric.div = metricsDiv; + metricsDiv.appendChild(metricDiv); + if (metric.direction != null && metric.direction === 'h') + metricDiv.style = 'display:inline-block;*display:inline;*zoom:1'; + this.getMetricDiv(metric, metricDiv); + this.getChartDiv(metric, metricDiv); + } + } + return div; + } + + getDateDiv(parentDiv) { + let div = document.createElement('div'); + div.id = this.mxcell.mxObjectId + '_DATE'; + if (parentDiv != undefined) parentDiv.appendChild(div); + div.className = 'graph-tooltip-time tooltip-date'; + div.innerHTML = `${this.lastChange}`; + return div; + } + + getMetricDiv(metric, parentDiv) { + u.log(1,`TooltipHandler[${this.mxcell.mxObjectId}].getMetricDiv()`); + u.log(0,`TooltipHandler[${this.mxcell.mxObjectId}].getMetricDiv() metric`, metric); + let div = document.createElement('div'); + div.id = this.mxcell.mxObjectId + '_METRIC_' + metric.name; + let string = ''; + if (parentDiv != undefined) parentDiv.appendChild(div); + if (metric !== undefined) { + string += `${metric.label} : `; + string += `${metric.value}`; + } + div.innerHTML = string; + return div; + } + + getChartDiv(metric, parentDiv) { + let div = document.createElement('div'); + div.className = 'tooltip-graph'; + if (parentDiv != undefined) parentDiv.appendChild(div); + if (metric.graph) { + if (metric.graphOptions.type === 'line') this.getLineChartDiv(metric, div); + } + return div; + } + + getLineChartDiv(metric, parentDiv) { + let serie = metric.graphOptions.serie; + let coor = TooltipHandler.array2Coor(serie.flotpairs); + let div = document.createElement('div'); + if (parentDiv != undefined) parentDiv.appendChild(div); + let color = metric.color; + div.className = 'ct-chart ct-golden-section'; + if (metric.graphOptions.size != null) div.style = `width:${metric.graphOptions.size};`; + let data = { + series: [coor] + }; + let chart = new Chartist.Line(div, data, this.lineOptions); + metric.graphOptions.chart = chart; + chart.on('draw', function(data) { + u.log(0, 'Chartis.on() data ', data); + if (data.type === 'line' || data.type === 'area') { + if (data.type === 'line') + data.element.attr({ + style: `stroke: ${color}` + }); + if (data.type === 'area') + data.element.attr({ + style: `fill: ${color}` + }); + data.element.animate({ + d: { + begin: 1000 * data.index, + dur: 1000, + from: data.path + .clone() + .scale(1, 0) + .translate(0, data.chartRect.height()) + .stringify(), + to: data.path.clone().stringify(), + easing: Chartist.Svg.Easing.easeOutQuint + } + }); + } + }); + return div; + } + + static array2Coor(arr) { + let result = []; + for (let index = 0; index < arr.length; index++) { + result.push({ + x: arr[index][0], + y: arr[index][1] + }); + } + return result; + } +} diff --git a/data/plugins/grafana-flowcharting/src/utils.js b/data/plugins/grafana-flowcharting/src/utils.js new file mode 100644 index 0000000000000..744fd3e5c7c0f --- /dev/null +++ b/data/plugins/grafana-flowcharting/src/utils.js @@ -0,0 +1,260 @@ +const pako = require('pako'); +const vkbeautify = require('vkbeautify'); + +// sources : +// https://jgraph.github.io/drawio-tools/tools/convert.html + +module.exports = { + stringToBytes(str) { + const arr = new Array(str.length); + + for (let i = 0; i < str.length; i += 1) { + arr[i] = str.charCodeAt(i); + } + + return arr; + }, + bytesToString(arr) { + let str = ''; + + for (let i = 0; i < arr.length; i += 1) { + str += String.fromCharCode(arr[i]); + } + return str; + }, + encode(data, encode, deflate, base64) { + let result = data; + if (encode) { + try { + result = encodeURIComponent(result); + } catch (e) { + console.error(e); + return; + } + } + + if (deflate && result.length > 0) { + try { + result = this.bytesToString(pako.deflateRaw(result)); + } catch (e) { + console.error(e); + return; + } + } + + if (base64) { + try { + result = btoa(result); + } catch (e) { + console.error(e); + return; + } + } + return result; + }, + + removeLinebreaks(data) { + return data.replace(/(\r\n|\n|\r)/gm, ''); + }, + + isencoded(data) { + try { + const node = this.parseXml(data).documentElement; + if (node != null && node.nodeName == 'mxfile') { + const diagrams = node.getElementsByTagName('diagram'); + if (diagrams.length > 0) { + return true; + } + } else return data.indexOf('mxGraphModel') == -1; + } catch (error) { + return true; + } + return false; + }, + + decode(data, encode, deflate, base64) { + try { + const node = this.parseXml(data).documentElement; + + if (node != null && node.nodeName == 'mxfile') { + const diagrams = node.getElementsByTagName('diagram'); + + if (diagrams.length > 0) { + data = this.getTextContent(diagrams[0]); + } + } + } catch (e) { + // ignore + } + + if (base64) { + try { + data = atob(data); + } catch (e) { + console.error(e); + return; + } + } + + if (deflate && data.length > 0) { + try { + data = this.bytesToString(pako.inflateRaw(data)); + } catch (e) { + console.error(e); + return; + } + } + + if (encode) { + try { + data = decodeURIComponent(data); + } catch (e) { + console.error(e); + return; + } + } + + return data; + }, + + parseXml(xml) { + if (window.DOMParser) { + const parser = new DOMParser(); + + return parser.parseFromString(xml, 'text/xml'); + } + const result = this.createXmlDocument(); + result.async = 'false'; + result.loadXML(xml); + return result; + }, + + createXmlDocument() { + let doc = null; + + if (document.implementation && document.implementation.createDocument) { + doc = document.implementation.createDocument('', '', null); + } else if (window.ActiveXObject) { + doc = new ActiveXObject('Microsoft.XMLDOM'); + } + + return doc; + }, + + decodeFromUri(data) { + try { + data = decodeURIComponent(data); + } catch (e) { + console.error(e); + return; + } + return data; + }, + + getTextContent(node) { + return node != null ? node[node.textContent === undefined ? 'text' : 'textContent'] : ''; + }, + + normalizeXml(data) { + try { + let str = data; + str = str.replace(/>\s*/g, '>'); // Replace "> " with ">" + str = str.replace(/\s* setTimeout(resolve, time)); + }, + + uniqueID() { + function chr4() { + return Math.random() + .toString(16) + .slice(-4); + } + return `${chr4() + chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`; + }, + + stringToJsRegex(str) { + if (str[0] !== '/') { + return new RegExp(`^${str}$`); + } + const match = str.match(new RegExp('^/(.*?)/(g?i?m?y?)$')); + return new RegExp(match[1], match[2]); + }, + + matchString(str, pattern) { + if (str === undefined || pattern === undefined || str.length === 0 || pattern.length === 0) { + // u.log(0, `Match str=${str} pattern=${pattern}`, false); + return false; + } + if (str === pattern) return true; + const regex = this.stringToJsRegex(pattern); + const matching = str.toString().match(regex); + if (matching) { + // u.log(0, `Match str=${str} pattern=${pattern}`, true); + return true; + } + return false; + }, + + minify(text) { + try { + return vkbeautify.xmlmin(text, false); + } catch (error) { + this.log(3, 'Error in minify', error); + return text; + } + }, + + prettify(text) { + try { + return vkbeautify.xml(text); + } catch (error) { + this.log(3, 'Error in prettify', error); + return text; + } + }, + + prettifyJSON(text) { + try { + return vkbeautify.json(text); + } catch (error) { + this.log(3, 'Error in prettify', error); + return text; + } + }, + + log(level, title, obj) { + // 0 : DEBUG + // 1 : INFO + // 2 : WARN + // 3 : ERROR + // eslint-disable-next-line no-undef + if (GF_PLUGIN.logDisplay !== undefined && GF_PLUGIN.logDisplay === true) { + // eslint-disable-next-line no-undef + if (GF_PLUGIN.logLevel !== undefined && level >= GF_PLUGIN.logLevel) { + if (level === 0) { + console.debug(`DEBUG : ${title}`, obj); + return; + } + if (level === 1) { + console.info(` INFO : ${title}`, obj); + return; + } + if (level === 2) { + console.warn(` WARN : ${title}`, obj); + return; + } + if (level === 3) { + console.error(`ERROR : ${title}`, obj); + } + } + } + } +}; diff --git a/data/plugins/grafana-flowcharting/yarn.lock b/data/plugins/grafana-flowcharting/yarn.lock new file mode 100644 index 0000000000000..41a74720b5515 --- /dev/null +++ b/data/plugins/grafana-flowcharting/yarn.lock @@ -0,0 +1,10138 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@angular/common@^7.2.12": + version "7.2.15" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-7.2.15.tgz#e6c2f6913cdc49f87adcaabc30604e721561374b" + integrity sha512-2b5JY2HWVHCf3D1GZjmde7jdAXSTXkYtmjLtA9tQkjOOTr80eHpNSujQqnzb97dk9VT9OjfjqTQd7K3pxZz8jw== + dependencies: + tslib "^1.9.0" + +"@angular/compiler@^7.2.12": + version "7.2.15" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-7.2.15.tgz#9698dac49dbb46956f0b8a6280580025ea7ab04e" + integrity sha512-5yb4NcLk8GuXkYf7Dcor4XkGueYp4dgihzDmMjYDUrV0NPhubKlr+SwGtLOtzgRBWJ1I2bO0S3zwa0q0OgIPOw== + dependencies: + tslib "^1.9.0" + +"@angular/core@^7.2.12": + version "7.2.15" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-7.2.15.tgz#c00d4be0ebe95b70f7631154169509cc97934e9a" + integrity sha512-XsuYm0jEU/mOqwDOk2utThv8J9kESkAerfuCHClE9rB2TtHUOGCfekF7lJWqjjypu6/J9ygoPFo7hdAE058ZGg== + dependencies: + tslib "^1.9.0" + +"@angular/platform-browser-dynamic@^7.2.12": + version "7.2.15" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.2.15.tgz#e697159b565ef78bd7d276fa876d099172ad8735" + integrity sha512-UL2PqhzXMD769NQ6Lh6pxlBDKvN9Qol3XLRFil80lwJ1GRW16ITeYbCamcafIH2GOyd88IhmYcbMfUQ/6q4MMQ== + dependencies: + tslib "^1.9.0" + +"@angular/platform-browser@^7.2.12": + version "7.2.15" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-7.2.15.tgz#d6df74c427453e563c12bc2ec03a83bf10bb3805" + integrity sha512-aYgmPsbC9Tvp9vmKWD8voeAp4crwCay7/D6lM3ClEe2EeK934LuEXq3/uczMrFVbnIX7BBIo8fh03Tl7wbiGPw== + dependencies: + tslib "^1.9.0" + +"@babel/cli@^7.2.3": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.5.0.tgz#f403c930692e28ecfa3bf02a9e7562b474f38271" + integrity sha512-qNH55fWbKrEsCwID+Qc/3JDPnsSGpIIiMDbppnR8Z6PxLAqMQCFNqBctkIkBrMH49Nx+qqVTrHRWUR+ho2k+qQ== + dependencies: + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.11" + mkdirp "^0.5.1" + output-file-sync "^2.0.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.0.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" + integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.2.2" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.2.2" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.10" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" + integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helpers" "^7.6.0" + "@babel/parser" "^7.6.0" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.2.2": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.5.4.tgz#4c32df7ad5a58e9ea27ad025c11276324e0b4ddd" + integrity sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helpers" "^7.5.4" + "@babel/parser" "^7.5.0" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.2.2": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.0.tgz#f20e4b7a91750ee8b63656073d843d2a736dca4a" + integrity sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA== + dependencies: + "@babel/types" "^7.5.0" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/generator@^7.4.0", "@babel/generator@^7.5.0", "@babel/generator@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" + integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== + dependencies: + "@babel/types" "^7.6.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.3.0", "@babel/helper-create-class-features-plugin@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.0.tgz#02edb97f512d44ba23b3227f1bf2ed43454edac5" + integrity sha512-EAoMc3hE5vE5LNhMqDOwB1usHvmRjCDAnH8CD4PVkX9/Yr3W/tcz8xE8QvdZxfsFBDICwZnF2UTHIqslRpvxmA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.1.0", "@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== + dependencies: + lodash "^4.17.11" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0", "@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.2.0": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.5.4.tgz#2f00608aa10d460bde0ccf665d6dcf8477357cf0" + integrity sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.0" + "@babel/types" "^7.5.0" + +"@babel/helpers@^7.5.4", "@babel/helpers@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" + integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== + dependencies: + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.5.0", "@babel/parser@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" + integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== + +"@babel/parser@^7.2.2": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.0.tgz#3e0713dff89ad6ae37faec3b29dcfc5c979770b7" + integrity sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA== + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" + integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-class-properties@^7.3.4": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.0.tgz#5bc6a0537d286fcb4fd4e89975adbca334987007" + integrity sha512-9L/JfPCT+kShiiTTzcnBJ8cOwdKVmlC1RcCf9F0F9tERVrM4iWtWnXtjWCRqNm2la2BxO1MPArWNsU9zsSJWSQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-decorators@7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.3.0.tgz#637ba075fa780b1f75d08186e8fb4357d03a72a7" + integrity sha512-3W/oCUmsO43FmZIqermmq6TKaRSYhmh/vybPfVFwQWdSb8xwki38uAIvknCRzuyHRuYfCYmJzL9or1v0AffPjg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + +"@babel/plugin-proposal-dynamic-import@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" + integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" + integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.3.1", "@babel/plugin-proposal-object-rest-spread@^7.5.4": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.4.tgz#250de35d867ce8260a31b1fdac6c4fc1baa99331" + integrity sha512-KCx0z3y7y8ipZUMAEEJOyNi11lMb/FOPUjjB113tfowgw0c16EGYos7worCKBcUAh2oG+OBnoUhsnTSoLpV9uA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@7.2.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-flow@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz#a765f061f803bc48f240c26f8747faf97c26bf7c" + integrity sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-typescript@^7.2.0": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz#a7cc3f66119a9f7ebe2de5383cce193473d65991" + integrity sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.2.0", "@babel/plugin-transform-async-to-generator@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" + integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.2.0", "@babel/plugin-transform-block-scoping@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953" + integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.1.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.2.0", "@babel/plugin-transform-classes@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz#f2f5520be055ba1c38c41c0e094d8a461dd78f2d" + integrity sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0", "@babel/plugin-transform-destructuring@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.2.0", "@babel/plugin-transform-duplicate-keys@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" + integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-flow-strip-types@7.2.3": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.2.3.tgz#e3ac2a594948454e7431c7db33e1d02d51b5cd69" + integrity sha512-xnt7UIk9GYZRitqCnsVMjQK1O2eKZwFB3CvvHjf5SGx6K6vr/MScCKQDnf1DxRaj501e3pXjti+inbSXX2ZUoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + +"@babel/plugin-transform-for-of@^7.2.0", "@babel/plugin-transform-for-of@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0", "@babel/plugin-transform-function-name@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0", "@babel/plugin-transform-modules-amd@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" + integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0", "@babel/plugin-transform-modules-commonjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.2.0", "@babel/plugin-transform-modules-systemjs@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" + integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.0.0", "@babel/plugin-transform-new-target@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.2.0", "@babel/plugin-transform-parameters@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-constant-elements@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.2.0.tgz#ed602dc2d8bff2f0cb1a5ce29263dbdec40779f7" + integrity sha512-YYQFg6giRFMsZPKUM9v+VcHOdfSQdz9jHCx3akAi3UYgyjndmdYGSXylQ/V+HswQt4fL8IklchD9HTsaOCrWQQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@7.2.0", "@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz#583b10c49cf057e237085bcbd8cc960bd83bd96b" + integrity sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.0.0", "@babel/plugin-transform-regenerator@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-runtime@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0", "@babel/plugin-transform-template-literals@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typescript@^7.1.0": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.5.2.tgz#ea7da440d29b8ccdb1bd02e18f6cfdc7ce6c16f5" + integrity sha512-r4zJOMbKY5puETm8+cIpaa0RQZG/sSASW1u0pj8qYklcERgVIbxVbP2wyJA7zI1//h7lEagQmXi9IL9iI5rfsA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.2.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0", "@babel/plugin-transform-unicode-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/preset-env@7.3.1": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.1.tgz#389e8ca6b17ae67aaf9a2111665030be923515db" + integrity sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.2.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.2.0" + "@babel/plugin-transform-classes" "^7.2.0" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.2.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/preset-env@^7.3.1": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.4.tgz#64bc15041a3cbb0798930319917e70fcca57713d" + integrity sha512-hFnFnouyRNiH1rL8YkX1ANCNAUVC8Djwdqfev8i1415tnAG+7hlA5zhZ0Q/3Q5gkop4HioIPbCEWAalqcbxRoQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-dynamic-import" "^7.5.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.5.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.5.0" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.4" + "@babel/plugin-transform-classes" "^7.4.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.5.0" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.5.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.5.0" + "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/plugin-transform-modules-systemjs" "^7.5.0" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.5.0" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-react@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/preset-typescript@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" + integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.1.0" + +"@babel/runtime@7.3.1": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== + dependencies: + regenerator-runtime "^0.12.0" + +"@babel/runtime@^7.4.5": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.4.tgz#cb7d1ad7c6d65676e66b47186577930465b5271b" + integrity sha512-Na84uwyImZZc3FKf4aUF1tysApzwf3p2yuFBIyBfbzT5glzKTdvYI4KVW4kcgjrzoGUjC7w3YyCHcJKaRxsr2Q== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" + integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + +"@babel/template@^7.2.2": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.5.0", "@babel/traverse@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" + integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.2.2", "@babel/traverse@^7.4.4": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" + integrity sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.0" + "@babel/types" "^7.5.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.5.0", "@babel/types@^7.6.0": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" + integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.2.0", "@babel/types@^7.2.2": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.0.tgz#e47d43840c2e7f9105bc4d3a2c371b4d0c7832ab" + integrity sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.8.0", "@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.8.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.8.0", "@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.8.0", "@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.8.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@types/babel__core@^7.1.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" + integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" + integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest-diff@*": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" + integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== + +"@types/jest@^24.0.11": + version "24.0.15" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.15.tgz#6c42d5af7fe3b44ffff7cc65de7bf741e8fa427f" + integrity sha512-MU1HIvWUme74stAoc3mgAi+aMlgKOudgEvQDIm1v4RkrDudBh1T+NFp5sftpBAdXdx1J0PbdpJ+M2EsSOi1djA== + dependencies: + "@types/jest-diff" "*" + +"@types/node@*": + version "12.6.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.2.tgz#a5ccec6abb6060d5f20d256fb03ed743e9774999" + integrity sha512-gojym4tX0FWeV2gsW4Xmzo5wxGjXGm550oVUII7f7G5o4BV6c7DBdiG1RRQd+y1bvqRyYtPfMK85UM95vsapqQ== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/yargs-parser@*": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" + integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + +"@types/yargs@^13.0.0": + version "13.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653" + integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.1.tgz#3fa17797032b71410ec372e11668f4b4ffc86a82" + integrity sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-globals@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" + integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== + +acorn@^6.0.4, acorn@^6.0.7, acorn@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" + integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw== + +airbnb-prop-types@^2.13.2: + version "2.13.2" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz#43147a5062dd2a4a5600e748a47b64004cc5f7fc" + integrity sha512-2FN6DlHr6JCSxPPi25EnqGaXC4OC3/B3k1lCd6MMYrZ51/Gf/1qDfaR+JElzWa+Tl7cY2aYOlsYJGFeQyVHIeQ== + dependencies: + array.prototype.find "^2.0.4" + function.prototype.name "^1.1.0" + has "^1.0.3" + is-regex "^1.0.4" + object-is "^1.0.1" + object.assign "^4.1.0" + object.entries "^1.1.0" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.8.6" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1: + version "6.10.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +angular-mock@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/angular-mock/-/angular-mock-1.0.0.tgz#67431849bf0add225b1d49e0a771659a4b360ba5" + integrity sha1-Z0MYSb8K3SJbHUngp3Flmks2C6U= + +angular@^1.7.8: + version "1.7.8" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.8.tgz#b77ede272ce1b261e3be30c1451a0b346905a3c9" + integrity sha512-wtef/y4COxM7ZVhddd7JtAAhyYObq9YXKar9tsW7558BImeVYteJiTxCKeJOL45lJ/+7B4wrAC49j8gTFYEthg== + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09" + integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + integrity sha1-5QtMCccL89aA4y/xt5lOn52JUXQ= + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" + integrity sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI= + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + walkdir "^0.0.11" + zip-stream "^1.1.0" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.find@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz#630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7" + integrity sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.13.0" + +array.prototype.flat@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" + integrity sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw== + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@0.0.7, ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^2.0.0, async@^2.6.0, async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + dependencies: + lodash "^4.17.11" + +async@~1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +axobject-query@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + dependencies: + ast-types-flow "0.0.7" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@^24.5.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" + integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== + dependencies: + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.6.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" + integrity sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + util.promisify "^1.0.0" + +babel-loader@^8.0.5: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-dynamic-import-node@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz#c0adfb07d95f4a4495e9aaac6ec386c4d7c2524e" + integrity sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA== + dependencies: + object.assign "^4.1.0" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.0.tgz#01f4d3b50ed567a67b80a30b9da066e94f4097b6" + integrity sha512-BWw0lD0kVZAXRD3Od1kMrdmfudqzDzYv2qrN3l2ISR1HVp1EgLKfbOrYV9xmY5k3qx3RIu5uPAUZZZHpo0o5Iw== + dependencies: + cosmiconfig "^5.0.5" + resolve "^1.8.1" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + integrity sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY= + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= + +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" + integrity sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0= + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + integrity sha1-cKFITw+QiaToStRLrDU8lbmxJyE= + +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" + integrity sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y= + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + integrity sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk= + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" + integrity sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs= + dependencies: + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + integrity sha1-U3OLR+deghhYnuqUbLvTkQm75lM= + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" + integrity sha1-xvuOlqwpajELjPjqQBRiQH3fapc= + dependencies: + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-es2015@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-jest@^24.6.0, babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-react-app@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-7.0.2.tgz#d01ae973edc93b9f1015cb0236dd55889a584308" + integrity sha512-mwCk/u2wuiO8qQqblN5PlDa44taY0acq7hw6W+a70W522P7a9mIcdggL1fe5/LgAT7tqCq46q9wwhqaMoYKslQ== + dependencies: + "@babel/core" "7.2.2" + "@babel/plugin-proposal-class-properties" "7.3.0" + "@babel/plugin-proposal-decorators" "7.3.0" + "@babel/plugin-proposal-object-rest-spread" "7.3.2" + "@babel/plugin-syntax-dynamic-import" "7.2.0" + "@babel/plugin-transform-classes" "7.2.2" + "@babel/plugin-transform-destructuring" "7.3.2" + "@babel/plugin-transform-flow-strip-types" "7.2.3" + "@babel/plugin-transform-react-constant-elements" "7.2.0" + "@babel/plugin-transform-react-display-name" "7.2.0" + "@babel/plugin-transform-runtime" "7.2.0" + "@babel/preset-env" "7.3.1" + "@babel/preset-react" "7.0.0" + "@babel/preset-typescript" "7.1.0" + "@babel/runtime" "7.3.1" + babel-loader "8.0.5" + babel-plugin-dynamic-import-node "2.2.0" + babel-plugin-macros "2.5.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-preset-stage-0@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" + integrity sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo= + dependencies: + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" + +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + integrity sha1-dpLNfc1oSZB+auSgqFWJz7niv7A= + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +body@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/body/-/body-5.1.0.tgz#e4ba0ce410a46936323367609ecb4e6553125069" + integrity sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk= + dependencies: + continuable-cache "^0.3.1" + error "^7.0.0" + raw-body "~1.1.0" + safe-json-parse "~1.0.1" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.3.4, browserslist@^4.6.0, browserslist@^4.6.2: + version "4.6.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" + integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== + dependencies: + caniuse-lite "^1.0.30000984" + electron-to-chromium "^1.3.191" + node-releases "^1.1.25" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5" + integrity sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg== + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@1.x, buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" + integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^11.3.2: + version "11.3.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc" + integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30000984: + version "1.0.30000984" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz#dc96c3c469e9bcfc6ad5bdd24c77ec918ea76fe0" + integrity sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2, chalk@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chartist@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/chartist/-/chartist-0.11.4.tgz#e96e1c573d8b67478920a3a6ae52359d9fc8d8b7" + integrity sha512-H4AimxaUD738/u9Mq8t27J4lh6STsLi4BQHt65nOtpLk3xyrBPaLiLMrHw7/WV9CmsjGA02WihjuL5qpSagLYw== + +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +"chokidar@>=2.0.0 <4.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.2.tgz#0d1cd6d04eb2df0327446188cd13736a3367d681" + integrity sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA== + dependencies: + anymatch "^3.0.1" + braces "^3.0.2" + glob-parent "^5.0.0" + is-binary-path "^2.1.0" + is-glob "^4.0.1" + normalize-path "^3.0.0" + readdirp "^3.1.1" + optionalDependencies: + fsevents "^2.0.6" + +chokidar@^2.0.2, chokidar@^2.0.4: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.0.1, chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + +chrome-trace-event@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +coffeescript@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" + integrity sha1-56qDAZF+9iGzXYo580jc3R234z4= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@~2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compress-commons@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" + integrity sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8= + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^2.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz#5ae852bd541a910e7ffb2dbb864a2d21a36ad29b" + integrity sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ== + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +continuable-cache@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/continuable-cache/-/continuable-cache-0.3.1.tgz#bd727a7faed77e71ff3985ac93351a912733ad0f" + integrity sha1-vXJ6f67XfnH/OYWskzUakSczrQ8= + +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.1.1: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" + integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== + dependencies: + browserslist "^4.6.2" + core-js-pure "3.1.4" + semver "^6.1.1" + +core-js-pure@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" + integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +crc32-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" + integrity sha1-483TtN8xaN10494/u8t7KX/pCPQ= + dependencies: + crc "^3.4.4" + readable-stream "^2.0.0" + +crc@^3.4.4: + version "3.8.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== + dependencies: + buffer "^5.1.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^0.2.3: + version "0.2.9" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-0.2.9.tgz#bd67f96c07efb6303b7fe94c1e979f88478e0a39" + integrity sha1-vWf5bAfvtjA7f+lMHpefiEeOCjk= + dependencies: + lru-cache "^2.5.0" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +csproj2ts@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/csproj2ts/-/csproj2ts-1.1.0.tgz#e6a8c20464b0031a16a219431ce5e4017fc780d5" + integrity sha512-sk0RTT51t4lUNQ7UfZrqjQx7q4g0m3iwNA6mvyh7gLsgQYvwKzfdyoAgicC9GqJvkoIkU0UmndV9c7VZ8pJ45Q== + dependencies: + es6-promise "^4.1.1" + lodash "^4.17.4" + semver "^5.4.1" + xml2js "^0.4.19" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4, cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +cssstyle@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.3.0.tgz#c36c466f7037fd30f03baa271b65f0f17b50585c" + integrity sha512-wXsoRfsRfsLVNaVzoKdqvEmK/5PFaEXNspVT22Ots6K/cnJdpoDKuQFw+qlMiXnmaif1OgeC466X1zISgAOcGg== + dependencies: + cssom "~0.3.6" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +damerau-levenshtein@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" + integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA== + +dargs@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= + dependencies: + number-is-nan "^1.0.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0, data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +dateformat@~1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-for-each@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deep-for-each/-/deep-for-each-2.0.3.tgz#640b17b88c69892e33caba853004aa89ce00f5c4" + integrity sha512-Y9mu+rplGcNZ7veer+5rqcdI9w3aPb7/WyE/nYnsuPevaE2z5YuC2u7/Gz/hIKsa0zo8sE8gKoBimSNsO/sr+A== + dependencies: + lodash.isplainobject "^4.0.6" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + dependencies: + repeating "^2.0.0" + +detect-libc@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-0.2.0.tgz#47fdf567348a17ec25fcbf0b9e446348a76f9fb5" + integrity sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U= + +detect-libc@^1.0.2, detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +diff-sequences@^24.3.0, diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@0, dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.191: + version "1.3.191" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.191.tgz#c451b422cd8b2eab84dedabab5abcae1eaefb6f0" + integrity sha512-jasjtY5RUy/TOyiUYM2fb4BDaPZfm6CXRFeJDMfFsXYADGxUN49RBqtgB7EL2RmJXeIRUk9lM1U6A5yk2YJMPQ== + +elliptic@^6.0.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1, emoji-regex@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +enzyme-adapter-react-16@^1.11.2: + version "1.14.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.14.0.tgz#204722b769172bcf096cb250d33e6795c1f1858f" + integrity sha512-7PcOF7pb4hJUvjY7oAuPGpq3BmlCig3kxXGi2kFx0YzJHppqX1K8IIV9skT1IirxXlu8W7bneKi+oQ10QRnhcA== + dependencies: + enzyme-adapter-utils "^1.12.0" + has "^1.0.3" + object.assign "^4.1.0" + object.values "^1.1.0" + prop-types "^15.7.2" + react-is "^16.8.6" + react-test-renderer "^16.0.0-0" + semver "^5.7.0" + +enzyme-adapter-utils@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.12.0.tgz#96e3730d76b872f593e54ce1c51fa3a451422d93" + integrity sha512-wkZvE0VxcFx/8ZsBw0iAbk3gR1d9hK447ebnSYBf95+r32ezBq+XDSAvRErkc4LZosgH8J7et7H7/7CtUuQfBA== + dependencies: + airbnb-prop-types "^2.13.2" + function.prototype.name "^1.1.0" + object.assign "^4.1.0" + object.fromentries "^2.0.0" + prop-types "^15.7.2" + semver "^5.6.0" + +enzyme-to-json@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz#f8eb82bd3d5941c9d8bc6fd9140030777d17d0af" + integrity sha512-DmH1wJ68HyPqKSYXdQqB33ZotwfUhwQZW3IGXaNXgR69Iodaoj8TF/D9RjLdz4pEhGq2Tx2zwNUIjBuqoZeTgA== + dependencies: + lodash "^4.17.4" + +enzyme@^3.9.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.10.0.tgz#7218e347c4a7746e133f8e964aada4a3523452f6" + integrity sha512-p2yy9Y7t/PFbPoTvrWde7JIYB2ZyGC+NgTNbVEGvZ5/EyoYSr9aG/2rSbVvyNvMHEhw9/dmGUJHWtfQIEiX9pg== + dependencies: + array.prototype.flat "^1.2.1" + cheerio "^1.0.0-rc.2" + function.prototype.name "^1.1.0" + has "^1.0.3" + html-element-map "^1.0.0" + is-boolean-object "^1.0.0" + is-callable "^1.1.4" + is-number-object "^1.0.3" + is-regex "^1.0.4" + is-string "^1.0.4" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.6.0" + object-is "^1.0.1" + object.assign "^4.1.0" + object.entries "^1.0.4" + object.values "^1.0.4" + raf "^3.4.0" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.1.2" + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.5.0, es-abstract@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-abstract@^1.5.1: + version "1.14.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.14.2.tgz#7ce108fad83068c8783c3cdf62e504e084d8c497" + integrity sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.0" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-inspect "^1.6.0" + object-keys "^1.1.1" + string.prototype.trimleft "^2.0.0" + string.prototype.trimright "^2.0.0" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.1.1: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promise@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-0.1.2.tgz#f112c29fea5a0998539fcb6a2fd21443d28f05f7" + integrity sha1-8RLCn+paCZhTn8tqL9IUQ9KPBfc= + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" + integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^1.9.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" + integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-airbnb-base@^13.1.0, eslint-config-airbnb-base@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz#f6ea81459ff4dec2dda200c35f1d8f7419d57943" + integrity sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w== + dependencies: + confusing-browser-globals "^1.0.5" + object.assign "^4.1.0" + object.entries "^1.1.0" + +eslint-config-airbnb@^17.1.0: + version "17.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz#2272e0b86bb1e2b138cdf88d07a3b6f4cda3d626" + integrity sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg== + dependencies: + eslint-config-airbnb-base "^13.2.0" + object.assign "^4.1.0" + object.entries "^1.1.0" + +eslint-import-resolver-node@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" + integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.17.1: + version "2.18.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz#7a5ba8d32622fb35eb9c8db195c2090bd18a3678" + integrity sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig== + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-jsx-a11y@^6.1.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" + integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== + dependencies: + "@babel/runtime" "^7.4.5" + aria-query "^3.0.0" + array-includes "^3.0.3" + ast-types-flow "^0.0.7" + axobject-query "^2.0.2" + damerau-levenshtein "^1.0.4" + emoji-regex "^7.0.2" + has "^1.0.3" + jsx-ast-utils "^2.2.1" + +eslint-plugin-react@^7.11.0: + version "7.14.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz#94c193cc77a899ac0ecbb2766fbef88685b7ecc1" + integrity sha512-jZdnKe3ip7FQOdjxks9XPN0pjUKZYq48OggNMd16Sk+8VXx6JOvXmlElxROCgp7tiUsTsze3jd78s/9AFJP2mA== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0" + object.values "^1.1.0" + prop-types "^15.7.2" + resolve "^1.10.1" + +eslint-scope@^4.0.0, eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.0.tgz#e2c3c8dba768425f897cf0f9e51fe2e241485d4c" + integrity sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ== + dependencies: + eslint-visitor-keys "^1.0.0" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter2@~0.4.13: + version "0.4.14" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" + integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2, exit@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-template@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" + integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg== + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +express@^4.16.4: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +faye-websocket@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + dependencies: + bser "^2.0.0" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + +figures@^1.0.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-sync-cmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz#a5e7a8ffbfa493b43b923bbd4ca89a53b63b612b" + integrity sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs= + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" + integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= + dependencies: + glob "~5.0.0" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== + +flopmang@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flopmang/-/flopmang-1.0.0.tgz#22c82f12b537d5d440d5f0ad87ac39109ff31e26" + integrity sha512-WQsI7/o5g8NC/VCKbAJQcxSm77k1hd5beC0qikWOvz9iDqwKiwB0xfSGIgAOpHck00enCiJKUrzsGN775FQzdw== + dependencies: + underscore "^1.9.1" + underscore.string "^3.3.5" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fsevents@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" + integrity sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + is-callable "^1.1.3" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0, gaze@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getobject@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@~7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +graceful-fs@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" + integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +grunt-babel@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/grunt-babel/-/grunt-babel-8.0.0.tgz#92ef63aafadf938c488dc2f926ac9846e0c93d1b" + integrity sha512-WuiZFvGzcyzlEoPIcY1snI234ydDWeWWV5bpnB7PZsOLHcDsxWKnrR1rMWEUsbdVPPjvIirwFNsuo4CbJmsdFQ== + +grunt-cli@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" + integrity sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ== + dependencies: + grunt-known-options "~1.1.0" + interpret "~1.1.0" + liftoff "~2.5.0" + nopt "~4.0.1" + v8flags "~3.1.1" + +grunt-cli@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" + integrity sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg= + dependencies: + findup-sync "~0.3.0" + grunt-known-options "~1.1.0" + nopt "~3.0.6" + resolve "~1.1.0" + +grunt-contrib-clean@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-2.0.0.tgz#3be7ca480da4b740aa5e9d863e2f7e8b24f8a68b" + integrity sha512-g5ZD3ORk6gMa5ugZosLDQl3dZO7cI3R14U75hTM+dVLVxdMNJCPVmwf9OUt4v4eWgpKKWWoVK9DZc1amJp4nQw== + dependencies: + async "^2.6.1" + rimraf "^2.6.2" + +grunt-contrib-compress@^1.4.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-compress/-/grunt-contrib-compress-1.5.0.tgz#ba5f80e22acf192897ce43cb60250cab2cb1f09b" + integrity sha512-RcCyetnvTJ7jvnDCSm05wOndAd00HWZTHeVGDVVmCM+K/PEivL0yx8vKyi8uzy0492l2dJgtzR0Ucid7roKg6A== + dependencies: + archiver "^1.3.0" + chalk "^1.1.1" + lodash "^4.7.0" + pretty-bytes "^4.0.2" + stream-buffers "^2.1.0" + optionalDependencies: + iltorb "^1.3.10" + +grunt-contrib-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz#61509863084e871d7e86de48c015259ed97745bd" + integrity sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0= + dependencies: + chalk "^1.0.0" + source-map "^0.5.3" + +grunt-contrib-copy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-1.0.0.tgz#7060c6581e904b8ab0d00f076e0a8f6e3e7c3573" + integrity sha1-cGDGWB6QS4qw0A8HbgqPbj58NXM= + dependencies: + chalk "^1.1.1" + file-sync-cmp "^0.1.0" + +grunt-contrib-sass@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-sass/-/grunt-contrib-sass-1.0.0.tgz#806838251cbc0e1a94d64d515cdd34cf674d701b" + integrity sha1-gGg4JRy8DhqU1k1RXN00z2dNcBs= + dependencies: + async "^0.9.0" + chalk "^1.0.0" + cross-spawn "^0.2.3" + dargs "^4.0.0" + which "^1.0.5" + +grunt-contrib-uglify@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.1.tgz#68a7b62fa045ce8e2c7574d1bdcd3b96b8a686b1" + integrity sha512-dwf8/+4uW1+7pH72WButOEnzErPGmtUvc8p08B0eQS/6ON0WdeQu0+WFeafaPTbbY1GqtS25lsHWaDeiTQNWPg== + dependencies: + chalk "^2.4.1" + maxmin "^2.1.0" + uglify-js "^3.5.0" + uri-path "^1.0.0" + +grunt-contrib-watch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz#c143ca5b824b288a024b856639a5345aedb78ed4" + integrity sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg== + dependencies: + async "^2.6.0" + gaze "^1.1.0" + lodash "^4.17.10" + tiny-lr "^1.1.1" + +grunt-git@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/grunt-git/-/grunt-git-1.0.14.tgz#6d27d76c243d9ff71a562ec6c9899b14d95b930c" + integrity sha512-cjavNWMysd7qnNMfGArtSdRRbtCUkvDoY/IM0MRcQJCGEEr7B/Onbz53ke7uM/EZroXEOMWtdc647m8TnevoaQ== + dependencies: + flopmang "^1.0.0" + +grunt-known-options@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" + integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== + +grunt-legacy-log-utils@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" + integrity sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA== + dependencies: + chalk "~2.4.1" + lodash "~4.17.10" + +grunt-legacy-log@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" + integrity sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw== + dependencies: + colors "~1.1.2" + grunt-legacy-log-utils "~2.0.0" + hooker "~0.2.3" + lodash "~4.17.5" + +grunt-legacy-util@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" + integrity sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A== + dependencies: + async "~1.5.2" + exit "~0.1.1" + getobject "~0.1.0" + hooker "~0.2.3" + lodash "~4.17.10" + underscore.string "~3.3.4" + which "~1.3.0" + +grunt-sass@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/grunt-sass/-/grunt-sass-3.0.2.tgz#b4f01567ce3df4460fcc788e9e5e4c65263425ed" + integrity sha512-Ogq4cWqBre71gZIkgxIxevgzZHSIIsrKu/5yvPDl4Mvib0A4TRTJEQUdpQ0YV1iai0DPjayz02vDJE6KUVHQ2w== + +grunt-ts@^6.0.0-beta.22: + version "6.0.0-beta.22" + resolved "https://registry.yarnpkg.com/grunt-ts/-/grunt-ts-6.0.0-beta.22.tgz#a628f6fb943b0a6e00afecaa721291611994f553" + integrity sha512-g9e+ZImQ7W38dfpwhp0+GUltXWidy3YGPfIA/IyGL5HMv6wmVmMMoSgscI5swhs2HSPf8yAvXAAJbwrouijoRg== + dependencies: + chokidar "^2.0.4" + csproj2ts "^1.1.0" + detect-indent "^4.0.0" + detect-newline "^2.1.0" + es6-promise "~0.1.1" + jsmin2 "^1.2.1" + lodash "~4.17.10" + ncp "0.5.1" + rimraf "2.2.6" + semver "^5.3.0" + strip-bom "^2.0.0" + +grunt-webpack@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/grunt-webpack/-/grunt-webpack-3.1.3.tgz#7e0a016773b105bb87718c19f308100b498ce39a" + integrity sha512-SaZ8K8lG4iTxs7ClZxOWCf3kxqS2y+Eel8SbaEGgBKwhAp6e45beIu+vhBZRLX3vonKML2kjemKsQ21REaqNFQ== + dependencies: + deep-for-each "^2.0.2" + lodash "^4.7.0" + +grunt@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.4.tgz#c799883945a53a3d07622e0737c8f70bfe19eb38" + integrity sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ== + dependencies: + coffeescript "~1.10.0" + dateformat "~1.0.12" + eventemitter2 "~0.4.13" + exit "~0.1.1" + findup-sync "~0.3.0" + glob "~7.0.0" + grunt-cli "~1.2.0" + grunt-known-options "~1.1.0" + grunt-legacy-log "~2.0.0" + grunt-legacy-util "~1.1.1" + iconv-lite "~0.4.13" + js-yaml "~3.13.0" + minimatch "~3.0.2" + mkdirp "~0.5.1" + nopt "~3.0.6" + path-is-absolute "~1.0.0" + rimraf "~2.6.2" + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= + dependencies: + duplexer "^0.1.1" + +handlebars@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" + integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hooker@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + integrity sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk= + +hosted-git-info@^2.1.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== + +html-element-map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.0.1.tgz#3c4fcb4874ebddfe4283b51c8994e7713782b592" + integrity sha512-BZSfdEm6n706/lBfXKWa4frZRZcT5k1cOusw95ijZsHlI+GdgY0v95h6IzO3iIDf2ROwq570YTwqNPqHcNMozw== + dependencies: + array-filter "^1.0.0" + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.2.tgz#99d83a246c196ea5c93ef9315ad7b0819c35069b" + integrity sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw== + dependencies: + minimatch "^3.0.4" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +iltorb@^1.3.10: + version "1.3.10" + resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-1.3.10.tgz#a0d9e4e7d52bf510741442236cbe0cc4230fc9f8" + integrity sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA== + dependencies: + detect-libc "^0.2.0" + nan "^2.6.2" + node-gyp "^3.6.2" + prebuild-install "^2.3.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@^6.2.2: + version "6.5.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" + integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +interpret@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93" + integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M= + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number-object@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" + integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-string@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" + integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ= + +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + dependencies: + handlebars "^4.1.2" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.5.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" + integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== + dependencies: + "@jest/core" "^24.8.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.8.0" + jest-util "^24.8.0" + jest-validate "^24.8.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^12.0.2" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.8.0, jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.0.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" + integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.3.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" + +jest-diff@^24.8.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-dom@^3.1.3: + version "3.5.0" + resolved "https://registry.yarnpkg.com/jest-dom/-/jest-dom-3.5.0.tgz#715908b545c0d66a0eba9d21fc59357fac024f43" + integrity sha512-xHnP3Qo/29oLAo2iixaZsoDrm3XKSVrMH5Wf2ZEiLychJQBTNzOeVMPxrCygCgJiyQMbnymXltme8bPzuiGOIA== + dependencies: + chalk "^2.4.1" + css "^2.2.3" + css.escape "^1.5.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + lodash "^4.17.11" + pretty-format "^24.0.0" + redent "^2.0.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom-thirteen@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-thirteen/-/jest-environment-jsdom-thirteen-1.0.1.tgz#113e3c8aed945dadbc826636fa21139c69567bb5" + integrity sha512-Zi7OuKF7HMLlBvomitd5eKp5Ykc4Wvw0d+i+cpbCaE+7kmvL24SO4ssDmKrT++aANXR4T8+pmoJIlav5gr2peQ== + dependencies: + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^13.0.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.8.0, jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.7.1: + version "24.8.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" + integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g== + dependencies: + "@jest/types" "^24.8.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.4.0" + jest-util "^24.8.0" + jest-worker "^24.6.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.0.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" + integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== + dependencies: + chalk "^2.0.1" + jest-diff "^24.8.0" + jest-get-type "^24.8.0" + pretty-format "^24.8.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.5.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" + integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== + dependencies: + "@jest/types" "^24.8.0" + +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-nock@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/jest-nock/-/jest-nock-0.1.7.tgz#3667c990c42eaabaa2c75058a58d3ab7fc246817" + integrity sha512-PDomjUeI2XGLycXOnXvQ3i0D8UDcXnjEjgoCtYYB3IO2RwArKd0xXfLw6T32E484e90ca+OekwhN7F/rMSSCHQ== + dependencies: + mkdirp "^0.5.1" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-preset-angular@^7.0.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-7.1.1.tgz#b51fc910e5abea91701fcd89532823ae5990450b" + integrity sha512-/uJUi9IHoCxtB6aH6I+llpHjyfGfP2q32lcBCUKKk16v1uYKXvj1Nfdlvfvu/eqjZVoKEDLP+Ejup4bbsc0gAA== + dependencies: + jest-environment-jsdom-thirteen "^1.0.0" + pretty-format "^24.0.0" + ts-jest "^24.0.0" + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@^24.7.1: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" + integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== + dependencies: + "@jest/types" "^24.8.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.4.0, jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-transform-stub@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz#19018b0851f7568972147a5d60074b55f0225a7d" + integrity sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg== + +jest-util@^24.0.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" + integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== + dependencies: + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.8.0" + "@jest/source-map" "^24.3.0" + "@jest/test-result" "^24.8.0" + "@jest/types" "^24.8.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-util@^24.8.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.8.0, jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest@^24.5.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + +jquery@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + +js-base64@^2.1.8: + version "2.5.1" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@~3.13.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsdom@^13.0.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" + integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.0.9" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.5" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +jsmin2@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jsmin2/-/jsmin2-1.2.1.tgz#88fbe2fbf75f0a91f66020fd981cd693f4bfe57e" + integrity sha1-iPvi+/dfCpH2YCD9mBzWk/S/5X4= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@2.x, json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" + integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== + dependencies: + array-includes "^3.0.3" + object.assign "^4.1.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +liftoff@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= + dependencies: + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +livereload-js@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.4.0.tgz#447c31cf1ea9ab52fc20db615c5ddf678f78009c" + integrity sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw== + +load-grunt-tasks@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-4.0.0.tgz#f494bc0fac495115b5c8c6c957c5f1f0ffd7eece" + integrity sha512-w5JYPHpZgMxu9XFR9N9MEzyX8E0mLhQkwQ1qVP4mb3gmuomw8Ww8J49NHMbXqyQliq2LUCqdU7/wW96IVuPCKw== + dependencies: + arrify "^1.0.0" + multimatch "^2.0.0" + pkg-up "^2.0.0" + resolve-pkg "^1.0.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" + integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.4, lodash@^4.7.0, lodash@^4.8.0, lodash@~4.17.10: + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + +lodash@^4.17.13, lodash@~4.17.5: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@^2.5.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +maxmin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY= + dependencies: + chalk "^1.0.0" + figures "^1.0.1" + gzip-size "^3.0.0" + pretty-bytes "^3.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.6.0, minipass@^2.6.4: + version "2.6.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.6.5.tgz#1c245f9f2897f70fd4a219066261ce6c29f80b18" + integrity sha512-ewSKOPFH9blOLXx0YSE+mbrNMBFPS+11a2b03QZ+P4LVrUHW/GAlqeYC7DBknDyMWkHzrzTpDhUvy7MUxqyrPA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.2.tgz#6f0ccc82fa53e1bf2ff145f220d2da9fa6e3a166" + integrity sha512-hR3At21uSrsjjDTWrbu0IMLTpnkpv8IIMFDFaoz43Tmu4LkmAXfH44vNNzpTnf+OAQQCHrb91y/wc2J4x5XgSQ== + dependencies: + minipass "^2.2.1" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +moment@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + +moo@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" + integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mxgraph@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/mxgraph/-/mxgraph-4.0.4.tgz#28b3b1e59a0deefcc4ac347dd9a03785453391ef" + integrity sha512-Mqn2fV9fx3Rd6ArNbco0y8/Qs3Auafx25NAaU0ns9Bg8bYtXqAEJM65BaUAY8OCRDa8Uk2sSOqcS1dYLKDWSbQ== + +nan@^2.12.1, nan@^2.13.2, nan@^2.6.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +ncp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.5.1.tgz#743985316e3db459281b587169e845735a05439f" + integrity sha1-dDmFMW49tFkoG1hxaehFc1oFQ58= + +nearley@^2.7.10: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz#77c297d041941d268290ec84b739d0ee297e83a7" + integrity sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg== + dependencies: + commander "^2.19.0" + moo "^0.4.3" + railroad-diagrams "^1.0.0" + randexp "0.4.6" + semver "^5.4.1" + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-abi@^2.2.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.9.0.tgz#ae4075b298dab2d92dd1e22c48ccc7ffd7f06200" + integrity sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA== + dependencies: + semver "^5.4.1" + +node-bin-setup@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-bin-setup/-/node-bin-setup-1.0.6.tgz#4b5c9bb937ece702d7069b36ca78af4684677528" + integrity sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q== + +node-gyp@^3.6.2, node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.25: + version "1.1.25" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.25.tgz#0c2d7dbc7fed30fbe02a9ee3007b8c90bf0133d3" + integrity sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ== + dependencies: + semver "^5.3.0" + +node-sass@^4.11.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.11" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +node@^11.9.0: + version "11.15.0" + resolved "https://registry.yarnpkg.com/node/-/node-11.15.0.tgz#d892498327c193203eb4c01f47745e2b2c8d61c3" + integrity sha512-Nbzq8qr133iwjGo0ZtzQR0mYeawW2eddYpW/k/+yjgbQW2/zG1a/5QiizVOrJ8yc4hbu3369zkj4dDIEd8f7dg== + dependencies: + node-bin-setup "^1.0.0" + +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= + +"nopt@2 || 3", nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1, nopt@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7, nwsapi@^2.0.9: + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" + integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== + +object-is@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" + integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.entries@^1.0.4, object.entries@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" + integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +object.fromentries@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" + integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== + dependencies: + define-properties "^1.1.2" + es-abstract "^1.11.0" + function-bind "^1.1.1" + has "^1.0.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.0.4, object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" + integrity sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== + dependencies: + graceful-fs "^4.1.11" + is-plain-obj "^1.1.0" + mkdirp "^0.5.1" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@^1.0.10, pako@~1.0.5: + version "1.0.10" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1, path-is-absolute@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4: + version "2.0.7" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" + integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prebuild-install@^2.3.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.5.3.tgz#9f65f242782d370296353710e9bc843490c19f69" + integrity sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g== + dependencies: + detect-libc "^1.0.3" + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.2.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^2.0.1" + rc "^1.1.6" + simple-get "^2.7.0" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@^1.17.0: + version "1.18.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" + integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== + +pretty-bytes@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8= + dependencies: + number-is-nan "^1.0.0" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= + +pretty-format@^24.0.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" + integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== + dependencies: + "@jest/types" "^24.8.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^24.8.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +prompts@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" + integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.3" + +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== + dependencies: + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" + +prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: + version "1.4.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" + integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.7.0, qs@^6.4.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +raf@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= + +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-1.1.7.tgz#1d027c2bfa116acc6623bca8f00016572a87d425" + integrity sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU= + dependencies: + bytes "1" + string_decoder "0.10" + +rc@^1.1.6, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +react-is@^16.8.1, react-is@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +react-is@^16.8.4: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" + integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== + +react-test-renderer@^16.0.0-0: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.8.6.tgz#188d8029b8c39c786f998aa3efd3ffe7642d5ba1" + integrity sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.13.6" + +react@^16.8.6: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.13.6" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.1.1.tgz#b158123ac343c8b0f31d65680269cc0fc1025db1" + integrity sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ== + dependencies: + picomatch "^2.0.4" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-tree@^0.1.6: + version "0.1.11" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3" + integrity sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg== + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.0.2" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pkg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-1.0.0.tgz#e19a15e78aca2e124461dc92b2e3943ef93494d9" + integrity sha1-4ZoV54rKLhJEYdySsuOUPvk0lNk= + dependencies: + resolve-from "^2.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7, resolve@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.x, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.5.0, resolve@^1.8.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rimraf@2, rimraf@2.6.3, rimraf@^2.6.2, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.6.tgz#c59597569b14d956ad29cacc42bdddf5f0ea4f4c" + integrity sha1-xZWXVpsU2VatKcrMQr3d9fDqT0w= + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE= + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rxjs@^6.4.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-json-parse@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" + integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitizer@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/sanitizer/-/sanitizer-0.1.3.tgz#d4f0af7475d9a7baf2a9e5a611718baa178a39e1" + integrity sha1-1PCvdHXZp7ryqeWmEXGLqheKOeE= + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass@^1.0.0-beta.3: + version "1.22.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.22.4.tgz#00b433055f00a25ed5f060ca4abc332facaf02fc" + integrity sha512-gQFNzYKlAn9ee6Qy1UhTxy0G24QR5BWP61AN61jAEqwauzVCP5qjUveO/WkIj72po0ljncdVXo96EQR+ig2lRw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.5: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.13.6: + version "0.13.6" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^5.5, semver@^5.5.1, semver@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^6.0.0, semver@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.1.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" + integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" + integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" + integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.6: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.12: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-buffers@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trim@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +string.prototype.trimleft@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" + integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" + integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@0.10: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" + integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^5.2.3: + version "5.4.1" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8" + integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w== + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar-fs@^1.13.0: + version "1.16.3" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" + integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-stream@^1.1.2, tar-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.11.tgz#7ac09801445a3cf74445ed27499136b5240ffb73" + integrity sha512-iI4zh3ktLJKaDNZKZc+fUONiQrSn9HkCFzamtb7k8FFmVilHVob7QsLX/VySAW8lAviMzMbFw4QtFb4errwgYA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.6.4" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +terser-webpack-plugin@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4" + integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg== + dependencies: + cacache "^11.3.2" + find-cache-dir "^2.0.0" + is-wsl "^1.1.0" + loader-utils "^1.2.3" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.0.0" + webpack-sources "^1.3.0" + worker-farm "^1.7.0" + +terser@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391" + integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== + dependencies: + setimmediate "^1.0.4" + +tiny-lr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-1.1.1.tgz#9fa547412f238fedb068ee295af8b682c98b2aab" + integrity sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA== + dependencies: + body "^5.1.0" + debug "^3.1.0" + faye-websocket "~0.10.0" + livereload-js "^2.3.0" + object-assign "^4.1.0" + qs "^6.4.0" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +ts-jest@^24.0.0, ts-jest@^24.0.1: + version "24.0.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.2.tgz#8dde6cece97c31c03e80e474c749753ffd27194d" + integrity sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.3.4000: + version "3.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" + integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== + +uglify-js@^3.1.4, uglify-js@^3.5.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +underscore.string@^3.3.5, underscore.string@~3.3.4: + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" + integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +underscore@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +uri-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/uri-path/-/uri-path-1.0.0.tgz#9747f018358933c31de0fccfd82d138e67262e32" + integrity sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI= + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + +v8flags@~3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" + integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vkbeautify@^0.99.3: + version "0.99.3" + resolved "https://registry.yarnpkg.com/vkbeautify/-/vkbeautify-0.99.3.tgz#4769b3238c5d772c6ea967545dd1df5582f23297" + integrity sha512-2ozZEFfmVvQcHWoHLNuiKlUfDKlhh4KGsy54U0UrlLMR1SO+XKAIDqBxtBwHgNrekurlJwE8A9K6L49T78ZQ9Q== + +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +w3c-xmlserializer@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walkdir@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" + integrity sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI= + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-sources@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.29.1: + version "4.35.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.3.tgz#66bc35ef215a7b75e8790f84d560013ffecf0ca3" + integrity sha512-xggQPwr9ILlXzz61lHzjvgoqGU08v5+Wnut19Uv3GaTtzN4xBTcwnobodrXE142EL1tOiS5WVEButooGzcQzTA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^1.0.0" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.0" + json-parse-better-errors "^1.0.2" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^1.0.0" + tapable "^1.1.0" + terser-webpack-plugin "^1.1.0" + watchpack "^1.5.0" + webpack-sources "^1.3.0" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@1, which@^1.0.5, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xml2js@^0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlchars@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.1.1.tgz#ef1a81c05bff629c2280007f12daca21bd6f6c93" + integrity sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w== + +xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@^12.0.2: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +zip-stream@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" + integrity sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ= + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.2.0" + lodash "^4.8.0" + readable-stream "^2.0.0" diff --git a/data/plugins/grafana-piechart-panel/.circleci/config.yml b/data/plugins/grafana-piechart-panel/.circleci/config.yml new file mode 100644 index 0000000000000..e3d044702ed26 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/.circleci/config.yml @@ -0,0 +1,119 @@ +version: 2.1 + +parameters: + ssh-fingerprint: + type: string + default: ${GITHUB_SSH_FINGERPRINT} + +aliases: + # Workflow filters + - &filter-only-master + branches: + only: master + - &filter-only-release + branches: + only: /^v[1-9]*[0-9]+\.[1-9]*[0-9]+\.x$/ + +workflows: + plugin_workflow: + jobs: + - build + - report: + requires: + - build + - approve_release: + type: approval + requires: + - report + filters: *filter-only-release + - publish_github_release: + requires: + - approve_release + filters: *filter-only-release + +executors: + default_exec: # declares a reusable executor + docker: + - image: srclosson/grafana-plugin-ci-alpine:latest + e2e_exec: + docker: + - image: srclosson/grafana-plugin-ci-e2e:latest + +jobs: + build: + executor: default_exec + steps: + - checkout + - restore_cache: + name: restore node_modules + keys: + - build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: Install dependencies + command: | + mkdir ci + [ -f ~/project/node_modules/.bin/grafana-toolkit ] || yarn install --frozen-lockfile + - save_cache: + name: save node_modules + paths: + - ~/project/node_modules + key: build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - save_cache: + name: save cypress cache + paths: + - ~/.cache/Cypress + key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: Build and test panel + command: /usr/local/bin/grafana-toolkit plugin:ci-build + - run: + name: Move results to ci folder + command: /usr/local/bin/grafana-toolkit plugin:ci-build --finish + - run: + name: Package distribution + command: | + /usr/local/bin/grafana-toolkit plugin:ci-package + - persist_to_workspace: + root: . + paths: + - ci/jobs/package + - ci/packages + - ci/dist + - ci/grafana-test-env + - store_artifacts: + path: ci + + report: + executor: default_exec + steps: + - checkout + - attach_workspace: + at: . + - restore_cache: + name: restore node_modules + keys: + - build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: Toolkit report + command: | + /usr/local/bin/grafana-toolkit plugin:ci-report + - store_artifacts: + path: ci + + publish_github_release: + executor: default_exec + steps: + - checkout + - add_ssh_keys: + fingerprints: + - "${GITHUB_SSH_FINGERPRINT}" + - attach_workspace: + at: . + - restore_cache: + name: restore node_modules + keys: + - build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: "Publish Release on GitHub" + command: | + /usr/local/bin/grafana-toolkit plugin:github-publish diff --git a/data/plugins/grafana-piechart-panel/.gitignore b/data/plugins/grafana-piechart-panel/.gitignore new file mode 100644 index 0000000000000..3519bc53ae225 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/.gitignore @@ -0,0 +1,36 @@ +node_modules +npm-debug.log +# LOGZ.IO GRAFANA CHANGE :: Keep dist +!dist/ +coverage/ +.aws-config.json +awsconfig +/emails/dist +/public_gen +/tmp +vendor/phantomjs/phantomjs + +docs/AWS_S3_BUCKET +docs/GIT_BRANCH +docs/VERSION +docs/GITCOMMIT +docs/changed-files +docs/changed-files + +# locally required config files +public/css/*.min.css + +# Editor junk +*.sublime-workspace +*.swp +.idea/ +*.iml + +/data/* +/bin/* + +conf/custom.ini +fig.yml +profile.cov +grafana +.notouch diff --git a/data/plugins/grafana-piechart-panel/.prettierrc.js b/data/plugins/grafana-piechart-panel/.prettierrc.js new file mode 100644 index 0000000000000..c14684b0835d5 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/.prettierrc.js @@ -0,0 +1,3 @@ +module.exports = { + ...require('@grafana/toolkit/src/config/prettier.plugin.config.json'), +}; diff --git a/data/plugins/grafana-piechart-panel/CHANGELOG.md b/data/plugins/grafana-piechart-panel/CHANGELOG.md new file mode 100644 index 0000000000000..a7f4a610c481d --- /dev/null +++ b/data/plugins/grafana-piechart-panel/CHANGELOG.md @@ -0,0 +1,64 @@ +# Change Log +## + +## [1.5.0] - 2020-05-15 + +- Updated logo +- Sanitize legend header. Thanks rotemreiss [#230](https://github.com/grafana/piechart-panel/pull/230) +- Signed for Grafana 7.0 + + +## [1.4.0] - 2020-02-04 + +- Added combine option for legend + +## [1.3.9] - 2019-09-05 + +- Fixed dark/light mode text font colors: [#189](https://github.com/grafana/piechart-panel/issues/189). + +## [1.3.8] - 2019-07-22 + +* Added hotfix for older versions of grafana + +## [1.3.7] - 2019-07-22 + +* Converted to typescript. +* Fixed several bugs. +* Fixed 6.3 compatibility. +* Used toolkit for building. +* Fixed for issue #154. + +## 1.3.3 + +* Fixed legend sorting: [#145](https://github.com/grafana/piechart-panel/issues/145) + +## 1.3.2 + +* Automatically set legend width if Internet Explorer 11 and positioned to the right: [#148](https://github.com/grafana/piechart-panel/issues/148) + +## 1.3.1 + +* Fixed scrolling and legend issues in Internet Explorer 11: [#143](https://github.com/grafana/piechart-panel/issues/143) + +## 1.3.0 + +* Fixed legend and piechart rendering and sorting: [#138](https://github.com/grafana/piechart-panel/pull/138), [#136](https://github.com/grafana/piechart-panel/pull/136) +* Fixed decimal field for percentages [#108](https://github.com/grafana/piechart-panel/pull/108) + +## 1.1.5 + +* Fixed color picker in legend +* Fixed - [Values in legend are displayed raw, not with the correct unit](https://github.com/grafana/piechart-panel/issues/51). Thanks, [@conet](https://github.com/conet) +* Fixed - [Legend overlaps with graphs](https://github.com/grafana/piechart-panel/issues/34). Thanks, [@smalik03](https://github.com/smalik03) + +## 1.1.4 +* Added support for combining small slices (https://github.com/grafana/piechart-panel/pull/43) +* Added option to show percentage in legend https://github.com/grafana/piechart-panel/pull/41 + +## 1.0.2 + +* Added piechart piece divider setting +* Removed unused code +* Added fontsize option for labels on graph +* Only show the displayed piechart value in legend +* Added possibility to pick stat to use for piechart diff --git a/data/plugins/grafana-piechart-panel/LICENSE b/data/plugins/grafana-piechart-panel/LICENSE new file mode 100644 index 0000000000000..4644c8c2af514 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Grafana + +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/data/plugins/grafana-piechart-panel/README.md b/data/plugins/grafana-piechart-panel/README.md new file mode 100644 index 0000000000000..f6a73a4abe6d8 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/README.md @@ -0,0 +1,49 @@ +Use the new grafana-cli tool to install piechart-panel from the commandline: + +``` +grafana-cli plugins install grafana-piechart-panel +``` + +The plugin will be installed into your grafana plugins directory; the default is /var/lib/grafana/plugins if you installed the grafana package. + +More instructions on the cli tool can be found [here](https://grafana.com/docs/grafana/latest/plugins/installation/). + +You need the lastest grafana build for Grafana 3.0 to enable plugin support. You can get it here : http://grafana.org/download/builds.html + +## Alternative installation methods + +### Download latest zip + +```BASH +wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip +``` + +Extract and move into place +```BASH +unzip -q /tmp/grafana-piechart-panel.zip -d /tmp +mv /tmp/grafana-piechart-panel-* /var/lib/grafana/plugins/grafana-piechart-panel +sudo service grafana-server restart +``` + +### Git Clone +It is also possible to clone this repo directly into your plugins directory. + +Afterwards restart grafana-server and the plugin should be automatically detected and used. + +``` +git clone https://github.com/grafana/piechart-panel.git --branch release-1.3.8 +sudo service grafana-server restart +``` + +### Clone into a directory of your choice + +If the plugin is cloned to a directory that is not the default plugins directory then you need to edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: + +```ini +[plugin.piechart] +path = /home/your/clone/dir/piechart-panel +``` + +Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only +if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server +needs read access to the directory. diff --git a/data/plugins/grafana-piechart-panel/dist/LICENSE b/data/plugins/grafana-piechart-panel/dist/LICENSE new file mode 100644 index 0000000000000..4644c8c2af514 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Grafana + +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/data/plugins/grafana-piechart-panel/dist/MANIFEST.txt b/data/plugins/grafana-piechart-panel/dist/MANIFEST.txt new file mode 100644 index 0000000000000..692244c1e1c9c --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/MANIFEST.txt @@ -0,0 +1,36 @@ + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +{ + "plugin": "grafana-piechart-panel", + "version": "1.5.0", + "files": { + "LICENSE": "b46400c1ab5630edeb4e43b240a027d203375ebe5a9efb7de88c604c5c5cace0", + "README.md": "f20927deab10fa9485ad13a47199dff25d2224551186d1d2e4304ea23ef382fa", + "dark.js": "1e1732392f8c733433d5078f62c181732b2e9cf801915a7cac1db1b29777d22e", + "dark.js.map": "9f9a08e0c7c69f92a7bab8690faadc8ec2f65379834362cdb45fb8d6679a7336", + "editor.html": "aa4a490a2a93c1c6fdcbfc2cf7351afd1af213205ce74ab1f3f4f08bac9db24c", + "light.js": "eb1808113eafd870881e57b3a28f4229a3710981670b0dc7409742a01b041259", + "light.js.map": "80ee11ec21f071cf8988b3b049e8159cbcdb6153b5ca9a5523fe7dbf96083323", + "module.html": "10d8f62fdc7359e904e04b34400d8770098d4973e7796b54f007e6a8fa284a3b", + "module.js": "2338213b7535bb9c32b5d03d382fcc3a1d0996d88f8313ab4e702912b50d0e83", + "module.js.LICENSE.txt": "30f143a8e05630b1ab2ff90e572b97708701d7fc5f8e8fd2e44bbe9787723aea", + "module.js.map": "504880a11e3b80783b5b6f26b33a13aefe0d6249ff67be0addd4f2b08e58b7bf", + "plugin.json": "074bd24f4b6d46b7e15c056b162be5dfa922ea6df1b9d36d60c2351364d6aaa3", + "styles/dark.css": "e0c2663c2c7dabf97ffaebc740a3b5f7fb69aefaaf89351d9fa8762f77ec5cf6", + "styles/light.css": "6430d7d73d05e50adedf3d0ec9fa6f26970ca362f24be63b3b8f506405f8a921" + }, + "time": 1589585452581, + "keyId": "7e4d0c6a708866e7" +} +-----BEGIN PGP SIGNATURE----- +Version: OpenPGP.js v4.10.1 +Comment: https://openpgpjs.org + +wqAEARMKAAYFAl6/JiwACgkQfk0ManCIZufdjAII5R6xFNsH03uvscY9CHoX +B4jC39m9LIcBy7sJLdD5uVKNBBCfVJmEbmk0fxsec2UG4+QppfXRCXyhn75N +pbZGkQUCCMVmF0lAS3h0YNtEkr/iX3jMKsLaRIQj9bqBIz8BEKXBf+owPYt7 +waCLA7VxKh7zMH2G1mPH4tB8DQLk9UDpUBMq +=vB++ +-----END PGP SIGNATURE----- diff --git a/data/plugins/grafana-piechart-panel/dist/README.md b/data/plugins/grafana-piechart-panel/dist/README.md new file mode 100644 index 0000000000000..f6a73a4abe6d8 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/README.md @@ -0,0 +1,49 @@ +Use the new grafana-cli tool to install piechart-panel from the commandline: + +``` +grafana-cli plugins install grafana-piechart-panel +``` + +The plugin will be installed into your grafana plugins directory; the default is /var/lib/grafana/plugins if you installed the grafana package. + +More instructions on the cli tool can be found [here](https://grafana.com/docs/grafana/latest/plugins/installation/). + +You need the lastest grafana build for Grafana 3.0 to enable plugin support. You can get it here : http://grafana.org/download/builds.html + +## Alternative installation methods + +### Download latest zip + +```BASH +wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /tmp/grafana-piechart-panel.zip +``` + +Extract and move into place +```BASH +unzip -q /tmp/grafana-piechart-panel.zip -d /tmp +mv /tmp/grafana-piechart-panel-* /var/lib/grafana/plugins/grafana-piechart-panel +sudo service grafana-server restart +``` + +### Git Clone +It is also possible to clone this repo directly into your plugins directory. + +Afterwards restart grafana-server and the plugin should be automatically detected and used. + +``` +git clone https://github.com/grafana/piechart-panel.git --branch release-1.3.8 +sudo service grafana-server restart +``` + +### Clone into a directory of your choice + +If the plugin is cloned to a directory that is not the default plugins directory then you need to edit your grafana.ini config file (Default location is at /etc/grafana/grafana.ini) and add this: + +```ini +[plugin.piechart] +path = /home/your/clone/dir/piechart-panel +``` + +Note that if you clone it into the grafana plugins directory you do not need to add the above config option. That is only +if you want to place the plugin in a directory outside the standard plugins directory. Be aware that grafana-server +needs read access to the directory. diff --git a/data/plugins/grafana-piechart-panel/dist/dark.js b/data/plugins/grafana-piechart-panel/dist/dark.js new file mode 100644 index 0000000000000..7600bcd1eb4f5 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/dark.js @@ -0,0 +1,2 @@ +define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=10)}({10:function(e,t,n){}})})); +//# sourceMappingURL=dark.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/dark.js.map b/data/plugins/grafana-piechart-panel/dist/dark.js.map new file mode 100644 index 0000000000000..05fe0a297a263 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/dark.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,I","file":"dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/editor.html b/data/plugins/grafana-piechart-panel/dist/editor.html new file mode 100644 index 0000000000000..7ea461af64115 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/editor.html @@ -0,0 +1,89 @@ +
+
+
General
+
+ Type +
+ +
+
+
+ Unit +
+
+
+
+ Value +
+ +
+
+
+ Divider width + +
+
+ +
+
Legend
+ +
+ Position +
+ +
+
+
+ + +
+
+ Legend Breakpoint +
+ +
+
+
+ Font size +
+ +
+
+ +
+ Values Header + +
+
+ Values Decimals + +
+ +
+ Percentage Decimals + +
+
+ +
+
Combine (only for percentages)
+
+ Threshold: + + Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will + combine all slices 3% or less into one slice). +
+
+ Label + + Label text for the combined slice. +
+
+
diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart-donut.png b/data/plugins/grafana-piechart-panel/dist/img/piechart-donut.png new file mode 100644 index 0000000000000000000000000000000000000000..8e54878b1818390e9a64a85f95ea6cf191093121 GIT binary patch literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png b/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-on-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..51dfcbc9f3198216c00798282e5c3fcc1b284fc2 GIT binary patch literal 37972 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 L)7e+{*HZoi7z@?u literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png b/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-rhs.png new file mode 100644 index 0000000000000000000000000000000000000000..9b018c390531250defeddf0f093238f69012a6f0 GIT binary patch literal 41450 zcmd43WmJ@J_&+!b;wUvJ=tv_-cQ-P0gLI2@*Dy3FAV^CH($dn>4FUqv-7V53-LN;` z-~az&U+g)%XJ70-M~}mt!^{)+eO;fr3|3Z@!hTHn7y^M{%SemAfk4o@A&~p8p!dN$ zeim`>!9Qru2pKgf6gsn{v|$UU@X zVF-jAA|o!U=9auY=kE2?$ZLHUO?`sn z`URne@v&png!M<4=7M$lAEX8EpMU#79^?b zEHY=LtCuDQ-7uj+WUob|fZ!fDJ8(Stpy2~UROsx~lH6SvIM(tUc!{wvh9dU~jlamc zCS9%}4m;zjq;P6k%h;&#!lC+`>(?qqE9|$p7d4e%-I1 zCk?y0#?k)g=c8x8tpDfL6O2Dx|MTh*+CJfbuigiIaKrxZ)$7*R4H*BuA~zy8_@CeX z%nB>{pR<*Qf13E8U!}tO|K{Tc*E}GQ_Z)s}?x|~dhz!Q+>M8?>0KYYJgA~48k%o1p z&I(FSuBVnnJ{ca!2FL2&IXOY8;14XlEz~G*YTG)-@NW^eS!(t9a1R0lm(Y)?lhSXe zB;;62_1K`KB)i?^-C~W$?(8|{vzGz0cBd{AdfuxYsBsi>T+c0%c6?NhrEzUuqI;*u zeBg0V+Zsx6pO%r{WA|e-ZMA*#&N$`R*qQ_DUh!GA)AE?6fkC5_DOr_+QS(m-1PX5Z z+D8hpAmOXunKYNyr#aSj-U)hWe-OsZJM6T7e&-za6r)OsH5KEYx znd`_45s_<7g^>Y~)9pGg>;7Yh*YCoJxh{r8t{+iUEOrp3^yfGWCEGPz4TpAzH=3H7 zn@9e8^Kh{NEQ?PQKQQ}#b;S%E!xWcB#tH@wNSCs4e!4%LFNGwVYxo@P7wZcc$6qy{ zW3IC3eF7h6b+XMT_pCV(#;(iwER=wP>Ty(lem*nN&?XWM14q7U>Se~H)`GHzhDX`P zJF5sHP6y>Tvg{vAM^>hFbv6&r71=qp&!bXPRkYN;Yvfs5Tg%Bc$5U=r*(S8%tYHxueIVxgx{GsIhBbl-r5bM+VxL>iOGsJ5m!pa11vg?}h!{uz$Mm&AHyV^v%{bNczJz;}?{)c|H4+?Q)e$ z89ldlnv=OaxqHfnJ{B=Cu{0kIpV;ae^T?@;UVX$Yskvd{f*Bkjy5*Os6*XnYogZ^51%t8H@`IkceC}@)tDthXRqCN z{owGB%nxOKzOhqz6bsh%7p5$jL1<9KW) z|82^#NQ(6SBK>^1+xXo0=wGHUXM%k96H(Z_$6?>;P2)=x{8hZ3)9p2`g-hK!zkPFM zMR|F-W@Me)zeU42cXK;CgKb3f!0FOMGDgD_yQ54AvcQS%oVB2<=G)7e2A^vf!oF#Lpe`|SLF9;4VWg6aOSU0GxOXxy9KI~D+praqcFlOv zed-}NAb5y0u$ym9vX_LatECmeC64@4)MeSKYAxDdbJRSF+;ibN0!@uOCP$lQ+t(-yv)Y$?-b zReV)07&|O(UUF@|Z3`yCec)d`?{nF!U7jI&k0LfE=JHZR5H9dOH_dZ5I{4`$ifAfz z4Gr4HCEkeom2usYhRyu-#8MI_3>>&yAD6SIqj>-OGu)IZ8=pUUxtUY^aI8Q?dUW*u z>8z{o5yQ=-YBQx|nAgSBTCC07^za)Uoy}tpwhq-C`SX#dO3L`zh0i=+mpPZ+U4w<2 zdf;j3j2#iTmm9L{{Rgz$e~V&6HajTS-(_AsEOsQmT>)og$G>D^Qax6uEUHdC1iL%w z4Kfp&9hNA4y%;a_PEl^&+{m+kh6|qdoVt_&SQyJ~k%IXXTbXh;+%usp%^4=v%>$Y` zI{8^+SAKrxhG%kb-n<#8|0Mj(zr|s#WG^C@)p$vP$IyLDeJFEiYASDRgVbw%>FUbM zR3<*=I>c?B9rFGVFZu2vm~#?l2B)8&h4?WuH~;Bw5ep;_XkGeezuT;|!O6aM(6d+T z8s+qCXZ6A17h;EvuouR15vkms-d%qpZw|@A_8YeBl@;6d*&W|?T|`eFmOv>QTO6iV zG#R}Q!O3lEc2Habpw-6x^Yy%(Gwn9KZF1Ys3BTQ`LVxw) zj|g(2Kk2#c@Ks6mf=;PT0%MPAj$-59hudH~h3E*42R|4uf7<(GnyiQ4&i&gSQNr|l z%L-3*-#y<>PX6E@veuhWZZ($A{Llp4v5E2VE90){laq*owf+?6DbwzQDQD)Ha?fg~ z%kddIO(!E-e2?uRDb(I{d)YRNUE_|qX6MYKezWqq)1SArM06}7|F%_?CdS6{$2QM- z=CZtESk1O4dzkCJjyIdI_Qb2N|HS?I^JhWi?DN4^M!oNjQ>`D3d~Ztg+og-+EfKF< zp~MUy_ceV92?;1gks^=d!Qb`TzXE$rGd88<0ajKKS0}zVxkW|c8Q&lJ946(BFmoly zSKl6JDhb}?l9JXqY{y;&1jk@WF4GifjE#=J4N$6T8nS3uowoim6ON4?DR}f&K_R@) z>~e>UG^{B&W5BIYwaN76VD`}bHX8@R>+Ns?dU8_NyYs$1A2OkqlfDyMp+c`I0!><; z@gnV~JAY0=75wsr07{Y6$L;i2+H~oQ=8b%9X?5XI8?NwYDjEEC)4e8Db@e>PG^dRt zW}*oT&H{~My_?;7E-o&CDtq7KFY%eaP9~&Go=}V{hBy}8^Zm{=?~AVSB3(R0G?m0! zNP>LMXhp@-AY1OF+tUvZ=XEYtJISuid*YZ#mCUz~l?4ryVuR^yrH~;wl zChnvNKo@npiu5fkD3E|Y@Ne;D)OPxDwO%;IP>;ElOKea*t)pu!moPI8po5NLp|ZV= zjoWIMh$b;Va`EQ}5upp|3jX$`-*4=+7~?EN+v{&H;tyJ35{_NgC3FmtOmx9QW8N=U z&`1%#tty$%XBG?q==wtDeY7ui%Qtml+z}Bvj>)9mphYL_SgSW6bged^au#c!;C%4r zAtYIt*Aq0))m@2DzfNkWeM0c0Lw(Bi^wleGdRUZDQswQ@sj0=Y#U&*iNqs{i>YD0w zG+#hdnyPat(8yJ_Qo=*jqjp2)e%}iJgCJ;O&}1#oaF|ZxW@mxT_SEq*iEUNp^SYT* zjU1m~2t=gga z@jz3)x|NQO%)@gh=fet}qKU2W#);Juo_6XXp?X&U3p2lBK0XmRIid)7N7E`BUE#eo zUOS=xd?1sQ?a%tdK(tHWb@lVPRP1?Zc?6?1xHx4I}#-`D8?{71h<6 z;G#;@XG+7RaOn`gH;^5|+KRaxTwGsrHa?&|q)*%RSlxGPI{R~|TKvqr9P0N&VAVn( zrC%%v=NbOd-cnPpR}TczF9nzg??6^o7P7t}KmTATh;)*Y>m)EkF&;XbM$I!~g#tTh@iEY8%!7(0A zWciA5`k+lIqwn6e-DzrEoQ8pqUS#|9^z@|R9EnspV;`|l|Fa|}GkE`Ukjlc2LEY3| zsS-Z+vA)zi{7`Efq- zjrijh1^D^v3Jnbx2E`g84w=v(ynBGCEebw`qGuR>>M7ek^uQq#E^|Me*lNByFzGwS zFU5YXDA{8TLwNNj?*9s1|5?Y#=O{=i72)x>v@>HN>*4)-u2K)vX)}i=+u{VKFDDfh zTL$HAN^k>|?dzePzU%LvW|0%St_Mi-q0zqFX_t;q|x1BJXQWnxey94HOD>6nY7;BBE;?>eJwS&KNr|8QgU4K)T-O3Pjb7au8c*cB_$4m|%`@1#{ zXtLu7DX5^WQN{zyO5)zvk=LbV-6`T&-0 zxQ=g5WKDm*6GKp%EBJ_d$X2pGmOSA5SvPk^BMA&aC|t~Pp(J$`#7vAsCg`SoK63Wx zX-4*#RmA0#`W)xf8ESxZB~UgygxgUJ%2!slTXR@UWY^%h+N)hUu@I~ZIMq-p!Bc95 z5ax-EqvejsNN38KYEs*VuPHGj&9{*cepyv|49C(9?LYKyna9~PiSX3n(pO68+z9f% z%%I7oQ99p$vW3+)d%jh_#-iuePN4bqUC4&g!hBiT`p#ri5Qq6dgze27kNG+1qSDa2 zGA!{|gv{&TVjC`HK$)|X&*98M)A8!CG?k#~bcL>6BY`oa%$uWDr@bOAVT(cX0Ob&& zD}>ITU8Xvt!O{<2<9r0XGYN5BO?p?OcOe-ikx9 z>6s(28E7bFq9>MBWS^T2Bsl+D1Rd|>_Me!25PtI+?%Z0M*BdRZPq07kH|?4R*V{2l zFhoqQ{Ln_71`c^PovcfxliKq+S6^QI>DxA3RQ>h*<*w$1idUnfv0xuVokRVcCu)zB z&4~(OG5nXVlB?3t`#8JLs_}e$rlzLATljXnyr4M2x_kH%i1d{Q9Hsa7w|cYaH3+JCR)n~}fAH7RW2iPtrO3|LL~c~{ z^>+@>6O)nvUH-AYYuK6kC4MkctSCRf?y^{b=f+jcW*D?v29cYydBcUVc~Z^8kf-XJ zn%96E7KP{473c9CEbjT9Ub~9;F!P&A#ezaq?{nP4W$3jOnZN=M7Dw&Oy5BaQdfiN! zdlSuc1+*=#rFoC<+?1-wd-k4hpFOz$;o+|C(R>I&N=nMm#|&D#g}UR^`rWX#t*Ci= z1_oW^X-T!s)a>{;Ko&T0@y$&p`^J&NPxM8F!{wM#|67%uM%kR7b7*6xh#v(l?@ggY zcuS^ixC_SUW!^YDI}g0*Hz}pkE`p}37Qdj$9I{YSI6n8nK0YoDuT!9YsxZRD#I&Cq z^!G1*iox2(5pRk@uE-BwfVbYQtgPMcRA%;7?KK@nSOlZ+d&(>=H;4x=z2@ttr^QoJ z<&_2oH(YFsY;&DIStKedD2%Nm@1-?&P2q2QbHvQ=hURRXoSck!H5!GD3=bb;i18BV z7ZeC&w(X7^M~bkSZEFP#0*OxKYSBNpJnui4`Rmcs)_pHlxLPsJy>?LXv-Ftb3+hu% zX{_vRZAEVCD01^MGbuf|J};w2FBw;m+$q-;Lx<@-pd<{i{CGu^r@raiaC5qT(9&5< z4aW&G)^!*E*tWE}IY0KIGjsQB>&Hfhm?eGazjEMm$y50lDN`)m%NhEX}&3N z7LtejoI(Sa3HdC|*du&9(cEG1SYY}Q5yf95|MNL#S6xIiHe_w~)l=%5rSzZ-Cj1AY zpBmZMhj|vX0O?t?uzFFF}n5$G-GGyP^TwA zNXzKAymi<~WC3+?-wxCGr+X1VB4xwFM@LBAH&6Ia!YBj4Vl(hwG0oY#qc8MoN|Fmn}aSd!Q6llrO;FfG8?yJc^e+ zWmK|J(&$~%FmZ~PzoA9}CfXXPhY-kO?|;V1BkCS@304VK(NAv!@G_w9pejROvp>gC zcyP7A%kjtA19Dg;%R*YM2vyNl;i~W zEqp49m&wci4SEbe zmYIpH_-4?YNAGCmpUNAHKNVNi;wvah*6o1OjN=>` zV*3>)8BL`f{R*5NRcJR$8C5qzeBEa6$iu7U_4o4fk-g*EWM-wHlA>CnCpc2AelR?7 zmB$Yd(X@~K+)$A(ArL*~JKO2?9<5R0TXExG$^n^Cq6*sX-QQp8#KA|^$^zLPe|^h9 z(r0MmrFL+B{DL15DY>?ei?3Vo0Z(#n!tSl#mx^#U$xfeS=^U8Lw%J5ljtN?H6je_& zZ7`k;R7zYFd|e6&scTUE$lS)x5jRhrpq*iT0TX^$fM1I=?-Lw}fKL$hR}ctHzL8Dl3|aCcRq7iQ{(u_3b79Giz;G39`^uwvVGU1AULkEGLqN(qsjx zp%glj^i)0c0kCLO-9U+G6PeFI|7i7tKSR5DTTn2zg5)DgVNzf!&Z&CO0|Q^^Kt&w! zTIdl(L^J>vXaqw5x2JdKfpOusGz?vocjgv9Ii>R}?9PSzMuacPDT?2MC8_gF*S)({ z1tpYXZdQ&}@iDiOan%BW7smE-ja()zBGZ``k3X^Qk?5y5?Sv>UD22)A<1U;es?|_G z+JFa!xh3gUU1NWpxN3Eh1QNGW?)j3#pdbB>@VccTXO@fZK4+isGRSSF%2w91);Qj0 zdM>68Lp)vK3*HOA~saIli zg{SPyzh{B{dq}wi_0zG1{8V}`n@z}VGfCn)m#tAiw7DggKKLn$l14H4tcxbCP^(E0 z1|RT9(#9zqi~A3~J~*%v ze?ZtmB3j@oSnb~vn!Hb9O|_w+QHyyCssXS#Q#J|&)stXxMZFI>mVrjB9nn-D+l*wQ z>-2+6weOsw-P&Fqy5AaA&*tzuz8b+3ji^+@#9!(wa;xHhWP65w&scthvyauul`_~) z96!LWhtDIBO;J{{31EE7M1!ko>)W{>z#0Hv9BA*osT^xRZ?3^(6ocle<>OIGGHTT* z$7RjcyW$dY7gh`KxyhdSc zIk0rvKvUkL>32NGWV0;9A#MU*l|frLn#6e`!-INzN2m+58)d4|ty`}94jBH>xqAeXbBrg^CFzfK!A^#>BW+yKXnjRP!IGva{K0a=z%1a@h zJ7I2a9)w7z48py<_CY{99ZyDqyvmt51jj-rBqU5sOw7=ItIa*Kw8&RnS2u0KZEj`) z#L3sJZZ&mv#ZB{jhjhAT+T1|C9a&;ckWcOJZwtaL7~M1=VN1*@Cywy*^E(EVa4g=C z9urqnv-$Q05Q2l>qn0C8_6y8C?46E$e0)JTq*rH|kxov|6n9luFCxb(@v9n@zSN5L z*FPpM9}?J{@x|~$^gdUPnybo>YOpm#l;Xp#KToV+xWNhaMKIo0i{I2^Mf9iH7-KLC&^4cErTYLuILc4 zAQ*yE!F=s6qh5`}zt0q;ky7{)Uu0j&3~#Cz2w$vIzM5diQq|IOYa8%2P*#RPF&00OZgB5VQpcI*16>nSo{BEw}o6gMuZbd2LNJ?jpU3fKB$1&^In}sv>V71|6!yRUJ zss)H6A|h~9U^+TF-QC@^A^iI)X;=e?53VmC-v2PX*Br@=kDgwdo?cnWMZ*)n=AH(& z>?Kd3;U1Eotpf-GjUJMUcY%vVzmItD=)kHq_{f1R9}&z{mUp2GHf?qWlmeDFfF8C# zq+=`8vo1e^ zI&66h>vE!c!j>Q(ub9?UUAVndJ^$pDZ79saaVSFO zQ)4&BuL8rseZhV@ZSBIZ4>n4&lw9_k?8%*UQL6&M+|0Bho(~ zbbVN^5f-GG^8-Pan!&eWv|(zT++~wSCQb_SsR@16KTu5V<@nfn7d9<$<1p>Y5S3Do z0^wX%>)u}~E@Q_*KD=t)>(b7R42#$SesdGv_aPpb#>7yJYP-3M_UDGQa$W{|KR=)y zVm@YPX9qC_7{Z|Bw8v#jgVAu;sTPLV+1cSw*#!ZK7lLm8a>9vT1a|fH5b;_JPIFn$ z``&tIpX*!8g|@#Nvf|Vz7+c;KckMj9s)>%?vad-mtT-YoX`Y{-kASf!$a9$W{zIag z&O3;*v$LTT@jYX}#7~W4`(9J?&G&Y%`Eqyt+O)PbeW{OUUisw7V~oxSB6D^^KobEE ziHVL5#3gI;y}eoKiKBZ8o3rB?I1JsbXSqQ`K!G$EP33MJ7!G?PF|@U>%vm&Mb?H^% zi2=H_!xA}qIl3j>X5!7cMpg4iaK|=0bV@S5hgKYSD&6n+nn4>vsZluYJ5xTfHCJw~bflR!py{*t69gYfaHN3c?CE)_ zD;MuXoI7N(jS^58;Z$I-S4vR~f(=`6qG4eDyS%=TeO`Rl#TL zU~K!+99 z6OK-g>S!CNYa8f$|NBwWM)vRFV*ckv#48!6NwVPFW2tHrZJf*2cUigio~`N1p*;lG zTrZ(u#c;O4!z6(nF#PlX>&6OGH5*- z=O-HnIp>;xIGiN&akc?x!bMEXzbrX}He91%WP{P{kj1W^sZLnpQ=gd_G@);Gx#QW4 zyH4Df-IuZ~c;#JGq#{__asDlDxAA*bqp9ee3i)KVomQTHWbBFJKrPAKfu2M7$Ec82 z4=$Mrl?P^3lg0EE`O$76>9L`7i2NJNR=9ECD^5An@&XH;c8TRFFr{9z8x5;iU^~&EYXg*Fz7k}3*^Kk)88l0D2ylWVRE{3rUvdCF|6&QaU56EqWuie#>(C;J8Tt}4 z*dVza;b~Y~vBP1#fs9z1qV+Dz<0eIc3k{E=QYwYM+U4u$N$RnHIW z?FA7h`sRE!`uaIioS+m%nw~OLy$}q#JyWd&EDivUR5{;5_%((}9)H}lvSvwOr4SHE zf@SHOQgq^N_doS!k6{~B^WZ-|-H>yEFnhs`13oL} z5(%JejK#!Q;aQga3f&s@o8xb zC5Fv)b^O`Ji)Z`Go=rX`&q347$jGQFwga3FAOT>ko63~U?2P0pxz^7a+D~T{0tPf? zBMC1UvuZR@f-Z3p0%Z#!jgMYE!<3r!Df{6a^AvHx7p3>>BkpG_N3+QvvfQ+x%rtuR z!1)=AGTd0+NU=b%Po^{{@nIxmF@4GWLNuW3@3v|fe zOKl*JuyOQ)C8vWRyQJWg$W&2th4<{!rwq%B1%VMgKr||XB2t#qh!5Yte zjmiGI>Y2vXP!??bV9k= zocCU161N>yfQhMTwz&y!iXw8mTwD+UKw-DNMqT@6@1YC{z)>)R+O9D%ot>Sy?WQYi zw=_&i3i_)4-^zaTeoEh}RDK!?c{tG0q&;jfeZ8{@q88MR4>`LM6Zn5Ax2kavFeIToS=EkUI+_5kTq5$Ta(0-}kvq z91t27$W-n5R>?Bs_A~UB4J6<^*}1u=ER4O~ z{c+-sJJXfGw0JpvFkr*pm(0~;R=#oUflvYMHJS>TF#av%JqKX9#2TGq8TYb=kway- zUfWda;2}6A5_(sqd5Jd^#6%$wUa{CWFa{}%$w|DtO$xeAq)^|R=eF@e4Mks=UBj4@ zSp!$ThEf}lNyV8`Fe0lwxAM16Y;LO>jy~68_nV*%VkhPtdo;>sJJrw8NQwm-g-HUd z*sfYPukt6noKX%MOs!}dJY<3>n*~6xz;5I*0y=Pr;V%knuNohBlP#{F1GESrG@s^X z%BoPqJvst%dH`k+lP>=c|omqfC54l7T?6&qSQiis{3-qPq{% z`oWl#ltk1>Z&Do~ot2(0T8n=*1?+K%!!BN!8h)8m7Oe~ybqbN4CXFSzmVZnud<4t( z2VsSzt(l#Nt@?E_Q~jy0?)>;Lh2%?iJ7QXLr&$)gM z?6kY=l2Bo$p8Q%Nb{^&(sBuQ46gSG!jA29*qE1Qr+?7oPkLVbc7{x`Wf&ges*C?aQ zSxC+&wDEeQWlk6Ll+knk#%T1l(t9&9U!pKHqDjEF*`+2tqSW!#|6d zMTGzlp<54X!k=pNQRmXU=)FkxiP&?E-I>3z)pf2P*ovnxL4))&-_$!eFI6$s zNjA&bxAj22W0YY2V+JQzVWs#w;jmF_Nu9)I|Jq=xxU4MYQct1CsAd*;3XK0XaJh&$ z?L(vphtO;>X-u)=1P3vi={R{hYmSAE`S6Nm4OKl;HM#3roc_ZedLa^0mG@gY_aOZk z|9$U=w^`YxZLcF`);i3b+^GYDtY8iuZ{@WJj1{>zuo7d#{*qmgO`abYcTg$_5AY>z zqC;xj?$q^UZ8$~XHxq0wP6_qsE^I}WB)*VWu)>yvz(+0g2BxlA@ZO8C!Xx`?@5`O4 zJ%MTd^b#m!G3>t+_J>Mh5Nw#6b(ntd%yE8!A*mq71?5d*1+t+(wd?DuS5wIeNu}P) z{fT0g!jXp2Sq)8$v#Gw`!h5w*Kx_L5uksoG|;Fv%g!+9_G+*gka58G5wpJ zWYaO*n!H2Q%=gdsW9LqkIBz&MMEXuudoSJ!&7+MiHmBwvRdwdXK|8{@Cqf5EPos<` zXCW)ySX|usPDFTp@^P^=@BNfZ2qYM>FBl0h`hVUL6=LBfYjuC`wGGl+X!SxI?M~t!GpB}U%@ShQ0w4_HkmM~#@U%1m zx-~)b=e-ZW*?8WRc>k;;yajNo# zy;INogH^bYLEXCs|HvQj9c}V2RdCBSPbU<*hNe03#oj(MZWV11c4kfgl&Gm2Q$%Np z3W%zoBY7NN9O1P{E2PV#xyVq9P=pR}u@Pgp5GKb%DHPq?uiipd$7dG4f$4m_k=ydsVBQ*mgw^3oVmnQ)pX*N2T9TOpkP^Hl-mvd zzGqfoIa1e`J#*^8-@v+ncXfn^fCq{~KO)jOs-K6ImQjkr(3flm-tY=UvQd0HA%qNK z!YLBJAxXR~i&sGd{%P_hE*qL$Exi2gzR?q8$zlmuI|K*TR#ziPIjBdLzCkzE*Uy%M$WFHB z=SD|It656!ZuK98k;$7F3cCCR_r$2YvMyWY)KoNRg5!ZYZUXn7@trLVfzHvHmnJ`ouIr=kUa0yx!G#w73WN?knDtm-k1)B; z+Mm7Qz%mAK4e&QE0*cYWL1kUl5s+K7eM}Rueslqh9%WkO-+xBU3nlVvK-td8&VCWz z@s@lL9HXQ7bN7475^x?4I06Nnx}1-Lvh7_dx?fA%*qF=lvCqQL-Y2a%1qFpZB(FSm z3>bL<5)gf5ou*V+&IV&p=C^Ne0X_3RUWxB+1;4V_e0u|e^z1Iv6+1K4Bb>HXT43(# z#CB%9#E?wid@NtREfAN5mUexN)OXfpVHX2Z1AiN!_1N^qdJkqr`9Xyw*WJRPksqqy znqv2v=4~`+MvcYyxiCesBHJ+3jV-J$o1+!{@;l*mwU6zoK510)aTZiZKI(0|@ zoy!%hy;&o3@&VQERnz>rBxf78}}=p}l41JZ{_mwTC*4@50&EC8PF z>*`x^7luJ&zr+cjtY`W(i_}HXhI9}8^uEq`2D-~PPdEj(|E2Ca!{g(p?0o)@i=A

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh z5Y}fm?GEReKl__@OB^hYq=!`3u(RT;Z2AIh|ET8R_88`|j?kcuEK)hPnvvhdEZ+>1c>rSmm__@h^(sot?CFsBH6+iOqF z*f+kC9jX9$0B7n*{z(|MAr59 z_w(Y$%Vx`#&WNQe8>^~rAArg+IvNXNzVE7m+UVA3P%=SO@263~M9BJc?-UI2k?+#1 z@!oaPxu4JkUUuH#gs5D)uEk15d|kBnPzsM2)ZnKN4H}29uGLqXtZH_#&NhC+ANsWv z=~nyfw?FTGk~Sd#*eMtu2@4C$&!-RgJh64{G*<^!NxdF(fU>7&y<%=X7*xW*C2g== zmJBp6S&^i1r4I0+kgkFQkqmUTH-SXmvU0ck7h8Z6 zK`COoIE_27l+4$X>>E^cbVBaZd?X|!8!zr`0?dok+nf5mh}KQJzGz3K9g2zdYu$U-vFJZ6(n3KjfD zQe24uE{;MZU`0I~|E9v5`# zVwZWtC5@|REJ1lEG?rJ1Rm>HGT5=}dL&G?`zVW_1k#PO%RBPaNUD$BUb`BF45G~Wi1fm}xvtaT9NHS}}Ly2}_tUUqyn{W`e< zH;z~f!X~L(%t-<~r_6Q17RA53pwD;*K$n%_udMS*H#X_Cy&TJA+Yky+NM{SYfLGm2 z@glZ|I&XA4wWQg(+LPSKA85Bz&p&(JtF?divW(HyBU?H$UKT3|!Njb2H1UZX#O+70 zj9G#5z^On(LxW4gUHIdNa=}O*kUcYwFwhX6V1BT7TH|KrkNmzRhiH7tn9N4`Itk6kOG-pflb)2ysI;KO|a1$YZ+i;WdR2iq_ehJD&K3DMw z{;EK|e`fT%3`{M1x-b#RM8E7zjQPc^DXaqC3l5$GHN`*#wLM9+HgM`Dc)}swt8^QNN@4;;pWkUdOKspWyVK`Y|$t*A%= zza0RY!otFJecFrBF6G>ja6+!`<^3Ow0(MttpjBpDpd0rNR+QoGo-vczReP>QkhrjE z>c*O$n`l1ngg*_5#^W#544zG@`Wj7j-e6!FV!rJJJj?=u2NXJ62&jrx%bJ0wt&94Y zu6<)=bs^&oNy;61U!+Z3lo#US3r&meTl)&XlN4YXw_`pM2ru8DQPXUR-DLRLt6 zCX)k5#OT`=$rgdKtkEqoSV|W*V&2QD%h>%Sva{U%a5Y5$#pt<~f>V9DX{WEwCH^w%S$t^v1{e^T4vsW}190?)k~H@#&&~SdU7#YnV%D6i@~r?VxL*+ z+OdZ>7!?3O0?baSn`XZO+rCtb(W5bSnYVmO5VQl3g7{t5>rC9~*z)#=&EC8;RYq^% z=mrwQKOG>c8@~q}=KWcbdwfhG?_6At1?-#q^2UIA++|ly8Ne?fP;I|p2k^*1s%@!O ztYs`v^d=S@+WL4Fh_Tm&fP`6DS!s~QA|ldk*z5z+Jh>x$#1Z?;ou^*cznQ^Z2e-pk zf9@Y1C1~eF3e^5BpX1|syf2VoXzMsf0ZI{)5xWFLszROGXfwF(n>R-y&Irj+Ij7@Xz>~ce%_hb!_JM3 z4KOn}p=@Z+3YYDO#KrI@8o$#L13rTa3}O>(#+@K135Kje@-nEc)N;8afx~?D?`i}C z9UTLc5ExlDPxArE=rD=Xg=XhYoG-Fm$Vpa$9-sa5HEe8beMM3*MF2E(uZxXbO+ELO z0s98Wu0QQy$M-!q1nThH@$D%L|0Q7Z>V)UG{r(IpK2s8p>o0lr?GKDS%<(koS@6+&sJCe+RRp1 zf=CgRB6TeYhs3IS2E=_z5(KJy=28^b1i+lx+F6s&{x`Q&DJY%hk67`26Vp}5drVx( zPt?EDbBk#Q_2WtuhK4y!w$fLaeJc)lL%^yii%RvRRzO>>e|{bg2l_q%0oj!%F4>TgcoQEG=0lFDrrMF z+o)c>N>IoF2?!CdGgbsG9E+QqGi!3ktbA%}RL#(E4^@x5y#QkL53z{B4B+6E-~F&V zFC3t~V!anprc+_P@?rb^DFT_M^xX)*eW1_+4**~-FbFA|-HqgZjEM;bvU55*ZoSUZ zf!B^i+1*@h@nY6L5Ov^B0rUc_7ofkFmzBR#(W^)8G;0)ZgOv7Jm@K1Ga&-uB2u zdw#!JMr?7L&xJ}G){%BV~;PgE2w(o zlH;Pc@D2-3*=R6a|3wEgjIF0E;Il=H<^Q$pJLyB+IQ@T?eO2(Y)jW_Omi9E>6Z3xs zx)oi-9HEfsbaAcj)EC|Ncd~5edqt}-$nV8s=HkBKKsRczTk$Yg;7|*GU#+Bb*-|2;xz_^A;kY2@0kX{>BV7vzB{u50ADRcOZK zib|RafUh<1A#_v1?|j#sG38ulICpgn1go&jt_O$w@eo_WH~F>wuO5H?aZj4+U^X{-`CXuJ{f;4QFZZ}k11vBqe1Z7VtRXu_)b;4)aG1)Q4ihfV+)p=Z3 z)*r8=UuEX+x|k!sYsJ|XjlWCKp;dV)Av^mEn@alq8VJEfVeO z_Rplr@=0TE67~^UZrUNSI&h2oY!#iD^hYi(F3NOU21I^Yzn_T^FYKojY53)BAKDXX zgZ;L0pKrU*I)HB8V;@&cYXkb0F22VF%#Y4g**CYa?Q7ZG-dqFp#Y$$PSV_9ElwJIA zM$hznHO6n;es`HX^PRY{R{UmP%UflZC*1E%!3cJfd7Ae=uq<2HruvYpw$dY@_|Hn3 zD7qMIv~W-O+ZH?J2H0SK7D<+CDvPev9sio+cA0%G)+jc~N%HeapiuxKeQCe85ClZ(03y;QE!|SmND30t z9n#&Ubcl4ffFPaHDcy%o=?3YBcc15Z|7+H)nKkoeJ`5kc*SgO+JFb20D}Gn(fnAbI z+c(FaX3NDdA^4o|eSHxxo_l>@<+K3XFFt2r&u-;v^ZFa}QFBGBb?w_hW1YKfbUA_z z9P19x6ff?7b71ALZ{s|fNH>!R)fbYf)c&ATd%h$;f4IEQY)@%`$m9Y4DlwbdVT{Yf ztZUtG&ATx9)!r${shrwIzsR42^wgf9EO8tTb7KIjj8Ff{T~}6 ztT2?Yf6T<~HWY!yYSp+04rTv+3)P2;H6d$Mhp z!8Lif;J7tDXqKy<^c1cCx!RsF7@8_ILHW zm^@J|RLIE_Z}45(P>ozgck@t7&##?EolRUK_T&z~_pKS{TxepB&AtAfWLe}8akm+M zowf9npqpRyPz*mkq)A-<=5FanDcYq&x)tV3a_McME@91=!1shn2u=nJTD6TBmpWds z+-s7gI%GQjG{>^#Mh{rg!KID8J4qlZCPV}Mm{9)%MRz~(T?S2$nCxQwObRqh!+zM? zxf;MZ-d?;`3|HMQ~%Kf6r28CwmZDh*P9Dn37l|Z$q4w*LN#i% z=4RJtl(+1D(bXespoXL|OKC|BY^JArZ3x}HM=$3EoXCVMUOY&DU~ac><&?lj{f)=M z@97ub%LET~YmIuJTmFK1e@RMKo-{|0mRL1=;_-qqh8kE30}crMZ%0Oqs*!HM7;arj z>UrmryQMT{I-y@SA|TJhsbx%5^HN=GA_Ax~ecYJR2U*WLf>J@L#kB2={`L(DnHRZu zi>^ovH5Vr*Cl601$PR1q;!{+w&)^f5l!;lesasqj?*_?DO!x!F?67Y@{vRCwEb0&C zl$WK(=`(g17Lx#c^AB%W^S*yke)z&+GAPE<@2RwEd`eJTt!HhJ*otEhKgJ@{S%|(r zJqyd@$nveO0I9Iszbpd+_lB^}m6-2a5 z<4ISro%wAKS{0Nvo%Dm?y~$R=BB&1rrUz&aaO@@kI;}J;&CNA{a`-4v9;Np<{Rl82 z$KT9=ah`OCs`BME67J9MlK8w$;CRBMFTQ@pKd;U*yHIzWKD{I>u5x`FLWa*XTwhew zRbL96T^&z9rh%{=>}ZRWWVvomv#V-g{Hm(HGD?<{oIWSg{uaW!HCrX05f*|c5&hy1 zC%QZ=U!GewMqIq16gL{wrR0PpOR~G;h)tKh*}4)H|M*GuyrzdN(d1g{@dDJFEsqdb z+E`p4y0+eqc4B4ndEfkP{~AO6=2OGjNQRe#o!!6XhjTq)L60~`5GZ>{Z@mh~AmUka zJZc_!JW1s7)CqFKD7S+ek;bd37tRx z2=!z>uZ|<*3a%)@PIX4e@-|vTy>=-8CvSp~gBOL^*~cd*;arvsdQz1B{E0d-f%F7H zRTW;H<$BrHCc;acArP8F_u|D1e_+$AbQ0`=znw!&OA^v&T0~OgiV) z@j%IZ{fdgFCMGyJxo_?t%&8rA#$Tr{`lyT~F%8H^Mgo+@*A3*d_&(n5M@8)f} z@IdHzKjq}(xO+AmStNf>{NR95PVloxSx2vCXE?I+o=V58G0^|n{vR=AYm))>r?rR1 zj=P7(pEZB%iH^*dB~P=wb>U5SJ(@euWAX0Waj+lOVV2UqVAEZ37gel-mw-JkVFdyfct zUZ)sZQi7y=ETOYe_`L&mv+%=MR7kIuvcpmHh;ly(Nu$+)p-xLrxR{IdlW+#a9=uEwGsxUT$vF z?HiDp5Q?o^!Yp zCgn_NBt?pd)f5_QxPIvLg z)&HreeZvziS8l7>`fqM75`?FOFiF?_>WG!16 zo-N0bwxIjO6^cAefOG_0b+r=R`%NO-riReQy3}}t^8xs3 zOSG9*=2l)d%PqjQe5+Hc1FTs0zX&o3kJp(G^p_6e>*pRvOEr6AWj^PlJ!FrWnRg%; zpO^UCP%6*kbzO_|!$SSzZMdFxi&uS9)7`^j<5ANAp_MP`UsSULPX0NmaSFopEgCxu>B-n&p-3r2zr6ojEJ%<6sM4_ zxNP{&%I0*6&x~9~t@KgieZDf8&(+FaS!+h~Ytrx%?Rp0bPfu^}`#<3?Ul~|fe8 zp95y9T9%?s=X2BWmi^H+jOb# z9~j6T+g{&DQ`o9Km?!gH4aMz=dOQMD#Y1E32Bd;Ri_yI>;rkun0lzW=698QSLK?r+ z%53y%_h-y9BbW6;0JjzR-oW-%#|tN>tmp59^Z=wC`1~cvzMU@9^SwFS0oNl{#}AZH z0uK-C;ik;&(aL^UkTl97r6SFM16=nIiQE{b#>K-vqSrD-KYwae7)n@tn(bHp1;pIa zY^(1h*#qnCz=kMLiEjI8&T)*5gd`ZR!v>%25b8%qQy1nmSe-7WN+N$X6M9=mawI|6l)xoqZod=FxA=@ZB;#N^@*qhOFzR4fmv3RFkonLT zkusE-o2@j;2md6RZ)St^}mm_BBdZ%^WPO9b3&+(-TI5qHXJ*Z)-hKX5o?{($O3H zGQ=v4UZCQ-GZ<56XD6AxcCUDhnvz-OONFIpd`NObqBdaWV-2RpE{;o=;rf9CZYROI zDT(QGM)gu~Ujx}T?RXCXKz6(Q_%Pji9LZ6jSOD9Z)#H2)L;{69U3LEZ#mW6*hk@-b zl=9!uE!|ABq5Mgm^hDvubm}LB{4AVd>__?O0h|PSXV2Om}GRzTu;*A zHZP5gGDAF}FL{H{?t0%=rtiaw@J()sR;_lE-O5IyZoe^mkO6f}pBxQra`N2O_qL9M z`y>?u#;H<>2c30f_i(|P+i?gqYp!OC?K``?EYqng<;U*D|6(?4Rl8eMHi$rjOlLz_w-!qeNjh67F7Q@ z_C+DPQiXd@P>bw672>;Md+pH(Igj)o_IV`LN* zRaFpO>oY!?C{&4k3kBfV2BTVeXjrThzjt227ATARY-6*TW_DTu+gWHbkp(r{AP^H1 zie$t@7)c8HPX5alTdAmcyx{RYjh7;8o|rt}DabT63lBy{x%cq}H(bQm_ksab4K(XY zsEXz0a@aU>MCMyib#{g^siQoJp*9JZ#FKb7G2teV@em60$u?%6b$@6oq8mtLdF-6G zHDfF{`Gh$!@$sXY&%bt*G4qL|OW%z#sp(>!#-mxYW#6ObeUi{#)4I253NTI!1&&W% zn3o8C*HRJJ2VN?X-rkX&fxr=%M~d!TGuK&aFg;~R_5N0sVfVH-Uj$&k&U;e;!Uw!{ z?va|3IzK-zB`L|Q`}_Nw?9H^q_;|4F;7$InOnBaWV zNI1TB42oYsz~pgusToV)pPxX@RP zldb@Ir(I~*SNe1Yss2*Gy?X$elmM++Y;*;yvPzobw03f;E-c*fMrD_63Q$q zEd_Gx@Mme!?$Hq$F>zCSKSGut-Y`GIL~z3IxdCeikK;v` z?e{S#-p(%~ont83?p&PTQc$X@rZI2nFN@gG1w6A#ie5fiZZ?Zz8aUP{&Mqv>$uS&C z;nKTV6HYL>u2I*!KimEQv{s|Mr68dd%x+$xpbJTj7VL$*N*Ulh}`1p8~C0}3mrf9pf33nSVnZ6<}VJ;F))CrO}XeFU>T`A5r|)JmeVD_ii$L+#_W&0FAtWgw)*24TkkelSe%`Q zHbrOe=g&ij=Ai(1fG8Bty;+=IotfP}nNf1`CK7FGDX|Zo|Cowhymyx;hxRtF6MezP z73_FxB;9jGy>+g^c@NkbiAg`}Nu_V8Hx!eMALQ}EcAQ*Y>xN7%&8_ygw*d_uaKq=;nY z)znlJ_N~~Z@jLG(J|2^ikqGb(Z24+7<)555bOX8kFs}S2Hu>}-3i6${OCvOWc~bvz z4o%TBSw0%O#74}Cl`hkIVZnYHe=?g~cR2`sXnT*;?X=F8#OG3)Kh*W}Z|J845QZNz z1#yhnfpZ%Au+`IRIT(6y=d9*)N@dk}N1 zkS5=E9zhG*wUI{AMoULT4mGK7FqtH>zK`ML=H{-K0r2TTqEqs8CP+jpv@2A*xF4g|r<=DZ9Bl&)!(?m1*xbdzDHh{e=4OjXQfg zIh}dvO>$cE7VvNz$)U29Txwq=v=@4YF5|&CjVflUgJvChWjH|-n*tu$KJL=ti`|yv zMOw=mjLxKsp9OtF>;779z4ZVn3nOGx+x!k@oc=gl9*W*(9kH)a(~{?Mkk8fWO%-a6 zLp0Q8Evq^SVkLb#6lOmxHTCrLTo|vegWWKcCWz5$66uL7_f?rW8<2mOKm{{T^^tT`=Kmb=U1c3)Sbck@A)9ViB6X^zO3})(NBA~ zu{TH%0xHUa`PuQMYD1l#c46Z2amP>0$mOE|n@0obc}m$R4mvYx$XU`RsmF`Za-M`< zjWJZnrIrIz!`8xlkX|0(${C7B#PeST5#H{;Pu2PpCJ9Lr0pJW_B4_cZ zR^=MTKvE3IAV`MHB9KYrx{Vv+x*)_-<9yPF*9Bl**MrT;bL;bfs9H!E)+(0>6ekaJ z=iBG`{`Zrm*zj+0hRHwUM4GbEHgTOLP~&}q_X^CIW0Yv&9#~nk^uaK3lo<(9Dj|M| zGkxMra_}p`L5AVX4x$gTv;9^(LRA|#-qd{KZl#3gmm=t!R#K`W^-tUA8oAE1`C}-3 zgdb(NSiWj}Z6udVL0GaS3Du^ymjRl?^Q_H zQ?R*;zg-OJUe8L>2h}>{2?kE{$XrP1V9F04hr%LrfK8>RT6DKi|KP8qwOW zfIy7EKoT8=N>cTemHnG-V4MX!%EnH$W#u|A>&D`oCq!BQz}C^C2pApzsjAjW%IP4s z4aFKCGM<)bH!iF>zVu*%fQ$eoq%;QSk3Sh1tQ4LeTtWVBLTA%!8}jE~lay$8zkMs> zzmkfb)fQ609$Z~CKD8gqR|!`9EU~_9VYC0TDdo)L1ki$>*h`B zAtutNrvz_6ZJ&}pX0qn}d#UhM` zzKtO4Q&C}mdvU;3Q*+(ee?EB4_CDq#==j1s&Ugekh}wWJmN(jHkL&Fx$1>pSe)Wf^Y<6-YpQEmZCmrzh9_AJefDbH&= zuADNPlIwLIz&oVc_mC{#FI|FWgnG8N{OL>O_G=(0r{}&A4>Se9SYY2=fg@OFb?y7O z$`aGJJ~KlAV9GBa4HMPWW>RF0lZ|!>AvW>F3@`jozNsDvZh5i?sco-_7}yP~s=gj} zmWNfp(nYRhVhj@%&$lpTe+A<-6QI!&kM1*e(rInq2nlh_5S(8x43YkT_vwRN=P0N3 zoN*PkjQEc|erO;3cS#o1v9xSXg0X!I`==t}@v5qNo_F@25`52WA1{UYu5~k6*1cvwY+L9>21~21kh*Un3%b*l zst1`~S3CNbS*&dSI^rQo@|1P_J>zaF<<&Ob)kOEHILRubWB-#2U<5iU0eh__yWOBJ zDk8$k*%<_u->m2^SZrSXG@g=bVEr3bL|dV+PYI=Fq(dA#~7NV`74}8w9F6 z8XCX0|Baweb38ou0A&=gowE(uM4V8ht%Vgkq|cu}TUvSx=`kel@9hy05F`nFEh@r@ zj8q8D{q<`=PjgO5PftxPK`xKk*;!}jK)!2jmIJ7A(C>P5X8ZCsH@Y`ZHqnab6Z)G0 z2f!+z;+6~qqz{%Kg*?~tN=xA$&(Xuf(NXhJOO()!bja~mYzRO_0Ni4bI&^U{Z@cXK zc+cZpvXj^n{}!>Widqq~4 zwY*#9H%hGeuQsng9OPBm-`})y@udxeRH>Ws#FllZ`byce;dH^<2^B@>4B-(PQ!{uv zFqh@DWbTJfR?vpcA_d+s+!ny&R;8+VdAYf3p=G|!&CP9k)fSj$BLerJQ|NrEmSzZB;yg)IkMG4G2k4+3gf03Z4!BNUw{Mq$#ZF8_#Np&^ zY`oqTiW@^c^dRHNpMEfq@H)0{jgO18q4e_d9Q2q?m;&h%uQH`iF$)}Fn?pq0HeToP z>d45*@Sqm8VNO3i2!6%$u{mQv5-2DYLmQ2pZ=;Ynd94OJXX0oXI1JB0TkhE^vvlTZF)U#(;Np6%5iMVlJ^sT=$#)k3NYzEL zX7ddw0e3r?RFCa5o{xDQC4Aha4*E716l^uSF2BwJz2=$~g=R-*t^isFOg)zdc$|Fh zv<)$a>G4$fUgdBjq<8Opso8Qm7XX^sAQ&Mmd@Vzb1HdA9=IW`f_ugH-2~Y=58U0B}hdZ@|A6vQrc8`cyUuVXi z?C8p*}{cx`R1_Yf=0=L}ETZLYS5<@4R&Y6k*YPM{FT@=GaE{ig;D z6*8r~|K3?Ft0eba`rpscr{5&L5;XoPbr*N~I*vp6|1qv;NBRE)T+!+O9#`By1-KnQTx5pwJX!TSrez^=JH6TMQ?T4F%M#5@HXrt2Px|FXl9xkBa zf4-3l@?TH83HV$LCZF$3^Kf$mUxW=0?H-`>#F)VY8)!&R;An5!B7OJTF>ALr^K{q? zMx4;DLX`rV@R;D>;70&Jkm#`}dfWTJ(|w(5A@=pFiHV6qA~0(kZaiR|EKV*8+?UeS zI0eFwclr3d4#O`#;fu;?rO*ekqJItfC}9x6mp(kCRa^Y2@uJ@Qb{O0g#)DE?(B1^k zkD-Dlv$D7&sL&G9ivqVyw292oozm->SpAzr7Os}rV--M{Q1L+(cCJK6&GYQrvN3f(0@xC)wqF4r~=kS?qN`d}t?NeDfxqy>?+3CTiRmZtNKv zcXQu8VSq}ZT=?-2XOP7>C7*jNjr#Ip-xg04Resv!lkVKo!v>4*HNc_a9;2!62@wdk z(?JS4Qf1=^>jIi5A>?G#5)AZ=7M8XLLcS6_8W4a|Ops#}>l$rZF<;-aHVbSI zPC`{x=lO3WJyB#M_>tJrlmoM|y!pcj0K51&n}B%|pI1}KL!OFb!!bFD(d zCDiQjAk8sx-g?`E37_!|qbHEn#0pygi~{=Sl~K`<8tAXWcX{mv<{dNVyOEkJ*wZz0P(iF5#PHWeb!zAmH#)Suzx9M@1`)8 z7O2hZ;K%K#TANvi;hA1rZaEl;yNJhW6-1{8 z0BO7OiN$)*nEn3#9u6~LB2@xK zbJ&?@c|tp~8%H>RkjtZX0Nvcz1MmwucCRt}*RQ~c0DWJK+1+<13ax5Q;qlb}z=SFP z7nsn#mb3oHk982s>l6RNh94=3Ma*k=HJbfzX2$n6we`9`H%fPR_vQ?ySXK20+)Yrd zT3Pftt5w+Zg-lG7Zdp!I_So2~y82{ESatM@fkeVDLZ-JC?^kn9K!wWrA-UDGR8c^q(HRXr+oS4^ zq)#9Wkfh#~G~JyTSBQYcAO<0iq7L=+&M;w2%y{d=oc?=<37spZrRx1qpM@t>;s{y{KDF zB_#(V7l%VXU}W-(Yrsq|EiKi%yW8@;zCSv;-{e6-Mh3xA@N^4+2b}+a`@E8E?c{VSZWw@K#eU55+Wx}4Ek&&Sx(BcF_#ZIWh+T?B*8M zL%O$j@P?j#w#7(_A%5;LSU8~5VE7tDd-Pd<0|!W-l~+JO8?g7x%oPY(3jJ$Cd{a^a z5~qai@2-H+stbZMi=G#Ee_J1>!TkpixU=hmfy(5x?`0zZx2(QK%M^ax1=Sj5EjPPl zzSjeKkKH^OH)ByCi;AeMwFMx4z>xb1*ljSG!zR)4e69una%9B3tO->gkC6kgfoiaA zzTQN{61uv7JkeY7ywn+XS5Z;X@xK52m%K6gA&82Ks`X}rwg=DYg5k zy84&~Ej>;rBZ_G-FI&54?#kh?P1oL^p#zsX7A+SLZGGu;{tGac&3ub@U(D-1@zu!X z`$Nzjh!b556&lq8Ky!fJy-fgk-57<;_>r#X!J_NZ7)CCLhysd$+Kp8Z!(`ST&-^hfQoR3$TGJPqP@j$4@YEPt}IX3QfpPpus3H#g-Cmxbts%Y2l z!Zf}_mpp|Q7WMOG%B9U}dHD$AQsSX4eyrPJ`hSA)7RT{_ z#8Ag4B>WGK2NMPAU<#AWG%z#BNIeT>jkiOg(YL z{rP~>JwT`F+oF7nPQK=fS4N^CAeeISrm8Tu1t>Fs*ey&w-OMoVZgHFKo}ATP@j;g9@{Ln{RP=Gf!S2DtA;2LE{e4=R{$pxcyi4)r+S9#6lBS+oEd9KIiPZZxDstMxB(a~(6$A2A z4B&)&gq9|$%G=oxCI^68T}yN^q$z(@jE*iv$jbVtT8Q>BLG}9C!6m}UvtvT?R$}%^ zkM++lU1AaZp2Xty?OjeyPUqYal9$2PHIS_osm@#hSIqwQ3Yc}dE%g}#SN=%frQjoP zsJcgLxnyx7LD0VS9x8!(b#&FUgP)Wq0ajU$mMb2opY$;PVF{r_uB5!}_nvf)rv^=p z*PpjELQZ-MmApf>{X4*?nA)q%WmOgR&`B^Tc#G@16lS1$BXt=Dphnn}Eo0Z2Ur#2r zyAQV^*Wi+UX8~|}B#Ja`Or-ytAbUWZM*&e1_}!IGD&_1AS%iNI$f0M2qsm*q?C;77 zeyR-+K3!Fv(B-@T{b3rK>Tha1T||*+ib;cCMTN=-Mc6r`UlB9{;KcfZ%jozX0sirE z^ov=&L&h?O4Z2q3UPLcFg!Mq3{LhIWca;AfGeYo)WGD-IK1?eOd}u=cjsi&OZje~m z|2lC7en#8aw2d&`S3ld#EFssxKGGMY2oTFhqm^3Wg5bTboVA{GMv#eC^1;yO1BJwU z(CFo1%VxSJWIxJ0ItPp7k%RLrK{CG$u%hAuJCOVN#O9T)7DOrSch>=Pa9J^uBLtEF z_@+EVK8L+vy@mpuZ8W7qkxpT8>0cZlB?NdfXq!io_-pRI?7z3qAz^s-pvz-F;{XA^ zKB5MO?IUEWN(KOcs-gc1!Cn|+Ui{J96+7Vi@02tFDl0yXUGR;B&=>8qoHBAh9TI~S z1MRKPMtL&hRs)`UFy*#Bhq!xUQrG_+KK@QCanm z-ewOw6k-XOP(yBIupkCk=NgjL3#BhoUOk2SXd`H#Eh~c|?KdlA(QbkuB4e>8eOjy0 z<<-zO<*RRieN`wjbykVt+((l5I(Yu@#N*#7TAL_Xh+2%a+x`qD2?Rgrcrr4NRP+)X zvIlZgHDu!Jmxt5QmWm+y2!F-HpuA-mnQ-C94?Ca7->uHdLXkdrL7WI?Xg;VGu zYM@X++TP>PM)i}hFBO6xkq_gko?m-kCI8Ql($diQ@S0Q*+P;WXQo4KT?lU3&cQ|@# zZ3ZcIA&3SYo+|yZJ0C5Dcy`Z|a%uQ7`m+Dwyp?J|_6r2>8b$R;q?J<=wK2dK?oik? zL9wQy27VS2Tg(uagXcjG2}fDw@-qp*W={5U`Nl^M|4jOWNz}4z5&@(f)Oq=tfQ$)L z`D=(i1qBU#WzQPJ87~AM3kd--FhjkmEYpFG4Pheg3UQ1vUI+j0@BFhi_OPyWG^q_P z2orUe@h9LL0<~0*28MDD_}fL@B!Bb_#0txg95=PHS7wl6cmU2O@Q;`R{|qI1U_)6 zVsRMLfutyHloT()tDoUdp|q6G0;eH$QI_xNOI5Uv|Ga)VEoivO62fwIvoE(W%_&EL zM0kpz@e~k-P!x3->2sNZ&k)0s_dD|xl{4I`hP5GG`_JZhvyY9(CN!<@r!y}3*D^f5 zVpsW6S;G(DuFP2`; z5eS>PJU`pFZZH-9Vw7*N@NW#U%?iGJqa3Rb=G~EMD2w}Puzkcqc^dMR6&+8TmnnOQ zY+C{&u4}h)ULNFKXIMDJDJi%dIwPy@!ffYJ;$zj(GL}2W{l>@xiwMS=+_<<@cyg%i z0ettW!@Nw5LdP7Z!=@jR&l1MOmjgf85Ta+cAZQ=} zGE<6w88c5wfBq`X)W<9>LDK=JBQAu-^vbuJ09QQXcaqyB9-nQmVZYYHo)?aVoj#|bO+rNJJ}?vnB3SlJ1lt@23Ez&H+#OQF+0vUji??rah5JMo&i%XBIR z>Y?EphmM(`ogpiR&a_Hw0eQn_`SDjXQnz8p=vz*0Z+l16ZB4@_XdZUG;$_VTmdni3 zUFndq^+bnnf90^LDCDxu&;`Zn^=P}nGZ_xggPzKhN_-)(?_GHn%Id+Z~j(>e8XZ0Qb(#{Lq(EN6YvzPZF$H{pKLrH)&kwD2R%frazI zTalAZAXX*C@tq3U-*v&z$dQk*uD&u-K6?#LgA215?m#ona9>5F--2+4qM=-0OO9#z z>FI@Oy?S8zncE;@!z*kcskcQ{K{%j-o+5<6D8D$V=qvOkXL5|A(DUI?WJ;d*@(bRS zJEN0)LOG$KooV5^g4QobX#n?-j(^m#i6|lDrAI>gbM-K5pt`1$0-hy zoX2{&iZJ7kjfBz#WCC0v$`_#~p-TgK*|Gg?cA>HKg(&qNwSw3j2s?qB3zf z9fRdmG72o-Sh zrcb7!UW}xbWrTz^@^N6aOP!Y8ewdX8yeUPl9{i5URUp&KzX4fwZqx6*eQj+yJsJ7sImr{tsCLwKWH^JIkNw~w>$l2I9S0}Fen(-lG z@`ahbvjB`teHa$Uk#Ve2RXEFV8MXG9qf*LA8uLj(IhCL@4*jjr0ROeLgU@xg#iMck z<3E**>%V4Xi9Rkaj`JEiueR!{-D_%Ku`aSB$bl3{9FhCB1xd}wj4xMV5 zS(Yop2d;*nghLaN`Zk>{T@f~i@j5ui_>kJzw>>fRqph+fT%HO0o%b3qaN3$I5$c=f z>j#ljl-6D0L2NMLBZaV0$eE^GIlVafBF$<_c`rhW+K%2-3n>Pcr9PA*$s#34ciX;= zQi7TwnMSA$WiOeA1HCBSCona~Ap8M1^szw!f{Z+7__cD3Qo} zQDDYF@22-1(IAciU=^=mqmgo&Nl69)0^~Te=_Sze_RpfMDySVzAQA<%2UD!h3u^S- zQAB@<5CYr?^mo!C`g{~fYC}&nP~nF?d;d$GWJru0tFnw4FBrZ-ITh4u421vaslbqD z{DH)I#sb3$# zob!w$_nDRE|F$}?qqFnQjd6xxF=0c7LUKwFgJd~AludG`23q_&V3afA z{n{lrgb^;|`dQD6MHOEIvqron4Y2j!=7LRYbys@p^xm?`b4V!Ax6AdChVgl)<}8KD6%Bcmj=C%>X) z7O>GLr}eWVXejMDqVZ{bj1e?Iv%5A!56TQuA}(i=XGF!~#;B#Qh`B2Dv#V*oKshq- zME^QJ)dx8vknrS&(jFs88kKGTwj5D$FXJR)I;MvLM`%=HE2|>b*o$zHs#5MItB>(FU$fLd?m5)R|{`ORj5{LK?g?^r~W<)^bM`U?03GlRm zi^9$&AKoLU(}~2b5fl=#c8-J}MmrSECdPvVg)O5%ti=4VqGeB}x$e?Tv$Bna;wYRQV0e%}4B;Ym5jY4AG_kyh-A z?fg1JNKzcLsD|8H?Ee~FCxEhBdWO@f=?A1Z*ez^n89W+84v`Um_Yvd!OG%n^Vp6%N zK;URjksA_6Ubhj_%cBQJN-v1?0OSEA&GbI!h?POdpb0`QuSeJT5+WDl)Lu~wwb7w8 zxj>0jn&A9*`ivY49N&p3YeHzm>zi9Sl8tHor>kF#JLCQte$jd_qjYvKLbwR~8{{t@bf5py;)-Md zIldl=y;CuErJq@7N!J>rCD9eau}<;Zq#|JUZL!oU&0G*<9TYo?knR8%K7915mK{~x zP8MAyAZK$lsgNj;6s>I)__W`p^7BnPj5L{oPAq?`ibo`gGzDqp?oi_J;K+F8ApZv^ zaW^()->LW@h)?zHi0k)jaq8-boIipJRt6Z3iPE96h#n*58Dq}{@%;Wgx4nkA8-GrA z^VMs548#7J9H>Q;gpEEh_E$|D$5g#lh`4(Il{^YgQbyeH?px1u<4T|;0;8l^gU-!a z%|y%nKirGjB4_$R)?a|d`@9Nuv&v$5LHOoOM8BQNFakQxHJEG~vhtnnOQEHo0Gwhh zRIv(Y=hVnIXn>oqLXfENg4@z0)=ZB=pt66tkiP4|N&Y%OIuhB)TX04j*#^o+gQP3P z>Pls>=A}rJ+)hglxrS3hPyEN9++%;CH_3Eo8v5B(?Y&*>pOSE4#?4fc(|+#)#x4Es z;ONZTH^~u~E(KpY14&Vt?9zy+iKM4lX`=(|3-z7{jeW-=KZ5U1F{JCS$W;fQ6*FR8 z$9iSoi>45L8_Dj$Q^90$92RoFrvE@+l7UEm=Ml zdPV@x`!7DHZ#rJ#zr=eJ+*b0pD`fPNaFZN|#{;=qyl8X{@>>wF!yt+ZY*oD>H<2ah z2yyTg+x{G?BPSu-@P&DM`G;+P$O1lC)us#$e&qSN`LRYe%9H0wZME!nr%qzpuf|98 z#yEdi`niJyELO!c4Ng#3na9=A((8*&OGm&}1k*HMk32{s%P^ZW^g^s3Tk^y4(mm8R6tjpCJ)C+MWZ=QnHcTAo@Jfc}0^c_M| zGfu;dy|M0`D?UWlWw1>&azR4kJ%Pl~05~zELqecZTi8h$Fk?Zno5IqFZ%!Dja27)o zQS749NgrcOgnvy5$Z=%gQsd`5Thmr-U_Iv>jhY2lhO0W-QppAh?cW*a zY@vHWDKtj1eAcyTaC&|{&4R#(6O--gSk&qJD-GujWGGwrQ=z?J797Rof<}%l&uURD zq`%zYo+uG`P(thNgvJA(eq*&1|H7-wY-c1|{*d)Bdwr%c2<{HVMg?p(@SS*Qd&>%L zrfE(zTpA(+KqIL+h-kn(r%L^;_a_)e+zuihczr{p9q{A!VBx<&$0w83tVH4wQ2yYy zNQ|H}qb(Sf!5t~G5-WT>yrUzGj2pSA9{5E^4MDQMV@Br5BFg!t_qgxHpWOZYX_h{G zAN0845gGRa4)x&_ob50B@PqXgaBTG526^4t1PR**kg~qRztzuaq~0KD1E&~9 z8m&((Yp~*ht^#huH|Kn*3Kc4mcR;n{Y0%(crVBw24jIlwvSuP#th-Q1>`2-}>`x5y zeY?mzawPpkfmonpRT&Ux)Z3Vgt~1nY~^kV@vtWY z8io;U(Pv9?)r_uzd{;CV6KP>5elENYHFiiKJc}3)B-T4!d_;ONW9Kby%r4WZOJNtO z(IMc?2b(Nl`>2D6hXAntoGjYaY*>M)88G_Pwkt#`2=(SPwhct0`wqYO6myV-W$zMZ z(E*8q7cR$1%ko^cjmUJE;9&lUD$;y0Qw$tV z>q6olj0k}mpim~|+loJ~%YDXH1!<=M3d;&HU#a-J6Fata2>2)rYCp`&EfGvV{_0fD zbyK4t9{}`tpn&?g%()^3eT0H z5l^-=KRXN6SdNFEAEwC~mzX6g!AnI#sgZol%;D|rAWS9jG91X}&5(=8;Cpp7JC~LA%e{`X-q!-PJeSjz7|c0c~dpOgE(;>?;-7xnwAcKBl`rOOUz=s6>}7_4D-w zJG--CI~4m=h)TuqO{+V&ng83)-j2_J)B6eZ8O6>M;W}H(vES}Z9L{%!{L$UEnh*&z z;e3R!MEodBGU1cQI@hgbRlTj|p38@fcc*RC5fF}4y|UKuzHvl)JLMJqUAM@?0hpC+ev%YSY`1JDSE~vZ%lpu*2W- zYQY)-ZnTG}eK%AT74$}gCTZmEiFDGLB#b}QymIA`-6J&D?Xt`&yv|#_7&NxGUosbx zf16(Yqx^?H|BtUGvb&pzwn8tiivOUb5F8Vlf9C)9Yaptwz@|RXE7$VfSDAszVuGCp zqo>*KNob`CZ|m9jjQsK?n~+n|)ftQnXipt4o!egZVA9rOHygd8nyOkUxJ)}|inPp{ zg_il7n#C2_g7(5azbqLeOP^xA&WpzHq)0D3+h6K!5{qRLD3C%Hd3(E!Fb6H(S z=!Ep%#^EWWUFf>zc=0tIw5uBPtjNKGH-?C~n z6j0Rj_am+7UbFCz5^n1vmUInm)zbFJMs4yfPbL3|>yVbmtuk64Sc#|K>P{nLsN@<2 zuCWN?n7^KOnxbNaXZ(9WP$L4Wn$?veDz}z;uA_94y6_hnKmF8zoYRcZqX&fIaJ69= zv2=Pf2pS zO=|g!y3}+dhi0%6n*1z{{nUUVq#5<>>v+e)O-;ChOXFCLzOBrFv}|@xoZyosXZRHHq0;b;3Ext8rqV`|!;bU4fAwXjoAWFJu0To}aG2+d^x zE2+BYiF(|b%Bs1D~3% z?m9z{0!1L3Xa(O7`BxN`uerF_7E+uUxy#r`i+-yin;T^7j4Y<_&iS(Pu}%nk6pwA_ zPs`8;uIrxFnl#=Ff4LkBsES_me`RjqROUam8IQK3$WqW##vZT;{V^fxK<}Z27N4wh zAxvCW#^!)g%?l3yzt zi~1)`IlWe8kES+k7tdH_GzzYRy;_x@LF#5{madCMo#D@`1x(BQU9e})7w&gT?@=0% zgKwiqZJqdL1jkX^_nlMiy*b#9nuSdZP6bF25Bv_fMroQ1eH{14yJsX?H7&q#3U;Fg ziOs$LIe2gK_;v5x>035-mOP;Q#mbB4@V(e-KNqY6C*&$UfGP`Xv3WTcGU4K8Q0e2# zhq|qecmQykYOGwsVdOEY0;s9=?8M$-rBu0t#u?4AqunTb22=u_F4;xxrl-78uMtuOah)(+RA}hizUkYP>o|K&aLMJnT zGtNG!TgN-i!(+DS+p4WK5>w*OE#8DY_dRZWXlsf&bDp3PZ^AN?8D%W=wQ*$+>-*9E zyS70Ahvi01E$M3@7TQXIk~ruy2gL=t*W0c;MAM?v7EXL2K@mL?Oxa1zHlGa4NlUNE z7RrxUQ2Y&hQOp$q8(P0ADJqPw2`4i#vtd*_uX#!j9v8*$s!YIRsH%LC)@l+Z{Exvo zBigSPG+CKT#=KkY*#BSEUHL!M?bn|ov{<@jCrQX7hCMY*}Wk5oKS7Va9IkGm~X(GxJ=Y@89tK;rZ$Fnt8p>=eo{0?{lvAbw1b9 z)zR1s`(DJxl&jkUp%C3Ig)x4b&{K3WaXVkW#^xc8)9uNn1vbJ*AL7gewhG4#wCJU# zTVn!q`UR$U*DftMQxL!U4P8v9=jHb&!YeGNfL#`VUG`7953fOMW{AY{lJ!?Y7WZE; zr)w_BN4&dIY8S1NV{^Q;Tk{F5>h8FU$7hC$_)$OhMtGN5T&V;0_PD*qTizWjnTX4J z0}am=E$tlA{ZXOWxTFOo%g@pPBIeU`-#%Ew#=iTMWR6{l5vsiS^f&;W!i%dq{&+?s zx#;VuG10{{z$C9V$IO;zjJ}?fB#gyOxxcq^xhXBe^Hih+?bTD)h_xM`b2t2)2wvGU zv+&J>46|YEgreVpY!mnxZu0Pc+e*q*V9+Dde)kW;stI3TEr&KJTP|uoSIN?5Mb5(- z$jPR_UA@1(E6WAG<7#y%%$3^ZA?YknZa+~FaZwF$6~uIFeg$jV+ISSBZ=3Rff*AA- z)v20dF2L8;os}=xv3-hU*k6zQbE0;rwjxCUx>ba_$#Y7*PW-Bbd_+=Aw}xuRVB!X; zRQVp|(w-DPlT9KDL{sgA-t( z4KP7&ZSCqnWTTz-zTHBZ-D}rlvJ2tmhWJ;?4}yaZaQmnpOUkuB;It!ckyfeeMyj^8 z<4ei$lNz?4g6K|lZ|FCp(d!E``I~0n&QeE+e#<2|`6F(>|q2};~>2}U7i~NlT z9n+~jZFO~G4yT#nm6xRRAF4X>-?nvmJDoqiz3;3(Cff7_ETlO&-UugUiffoi1d~%a zakQWYbPd3{YF^U7c}ICI+uj6?tEE{+}=n3=2G{{GUchp>Evi^-E-c~>8S z(4{yAX@1$(DiL$!!1b^d#ex)#4keDb&_Ah-gn$Lhk*F)b&FL8)V)S>CX~USQiEu_U zH}vl9t0c&d2@tT5DX>)4D0%tgpwo%D+$T0^%5%!3^WwH+Vv5X#R;l1N;fKLN{$sFU zERune7)ODyaV~nEPL#C zMC!VxB(WG>ZQ1lG29kOB$yjwmA-}ua)E{hPv|u6Upr}vc!Y;W#&zAeEM+)n*1>-d{ z9qoC0EC~3=6S2jB7C~%zf!GF@1Qg~wZti7;w~lA6DF^XNJ_J(lp!hDXnXQuBw)d8o zw{K8ZxAurKjkZtDu{UjiBp+yQC=bPEf^72HUX($bJduO7&~Uj)XYqV%~qsD8QiIixi9|cYid|_-X5zhC;)cd9F8= z4C0eUa@>oeUQ%Ek%M}W`Rp!+kR0IHrev_N)6Loy)$AA;Hxv&s&(~8#xPLBK^k5&tA z%8T$s#R;YPDSg+RZwMGRC+m&avi%EI2wit+@OiPaU;_rtx@wj&J#G{3E$=bEv6{CCZ4FK(V!-7EAg1(hav~9kr(e@*2E{s1%=JD~RPySI zm*1T=gA>v*BkgZbb7n=Vw9qyQ{(-c((Df9o+HQD*JK=s!l`)bV& zRaXb=XqyIQ4zjfTmgn1=!USe@$R6Mdo9rt^rCG5fIqS>we%>#;YW?xVQJ$k2BM^U1 zNd&|{`po%)B#jb>OR%889gJiwj#0zN?U>ckf&0wSJXG{VZ(IrCKt8BGvE0r^P8{#a z-70e*tmG(*2Ho~gJ^p%`@b>P{WJw)y#?QKJEC^xSbg|W_aEq-lr;=5h@gr~) zuppZ>Y{1+;Y=T9oseeQNVMC%{$s01fXaL>bs1&R&(%6_zeoCLf>;+jx=zBn7L1Dd5 z*f7HU`FOpS74m=zP;YBSPC=s0EtCG(p)hR=w3TqW{;0m zI&qym<9zD6^ioqPTH~XAwI+&1rIW7x8Hoo()?#zZGROM|{(RlS!TGRuz~|krO6(*L%LE52z=G*N?O@jqh?0Jinn{aG$tvbL$jmb>T-n-4 zO4UG%KjKTlV?nGK@5Gn@?Cw3d2>|*V;5WAuaFcoMAGN_%RmrQHb3Z@8G^vCdFos?b z7TOiB^_34I`hLJkoB6@8^Ox2Nm&|D+kp)#?}r$C@RR~WA}jE0tL3uOU6(2-&_PDt)ixROCfh z_c+q;ubq+WZ4EV*A}%L9j~(e7I+XvAln4N{ z#uEa?uDcBE?hmrbnM(#TVsDg&qEVZHIf*^jMCHdR1BTA}1!lzI-ETn+r_Fu`4@R$B zIYMy{6}ZAiz=X9gD8|b1>tgbAA)$oE4Q?KMOMkuUYUwwD~~>j!uLZ z_4RlX(!19>X{6TN*K$tUJ9}a`(2mO_)J4*`kg06m@HH(v*}wkoC)QQqp*PM|qfITb z-vlO5t1z1_jc*UD^In(r|2T5}4Db}e$Zb4%-e`Ep$A8(X_h-WNpfUxu77G-tqe~cX zZret=h!t-nK6*kyj31?(f-<$y-=!e|pM@rIlQFKbw1&nRAoGZLg z(es{QKGcn@eDUOH+sT;Oboi~(JjVD2$^L(Sp0UJDXj^bVsP>0iW*rAOc!<{UQLPE) ziQSaYQU`-TcB<2oq|S(%rufQQY*pXHzcN*285O~pN*Wsg)pFX}qwkfcf0uBWen8fJ zJ}J=6!3U85Q`FC|FZN=XXyYt0< za4F<_wZt_7*GP3M+|o-RX_irbHAgMX{4f{y=Oq#7Yu#$WzKT$A_>$;4siu)mO=!NW zOpiZH(YZ39)&L_B`Az-rM}^09h)D`6J{5gY*)N=3Njo|lB+F&s4z=kmH1c4&%N7hF zzI;AmN!)1^hqxUDzz)=le3jZ8wClOs-#Rg*Pj61pcS7O&yeAjSas9J8(#n1mSlTKj zo@MP^FEvYm+rn+@i4E#{Zi;%YEq#HnUa-vueYtJ<6+@*xE_2}0@cAF>fr!FAit(*# zjxbO$h3p)C<-iO71$8q0^_IRZ6G=yKudV2WxKM{oLzTtXw7f5BUEXoAf}Tw+2W7N8 z*R|#gQ3-z&u=sW^j6p#xT=rfIZ|rP(A?BpOC;2yGW8NM|}$jdjSUHf|h;c;6TGMU7S$G^>Qi3 zvYe51+Y*bR53gulP7@b4+vL5lx5uxeQ|^))BUc<~4|-6MCon$tK#}Q@yfuh_fODZ# zsQ_vdt75n)=XA1S10$&GrnluHfygg0QFAC>#{6SKZt*nGD!BtVEP%R+!%63~JxCZC z049uFnFy_->?50%1(`ei?LTcU_2aX|#or?6HZ=X>qWb-&X3}fvsOD@?z-$2NYmh%$ zE_1UwV4!;Ip8QCUXSyDu+se17nT&LQvQ{a%zL^)xnlm~b-oE9R{Uut!vT#Z7z7~!a za<`(2pG!V`*DOsC%6NKS4RTc(T&|#h%OtnT39~cYrNrP#1eY){_ZoSmhah~lg0=al zAP|Tf*pvVs=MJYu|CPr`FSj=YazyuVEx>=Vng2(xrond2O@5vCW&;MdxYgB*q|4E? z6Tn{GD6Asqp-Ut!W~$WNHyYYgj)I?+1?RZ@aXT!e&4pu(8Ezi%7v!daxqgY>gMa=P D&k=w9 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png b/data/plugins/grafana-piechart-panel/dist/img/piechart-legend-under.png new file mode 100644 index 0000000000000000000000000000000000000000..32845115d934b2c35d279f3919d36557cb8a61b7 GIT binary patch literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart-options.png b/data/plugins/grafana-piechart-panel/dist/img/piechart-options.png new file mode 100644 index 0000000000000000000000000000000000000000..117962e05ff61b61972a4e1fc5c7637d00f78935 GIT binary patch literal 48400 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 a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png b/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_large.png new file mode 100644 index 0000000000000000000000000000000000000000..21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a GIT binary patch literal 3723 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 p3YbhacYIB1Qj?lY1NpxI0|2nop0tA \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.png b/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..10d49e48427e4576ab8a98be950633e5a8f76dc5 GIT binary patch literal 2629 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.svg b/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.svg new file mode 100644 index 0000000000000..f6f2f7526e685 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/img/piechart_logo_small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/light.js b/data/plugins/grafana-piechart-panel/dist/light.js new file mode 100644 index 0000000000000..470e7cde4123d --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/light.js @@ -0,0 +1,2 @@ +define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=9)}({9:function(e,t,n){}})})); +//# sourceMappingURL=light.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/light.js.map b/data/plugins/grafana-piechart-panel/dist/light.js.map new file mode 100644 index 0000000000000..23ffa6ee3f5ac --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/light.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,G","file":"light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/module.html b/data/plugins/grafana-piechart-panel/dist/module.html new file mode 100644 index 0000000000000..e0faed58b879f --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/module.html @@ -0,0 +1,5 @@ +

+
diff --git a/data/plugins/grafana-piechart-panel/dist/module.js b/data/plugins/grafana-piechart-panel/dist/module.js new file mode 100644 index 0000000000000..6dd5bd6699b70 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/module.js @@ -0,0 +1,3 @@ +/*! For license information please see module.js.LICENSE.txt */ +define(["jquery","lodash","app/plugins/sdk","app/core/utils/kbn","app/core/time_series","angular"],(function(e,t,n,i,r,o){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=11)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=i},function(e,t){e.exports=r},function(e,t){e.exports=o},function(e,t,n){var i,r;function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(l,a){"object"==o(t)&&void 0!==e?e.exports=a():void 0===(r="function"==typeof(i=a)?i.call(t,n,t,e):i)||(e.exports=r)}(0,(function(){"use strict";function e(e){return getComputedStyle(e)}function t(e,t){for(var n in t){var i=t[n];"number"==typeof i&&(i+="px"),e.style[n]=i}return e}function n(e){var t=document.createElement("div");return t.className=e,t}function i(e,t){if(!f)throw new Error("No element matching method supported");return f.call(e,t)}function r(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function o(e,t){return Array.prototype.filter.call(e.children,(function(e){return i(e,t)}))}function l(e,t){var n=e.element.classList,i=v.state.scrolling(t);n.contains(i)?clearTimeout(b[t]):n.add(i)}function a(e,t){b[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(v.state.scrolling(t))}),e.settings.scrollingThreshold)}function s(e,t){l(e,t),a(e,t)}function c(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function h(e){return parseInt(e,10)||0}function d(e){return i(e,"input,[contenteditable]")||i(e,"select,[contenteditable]")||i(e,"textarea,[contenteditable]")||i(e,"button,[contenteditable]")}function u(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function p(e,n){var i={width:n.railXWidth};n.isRtl?i.left=n.negativeScrollAdjustment+e.scrollLeft+n.containerWidth-n.contentWidth:i.left=e.scrollLeft,n.isScrollbarXUsingBottom?i.bottom=n.scrollbarXBottom-e.scrollTop:i.top=n.scrollbarXTop+e.scrollTop,t(n.scrollbarXRail,i);var r={top:e.scrollTop,height:n.railYHeight};n.isScrollbarYUsingRight?n.isRtl?r.right=n.contentWidth-(n.negativeScrollAdjustment+e.scrollLeft)-n.scrollbarYRight-n.scrollbarYOuterWidth:r.right=n.scrollbarYRight-e.scrollLeft:n.isRtl?r.left=n.negativeScrollAdjustment+e.scrollLeft+2*n.containerWidth-n.contentWidth-n.scrollbarYLeft-n.scrollbarYOuterWidth:r.left=n.scrollbarYLeft+e.scrollLeft,t(n.scrollbarYRail,r),t(n.scrollbarX,{left:n.scrollbarXLeft,width:n.scrollbarXWidth-n.railBorderXWidth}),t(n.scrollbarY,{top:n.scrollbarYTop,height:n.scrollbarYHeight-n.railBorderYWidth})}function g(e,t){function n(t){g[u]=f+b*(t[s]-v),l(e,p),k(e),t.stopPropagation(),t.preventDefault()}function i(){a(e,p),e.event.unbind(e.ownerDocument,"mousemove",n)}var r=t[0],o=t[1],s=t[2],c=t[3],h=t[4],d=t[5],u=t[6],p=t[7],g=e.element,f=null,v=null,b=null;e.event.bind(e[h],"mousedown",(function(t){f=g[u],v=t[s],b=(e[o]-e[r])/(e[c]-e[d]),e.event.bind(e.ownerDocument,"mousemove",n),e.event.once(e.ownerDocument,"mouseup",i),t.stopPropagation(),t.preventDefault()}))}var f=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,v={main:"ps",element:{thumb:function(e){return"ps__thumb-"+e},rail:function(e){return"ps__rail-"+e},consuming:"ps__child--consume"},state:{focus:"ps--focus",active:function(e){return"ps--active-"+e},scrolling:function(e){return"ps--scrolling-"+e}}},b={x:null,y:null},m=function(e){this.element=e,this.handlers={}},y={isEmpty:{configurable:!0}};m.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},m.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(i){return!(!t||i===t)||(n.element.removeEventListener(e,i,!1),!1)}))},m.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},y.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(m.prototype,y);var w=function(){this.eventElements=[]};w.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new m(e),this.eventElements.push(t)),t},w.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},w.prototype.unbind=function(e,t,n){var i=this.eventElement(e);i.unbind(t,n),i.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(i),1)},w.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},w.prototype.once=function(e,t,n){var i=this.eventElement(e);i.bind(t,(function e(r){i.unbind(t,e),n(r)}))};var S=function(e,t,n,i,r){var o;if(void 0===i&&(i=!0),void 0===r&&(r=!1),"top"===t)o=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");o=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,i,r){var o=n[0],l=n[1],a=n[2],h=n[3],d=n[4],u=n[5];void 0===i&&(i=!0),void 0===r&&(r=!1);var p=e.element;e.reach[h]=null,p[a]<1&&(e.reach[h]="start"),p[a]>e[o]-e[l]-1&&(e.reach[h]="end"),t&&(p.dispatchEvent(c("ps-scroll-"+h)),t<0?p.dispatchEvent(c("ps-scroll-"+d)):t>0&&p.dispatchEvent(c("ps-scroll-"+u)),i&&s(e,h)),e.reach[h]&&(t||r)&&p.dispatchEvent(c("ps-"+h+"-reach-"+e.reach[h]))}(e,n,o,i,r)},M=document&&"WebkitAppearance"in document.documentElement.style,Y=window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),T=navigator&&navigator.msMaxTouchPoints,k=function(e){var t=e.element;e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(o(t,v.element.rail("x")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(o(t,v.element.rail("y")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),p(t,e),e.scrollbarXActive?t.classList.add(v.state.active("x")):(t.classList.remove(v.state.active("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=0),e.scrollbarYActive?t.classList.add(v.state.active("y")):(t.classList.remove(v.state.active("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)},X={"click-rail":function(e){e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,k(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,k(e),t.stopPropagation()}))},"drag-thumb":function(e){g(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x"]),g(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y"])},keyboard:function(e){var t=e.element,n=function(){return i(t,":hover")},r=function(){return i(e.scrollbarX,":focus")||i(e.scrollbarY,":focus")};e.event.bind(e.ownerDocument,"keydown",(function(i){if(!(i.isDefaultPrevented&&i.isDefaultPrevented()||i.defaultPrevented)&&(n()||r())){var o=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var l=0,a=0;switch(i.which){case 37:l=i.metaKey?-e.contentWidth:i.altKey?-e.containerWidth:-30;break;case 38:a=i.metaKey?e.contentHeight:i.altKey?e.containerHeight:30;break;case 39:l=i.metaKey?e.contentWidth:i.altKey?e.containerWidth:30;break;case 40:a=i.metaKey?-e.contentHeight:i.altKey?-e.containerHeight:-30;break;case 32:a=i.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:a=e.containerHeight;break;case 34:a=-e.containerHeight;break;case 36:a=e.contentHeight;break;case 35:a=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==l||e.settings.suppressScrollY&&0!==a||(t.scrollTop-=a,t.scrollLeft+=l,k(e),function(n,i){var r=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===r&&i>0||r>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var o=t.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===o&&n<0||o>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(l,a)&&i.preventDefault())}}))},wheel:function(t){function n(t,n,i){if(!M&&r.querySelector("select:focus"))return!0;if(!r.contains(t))return!1;for(var o=t;o&&o!==r;){if(o.classList.contains(v.element.consuming))return!0;var l=e(o);if([l.overflow,l.overflowX,l.overflowY].join("").match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&!(0===o.scrollTop&&i>0||o.scrollTop===a&&i<0))return!0;var s=o.scrollLeft-o.clientWidth;if(s>0&&!(0===o.scrollLeft&&n<0||o.scrollLeft===s&&n>0))return!0}o=o.parentNode}return!1}function i(e){var i=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(e),o=i[0],l=i[1];if(!n(e.target,o,l)){var a=!1;t.settings.useBothWheelAxes?t.scrollbarYActive&&!t.scrollbarXActive?(l?r.scrollTop-=l*t.settings.wheelSpeed:r.scrollTop+=o*t.settings.wheelSpeed,a=!0):t.scrollbarXActive&&!t.scrollbarYActive&&(o?r.scrollLeft+=o*t.settings.wheelSpeed:r.scrollLeft-=l*t.settings.wheelSpeed,a=!0):(r.scrollTop-=l*t.settings.wheelSpeed,r.scrollLeft+=o*t.settings.wheelSpeed),k(t),(a=a||function(e,n){var i=r.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===i&&n>0||i>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var o=r.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===o&&e<0||o>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}(o,l))&&!e.ctrlKey&&(e.stopPropagation(),e.preventDefault())}}var r=t.element;void 0!==window.onwheel?t.event.bind(r,"wheel",i):void 0!==window.onmousewheel&&t.event.bind(r,"mousewheel",i)},touch:function(e){function t(t,n){var i=h.scrollTop,r=h.scrollLeft,o=Math.abs(t),l=Math.abs(n);if(l>o){if(n<0&&i===e.contentHeight-e.containerHeight||n>0&&0===i)return{stop:!e.settings.swipePropagation,prevent:0===window.scrollY}}else if(o>l&&(t<0&&r===e.contentWidth-e.containerWidth||t>0&&0===r))return{stop:!e.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function n(t,n){h.scrollTop-=n,h.scrollLeft-=t,k(e)}function i(){f=!0}function r(){f=!1}function o(e){return e.targetTouches?e.targetTouches[0]:e}function l(e){return!(e.pointerType&&"pen"===e.pointerType&&0===e.buttons||(!e.targetTouches||1!==e.targetTouches.length)&&(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function a(e){if(l(e)){v=!0;var t=o(e);d.pageX=t.pageX,d.pageY=t.pageY,u=(new Date).getTime(),null!==g&&clearInterval(g),e.stopPropagation()}}function s(i){if(!v&&e.settings.swipePropagation&&a(i),!f&&v&&l(i)){var r=o(i),s={pageX:r.pageX,pageY:r.pageY},c=s.pageX-d.pageX,h=s.pageY-d.pageY;n(c,h),d=s;var g=(new Date).getTime(),b=g-u;b>0&&(p.x=c/b,p.y=h/b,u=g);var m=t(c,h),y=m.stop,w=m.prevent;y&&i.stopPropagation(),w&&i.preventDefault()}}function c(){!f&&v&&(v=!1,e.settings.swipeEasing&&(clearInterval(g),g=setInterval((function(){e.isInitialized?clearInterval(g):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(g):(n(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(g)}),10)))}if(Y||T){var h=e.element,d={},u=0,p={},g=null,f=!1,v=!1;Y?(e.event.bind(window,"touchstart",i),e.event.bind(window,"touchend",r),e.event.bind(h,"touchstart",a),e.event.bind(h,"touchmove",s),e.event.bind(h,"touchend",c)):T&&(window.PointerEvent?(e.event.bind(window,"pointerdown",i),e.event.bind(window,"pointerup",r),e.event.bind(h,"pointerdown",a),e.event.bind(h,"pointermove",s),e.event.bind(h,"pointerup",c)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",i),e.event.bind(window,"MSPointerUp",r),e.event.bind(h,"MSPointerDown",a),e.event.bind(h,"MSPointerMove",s),e.event.bind(h,"MSPointerUp",c)))}}},W=function(i,r){var o=this;if(void 0===r&&(r={}),"string"==typeof i&&(i=document.querySelector(i)),!i||!i.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var l in this.element=i,i.classList.add(v.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1},r)o.settings[l]=r[l];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var a=function(){return i.classList.add(v.state.focus)},s=function(){return i.classList.remove(v.state.focus)};this.isRtl="rtl"===e(i).direction,this.isNegativeScroll=function(){var e,t=i.scrollLeft;return i.scrollLeft=-1,e=i.scrollLeft<0,i.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?i.scrollWidth-i.clientWidth:0,this.event=new w,this.ownerDocument=i.ownerDocument||document,this.scrollbarXRail=n(v.element.rail("x")),i.appendChild(this.scrollbarXRail),this.scrollbarX=n(v.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",a),this.event.bind(this.scrollbarX,"blur",s),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=e(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=h(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=h(c.borderLeftWidth)+h(c.borderRightWidth),t(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=h(c.marginLeft)+h(c.marginRight),t(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=n(v.element.rail("y")),i.appendChild(this.scrollbarYRail),this.scrollbarY=n(v.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",a),this.event.bind(this.scrollbarY,"blur",s),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var d=e(this.scrollbarYRail);this.scrollbarYRight=parseInt(d.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=h(d.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(t){var n=e(t);return h(n.width)+h(n.paddingLeft)+h(n.paddingRight)+h(n.borderLeftWidth)+h(n.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=h(d.borderTopWidth)+h(d.borderBottomWidth),t(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=h(d.marginTop)+h(d.marginBottom),t(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:i.scrollLeft<=0?"start":i.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:i.scrollTop<=0?"start":i.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return X[e](o)})),this.lastScrollTop=i.scrollTop,this.lastScrollLeft=i.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return o.onScroll(e)})),k(this)};return W.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,t(this.scrollbarXRail,{display:"block"}),t(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=h(e(this.scrollbarXRail).marginLeft)+h(e(this.scrollbarXRail).marginRight),this.railYMarginHeight=h(e(this.scrollbarYRail).marginTop)+h(e(this.scrollbarYRail).marginBottom),t(this.scrollbarXRail,{display:"none"}),t(this.scrollbarYRail,{display:"none"}),k(this),S(this,"top",0,!1,!0),S(this,"left",0,!1,!0),t(this.scrollbarXRail,{display:""}),t(this.scrollbarYRail,{display:""}))},W.prototype.onScroll=function(e){this.isAlive&&(k(this),S(this,"top",this.element.scrollTop-this.lastScrollTop),S(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},W.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},W.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")},W}))},function(e,t){var n,i;n=jQuery,i={series:{pie:{show:!1,radius:"auto",innerRadius:0,startAngle:1.5,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(e,t){return"
"+e+"
"+Math.round(t.percent)+"%
"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}},n.plot.plugins.push({init:function(e){var t=null,i=null,r=null,o=null,l=null,a=null,s=!1,c=null,h=[];function d(e,o,l){s||(s=!0,t=e.getCanvas(),i=n(t).parent(),r=e.getOptions(),e.setData(function(e){for(var t=0,i=0,o=0,l=r.series.pie.combine.color,a=[],s=0;sr.series.pie.combine.threshold)&&a.push(n.extend(e[s],{data:[[1,c]],color:e[s].color,label:e[s].label,angle:c*Math.PI*2/t,percent:c/(t/100)}));return o>1&&a.push({data:[[1,i]],color:l,label:r.series.pie.combine.label,angle:i*Math.PI*2/t,percent:i/(t/100)}),a}(e.getData())))}function u(e,t){if(i){var h=e.getPlaceholder().width(),d=e.getPlaceholder().height(),u=i.children().filter(".legend").children().width()||0;c=t,s=!1,o=Math.min(h,d/r.series.pie.tilt)/2,a=d/2+r.series.pie.offset.top,l=h/2,"auto"==r.series.pie.offset.left?(r.legend.position.match("w")?l+=u/2:l-=u/2,lh-o&&(l=h-o)):l+=r.series.pie.offset.left;var g=e.getData(),f=0;do{f>0&&(o*=.95),f+=1,v(),r.series.pie.tilt<=.8&&b()}while(!m()&&f<10);f>=10&&(v(),i.prepend("
Could not draw pie with labels contained inside canvas
")),e.setSeries&&e.insertLegend&&(e.setSeries(g),e.insertLegend())}function v(){c.clearRect(0,0,h,d),i.children().filter(".pieLabel, .pieLabelBackground").remove()}function b(){var e=r.series.pie.shadow.left,t=r.series.pie.shadow.top,n=r.series.pie.shadow.alpha,i=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;if(!(i>=h/2-e||i*r.series.pie.tilt>=d/2-t||i<=10)){c.save(),c.translate(e,t),c.globalAlpha=n,c.fillStyle="#000",c.translate(l,a),c.scale(1,r.series.pie.tilt);for(var s=1;s<=10;s++)c.beginPath(),c.arc(0,0,i,0,2*Math.PI,!1),c.fill(),i-=s;c.restore()}}function m(){var e=Math.PI*r.series.pie.startAngle,t=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;c.save(),c.translate(l,a),c.scale(1,r.series.pie.tilt),c.save();for(var s=e,u=0;u0){for(c.save(),c.lineWidth=r.series.pie.stroke.width,s=e,u=0;u1?r.series.pie.label.radius:o*r.series.pie.label.radius,c=0;c=100*r.series.pie.label.threshold&&!u(g[c],t,c))return!1;t+=g[c].angle}return!0;function u(e,t,o){if(0==e.data[0][1])return!0;var c,u=r.legend.labelFormatter,p=r.series.pie.label.formatter;c=u?u(e.label,e):e.label,p&&(c=p(c,e));var g=(t+e.angle+t)/2,f=l+Math.round(Math.cos(g)*s),v=a+Math.round(Math.sin(g)*s)*r.series.pie.tilt,b=""+c+"";i.append(b);var m=i.children("#pieLabel"+o),y=v-m.height()/2,w=f-m.width()/2;if(m.css("top",y),m.css("left",w),0-y>0||0-w>0||d-(y+m.height())<0||h-(w+m.width())<0)return!1;if(0!=r.series.pie.label.background.opacity){var S=r.series.pie.label.background.color;null==S&&(S=e.color);var M="top:"+y+"px;left:"+w+"px;";n("
").css("opacity",r.series.pie.label.background.opacity).insertBefore(m)}return!0}}();function f(e,n,i){e<=0||isNaN(e)||(i?c.fillStyle=n:(c.strokeStyle=n,c.lineJoin="round"),c.beginPath(),Math.abs(e-2*Math.PI)>1e-9&&c.moveTo(0,0),c.arc(0,0,t,s,s+e/2,!1),c.arc(0,0,t,s+e/2,s+e,!1),c.closePath(),s+=e,i?c.fill():c.stroke())}}}function p(e){if(r.series.pie.innerRadius>0){e.save();var t=r.series.pie.innerRadius>1?r.series.pie.innerRadius:o*r.series.pie.innerRadius;e.globalCompositeOperation="destination-out",e.beginPath(),e.fillStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.fill(),e.closePath(),e.restore(),e.save(),e.beginPath(),e.strokeStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.stroke(),e.closePath(),e.restore()}}function g(e,t){for(var n=!1,i=-1,r=e.length,o=r-1;++i1?h.series.pie.radius:o*h.series.pie.radius,u=0;u1?t.series.pie.tilt=1:t.series.pie.tilt<0&&(t.series.pie.tilt=0))})),e.hooks.bindEvents.push((function(e,t){var n=e.getOptions();n.series.pie.show&&(n.grid.hoverable&&t.unbind("mousemove").mousemove(f),n.grid.clickable&&t.unbind("click").click(v))})),e.hooks.processDatapoints.push((function(e,t,n,i){e.getOptions().series.pie.show&&d(e)})),e.hooks.drawOverlay.push((function(e,t){e.getOptions().series.pie.show&&function(e,t){var n,i=e.getOptions(),r=i.series.pie.radius>1?i.series.pie.radius:o*i.series.pie.radius;t.save(),t.translate(l,a),t.scale(1,i.series.pie.tilt);for(var s=0;s1e-9&&t.moveTo(0,0),t.arc(0,0,r,n.startAngle,n.startAngle+n.angle/2,!1),t.arc(0,0,r,n.startAngle+n.angle/2,n.startAngle+n.angle,!1),t.closePath(),t.fill());p(t),t.restore()}(e,t)})),e.hooks.draw.push((function(e,t){e.getOptions().series.pie.show&&u(e,t)}))},options:i,name:"pie",version:"1.1"})},function(e,t){!function(e){function t(e,t){return t*Math.floor(e/t)}function n(e,t,n,i){if("function"==typeof e.strftime)return e.strftime(t);var r,o=function(e,t){return t=""+(null==t?"0":t),1==(e=""+e).length?t+e:e},l=[],a=!1,s=e.getHours(),c=s<12;null==n&&(n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),null==i&&(i=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]),r=s>12?s-12:0==s?12:s;for(var h=0;h=c);++d);var u=h[d][0],p=h[d][1];if("year"==p){if(null!=l.minTickSize&&"year"==l.minTickSize[1])u=Math.floor(l.minTickSize[0]);else{var g=Math.pow(10,Math.floor(Math.log(e.delta/o.year)/Math.LN10)),f=e.delta/o.year/g;u=f<1.5?1:f<3?2:f<7.5?5:10,u*=g}u<1&&(u=1)}e.tickSize=l.tickSize||[u,p];var v=e.tickSize[0];p=e.tickSize[1];var b=v*o[p];"second"==p?i.setSeconds(t(i.getSeconds(),v)):"minute"==p?i.setMinutes(t(i.getMinutes(),v)):"hour"==p?i.setHours(t(i.getHours(),v)):"month"==p?i.setMonth(t(i.getMonth(),v)):"quarter"==p?i.setMonth(3*t(i.getMonth()/3,v)):"year"==p&&i.setFullYear(t(i.getFullYear(),v)),i.setMilliseconds(0),b>=o.minute&&i.setSeconds(0),b>=o.hour&&i.setMinutes(0),b>=o.day&&i.setHours(0),b>=4*o.day&&i.setDate(1),b>=2*o.month&&i.setMonth(t(i.getMonth(),3)),b>=2*o.quarter&&i.setMonth(t(i.getMonth(),6)),b>=o.year&&i.setMonth(0);var m,y=0,w=Number.NaN;do{if(m=w,w=i.getTime(),n.push(w),"month"==p||"quarter"==p)if(v<1){i.setDate(1);var S=i.getTime();i.setMonth(i.getMonth()+("quarter"==p?3:1));var M=i.getTime();i.setTime(w+y*o.hour+(M-S)*v),y=i.getHours(),i.setHours(0)}else i.setMonth(i.getMonth()+v*("quarter"==p?3:1));else"year"==p?i.setFullYear(i.getFullYear()+v):i.setTime(w+b)}while(w');function s(e,t){var n=t.data[0][t.data[0].length-1],r=2,o='
'+e+"
";return i.panel.legend.percentageDecimals&&(r=i.panel.legend.percentageDecimals),i.panel.legend.values&&i.panel.legend.percentage?o+i.formatValue(n)+"
"+t.percent.toFixed(r)+"%
":i.panel.legend.values?o+i.formatValue(n)+"
":i.panel.legend.percentage?o+t.percent.toFixed(r)+"%
":o+"
"}function c(){var e=t.width(),n=i.height-function(e){if(!i.panel.legend.show||"Right side"===i.panel.legendType||"On graph"===i.panel.legendType)return 20;if("Under graph"===i.panel.legendType&&i.panel.legend.percentage||i.panel.legend.values){var t=parseInt(i.panel.breakPoint,10)/100,n=23+20*r.length;return Math.min(n,Math.floor(e*t))}return 0}(i.height),c=Math.min(e,n),h=u()("
"),d={margin:"auto",position:"relative",paddingBottom:"20px",height:c+"px"};h.css(d);var p={legend:{show:!1},series:{pie:{radius:1,innerRadius:0,show:!0,stroke:{color:u()("body").css("background-color"),width:parseFloat(i.panel.strokeWidth).toFixed(1)},label:{show:i.panel.legend.show&&"On graph"===i.panel.legendType,formatter:s},highlight:{opacity:0},combine:{threshold:i.panel.combine.threshold,label:i.panel.combine.label}}},grid:{hoverable:!0,clickable:!1}};"donut"===o.pieType&&(p.series.pie.innerRadius=.5),r=i.data;for(var g=0;g
',r+='
'+l.a.escape(n.series.label)+": "+s,r+=" ("+o+"%)
",r+="
",a.html(r).place_tt(t.pageX+20,t.pageY)}else a.detach()}))}function h(e){i.data&&(r=i.data,0===i.data.length?t.html('
No data points
'):c(),e&&i.renderingCompleted())}i.events.on("render",(function(){"Right side"===o.legendType?(h(!1),setTimeout((function(){h(!0)}),50)):h(!0)}))}var g=n(5),f=n.n(g),v=(n(8),n(6)),b=n.n(v);f.a.module("grafana.directives").directive("piechartLegend",["popoverSrv","$timeout",function(e,t){return{link:function(n,i){var r,o,a,s,c,h=u()('
'),d=!0,p=n.ctrl,g=p.panel;function f(e){return e.parents("[data-series-index]").data("series-index")}function v(e){var t=u()(e.currentTarget);if(t&&t.text()!==g.combine.label){var n=f(t),i=a[n],r=u()(h.children("tbody")).scrollTop();p.toggleSeries(i),void 0!==r&&u()(h.children("tbody")).scrollTop(r)}}function m(e){var t=u()(e.currentTarget).data("stat");if(t!==g.legend.sort&&(g.legend.sortDesc=null),!1===g.legend.sortDesc)return g.legend.sort=null,g.legend.sortDesc=null,void p.render();g.legend.sortDesc=!g.legend.sortDesc,g.legend.sort=t,p.render()}function y(n){if(!u()(n.target).parents(".popover").length){var i=u()(n.currentTarget).find(".fa-minus"),r=f(i),l=o[r];t((function(){e.show({element:i[0],position:"right center",template:'',openOn:"hover",classNames:"drop-popover drop-popover--transparent",model:{autoClose:!0,series:l,toggleAxis:function(){},colorSelected:function(e){p.changeSeriesColor(l,e)}}})}))}}function w(e,t,n,i,r){var o='
',o+='',o+='',o+="",o+=''+l.a.escape(e.label)+"";var a=0;if(p.panel.legend.percentageDecimals&&(a=p.panel.legend.percentageDecimals),i&&r){var s=e.legendData;if(g.legend.values&&(o+='
'+p.formatValue(s)+"
"),n)o+='
'+((s/n*100).toFixed(a)+"%")+"
"}return o+="
"}n.$on("$destroy",(function(){c&&c.destroy()})),p.events.on("render",(function(){if(r=p.series){for(var e in r)r[e].color=p.data[e].color;!function(){if("On graph"===g.legendType||!g.legend.show)return h.empty(),void i.find(".piechart-legend").css("padding-top",0);i.find(".piechart-legend").css("padding-top",6);d&&(i.append(h),h.on("click",".piechart-legend-icon",y),h.on("click",".piechart-legend-alias",v),h.on("click","th",m),d=!1);o=r,a=p.data,h.empty();var e="Right side"===g.legendType&&g.legend.sideWidth?g.legend.sideWidth+"px":"",t="Right side"===g.legendType&&g.legend.sideWidth?g.legend.sideWidth-1+"px":"";i.css("min-width",e),i.css("width",t);var n,f=g.legend.values||g.legend.percentage,S=("Under graph"===g.legendType||"Right side"===g.legendType)&&f;if(h.toggleClass("piechart-legend-table",S),S){var M='';g.legend.values&&(M+=function(e){var t=e;g.legend.header&&(t=g.legend.header);var n=''+l.a.escape(t);if(g.legend.sort===e){var i=g.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";n+=' '}return n+""}(p.panel.valueName)),g.legend.percentage&&(M+=function(e){var t='percentage';if(g.legend.sort===e){var n=g.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";t+=' '}return t+""}(p.panel.valueName)),M+="",n=u()(M)}var Y=0;if(g.legend.percentage)for(s=0;s0){if(void 0===g.legend.sortDesc||null===g.legend.sortDesc||g.legend.sortDesc)if(Object.keys(p.hiddenSeries).length>0){var R=void 0,x=void 0,D=function(e){R=a.find((function(t){return t.label===e})),(void 0===x||R.legendData>x)&&(x=R.legendData,k.color=R.color)};for(var P in p.hiddenSeries)D(P)}else k.color=o[o.length-T].color;else k.color=o[0].color;X.push(u()(w(k,a.length-T,Y,f,S)))}if(S){var H=u()("");void 0!==n&&H.append(n),H.append(X),h.append(H)}else h.append(X);"Under graph"===g.legendType?c?c.update():c=new b.a(i[0],{scrollYMarginOffset:2,suppressScrollX:!0}):c&&(c.destroy(),c=null)}()}}))}}}]);var m=function(e){function t(t,n,i){var r=e.call(this,t,n)||this;r.$rootScope=i,r.hiddenSeries={};var o={pieType:"pie",legend:{show:!0,values:!0},links:[],datasource:null,maxDataPoints:1,interval:null,targets:[{}],cacheTimeout:null,nullPointMode:"connected",legendType:"Under graph",breakPoint:"50%",aliasColors:{},format:"short",valueName:"current",strokeWidth:1,fontSize:"80%",combine:{threshold:0,label:"Others"}};return l.a.defaults(r.panel,o),l.a.defaults(r.panel.legend,o.legend),r.events.on("render",r.onRender.bind(r)),r.events.on("data-received",r.onDataReceived.bind(r)),r.events.on("data-error",r.onDataError.bind(r)),r.events.on("data-snapshot-load",r.onDataReceived.bind(r)),r.events.on("init-edit-mode",r.onInitEditMode.bind(r)),r.setLegendWidthForLegacyBrowser(),r}return t.$inject=["$scope","$injector","$rootScope"],function(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype.onInitEditMode=function(){this.addEditorTab("Options","public/plugins/grafana-piechart-panel/editor.html",2),this.unitFormats=s.a.getUnitFormats()},t.prototype.setUnitFormat=function(e){this.panel.format=e.value,this.render()},t.prototype.onDataError=function(){this.series=[],this.render()},t.prototype.changeSeriesColor=function(e,t){e.color=t,this.panel.aliasColors[e.alias]=e.color,this.render()},t.prototype.onRender=function(){this.data=this.parseSeries(this.series)},t.prototype.parseSeries=function(e){var t=this;return l.a.map(this.series,(function(e,n){return{label:e.alias,data:e.stats[t.panel.valueName],color:t.panel.aliasColors[e.alias]||t.$rootScope.colors[n],legendData:e.stats[t.panel.valueName]}}))},t.prototype.onDataReceived=function(e){this.series=e.map(this.seriesHandler.bind(this)),this.data=this.parseSeries(this.series),this.render(this.data)},t.prototype.seriesHandler=function(e){var t=new h.a({datapoints:e.datapoints,alias:e.target});return t.flotpairs=t.getFlotPairs(this.panel.nullPointMode),t},t.prototype.getDecimalsForValue=function(e){if(l.a.isNumber(this.panel.decimals))return{decimals:this.panel.decimals,scaledDecimals:null};var t,n=e/2,i=-Math.floor(Math.log(n)/Math.LN10),r=Math.pow(10,-i),o=n/r;o<1.5?t=1:o<3?(t=2,o>2.25&&(t=2.5,++i)):t=o<7.5?5:10,t*=r,Math.floor(e)===e&&(i=0);var a={decimals:0,scaledDecimals:0};return a.decimals=Math.max(0,i),a.scaledDecimals=a.decimals-Math.floor(Math.log(t)/Math.LN10)+2,a},t.prototype.formatValue=function(e){var t=this.getDecimalsForValue(e),n=s.a.valueFormats[this.panel.format];return n?n(e,t.decimals,t.scaledDecimals):e},t.prototype.link=function(e,t,n,i){p(0,t,0,i)},t.prototype.toggleSeries=function(e){this.hiddenSeries[e.label]?delete this.hiddenSeries[e.label]:this.hiddenSeries[e.label]=!0,this.render()},t.prototype.onLegendTypeChanged=function(){this.setLegendWidthForLegacyBrowser(),this.render()},t.prototype.setLegendWidthForLegacyBrowser=function(){!!window.MSInputMethodContext&&!!document.documentMode&&"Right side"===this.panel.legendType&&!this.panel.legend.sideWidth&&(this.panel.legend.sideWidth=150)},t.templateUrl="module.html",t}(r.MetricsPanelCtrl);n.d(t,"PanelCtrl",(function(){return m})),Object(r.loadPluginCss)({dark:"plugins/grafana-piechart-panel/styles/dark.css",light:"plugins/grafana-piechart-panel/styles/light.css"})}])})); +//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/module.js.LICENSE.txt b/data/plugins/grafana-piechart-panel/dist/module.js.LICENSE.txt new file mode 100644 index 0000000000000..f3f36ee139d7e --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/module.js.LICENSE.txt @@ -0,0 +1,20 @@ +/*! + * perfect-scrollbar v1.2.0 + * (c) 2017 Hyunje Jun + * @license MIT + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ diff --git a/data/plugins/grafana-piechart-panel/dist/module.js.map b/data/plugins/grafana-piechart-panel/dist/module.js.map new file mode 100644 index 0000000000000..6a3ef197df228 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/module.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jquery\"","webpack:///external \"lodash\"","webpack:///external \"app/plugins/sdk\"","webpack:///external \"app/core/utils/kbn\"","webpack:///external \"app/core/time_series\"","webpack:///external \"angular\"","webpack:///./lib/perfect-scrollbar.min.js","webpack:///./lib/jquery.flot.pie.js","webpack:///./lib/jquery.flot.time.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./rendering.ts","webpack:///./legend.ts","webpack:///./piechart_ctrl.ts","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","e","define","this","getComputedStyle","style","document","createElement","className","v","Error","remove","parentNode","removeChild","Array","filter","children","element","classList","state","scrolling","contains","clearTimeout","w","add","setTimeout","isAlive","settings","scrollingThreshold","a","window","CustomEvent","createEvent","initCustomEvent","u","parseInt","f","minScrollbarLength","Math","max","maxScrollbarLength","min","b","width","railXWidth","isRtl","left","negativeScrollAdjustment","scrollLeft","containerWidth","contentWidth","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollTop","top","scrollbarXTop","scrollbarXRail","height","railYHeight","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarX","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarY","scrollbarYTop","scrollbarYHeight","railBorderYWidth","g","R","stopPropagation","preventDefault","event","unbind","ownerDocument","h","once","Element","matches","webkitMatchesSelector","msMatchesSelector","main","thumb","rail","consuming","focus","active","x","y","Y","handlers","X","isEmpty","configurable","push","addEventListener","removeEventListener","unbindAll","keys","every","length","defineProperties","W","eventElements","eventElement","splice","indexOf","forEach","reach","dispatchEvent","L","documentElement","DocumentTouch","navigator","msMaxTouchPoints","clientWidth","containerHeight","clientHeight","scrollWidth","contentHeight","scrollHeight","appendChild","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXMarginWidth","railXRatio","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYMarginHeight","railYRatio","T","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheelPropagation","wheel","querySelector","overflow","overflowX","overflowY","join","match","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","target","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","abs","stop","swipePropagation","prevent","scrollY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","H","nodeName","direction","isNegativeScroll","setAttribute","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","marginTop","marginBottom","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","options","jQuery","series","pie","show","radius","innerRadius","startAngle","tilt","shadow","alpha","offset","stroke","color","label","formatter","slice","round","percent","background","opacity","threshold","combine","highlight","plot","plugins","init","canvas","maxRadius","centerLeft","centerTop","processed","ctx","highlights","processDatapoints","datapoints","getCanvas","parent","getOptions","setData","data","total","combined","numCombined","newdata","isArray","parseFloat","isFinite","extend","angle","PI","getData","draw","newCtx","canvasWidth","getPlaceholder","canvasHeight","legendWidth","legend","position","slices","attempts","clear","drawShadow","drawPie","prepend","setSeries","insertLegend","clearRect","shadowLeft","shadowTop","save","translate","globalAlpha","fillStyle","scale","beginPath","arc","fill","restore","currentAngle","drawSlice","lineWidth","drawDonutHole","drawLabel","index","text","lf","labelFormatter","plf","halfAngle","cos","sin","html","append","labelTop","labelLeft","css","pos","insertBefore","drawLabels","strokeStyle","lineJoin","moveTo","closePath","layer","globalCompositeOperation","isPointInPoly","poly","pt","j","onMouseMove","triggerClickHoverEvent","onClick","eventname","item","mouseX","mouseY","isPointInPath","datapoint","dataIndex","seriesIndex","findNearbySlice","grid","autoHighlight","auto","unhighlight","indexOfHighlight","triggerRedrawOverlay","trigger","hooks","processOptions","bindEvents","eventHolder","hoverable","mousemove","clickable","click","drawOverlay","octx","version","floorInBase","base","floor","formatDate","fmt","monthNames","dayNames","strftime","hours12","leftPad","pad","escape","hours","getHours","isAM","charAt","getDay","getMonth","getDate","getMinutes","getSeconds","getFullYear","makeUtcWrapper","addProxyMethod","sourceObj","sourceMethod","targetObj","targetMethod","apply","arguments","utc","date","undefined","props","dateGenerator","ts","opts","timezone","timezoneJS","setTimezone","setTime","timeUnitSize","baseSpec","specMonths","concat","specQuarters","each","getAxes","axisName","axis","tickGenerator","ticks","minSize","spec","tickSize","minTickSize","delta","size","unit","magn","pow","log","year","LN10","norm","step","setSeconds","setMinutes","setHours","setMonth","setFullYear","setMilliseconds","minute","hour","day","setDate","month","quarter","prev","carry","Number","NaN","start","end","tickFormatter","timeformat","useQuarters","span","suffix","twelveHourClock","hourCode","xaxis","extendStatics","setPrototypeOf","__proto__","scope","elem","attrs","ctrl","panel","find","$tooltip","sliceData","decimal","fontSize","percentageDecimals","values","percentage","formatValue","toFixed","addPieChart","panelHeight","legendType","breakPoint","getLegendHeight","plotCanvas","plotCss","margin","paddingBottom","strokeWidth","pieType","hiddenSeries","sort","valueName","sortDesc","legendData","body","formatted","place_tt","detach","render","incrementRenderCounter","renderingCompleted","events","on","directive","popoverSrv","$timeout","link","seriesList","dataList","legendScrollbar","$container","firstRender","getSeriesIndexForElement","el","parents","toggleSeries","currentTarget","seriesInfo","scrollPosition","sortLegend","stat","openColorSelector","template","openOn","classNames","model","autoClose","toggleAxis","colorSelected","changeSeriesColor","generateLegendItem","showValues","tableLayout","$on","empty","sideWidth","ieWidth","legendHeader","toggleClass","header","statName","cssClass","getLegendHeaderHtml","getLegendPercentageHtml","stats","combineNum","combineVal","seriesElements","seriesData","hideEmpty","allIsNull","_el","_max","_key","tbodyElem","$scope","$injector","$rootScope","panelDefaults","links","datasource","maxDataPoints","interval","targets","cacheTimeout","nullPointMode","aliasColors","format","defaults","onRender","onDataReceived","onDataError","onInitEditMode","setLegendWidthForLegacyBrowser","__","constructor","addEditorTab","unitFormats","getUnitFormats","setUnitFormat","subItem","alias","parseSeries","map","serie","colors","seriesHandler","flotpairs","getFlotPairs","getDecimalsForValue","isNumber","decimals","scaledDecimals","dec","result","decimalInfo","formatFunc","valueFormats","onLegendTypeChanged","MSInputMethodContext","documentMode","templateUrl","dark","light"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*!\n * perfect-scrollbar v1.2.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){\"use strict\";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var n=e[i];\"number\"==typeof n&&(n+=\"px\"),t.style[i]=n}return t}function i(t){var e=document.createElement(\"div\");return e.className=t,e}function n(t,e){if(!v)throw new Error(\"No element matching method supported\");return v.call(t,e)}function r(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function l(t,e){return Array.prototype.filter.call(t.children,function(t){return n(t,e)})}function o(t,e){var i=t.element.classList,n=m.state.scrolling(e);i.contains(n)?clearTimeout(w[e]):i.add(n)}function s(t,e){w[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if(\"function\"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent(\"CustomEvent\");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,n,r){var l=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===n&&(n=!0),void 0===r&&(r=!1);var p=t.element;t.reach[h]=null,p[s]<1&&(t.reach[h]=\"start\"),p[s]>t[l]-t[o]-1&&(t.reach[h]=\"end\"),e&&(p.dispatchEvent(c(\"ps-scroll-\"+h)),e<0?p.dispatchEvent(c(\"ps-scroll-\"+u)):e>0&&p.dispatchEvent(c(\"ps-scroll-\"+d)),n&&a(t,h)),t.reach[h]&&(e||r)&&p.dispatchEvent(c(\"ps-\"+h+\"-reach-\"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return n(t,\"input,[contenteditable]\")||n(t,\"select,[contenteditable]\")||n(t,\"textarea,[contenteditable]\")||n(t,\"button,[contenteditable]\")}function p(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function f(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var n={width:i.railXWidth};i.isRtl?n.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:n.left=t.scrollLeft,i.isScrollbarXUsingBottom?n.bottom=i.scrollbarXBottom-t.scrollTop:n.top=i.scrollbarXTop+t.scrollTop,e(i.scrollbarXRail,n);var r={top:t.scrollTop,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?r.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:r.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:r.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,r),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){f[d]=b+v*(e[a]-g),o(t,p),R(t),e.stopPropagation(),e.preventDefault()}function n(){s(t,p),t.event.unbind(t.ownerDocument,\"mousemove\",i)}var r=e[0],l=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],p=e[7],f=t.element,b=null,g=null,v=null;t.event.bind(t[h],\"mousedown\",function(e){b=f[d],g=e[a],v=(t[l]-t[r])/(t[c]-t[u]),t.event.bind(t.ownerDocument,\"mousemove\",i),t.event.once(t.ownerDocument,\"mouseup\",n),e.stopPropagation(),e.preventDefault()})}var v=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,m={main:\"ps\",element:{thumb:function(t){return\"ps__thumb-\"+t},rail:function(t){return\"ps__rail-\"+t},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",active:function(t){return\"ps--active-\"+t},scrolling:function(t){return\"ps--scrolling-\"+t}}},w={x:null,y:null},Y=function(t){this.element=t,this.handlers={}},X={isEmpty:{configurable:!0}};Y.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},Y.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(n){return!(!e||n===e)||(i.element.removeEventListener(t,n,!1),!1)})},Y.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},X.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(Y.prototype,X);var W=function(){this.eventElements=[]};W.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new Y(t),this.eventElements.push(e)),e},W.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},W.prototype.unbind=function(t,e,i){var n=this.eventElement(t);n.unbind(e,i),n.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(n),1)},W.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},W.prototype.once=function(t,e,i){var n=this.eventElement(t),r=function(t){n.unbind(e,r),i(t)};n.bind(e,r)};var y=function(t,e,i,n,r){void 0===n&&(n=!0),void 0===r&&(r=!1);var l;if(\"top\"===e)l=[\"contentHeight\",\"containerHeight\",\"scrollTop\",\"y\",\"up\",\"down\"];else{if(\"left\"!==e)throw new Error(\"A proper axis should be provided\");l=[\"contentWidth\",\"containerWidth\",\"scrollLeft\",\"x\",\"left\",\"right\"]}h(t,i,l,n,r)},L={isWebKit:document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:navigator&&navigator.msMaxTouchPoints},R=function(t){var e=t.element;t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(l(e,m.element.rail(\"x\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(l(e,m.element.rail(\"y\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active(\"x\")):(e.classList.remove(m.state.active(\"x\")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active(\"y\")):(e.classList.remove(m.state.active(\"y\")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},T={\"click-rail\":function(t){t.event.bind(t.scrollbarY,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,\"mousedown\",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,R(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,\"mousedown\",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,R(t),e.stopPropagation()})},\"drag-thumb\":function(t){g(t,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\"]),g(t,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\"])},keyboard:function(t){function e(e,n){var r=i.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===r&&n>0||r>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var l=i.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===l&&e<0||l>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,r=function(){return n(i,\":hover\")},l=function(){return n(t.scrollbarX,\":focus\")||n(t.scrollbarY,\":focus\")};t.event.bind(t.ownerDocument,\"keydown\",function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(r()||l())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if(\"IFRAME\"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(n.which){case 37:s=n.metaKey?-t.contentWidth:n.altKey?-t.containerWidth:-30;break;case 38:a=n.metaKey?t.contentHeight:n.altKey?t.containerHeight:30;break;case 39:s=n.metaKey?t.contentWidth:n.altKey?t.containerWidth:30;break;case 40:a=n.metaKey?-t.contentHeight:n.altKey?-t.containerHeight:-30;break;case 32:a=n.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,R(t),e(s,a)&&n.preventDefault())}})},wheel:function(e){function i(t,i){var n=o.scrollTop;if(0===t){if(!e.scrollbarYActive)return!1;if(0===n&&i>0||n>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var r=o.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===r&&t<0||r>=e.contentWidth-e.containerWidth&&t>0)return!e.settings.wheelPropagation}return!0}function n(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function r(e,i,n){if(!L.isWebKit&&o.querySelector(\"select:focus\"))return!0;if(!o.contains(e))return!1;for(var r=e;r&&r!==o;){if(r.classList.contains(m.element.consuming))return!0;var l=t(r);if([l.overflow,l.overflowX,l.overflowY].join(\"\").match(/(scroll|auto)/)){var s=r.scrollHeight-r.clientHeight;if(s>0&&!(0===r.scrollTop&&n>0||r.scrollTop===s&&n<0))return!0;var a=r.scrollLeft-r.clientWidth;if(a>0&&!(0===r.scrollLeft&&i<0||r.scrollLeft===a&&i>0))return!0}r=r.parentNode}return!1}function l(t){var l=n(t),s=l[0],a=l[1];if(!r(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),R(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,\"wheel\",l):void 0!==window.onmousewheel&&e.event.bind(o,\"mousewheel\",l)},touch:function(t){function e(e,i){var n=h.scrollTop,r=h.scrollLeft,l=Math.abs(e),o=Math.abs(i);if(o>l){if(i<0&&n===t.contentHeight-t.containerHeight||i>0&&0===n)return{stop:!t.settings.swipePropagation,prevent:0===window.scrollY}}else if(l>o&&(e<0&&r===t.contentWidth-t.containerWidth||e>0&&0===r))return{stop:!t.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function i(e,i){h.scrollTop-=i,h.scrollLeft-=e,R(t)}function n(){b=!0}function r(){b=!1}function l(t){return t.targetTouches?t.targetTouches[0]:t}function o(t){return!(t.pointerType&&\"pen\"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function s(t){if(o(t)){g=!0;var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==f&&clearInterval(f),t.stopPropagation()}}function a(n){if(!g&&t.settings.swipePropagation&&s(n),!b&&g&&o(n)){var r=l(n),a={pageX:r.pageX,pageY:r.pageY},c=a.pageX-u.pageX,h=a.pageY-u.pageY;i(c,h),u=a;var f=(new Date).getTime(),v=f-d;v>0&&(p.x=c/v,p.y=h/v,d=f);var m=e(c,h),w=m.stop,Y=m.prevent;w&&n.stopPropagation(),Y&&n.preventDefault()}}function c(){!b&&g&&(g=!1,t.settings.swipeEasing&&(clearInterval(f),f=setInterval(function(){t.isInitialized?clearInterval(f):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(f):(i(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(f)},10)))}if(L.supportsTouch||L.supportsIePointer){var h=t.element,u={},d=0,p={},f=null,b=!1,g=!1;L.supportsTouch?(t.event.bind(window,\"touchstart\",n),t.event.bind(window,\"touchend\",r),t.event.bind(h,\"touchstart\",s),t.event.bind(h,\"touchmove\",a),t.event.bind(h,\"touchend\",c)):L.supportsIePointer&&(window.PointerEvent?(t.event.bind(window,\"pointerdown\",n),t.event.bind(window,\"pointerup\",r),t.event.bind(h,\"pointerdown\",s),t.event.bind(h,\"pointermove\",a),t.event.bind(h,\"pointerup\",c)):window.MSPointerEvent&&(t.event.bind(window,\"MSPointerDown\",n),t.event.bind(window,\"MSPointerUp\",r),t.event.bind(h,\"MSPointerDown\",s),t.event.bind(h,\"MSPointerMove\",a),t.event.bind(h,\"MSPointerUp\",c)))}}},H=function(n,r){var l=this;if(void 0===r&&(r={}),\"string\"==typeof n&&(n=document.querySelector(n)),!n||!n.nodeName)throw new Error(\"no element is specified to initialize PerfectScrollbar\");this.element=n,n.classList.add(m.main),this.settings={handlers:[\"click-rail\",\"drag-thumb\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1};for(var o in r)l.settings[o]=r[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return n.classList.add(m.state.focus)},a=function(){return n.classList.remove(m.state.focus)};this.isRtl=\"rtl\"===t(n).direction,this.isNegativeScroll=function(){var t=n.scrollLeft,e=null;return n.scrollLeft=-1,e=n.scrollLeft<0,n.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?n.scrollWidth-n.clientWidth:0,this.event=new W,this.ownerDocument=n.ownerDocument||document,this.scrollbarXRail=i(m.element.rail(\"x\")),n.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb(\"x\")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarX,\"focus\",s),this.event.bind(this.scrollbarX,\"blur\",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:\"block\"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:\"\"}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail(\"y\")),n.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb(\"y\")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarY,\"focus\",s),this.event.bind(this.scrollbarY,\"blur\",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?p(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:\"block\"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:\"\"}),this.railYHeight=null,this.railYRatio=null,this.reach={x:n.scrollLeft<=0?\"start\":n.scrollLeft>=this.contentWidth-this.containerWidth?\"end\":null,y:n.scrollTop<=0?\"start\":n.scrollTop>=this.contentHeight-this.containerHeight?\"end\":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return T[t](l)}),this.lastScrollTop=n.scrollTop,this.lastScrollLeft=n.scrollLeft,this.event.bind(this.element,\"scroll\",function(t){return l.onScroll(t)}),R(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:\"block\"}),e(this.scrollbarYRail,{display:\"block\"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:\"none\"}),e(this.scrollbarYRail,{display:\"none\"}),R(this),y(this,\"top\",0,!1,!0),y(this,\"left\",0,!1,!0),e(this.scrollbarXRail,{display:\"\"}),e(this.scrollbarYRail,{display:\"\"}))},H.prototype.onScroll=function(t){this.isAlive&&(R(this),y(this,\"top\",this.element.scrollTop-this.lastScrollTop),y(this,\"left\",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(\" \").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(\" \")},H});","/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero. Negative numbers don't make sense for a\npie chart, and have unpredictable results. The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter: a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], { /* extend to allow keeping all other original data values\n\t\t\t\t\t\t and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series. Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"
Could not draw pie with labels contained inside canvas
\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"\" + text + \"\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"
\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY = parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"
\" + label + \"
\" + Math.round(slice.percent) + \"%
\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);\n","/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones. This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy. This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object. Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import _ from 'lodash';\nimport './lib/jquery.flot.pie';\nimport $ from 'jquery';\n//import './lib/jquery.flot';\n\nexport default function link(scope: any, elem: any, attrs: any, ctrl: any) {\n let data;\n const panel = ctrl.panel;\n elem = elem.find('.piechart-panel__chart');\n const $tooltip = $('
') as any;\n\n ctrl.events.on('render', () => {\n if (panel.legendType === 'Right side') {\n render(false);\n setTimeout(() => {\n render(true);\n }, 50);\n } else {\n render(true);\n }\n });\n\n function getLegendHeight(panelHeight: any) {\n if (!ctrl.panel.legend.show || ctrl.panel.legendType === 'Right side' || ctrl.panel.legendType === 'On graph') {\n return 20;\n }\n\n if ((ctrl.panel.legendType === 'Under graph' && ctrl.panel.legend.percentage) || ctrl.panel.legend.values) {\n const breakPoint = parseInt(ctrl.panel.breakPoint, 10) / 100;\n const total = 23 + 20 * data.length;\n return Math.min(total, Math.floor(panelHeight * breakPoint));\n }\n\n return 0;\n }\n\n function formatter(label: any, slice: any) {\n const sliceData = slice.data[0][slice.data[0].length - 1];\n let decimal = 2;\n const start = `
${label}
`;\n\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n if (ctrl.panel.legend.values && ctrl.panel.legend.percentage) {\n return start + ctrl.formatValue(sliceData) + '
' + slice.percent.toFixed(decimal) + '%
';\n } else if (ctrl.panel.legend.values) {\n return start + ctrl.formatValue(sliceData) + '
';\n } else if (ctrl.panel.legend.percentage) {\n return start + slice.percent.toFixed(decimal) + '%';\n } else {\n return start + '';\n }\n }\n\n function noDataPoints() {\n const html = '
No data points
';\n elem.html(html);\n }\n\n function addPieChart() {\n const width = elem.width();\n const height = ctrl.height - getLegendHeight(ctrl.height);\n\n const size = Math.min(width, height);\n\n const plotCanvas = $('
');\n const plotCss = {\n margin: 'auto',\n position: 'relative',\n paddingBottom: 20 + 'px',\n height: size + 'px',\n };\n\n plotCanvas.css(plotCss);\n\n const backgroundColor = $('body').css('background-color');\n\n const options = {\n legend: {\n show: false,\n },\n series: {\n pie: {\n radius: 1,\n innerRadius: 0,\n show: true,\n stroke: {\n color: backgroundColor,\n width: parseFloat(ctrl.panel.strokeWidth).toFixed(1),\n },\n label: {\n show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph',\n formatter: formatter,\n },\n highlight: {\n opacity: 0.0,\n },\n combine: {\n threshold: ctrl.panel.combine.threshold,\n label: ctrl.panel.combine.label,\n },\n },\n },\n grid: {\n hoverable: true,\n clickable: false,\n },\n };\n\n if (panel.pieType === 'donut') {\n options.series.pie.innerRadius = 0.5;\n }\n\n data = ctrl.data;\n\n for (let i = 0; i < data.length; i++) {\n const series = data[i];\n\n // if hidden remove points\n if (ctrl.hiddenSeries[series.label]) {\n series.data = {};\n }\n }\n\n if (panel.legend.sort) {\n if (ctrl.panel.valueName !== panel.legend.sort) {\n panel.legend.sort = ctrl.panel.valueName;\n }\n if (panel.legend.sortDesc === true) {\n data.sort((a: any, b: any) => {\n return b.legendData - a.legendData;\n });\n } else {\n data.sort((a: any, b: any) => {\n return a.legendData - b.legendData;\n });\n }\n }\n\n elem.html(plotCanvas);\n\n // @ts-ignore\n $.plot(plotCanvas, data, options);\n plotCanvas.bind('plothover', (event: any, pos: any, item: any) => {\n if (!item) {\n $tooltip.detach();\n return;\n }\n\n let body;\n const percent = parseFloat(item.series.percent).toFixed(2);\n const formatted = ctrl.formatValue(item.series.data[0][1]);\n\n body = '
';\n body += '
' + _.escape(item.series.label) + ': ' + formatted;\n body += ' (' + percent + '%)' + '
';\n body += '
';\n\n $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY);\n });\n }\n\n function render(incrementRenderCounter: any) {\n if (!ctrl.data) {\n return;\n }\n\n data = ctrl.data;\n\n if (0 === ctrl.data.length) {\n noDataPoints();\n } else {\n addPieChart();\n }\n\n if (incrementRenderCounter) {\n ctrl.renderingCompleted();\n }\n }\n}\n","import angular from 'angular';\n// @ts-ignore\nimport $ from 'jquery';\n//import './lib/jquery.flot.pie';\n\n//import 'jquery.flot';\n\nimport './lib/jquery.flot.time';\n\nimport _ from 'lodash';\n\n// @ts-ignore\nimport PerfectScrollbar from './lib/perfect-scrollbar.min';\n\nangular.module('grafana.directives').directive('piechartLegend', (popoverSrv: any, $timeout: any) => {\n return {\n link: (scope: any, elem: any) => {\n const $container = $('
');\n let firstRender = true;\n const ctrl = scope.ctrl;\n const panel = ctrl.panel;\n let data: any;\n let seriesList: any;\n let dataList: any;\n let i;\n let legendScrollbar: any;\n\n scope.$on('$destroy', () => {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n }\n });\n\n ctrl.events.on('render', () => {\n data = ctrl.series;\n if (data) {\n for (const i in data) {\n data[i].color = ctrl.data[i].color;\n }\n render();\n }\n });\n\n function getSeriesIndexForElement(el: any) {\n return el.parents('[data-series-index]').data('series-index');\n }\n\n function toggleSeries(e: any) {\n const el = $(e.currentTarget);\n // Consider Combine entry as special case (not clickable)\n if (el && el.text() !== panel.combine.label) {\n const index = getSeriesIndexForElement(el);\n const seriesInfo = dataList[index];\n const scrollPosition = $($container.children('tbody')).scrollTop();\n ctrl.toggleSeries(seriesInfo);\n if (typeof scrollPosition !== 'undefined') {\n $($container.children('tbody')).scrollTop(scrollPosition);\n }\n }\n }\n\n function sortLegend(e: any) {\n const el = $(e.currentTarget);\n const stat = el.data('stat');\n\n if (stat !== panel.legend.sort) {\n panel.legend.sortDesc = null;\n }\n\n // if already sort ascending, disable sorting\n if (panel.legend.sortDesc === false) {\n panel.legend.sort = null;\n panel.legend.sortDesc = null;\n ctrl.render();\n return;\n }\n\n panel.legend.sortDesc = !panel.legend.sortDesc;\n panel.legend.sort = stat;\n ctrl.render();\n }\n\n function getLegendHeaderHtml(statName: any) {\n let name = statName;\n\n if (panel.legend.header) {\n name = panel.legend.header;\n }\n\n let html = '' + _.escape(name);\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function getLegendPercentageHtml(statName: any) {\n const name = 'percentage';\n let html = '' + name;\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function openColorSelector(e: any) {\n // if we clicked inside poup container ignore click\n if ($(e.target).parents('.popover').length) {\n return;\n }\n\n const el = $(e.currentTarget).find('.fa-minus');\n const index = getSeriesIndexForElement(el);\n const series = seriesList[index];\n\n $timeout(() => {\n popoverSrv.show({\n element: el[0],\n position: 'right center',\n template:\n '' +\n '',\n openOn: 'hover',\n classNames: 'drop-popover drop-popover--transparent',\n model: {\n autoClose: true,\n series: series,\n toggleAxis: () => {},\n colorSelected: (color: any) => {\n ctrl.changeSeriesColor(series, color);\n },\n },\n });\n });\n }\n\n function render() {\n if (panel.legendType === 'On graph' || !panel.legend.show) {\n $container.empty();\n elem.find('.piechart-legend').css('padding-top', 0);\n return;\n } else {\n elem.find('.piechart-legend').css('padding-top', 6);\n }\n\n if (firstRender) {\n elem.append($container);\n $container.on('click', '.piechart-legend-icon', openColorSelector);\n $container.on('click', '.piechart-legend-alias', toggleSeries);\n $container.on('click', 'th', sortLegend);\n firstRender = false;\n }\n\n seriesList = data;\n dataList = ctrl.data;\n\n $container.empty();\n\n const width = panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth + 'px' : '';\n const ieWidth =\n panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth - 1 + 'px' : '';\n elem.css('min-width', width);\n elem.css('width', ieWidth);\n\n const showValues = panel.legend.values || panel.legend.percentage;\n const tableLayout = (panel.legendType === 'Under graph' || panel.legendType === 'Right side') && showValues;\n\n $container.toggleClass('piechart-legend-table', tableLayout);\n\n let legendHeader;\n if (tableLayout) {\n let header = '';\n if (panel.legend.values) {\n header += getLegendHeaderHtml(ctrl.panel.valueName);\n }\n if (panel.legend.percentage) {\n header += getLegendPercentageHtml(ctrl.panel.valueName);\n }\n header += '';\n legendHeader = $(header);\n }\n\n let total = 0;\n if (panel.legend.percentage) {\n for (i = 0; i < seriesList.length; i++) {\n if (!ctrl.hiddenSeries[seriesList[i].label]) {\n total += seriesList[i].stats[ctrl.panel.valueName];\n }\n }\n }\n\n let combineNum = 0;\n const combineVal = {\n label: panel.combine.label,\n color: '',\n legendData: 0,\n };\n const seriesElements = [];\n\n for (i = 0; i < seriesList.length; i++) {\n const series = seriesList[i];\n const seriesData = dataList[i];\n // combine lower values than threshold and not include into legent\n if (seriesData.data / total < panel.combine.threshold) {\n // Jump hidden series\n if (!ctrl.hiddenSeries[seriesData.label]) {\n combineNum++;\n combineVal.legendData += seriesData.data;\n }\n } else {\n // ignore empty series\n if (panel.legend.hideEmpty && series.allIsNull) {\n continue;\n }\n // ignore series excluded via override\n if (!series.legend) {\n continue;\n }\n\n seriesElements.push($(generateLegendItem(seriesData, i, total, showValues, tableLayout)));\n }\n }\n\n // Add combine to legend\n if (combineNum > 0) {\n // Define color according to hiddenSeries and combineNum\n if (typeof panel.legend.sortDesc === 'undefined' || panel.legend.sortDesc === null || panel.legend.sortDesc) {\n if (Object.keys(ctrl.hiddenSeries).length > 0) {\n let _el, _max;\n for (const _key in ctrl.hiddenSeries) {\n _el = dataList.find((x: any) => x.label === _key);\n if (typeof _max === 'undefined') {\n _max = _el.legendData;\n combineVal.color = _el.color;\n } else {\n if (_el.legendData > _max) {\n _max = _el.legendData;\n combineVal.color = _el.color;\n }\n }\n }\n } else {\n combineVal.color = seriesList[seriesList.length - combineNum].color;\n }\n } else {\n combineVal.color = seriesList[0].color;\n }\n\n seriesElements.push(\n $(generateLegendItem(combineVal, dataList.length - combineNum, total, showValues, tableLayout))\n );\n }\n\n if (tableLayout) {\n // const topPadding = 6;\n const tbodyElem = $('');\n // tbodyElem.css(\"max-height\", maxHeight - topPadding);\n if (typeof legendHeader !== 'undefined') {\n tbodyElem.append(legendHeader);\n }\n tbodyElem.append(seriesElements);\n $container.append(tbodyElem);\n } else {\n $container.append(seriesElements);\n }\n\n if (panel.legendType === 'Under graph') {\n addScrollbar();\n } else {\n destroyScrollbar();\n }\n }\n\n function generateLegendItem(data: any, index: any, total: any, showValues: boolean, tableLayout: boolean) {\n let html = '
';\n html += '';\n html += '';\n html += '';\n\n html += '' + _.escape(data.label) + '';\n let decimal = 0;\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n\n if (showValues && tableLayout) {\n const value = data.legendData;\n if (panel.legend.values) {\n html += '
' + ctrl.formatValue(value) + '
';\n }\n if (total) {\n const pvalue = ((value / total) * 100).toFixed(decimal) + '%';\n html += '
' + pvalue + '
';\n }\n }\n html += '
';\n\n return html;\n }\n\n function addScrollbar() {\n const scrollbarOptions = {\n // Number of pixels the content height can surpass the container height without enabling the scroll bar.\n scrollYMarginOffset: 2,\n suppressScrollX: true,\n };\n\n if (!legendScrollbar) {\n legendScrollbar = new PerfectScrollbar(elem[0], scrollbarOptions);\n } else {\n legendScrollbar.update();\n }\n }\n\n function destroyScrollbar() {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n legendScrollbar = null;\n }\n }\n },\n };\n});\n","import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';\nimport _ from 'lodash';\nimport kbn from 'grafana/app/core/utils/kbn';\n// @ts-ignore\nimport TimeSeries from 'grafana/app/core/time_series';\nimport rendering from './rendering';\nimport './legend';\n\nclass PieChartCtrl extends MetricsPanelCtrl {\n static templateUrl = 'module.html';\n $rootScope: any;\n hiddenSeries: any;\n unitFormats: any;\n series: any;\n data: any;\n\n /** @ngInject */\n constructor($scope: any, $injector: any, $rootScope: any) {\n super($scope, $injector);\n this.$rootScope = $rootScope;\n this.hiddenSeries = {};\n\n const panelDefaults = {\n pieType: 'pie',\n legend: {\n show: true, // disable/enable legend\n values: true,\n },\n links: [],\n datasource: null,\n maxDataPoints: 1,\n interval: null,\n targets: [{}],\n cacheTimeout: null,\n nullPointMode: 'connected',\n legendType: 'Under graph',\n breakPoint: '50%',\n aliasColors: {},\n format: 'short',\n valueName: 'current',\n strokeWidth: 1,\n fontSize: '80%',\n combine: {\n threshold: 0.0,\n label: 'Others',\n },\n };\n\n _.defaults(this.panel, panelDefaults);\n _.defaults(this.panel.legend, panelDefaults.legend);\n\n this.events.on('render', this.onRender.bind(this));\n this.events.on('data-received', this.onDataReceived.bind(this));\n this.events.on('data-error', this.onDataError.bind(this));\n this.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n this.setLegendWidthForLegacyBrowser();\n }\n\n onInitEditMode() {\n this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2);\n this.unitFormats = kbn.getUnitFormats();\n }\n\n setUnitFormat(subItem: any) {\n this.panel.format = subItem.value;\n this.render();\n }\n\n onDataError() {\n this.series = [];\n this.render();\n }\n\n changeSeriesColor(series: any, color: any) {\n series.color = color;\n this.panel.aliasColors[series.alias] = series.color;\n this.render();\n }\n\n onRender() {\n this.data = this.parseSeries(this.series);\n }\n\n parseSeries(series: any) {\n return _.map(this.series, (serie, i) => {\n return {\n label: serie.alias,\n data: serie.stats[this.panel.valueName],\n color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i],\n legendData: serie.stats[this.panel.valueName],\n };\n });\n }\n\n onDataReceived(dataList: any) {\n this.series = dataList.map(this.seriesHandler.bind(this));\n this.data = this.parseSeries(this.series);\n this.render(this.data);\n }\n\n seriesHandler(seriesData: any) {\n const series = new TimeSeries({\n datapoints: seriesData.datapoints,\n alias: seriesData.target,\n });\n\n series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);\n return series;\n }\n\n getDecimalsForValue(value: any) {\n if (_.isNumber(this.panel.decimals)) {\n return { decimals: this.panel.decimals, scaledDecimals: null };\n }\n\n const delta = value / 2;\n let dec = -Math.floor(Math.log(delta) / Math.LN10);\n\n const magn = Math.pow(10, -dec);\n const norm = delta / magn; // norm is between 1.0 and 10.0\n let size;\n\n if (norm < 1.5) {\n size = 1;\n } else if (norm < 3) {\n size = 2;\n // special case for 2.5, requires an extra decimal\n if (norm > 2.25) {\n size = 2.5;\n ++dec;\n }\n } else if (norm < 7.5) {\n size = 5;\n } else {\n size = 10;\n }\n\n size *= magn;\n\n // reduce starting decimals if not needed\n if (Math.floor(value) === value) {\n dec = 0;\n }\n\n const result = {\n decimals: 0,\n scaledDecimals: 0,\n };\n result.decimals = Math.max(0, dec);\n result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2;\n\n return result;\n }\n\n formatValue(value: any) {\n const decimalInfo = this.getDecimalsForValue(value);\n const formatFunc = kbn.valueFormats[this.panel.format];\n if (formatFunc) {\n return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals);\n }\n return value;\n }\n\n link(scope: any, elem: any, attrs: any, ctrl: any) {\n rendering(scope, elem, attrs, ctrl);\n }\n\n toggleSeries(serie: any) {\n if (this.hiddenSeries[serie.label]) {\n delete this.hiddenSeries[serie.label];\n } else {\n this.hiddenSeries[serie.label] = true;\n }\n this.render();\n }\n\n onLegendTypeChanged() {\n this.setLegendWidthForLegacyBrowser();\n this.render();\n }\n\n setLegendWidthForLegacyBrowser() {\n // @ts-ignore\n const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n if (isIE11 && this.panel.legendType === 'Right side' && !this.panel.legend.sideWidth) {\n this.panel.legend.sideWidth = 150;\n }\n }\n}\n\nexport { PieChartCtrl, PieChartCtrl as MetricsPanelCtrl };\n","import { PieChartCtrl } from './piechart_ctrl';\nimport { loadPluginCss } from 'grafana/app/plugins/sdk';\n\nloadPluginCss({\n dark: 'plugins/grafana-piechart-panel/styles/dark.css',\n light: 'plugins/grafana-piechart-panel/styles/light.css',\n});\n\nexport { PieChartCtrl as PanelCtrl };\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/plugin.json b/data/plugins/grafana-piechart-panel/dist/plugin.json new file mode 100644 index 0000000000000..2ba0cc4ddfd8a --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/plugin.json @@ -0,0 +1,70 @@ +{ + "type": "panel", + "name": "Pie Chart", + "id": "grafana-piechart-panel", + "info": { + "description": "Pie chart panel for grafana", + "author": { + "name": "Grafana Labs", + "url": "http://grafana.com" + }, + "keywords": [ + "piechart", + "panel" + ], + "logos": { + "small": "img/piechart_logo_small.svg", + "large": "img/piechart_logo_large.svg" + }, + "links": [ + { + "name": "Project site", + "url": "https://github.com/grafana/piechart-panel" + }, + { + "name": "Blog Post", + "url": "https://blog.raintank.io/friends-dont-let-friends-abuse-pie-charts/" + }, + { + "name": "MIT License", + "url": "https://github.com/grafana/piechart-panel/blob/master/LICENSE" + } + ], + "screenshots": [ + { + "name": "Donut!", + "path": "img/piechart-donut.png" + }, + { + "name": "Legend on the graph", + "path": "img/piechart-legend-on-graph.png" + }, + { + "name": "Legend to the right", + "path": "img/piechart-legend-rhs.png" + }, + { + "name": "Legend underneath", + "path": "img/piechart-legend-under.png" + }, + { + "name": "Piechart options", + "path": "img/piechart-options.png" + } + ], + "version": "1.5.0", + "updated": "2020-05-15", + "build": { + "time": 1589585452459, + "repo": "git@github.com:grafana/piechart-panel.git", + "branch": "v1.5.x", + "hash": "cc9a10765bb9be75c4e5404b71c4581d683cbfeb", + "pr": 232, + "number": 209 + } + }, + "dependencies": { + "grafanaVersion": "6.x.x", + "plugins": [] + } +} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/styles/dark.css b/data/plugins/grafana-piechart-panel/dist/styles/dark.css new file mode 100644 index 0000000000000..cb3af06bb8658 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/styles/dark.css @@ -0,0 +1 @@ +.pieLabel>div{color:#fff}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{position:relative;cursor:crosshair;flex-grow:1;top:10px}.datapoints-warning{pointer:none;position:absolute;top:50%;left:50%;z-index:10;margin-top:-50px;margin-left:-100px;width:200px;text-align:center;cursor:auto;padding:10px}.piechart-legend{flex:0 1 auto;margin:0 1rem;text-align:center;padding-top:6px;position:relative}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{position:relative;padding-right:4px;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{cursor:pointer;float:left;white-space:nowrap;font-size:85%;text-align:left;color:#d8d9da}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;white-space:nowrap;padding-left:10px}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;overflow-y:auto;overflow-x:hidden;height:100%;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{content:"(right-y)";padding:0 5px;color:#8e8e8e}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{float:none;display:table-cell;white-space:nowrap;padding:2px 10px;text-align:right}.piechart-legend-table .piechart-legend-icon{width:5px;padding:0;top:0}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{padding-left:7px;text-align:left;width:95%;max-width:650px;text-overflow:ellipsis;overflow:hidden}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#262628}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{text-align:right;padding:0 10px 1px 0;font-weight:700;color:#33b5e5;font-size:85%;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#8e8e8e}.piechart-tooltip{white-space:nowrap;font-size:12px;background-color:#141414;color:#d8d9da}.piechart-tooltip .piechart-tooltip-time{text-align:center;position:relative;top:-3px;padding:.2rem;font-weight:700;color:#d8d9da}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dist/styles/light.css b/data/plugins/grafana-piechart-panel/dist/styles/light.css new file mode 100644 index 0000000000000..175a08f1ca2e8 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dist/styles/light.css @@ -0,0 +1 @@ +.pieLabel>div{color:#000}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}:root .piechart-panel--legend-right .piechart-legend,_:-ms-fullscreen{flex:0 1 200px}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{position:relative;cursor:crosshair;flex-grow:1;top:10px}.datapoints-warning{pointer:none;position:absolute;top:50%;left:50%;z-index:10;margin-top:-50px;margin-left:-100px;width:200px;text-align:center;cursor:auto;padding:10px}.piechart-legend{flex:0 1 auto;margin:0 1rem;text-align:center;padding-top:6px;position:relative}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{position:relative;padding-right:4px;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{cursor:pointer;float:left;white-space:nowrap;font-size:85%;text-align:left;color:52545c}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;white-space:nowrap;padding-left:10px}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;overflow-y:auto;overflow-x:hidden;height:100%;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{content:"(right-y)";padding:0 5px;color:#767980}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{float:none;display:table-cell;white-space:nowrap;padding:2px 10px;text-align:right}.piechart-legend-table .piechart-legend-icon{width:5px;padding:0;top:0}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{padding-left:7px;text-align:left;width:95%;max-width:650px;text-overflow:ellipsis;overflow:hidden}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#dde4ed}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{text-align:right;padding:0 10px 1px 0;font-weight:700;color:#61c2f2;font-size:85%;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#acb6bf}.piechart-tooltip{white-space:nowrap;font-size:12px;background-color:#dde4ed;color:#35373f}.piechart-tooltip .piechart-tooltip-time{text-align:center;position:relative;top:-3px;padding:.2rem;font-weight:700;color:#35373f}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/docker-compose.yml b/data/plugins/grafana-piechart-panel/docker-compose.yml new file mode 100644 index 0000000000000..a478ec77c58e6 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/docker-compose.yml @@ -0,0 +1,12 @@ +grafana: + image: grafana/grafana:6.6.0 + #image: grafana/grafana:6.5.3 + #image: grafana/grafana:6.4.5 + #image: grafana/grafana:5.4.4 + ports: + - "3000:3000" + volumes: + - ./:/var/lib/grafana/plugins/grafana-piechart-panel + - ./provisioning:/etc/grafana/provisioning + environment: + - TERM=linux diff --git a/data/plugins/grafana-piechart-panel/jest.config.js b/data/plugins/grafana-piechart-panel/jest.config.js new file mode 100644 index 0000000000000..bcf17c9087d1f --- /dev/null +++ b/data/plugins/grafana-piechart-panel/jest.config.js @@ -0,0 +1,8 @@ +// This file is needed because it is used by vscode and other tools that +// call `jest` directly. However, unless you are doing anything special +// do not edit this file + +const standard = require('@grafana/toolkit/src/config/jest.plugin.config'); + +// This process will use the same config that `yarn test` is using +module.exports = standard.jestConfig(); diff --git a/data/plugins/grafana-piechart-panel/package.json b/data/plugins/grafana-piechart-panel/package.json new file mode 100644 index 0000000000000..27d231da21f67 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/package.json @@ -0,0 +1,31 @@ +{ + "name": "piechart-panel", + "version": "1.5.0", + "description": "Pie chart panel for Grafana", + "scripts": { + "build": "grafana-toolkit plugin:build", + "test": "grafana-toolkit plugin:test", + "dev": "grafana-toolkit plugin:dev", + "watch": "grafana-toolkit plugin:dev --watch" + }, + "repository": "github:grafana/piechart-panel.git", + "author": "Grafana Labs", + "license": "MIT", + "private": true, + "dependencies": { + "angular": "^1.7.9", + "flot": "^4.1.1", + "jquery": "^3.4.1", + "jquery.flot": "^0.8.3", + "lodash": "^4.17.15" + }, + "devDependencies": { + "@grafana/data": "next", + "@grafana/toolkit": "next", + "@grafana/ui": "next", + "@types/angular": "^1.6.57", + "@types/flot": "^0.0.31", + "@types/grafana": "github:CorpGlory/types-grafana", + "@types/lodash": "4.14.149" + } +} diff --git a/data/plugins/grafana-piechart-panel/tsconfig.json b/data/plugins/grafana-piechart-panel/tsconfig.json new file mode 100644 index 0000000000000..211e352ef5eb0 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "./node_modules/@grafana/toolkit/src/config/tsconfig.plugin.json", + "include": ["src", "types"], + "compilerOptions": { + "rootDir": "./src", + "baseUrl": "./src", + "typeRoots": ["./node_modules/@types"] + } +} diff --git a/data/plugins/grafana-piechart-panel/yarn.lock b/data/plugins/grafana-piechart-panel/yarn.lock new file mode 100644 index 0000000000000..36f20f483fbc7 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/yarn.lock @@ -0,0 +1,12069 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ant-design/css-animation@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.2.tgz#4ee5d2ec0fb7cc0a78b44e1c82628bd4621ac7e3" + integrity sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw== + +"@antv/adjust@~0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@antv/adjust/-/adjust-0.1.1.tgz#e263ab0e1a1941a648842fc086cf65a7e3b75e98" + integrity sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/attr@~0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@antv/attr/-/attr-0.1.2.tgz#2eeb122fcaaf851a2d8749abc7c60519d3f77e37" + integrity sha512-QXjP+T2I+pJQcwZx1oCA4tipG43vgeCeKcGGKahlcxb71OBAzjJZm1QbF4frKXcnOqRkxVXtCr70X9TRair3Ew== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/component@~0.3.3": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@antv/component/-/component-0.3.9.tgz#ed561c639b7738ce03ff63a866f59e251de82a17" + integrity sha512-Knh/Nq0S8UkTfZj4SL7XizagTfXYqjFAYIqFtOmUaKpRMgccUi7p1oA7fJdNPGktkndljy6fUmCWocEeBXRS2g== + dependencies: + "@antv/attr" "~0.1.2" + "@antv/g" "~3.3.5" + "@antv/util" "~1.3.1" + wolfy87-eventemitter "~5.1.0" + +"@antv/coord@~0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@antv/coord/-/coord-0.1.0.tgz#48a80ae36d07552f96657e7f8095227c63f0c0a9" + integrity sha512-W1R8h3Jfb3AfMBVfCreFPMVetgEYuwHBIGn0+d3EgYXe2ckOF8XWjkpGF1fZhOMHREMr+Gt27NGiQh8yBdLUgg== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/g2@3.5.15": + version "3.5.15" + resolved "https://registry.yarnpkg.com/@antv/g2/-/g2-3.5.15.tgz#5951808f88210f4a45ca1acb38fb25a743b4a578" + integrity sha512-gWN28V/BRHrCe6O12WcJ7ji9UE8XETSQ146ur4zMu5I50ZO7kxc/3s038N0iyuJh3Em9nlrTjfhqjlysogrX7g== + dependencies: + "@antv/adjust" "~0.1.0" + "@antv/attr" "~0.1.2" + "@antv/component" "~0.3.3" + "@antv/coord" "~0.1.0" + "@antv/g" "~3.3.6" + "@antv/scale" "~0.1.1" + "@antv/util" "~1.3.1" + venn.js "~0.2.20" + wolfy87-eventemitter "~5.1.0" + +"@antv/g@~3.3.5", "@antv/g@~3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@antv/g/-/g-3.3.6.tgz#11fed9ddc9ed4e5a2aa244b7c8abb982a003f201" + integrity sha512-2GtyTz++s0BbN6s0ZL2/nrqGYCkd52pVoNH92YkrTdTOvpO6Z4DNoo6jGVgZdPX6Nzwli6yduC8MinVAhE8X6g== + dependencies: + "@antv/gl-matrix" "~2.7.1" + "@antv/util" "~1.3.1" + d3-ease "~1.0.3" + d3-interpolate "~1.1.5" + d3-timer "~1.0.6" + wolfy87-eventemitter "~5.1.0" + +"@antv/gl-matrix@^2.7.1", "@antv/gl-matrix@~2.7.1": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz#acb8e37f7ab3df01345aba4372d7942be42eba14" + integrity sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== + +"@antv/scale@~0.1.1": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@antv/scale/-/scale-0.1.5.tgz#243266e8b9047cf64b2fdfc40f9834cf0846496e" + integrity sha512-7RAu4iH5+Hk21h6+aBMiDTfmLf4IibK2SWjx/+E4f4AXRpqucO+8u7IbZdFkakAWxvqhJtN3oePJuTKqOMcmlg== + dependencies: + "@antv/util" "~1.3.1" + fecha "~2.3.3" + +"@antv/util@~1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@antv/util/-/util-1.3.1.tgz#30a34b201ff9126ec0d58c72c8166a9c3e644ccd" + integrity sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA== + dependencies: + "@antv/gl-matrix" "^2.7.1" + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== + dependencies: + browserslist "^4.11.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== + dependencies: + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@braintree/sanitize-url@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-4.0.0.tgz#2cda79ffd67b6ea919a63b5e1a883b92d636e844" + integrity sha512-bOoFoTxuEUuri/v1q0OXN0HIrZ2EiZlRSKdveU8vS5xf2+g0TmpXhmxkTc1s+XWR5xZNoVU4uvf/Mher98tfLw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.27", "@emotion/core@^10.0.9": + version "10.0.28" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" + integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27", "@emotion/css@^10.0.9": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + csstype "^2.5.7" + +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/stylis@0.8.5": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@grafana/data@7.0.0-beta.3", "@grafana/data@next": + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-7.0.0-beta.3.tgz#45533ae793584b06d63b9a4edbf95d119784b43d" + integrity sha512-se9OBNYqQk5YlDivN6jDCZDpte4A8AGMFm1WqEfT8DBu6IAfWigQJGPMVT/26aYVP+kDFgwEymr+G/Zgs0zaew== + dependencies: + "@braintree/sanitize-url" "4.0.0" + apache-arrow "0.16.0" + lodash "4.17.15" + rxjs "6.5.5" + xss "1.0.6" + +"@grafana/e2e-selectors@7.0.0-beta.3": + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-7.0.0-beta.3.tgz#212e30ab18a4c77cbd599591384857ff55014e84" + integrity sha512-IYhvNtAJ2/MiCPc4RNovfTgQvPGBx9BHVnh00OIyLRWn3n6ElvBzHJ6vY2lsFLZONSY8TfrXKNKVFljDNBnOyg== + dependencies: + "@grafana/tsconfig" "^1.0.0-rc1" + commander "5.0.0" + execa "4.0.0" + typescript "3.7.5" + yaml "^1.8.3" + +"@grafana/eslint-config@^1.0.0-rc1": + version "1.0.0-rc1" + resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-1.0.0-rc1.tgz#3b0a1abddfea900a57abc9526ad31abb1da2d42c" + integrity sha512-xmcJR6mUYw1llq3m8gT2kE7xoq6yLMUgNf2Mf1yZvDCx2cXFSyaLlGs1dqjFWjJDbV46GdhYRAyRbyGR+J9QKg== + +"@grafana/slate-react@0.22.9-grafana": + version "0.22.9-grafana" + resolved "https://registry.yarnpkg.com/@grafana/slate-react/-/slate-react-0.22.9-grafana.tgz#07f35f0ffc018f616b9f82fa6e5ba65fae75c6a0" + integrity sha512-9NYjwabVOUQ/e4Y/Wm+sgePM65rb/gju59D52t4O42HsIm9exXv+SLajEBF/HiLHzuH5V+5uuHajbzv0vuE2VA== + dependencies: + debug "^3.1.0" + get-window "^1.1.1" + is-window "^1.0.2" + lodash "^4.1.1" + memoize-one "^4.0.0" + prop-types "^15.5.8" + react-immutable-proptypes "^2.1.0" + selection-is-backward "^1.0.0" + slate-base64-serializer "^0.2.111" + slate-dev-environment "^0.2.2" + slate-hotkeys "^0.2.9" + slate-plain-serializer "^0.7.10" + slate-prop-types "^0.5.41" + slate-react-placeholder "^0.2.8" + tiny-invariant "^1.0.1" + tiny-warning "^0.0.3" + +"@grafana/toolkit@next": + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@grafana/toolkit/-/toolkit-7.0.0-beta.3.tgz#0f8702f99fdf461d21903284b6bfbce0c04dc61b" + integrity sha512-ke3ic4/iBqIS9o/im3d7os69dZl1E0ghxEbf7whnkpevidivRb2fHthAw0NHZOH7jJVOB/CGOqNpgl+uH4tOLQ== + dependencies: + "@babel/core" "7.9.0" + "@babel/preset-env" "7.9.0" + "@grafana/data" "7.0.0-beta.3" + "@grafana/eslint-config" "^1.0.0-rc1" + "@grafana/tsconfig" "^1.0.0-rc1" + "@grafana/ui" "7.0.0-beta.3" + "@types/command-exists" "^1.2.0" + "@types/execa" "^0.9.0" + "@types/expect-puppeteer" "3.3.1" + "@types/fs-extra" "^8.1.0" + "@types/inquirer" "^6.0.3" + "@types/jest" "24.0.13" + "@types/jest-cli" "^23.6.0" + "@types/node" "^12.0.4" + "@types/prettier" "^1.16.4" + "@types/puppeteer-core" "1.9.0" + "@types/react-dev-utils" "^9.0.4" + "@types/rimraf" "^2.0.3" + "@types/semver" "^6.0.0" + "@types/tmp" "^0.1.0" + "@types/webpack" "4.41.7" + "@typescript-eslint/eslint-plugin" "2.24.0" + "@typescript-eslint/parser" "2.24.0" + axios "0.19.2" + babel-jest "24.8.0" + babel-loader "8.1.0" + babel-plugin-angularjs-annotate "0.10.0" + chalk "^2.4.2" + command-exists "^1.2.8" + commander "^5.0.0" + concurrently "4.1.0" + copy-webpack-plugin "5.1.1" + css-loader "^3.0.0" + eslint "6.8.0" + eslint-config-prettier "6.10.0" + eslint-plugin-jsdoc "22.1.0" + eslint-plugin-prettier "3.1.2" + execa "^1.0.0" + expect-puppeteer "4.1.1" + file-loader "^4.0.0" + fork-ts-checker-webpack-plugin "1.0.0" + fs-extra "^8.1.0" + globby "^10.0.1" + html-loader "0.5.5" + html-webpack-plugin "^3.2.0" + inquirer "^6.3.1" + jest "24.8.0" + jest-canvas-mock "2.1.2" + jest-cli "^24.8.0" + jest-coverage-badges "^1.1.2" + jest-junit "^6.4.0" + less "^3.11.1" + less-loader "^5.0.0" + lodash "4.17.15" + md5-file "^4.0.0" + mini-css-extract-plugin "^0.7.0" + node-sass "^4.13.1" + optimize-css-assets-webpack-plugin "^5.0.3" + ora "^4.0.3" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + postcss-flexbugs-fixes "4.2.0" + postcss-loader "3.0.0" + postcss-preset-env "6.7.0" + prettier "^1.19.1" + puppeteer-core "1.18.1" + react-dev-utils "^10.2.1" + replace-in-file "^4.1.0" + replace-in-file-webpack-plugin "^1.0.6" + rimraf "^3.0.0" + sass-loader "7.1.0" + semver "^7.1.3" + simple-git "^1.132.0" + style-loader "^0.23.1" + terser-webpack-plugin "^2.3.4" + ts-jest "24.1.0" + ts-loader "6.2.1" + ts-node "8.8.1" + tslib "1.10.0" + typescript "3.7.5" + url-loader "^2.0.1" + webpack "4.41.5" + +"@grafana/tsconfig@^1.0.0-rc1": + version "1.0.0-rc1" + resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.0.0-rc1.tgz#d07ea16755a50cae21000113f30546b61647a200" + integrity sha512-nucKPGyzlSKYSiJk5RA8GzMdVWhdYNdF+Hh65AXxjD9PlY69JKr5wANj8bVdQboag6dgg0BFKqgKPyY+YtV4Iw== + +"@grafana/ui@7.0.0-beta.3", "@grafana/ui@next": + version "7.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-7.0.0-beta.3.tgz#5a664b91c1e155205ea67bfb53bffb8f14f7db27" + integrity sha512-fShi3Qf2RHLLU0MhtLGo5c5AwreUw75R1Ci2GQRvOnRqePsj6qSug1ipikCOhjW/JW90rxV974Or7PZETRRSYQ== + dependencies: + "@emotion/core" "^10.0.27" + "@grafana/data" "7.0.0-beta.3" + "@grafana/e2e-selectors" "7.0.0-beta.3" + "@grafana/slate-react" "0.22.9-grafana" + "@grafana/tsconfig" "^1.0.0-rc1" + "@iconscout/react-unicons" "^1.0.0" + "@torkelo/react-select" "3.0.8" + "@types/react-beautiful-dnd" "12.1.2" + "@types/react-color" "3.0.1" + "@types/react-select" "3.0.8" + "@types/react-table" "7.0.12" + "@types/slate" "0.47.1" + "@types/slate-react" "0.22.5" + bizcharts "^3.5.8" + classnames "2.2.6" + d3 "5.15.0" + emotion "10.0.27" + immutable "3.8.2" + jquery "3.4.1" + lodash "4.17.15" + moment "2.24.0" + papaparse "4.6.3" + rc-cascader "1.0.1" + rc-drawer "3.1.3" + rc-slider "8.7.1" + rc-time-picker "^3.7.3" + react "16.12.0" + react-beautiful-dnd "13.0.0" + react-calendar "2.19.2" + react-color "2.18.0" + react-custom-scrollbars "4.2.1" + react-dom "16.12.0" + react-highlight-words "0.16.0" + react-hook-form "5.1.3" + react-popper "1.3.3" + react-storybook-addon-props-combinations "1.1.0" + react-table "7.0.0" + react-transition-group "4.3.0" + slate "0.47.8" + storybook-dark-mode "0.4.0" + tinycolor2 "1.4.1" + +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + +"@iconscout/react-unicons@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@iconscout/react-unicons/-/react-unicons-1.1.1.tgz#c4730ae1c552812c793c8e7a9e1f52a85eda2ddd" + integrity sha512-SHbPf5a46HCe3mjNTrAuGW9MTFHwlxmnEAn8b65FB58QeZJ2fl11ffOYt/KutX0RFGWApQ79d0GKeOhP1J/MNQ== + dependencies: + react ">=15.0.0 <17.0.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.8.0", "@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.8.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" + integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@torkelo/react-select@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@torkelo/react-select/-/react-select-3.0.8.tgz#04bfc877118af425f97eac2b471b66705484ee4a" + integrity sha512-becmEGnaOQpUcZS7kjQLaxjY0WKJcFFvAOTWIiU1XfwBV1sdCSgYFGWT+QhkCdRlP2Ux5U4cKhTUsWSeI9FsIA== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/cache" "^10.0.9" + "@emotion/core" "^10.0.9" + "@emotion/css" "^10.0.9" + memoize-one "^5.0.0" + prop-types "^15.6.0" + react-input-autosize "^2.2.2" + react-transition-group "^4.3.0" + +"@types/angular@^1.6.57": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.7.0.tgz#3dd8d3b2d3b7ce2cca51b9fc3691b48b638eb468" + integrity sha512-zneUmi5I6oSkGBqkRP9rxbWX1mi6Yj7gNV+WNffmJLf8x4cnV0MGqXFNSP90NZ1kRRLCOdKBf9RIVD1TMg4aog== + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/babel__core@^7.1.0": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/clean-css@*": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d" + integrity sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ== + dependencies: + "@types/node" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/command-exists@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" + integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== + +"@types/connect-history-api-fallback@*": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz#4772b79b8b53185f0f4c9deab09236baf76ee3b4" + integrity sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/eslint@*": + version "6.8.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-6.8.0.tgz#5f2289b9f01316da7cf31c9e63109a10602a23cb" + integrity sha512-hqzmggoxkOubpgTdcOltkfc5N8IftRJqU70d1jbOISjjZVPvjcr+CLi2CI70hx1SUIRkLgpglTy9w28nGe2Hsw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.44" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" + integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/execa@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93" + integrity sha512-mgfd93RhzjYBUHHV532turHC2j4l/qxsF/PbfDmprHDEUHmNZGlDn1CEsulGK3AfsPdhkWzZQT/S/k0UGhLGsA== + dependencies: + "@types/node" "*" + +"@types/expect-puppeteer@3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/expect-puppeteer/-/expect-puppeteer-3.3.1.tgz#46e5944bf425b86ea13a563c7c8b86901414988d" + integrity sha512-3raSnf28NelDtv0ksvQPZs410taJZ4d70vA8sVzmbRPV04fpmQm9/BOxUCloETD/ZI1EXRpv0pzOQKhPTbm4jg== + dependencies: + "@types/jest" "*" + "@types/puppeteer" "*" + +"@types/express-serve-static-core@*": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz#dfe61f870eb549dc6d7e12050901847c7d7e915b" + integrity sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e" + integrity sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/flatbuffers@^1.9.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@types/flatbuffers/-/flatbuffers-1.10.0.tgz#aa74e30ffdc86445f2f060e1808fc9d56b5603ba" + integrity sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA== + +"@types/flot@^0.0.31": + version "0.0.31" + resolved "https://registry.yarnpkg.com/@types/flot/-/flot-0.0.31.tgz#0daca37c6c855b69a0a7e2e37dd0f84b3db8c8c1" + integrity sha512-X+RcMQCqPlQo8zPT6cUFTd/PoYBShMQlHUeOXf05jWlfYnvLuRmluB9z+2EsOKFgUzqzZve5brx+gnFxBaHEUw== + dependencies: + "@types/jquery" "*" + +"@types/fs-extra@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.0.tgz#1114834b53c3914806cd03b3304b37b3bd221a4d" + integrity sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg== + dependencies: + "@types/node" "*" + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/grafana@github:CorpGlory/types-grafana": + version "4.6.3" + resolved "https://codeload.github.com/CorpGlory/types-grafana/tar.gz/c58c08dc33585cc234f4d69013616edc05760e21" + +"@types/html-minifier@*": + version "3.5.3" + resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f" + integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg== + dependencies: + "@types/clean-css" "*" + "@types/relateurl" "*" + "@types/uglify-js" "*" + +"@types/html-webpack-plugin@*": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.2.tgz#f552121f3c0a3972dda9a425de1e0029069b2907" + integrity sha512-KsL5cHtNWhOQF9Cu+Dpn7GemzQRxdKhe1/LgZUSku33B5L4Cx2/p3DX6YbeRNOoI552MNbB/VNbCDNEYU//iAw== + dependencies: + "@types/html-minifier" "*" + "@types/tapable" "*" + "@types/webpack" "*" + +"@types/http-proxy-middleware@*": + version "0.19.3" + resolved "https://registry.yarnpkg.com/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz#b2eb96fbc0f9ac7250b5d9c4c53aade049497d03" + integrity sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA== + dependencies: + "@types/connect" "*" + "@types/http-proxy" "*" + "@types/node" "*" + +"@types/http-proxy@*": + version "1.17.4" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" + integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + dependencies: + "@types/node" "*" + +"@types/inquirer@^6.0.3": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" + integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== + dependencies: + "@types/through" "*" + rxjs "^6.4.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest-cli@^23.6.0": + version "23.6.0" + resolved "https://registry.yarnpkg.com/@types/jest-cli/-/jest-cli-23.6.0.tgz#c9cf542d28328cf5a6f1fb017dabaa3f71ab6499" + integrity sha512-o7vy+63lsHKFDibL3qZud87WpB0nTfk4j4QYB2aD6vtWMVVRRBACNcK9tMTm7Ebo68b7WiPsb/nyDYPZgtD0tg== + +"@types/jest-diff@*": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-24.3.0.tgz#29e237a3d954babfe6e23cc59b57ecd8ca8d858d" + integrity sha512-vx1CRDeDUwQ0Pc7v+hS61O1ETA81kD04IMEC0hS1kPyVtHDdZrokAvpF7MT9VI/fVSzicelUZNCepDvhRV1PeA== + dependencies: + jest-diff "*" + +"@types/jest@*": + version "25.2.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.2.tgz#6a752e7a00f69c3e790ea00c345029d5cefa92bf" + integrity sha512-aRctFbG8Pb7DSLzUt/fEtL3q/GKb9mretFuYhRub2J0q6NhzBYbx9HTQzHrWgBNIxYOlxGNVe6Z54cpbUt+Few== + dependencies: + jest-diff "^25.2.1" + pretty-format "^25.2.1" + +"@types/jest@24.0.13": + version "24.0.13" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9" + integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww== + dependencies: + "@types/jest-diff" "*" + +"@types/jquery@*": + version "3.3.38" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.38.tgz#6385f1e1b30bd2bff55ae8ee75ea42a999cc3608" + integrity sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA== + dependencies: + "@types/sizzle" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/lodash@4.14.149": + version "4.14.149" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" + integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== + +"@types/mime@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" + integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== + +"@types/node@^12.0.4": + version "12.12.39" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.39.tgz#532d25c1e639d89dd6f3aa1d7b3962e3e7fa943d" + integrity sha512-pADGfwnDkr6zagDwEiCVE4yQrv7XDkoeVa4OfA9Ju/zRTk6YNDLGtQbkdL4/56mCQQCs4AhNrBIag6jrp7ZuOg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^1.16.4": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/puppeteer-core@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-1.9.0.tgz#5ceb397e3ff769081fb07d71289b5009392d24d3" + integrity sha512-YJwGTq0a8xZxN7/QDeW59XMdKTRNzDTc8ZVBPDB6J13GgXn1+QzgMA8pAq1/bj2FD0R7xj3nYoZra10b0HLzFw== + dependencies: + "@types/puppeteer" "*" + +"@types/puppeteer@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-2.1.0.tgz#31367580654632f87f86df565f1bde0533577401" + integrity sha512-QIRQXl0VaSgnwOZ1LwxD321Tfb1jLOzCWuF2BrwjEkWq2IhxSicPOddUywLV7dRSO6mcU4sWKRdoGdci6gk0Aw== + dependencies: + "@types/node" "*" + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/qs@*": + version "6.9.2" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.2.tgz#faab98ec4f96ee72c829b7ec0983af4f4d343113" + integrity sha512-a9bDi4Z3zCZf4Lv1X/vwnvbbDYSNz59h3i3KdyuYYN+YrLjSeJD0dnphdULDfySvUv6Exy/O0K6wX/kQpnPQ+A== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/react-beautiful-dnd@12.1.2": + version "12.1.2" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-12.1.2.tgz#dfd1bdb072e92c1363e5f7a4c1842eaf95f77b21" + integrity sha512-h+0mA4cHmzL4BhyCniB6ZSSZhfO9LpXXbnhdAfa2k7klS03woiOT+Dh5AchY6eoQXk3vQVtqn40YY3u+MwFs8A== + dependencies: + "@types/react" "*" + +"@types/react-color@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.1.tgz#5433e2f503ea0e0831cbc6fd0c20f8157d93add0" + integrity sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw== + dependencies: + "@types/react" "*" + +"@types/react-dev-utils@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@types/react-dev-utils/-/react-dev-utils-9.0.4.tgz#3e4bee79b7536777cef219427ab1d38adc24f3f2" + integrity sha512-8cv9rAeSP1EmyRQAbZ/i6uYtai1VoKHGSBwDyCLM82wCkqoh3WPjJgI1pfi2kiLc0C5hNU7DLo7/c4hylfHLWg== + dependencies: + "@types/eslint" "*" + "@types/express" "*" + "@types/html-webpack-plugin" "*" + "@types/webpack" "*" + "@types/webpack-dev-server" "*" + +"@types/react-dom@*": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react-select@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.0.8.tgz#b824a12d438dd493c30ffff49a805f797602a837" + integrity sha512-0763TXYZc8bTiHM+DUnWoy9Rg5mk6PxYWBrEe6Fkjgc0Kv0r1RqjZk9/BrK4wdM0RNjYjixlFPnUhOJb76sMGg== + dependencies: + "@types/react" "*" + "@types/react-dom" "*" + "@types/react-transition-group" "*" + +"@types/react-table@7.0.12": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.0.12.tgz#cb57c8dfb110f8c2d0f04b9d44a70f9235a13b27" + integrity sha512-x/8nFrCjr1ySs51pkHsDQz3t+nW94qS/M9mpyLoweJNd9YKFzJ2mbVcUshfcMOyR1/UR+6lfz2EKA1lzOoJz+w== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@*": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.4.tgz#c7416225987ccdb719262766c1483da8f826838d" + integrity sha512-8DMUaDqh0S70TjkqU0DxOu80tFUiiaS9rxkWip/nb7gtvAsbqOXm02UCmR8zdcjWujgeYPiPNTVpVpKzUDotwA== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.35" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" + integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/relateurl@*": + version "0.2.28" + resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" + integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= + +"@types/rimraf@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" + integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q== + dependencies: + "@types/glob" "*" + "@types/node" "*" + +"@types/semver@^6.0.0": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" + integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== + +"@types/serve-static@*": + version "1.13.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + +"@types/sizzle@*": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.2.tgz#a811b8c18e2babab7d542b3365887ae2e4d9de47" + integrity sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg== + +"@types/slate-react@0.22.5": + version "0.22.5" + resolved "https://registry.yarnpkg.com/@types/slate-react/-/slate-react-0.22.5.tgz#a10796758aa6b3133e1c777959facbf8806959f7" + integrity sha512-WKJic5LlNRNUCnD6lEdlOZCcXWoDN8Ais2CmwVMn8pdt5Kh8hJsTYhXawNxOShPIOLVB+G+aVZNAXAAubEOpaw== + dependencies: + "@types/react" "*" + "@types/slate" "*" + immutable "^3.8.2" + +"@types/slate@*": + version "0.47.7" + resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.7.tgz#fec860e24456fdf9f1169f69aadd7ce64707881f" + integrity sha512-Vy4E9lOKGFc5msZMwLWtVN9nrGYsdk6S7jXdC0Wf26UoMqJCS3yzXbNoFILSoCh7fq57ftJZrM6+8kkC/yT+LA== + dependencies: + "@types/react" "*" + immutable "^3.8.2" + +"@types/slate@0.47.1": + version "0.47.1" + resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.1.tgz#6c66f82df085c764039eea2229be763f7e1906fd" + integrity sha512-2ZlnWI6/RYMXxeGFIeZtvmaXAeYAJh4ZVumziqVl77/liNEi9hOwkUTU2zFu+j/z21v385I2WVPl8sgadxfzXg== + dependencies: + "@types/react" "*" + immutable "^3.8.2" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/tapable@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" + integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== + +"@types/text-encoding-utf-8@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz#908d884af1114e5d8df47597b1e04f833383d23d" + integrity sha512-GpIEYaS+yNfYqpowLLziiY42pyaL+lThd/wMh6tTubaKuG4IRkXqqyxK7Nddn3BvpUg2+go3Gv/jbXvAFMRjiQ== + +"@types/through@*": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + dependencies: + "@types/node" "*" + +"@types/tmp@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" + integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== + +"@types/uglify-js@*": + version "3.9.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.1.tgz#0ad39d6a72979593f669acdfc7e980d590d3fb94" + integrity sha512-rdBIeMQyRBOXogop/EYBvSkYFn9D9yGxUa5hagBVG55KIdSUbp22EACJSHCs6kmmfunojAhf7zJH+Ds06/qLaQ== + dependencies: + source-map "^0.6.1" + +"@types/webpack-dev-server@*": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#93b7133cc9dab1ca1b76659f5ef8b763ad54c28a" + integrity sha512-2nwwQ/qHRghUirvG/gEDkOQDa+d881UTJM7EG9ok5KNaYCjYVvy7fdaO528Lcym9OQDn75SvruPYVVvMJxqO0g== + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/http-proxy-middleware" "*" + "@types/serve-static" "*" + "@types/webpack" "*" + +"@types/webpack-sources@*": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" + integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.6.1" + +"@types/webpack@*": + version "4.41.13" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.13.tgz#988d114c8913d039b8a0e0502a7fe4f1f84f3d5e" + integrity sha512-RYmIHOWSxnTTa765N6jJBVE45pd2SYNblEYshVDduLw6RhocazNmRzE5/ytvBD8IkDMH6DI+bcrqxh8NILimBA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/webpack@4.41.7": + version "4.41.7" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" + integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" + integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.24.0.tgz#a86cf618c965a462cddf3601f594544b134d6d68" + integrity sha512-wJRBeaMeT7RLQ27UQkDFOu25MqFOBus8PtOa9KaT5ZuxC1kAsd7JEHqWt4YXuY9eancX0GK9C68i5OROnlIzBA== + dependencies: + "@typescript-eslint/experimental-utils" "2.24.0" + eslint-utils "^1.4.3" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.24.0.tgz#a5cb2ed89fedf8b59638dc83484eb0c8c35e1143" + integrity sha512-DXrwuXTdVh3ycNCMYmWhUzn/gfqu9N0VzNnahjiDJvcyhfBy4gb59ncVZVxdp5XzBC77dCncu0daQgOkbvPwBw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-scope "^5.0.0" + +"@typescript-eslint/parser@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.24.0.tgz#2cf0eae6e6dd44d162486ad949c126b887f11eb8" + integrity sha512-H2Y7uacwSSg8IbVxdYExSI3T7uM1DzmOn2COGtCahCC3g8YtM1xYAPi2MAHyfPs61VKxP/J/UiSctcRgw4G8aw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.24.0" + "@typescript-eslint/typescript-estree" "2.24.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.24.0": + version "2.24.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.24.0.tgz#38bbc8bb479790d2f324797ffbcdb346d897c62a" + integrity sha512-RJ0yMe5owMSix55qX7Mi9V6z2FDuuDpN6eR5fzRJrp+8in9UF41IGNQHbg5aMK4/PjVaEQksLvz0IA8n+Mr/FA== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^6.3.0" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^5.5.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.0.1, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" + integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== + +add-dom-event-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" + +add-px-to-style@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" + integrity sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo= + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +angular@^1.7.9: + version "1.7.9" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.7.9.tgz#e52616e8701c17724c3c238cfe4f9446fd570bc4" + integrity sha512-5se7ZpcOtu0MBFlzGv5dsM1quQDoDeUTwZrWjGtTNA7O88cD8TEk5IEKCTDa3uECV9XnvKREVUr7du1ACiWGFQ== + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-arrow@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/apache-arrow/-/apache-arrow-0.16.0.tgz#7ee7a6397d1a2d6349aed90c6ce5b92362e79881" + integrity sha512-hiabMZb2XgHiNK6f7C/2x/fyGS85PoCdkeMhJDyZipaJy1il1BJMDDEa3VLvM6mdxsG61pY1zev6zWetOj8Eog== + dependencies: + "@types/flatbuffers" "^1.9.1" + "@types/node" "^12.0.4" + "@types/text-encoding-utf-8" "^1.0.1" + command-line-args "5.0.2" + command-line-usage "5.0.5" + flatbuffers "1.11.0" + json-bignum "^0.0.3" + pad-left "^2.1.0" + text-encoding-utf-8 "^1.0.2" + tslib "^1.9.3" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argv-tools@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/argv-tools/-/argv-tools-0.1.2.tgz#fc4918a70775b8cc5f8296fa0cfea137bd8a8229" + integrity sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg== + dependencies: + array-back "^2.0.0" + find-replace "^2.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.7.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4" + integrity sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ== + dependencies: + browserslist "^4.11.1" + caniuse-lite "^1.0.30001039" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.27" + postcss-value-parser "^4.0.3" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axios@0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-jest@24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" + integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== + dependencies: + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.6.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-angularjs-annotate@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/babel-plugin-angularjs-annotate/-/babel-plugin-angularjs-annotate-0.10.0.tgz#4213b3aaae494a087aad0b8237c5d0716d22ca76" + integrity sha512-NPE7FOAxcLPCUR/kNkrhHIjoScR3RyIlRH3yRn79j8EZWtpILVnCOdA9yKfsOmRh6BHnLHKl8ZAThc+YDd/QwQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/types" "^7.2.0" + simple-is "~0.2.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-emotion@^10.0.27: + version "10.0.33" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" + integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.16" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.0.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-preset-jest@^24.6.0, babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-runtime@6.x, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bizcharts@^3.5.8: + version "3.5.9" + resolved "https://registry.yarnpkg.com/bizcharts/-/bizcharts-3.5.9.tgz#b4c56c8bc5e8567f65748aeb3916902c4e9c98c0" + integrity sha512-1GI1SWNHfU3xRYGh4b4Dn6gfHMaOZnl0EXewZGEL5V5/m97k2kBonedA0LvtdrOQZRAAM+sP1uwny/ttkNsnEQ== + dependencies: + "@antv/g2" "3.5.15" + "@babel/runtime" "^7.7.6" + invariant "^2.2.2" + lodash.debounce "^4.0.8" + prop-types "^15.6.0" + resize-observer-polyfill "^1.5.1" + warning "^3.0.0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +bn.js@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" + integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.1.0.tgz#4fe971b379a5aeb4925e06779f9fa1f41d249d70" + integrity sha512-VYxo7cDCeYUoBZ0ZCy4UyEUCP3smyBd4DRQM5nrFS1jJjPJjX7rP3oLRpPoWfkhQfyJ0I9ZbHbKafrFD/SGlrg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + dependencies: + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" + node-releases "^1.1.53" + pkg-up "^2.0.0" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-from@1.x, buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +cacache@^12.0.2, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001043: + version "1.0.30001058" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001058.tgz#9f8a318389e28f060272274ac93a661d17f8bf0d" + integrity sha512-UiRZmBYd1HdVVdFKy7PuLVx9e2NS7SMyx7QpWvFjiklYrLJKpLd19cRnRNqlw4zYa7vVejS3c8JUVobX241zHQ== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@2.2.6, classnames@2.x, classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@4.2.x: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" + integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1, clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-convert@~0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" + integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.0.2.tgz#c4e56b016636af1323cf485aa25c3cb203dfbbe4" + integrity sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA== + dependencies: + argv-tools "^0.1.1" + array-back "^2.0.0" + find-replace "^2.0.1" + lodash.camelcase "^4.3.0" + typical "^2.6.1" + +command-line-usage@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-5.0.5.tgz#5f25933ffe6dedd983c635d38a21d7e623fda357" + integrity sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA== + dependencies: + array-back "^2.0.0" + chalk "^2.4.1" + table-layout "^0.4.3" + typical "^2.6.1" + +commander@2, commander@^2.20.0, commander@^2.9.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" + integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== + +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +comment-parser@^0.7.2: + version "0.7.4" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.4.tgz#f5eb83cbae323cae6533c057f41d52692361c83a" + integrity sha512-Nnl77/mt6sj1BiYSVMeMWzvD0183F2MFOJyFRmZHimUVDYS9J40AvXpiFA7RpU5pQH+HkvYc0dnsHpwW2xmbyQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-classes@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= + dependencies: + component-indexof "0.0.3" + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concurrently@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33" + integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg== + dependencies: + chalk "^2.4.1" + date-fns "^1.23.0" + lodash "^4.17.10" + read-pkg "^4.0.1" + rxjs "^6.3.3" + spawn-command "^0.0.2-1" + supports-color "^4.5.0" + tree-kill "^1.1.0" + yargs "^12.0.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contour_plot@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/contour_plot/-/contour_plot-0.0.1.tgz#475870f032b8e338412aa5fc507880f0bf495c77" + integrity sha1-R1hw8DK44zhBKqX8UHiA8L9JXHc= + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== + dependencies: + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" + globby "^7.1.1" + is-glob "^4.0.1" + loader-utils "^1.2.3" + minimatch "^3.0.4" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + webpack-log "^2.0.0" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-emotion@^10.0.27: + version "10.0.27" + resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.27.tgz#cb4fa2db750f6ca6f9a001a33fbf1f6c46789503" + integrity sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg== + dependencies: + "@emotion/cache" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-context@<=0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" + integrity sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A== + dependencies: + fbjs "^0.8.0" + gud "^1.0.0" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" + integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-animation@^1.3.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" + integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog== + dependencies: + babel-runtime "6.x" + component-classes "^1.2.5" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-box-model@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== + dependencies: + tiny-invariant "^1.0.6" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.0.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" + integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.27" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.3" + schema-utils "^2.6.6" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + +cssfontparser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" + integrity sha1-9AIvyPlwDGgCnVQghK+69CWj8+M= + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.2.0, csstype@^2.5.7, csstype@^2.6.7: + version "2.6.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" + integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-axis@1: + version "1.0.12" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" + integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== + +d3-brush@1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" + integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3-chord@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" + integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== + dependencies: + d3-array "1" + d3-path "1" + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +d3-contour@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" + integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== + dependencies: + d3-array "^1.1.1" + +d3-dispatch@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +d3-drag@1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" + integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== + dependencies: + d3-dispatch "1" + d3-selection "1" + +d3-dsv@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" + integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== + dependencies: + commander "2" + iconv-lite "0.4" + rw "1" + +d3-ease@1, d3-ease@~1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" + integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== + +d3-fetch@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" + integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== + dependencies: + d3-dsv "1" + +d3-force@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" + integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== + dependencies: + d3-collection "1" + d3-dispatch "1" + d3-quadtree "1" + d3-timer "1" + +d3-format@1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" + integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== + +d3-geo@1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" + integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== + dependencies: + d3-array "1" + +d3-hierarchy@1: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-interpolate@1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-interpolate@~1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" + integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-polygon@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" + integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== + +d3-quadtree@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" + integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== + +d3-random@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" + integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== + +d3-scale-chromatic@1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale@2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" + integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-selection@1, d3-selection@^1.0.2, d3-selection@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" + integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== + +d3-shape@1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + +d3-timer@1, d3-timer@~1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + +d3-transition@1, d3-transition@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== + dependencies: + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" + +d3-voronoi@1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" + integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== + +d3-zoom@1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" + integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3@5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" + integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== + dependencies: + d3-array "1" + d3-axis "1" + d3-brush "1" + d3-chord "1" + d3-collection "1" + d3-color "1" + d3-contour "1" + d3-dispatch "1" + d3-drag "1" + d3-dsv "1" + d3-ease "1" + d3-fetch "1" + d3-force "1" + d3-format "1" + d3-geo "1" + d3-hierarchy "1" + d3-interpolate "1" + d3-path "1" + d3-polygon "1" + d3-quadtree "1" + d3-random "1" + d3-scale "2" + d3-scale-chromatic "1" + d3-selection "1" + d3-shape "1" + d3-time "1" + d3-time-format "2" + d3-timer "1" + d3-transition "1" + d3-voronoi "1" + d3-zoom "1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-fns@^1.23.0: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" + integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dir-glob@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +direction@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" + integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-align@^1.7.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.11.1.tgz#7592be99a660a36cdedc1d6eeb22b8109d758cae" + integrity sha512-hN42DmUgtweBx0iBjDLO4WtKOMcK8yBmPx/fgdsgQadLuzPu/8co3oLdK5yMmeM/vnUd3yDyV6qV8/NzxBexQg== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-css@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" + integrity sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI= + dependencies: + add-px-to-style "1.0.0" + prefix-style "2.0.1" + to-camel-case "1.0.0" + +dom-helpers@^5.0.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^2.6.7" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: + version "1.3.437" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.437.tgz#110f1cd407e5d09b43d5585e5f237b71063412cf" + integrity sha512-PBQn2q68ErqMyBUABh9Gh8R6DunGky8aB5y3N5lPM7OVpldwyUbAK5AX9WcwE/5F6ceqvQ+iQLYkJYRysAs6Bg== + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emotion@10.0.27: + version "10.0.27" + resolved "https://registry.yarnpkg.com/emotion/-/emotion-10.0.27.tgz#f9ca5df98630980a23c819a56262560562e5d75e" + integrity sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g== + dependencies: + babel-plugin-emotion "^10.0.27" + create-emotion "^10.0.27" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" + integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +es6-templates@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= + dependencies: + recast "~0.11.12" + through "~2.3.6" + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.9.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@6.10.0: + version "6.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz#7b15e303bf9c956875c948f6b21500e48ded6a7f" + integrity sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-jsdoc@22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-22.1.0.tgz#dadfa62653fc0d87f900d810307f5ed07ef6ecd5" + integrity sha512-54NdbICM7KrxsGUqQsev9aIMqPXyvyBx2218Qcm0TQ16P9CtBI+YY4hayJR6adrxlq4Ej0JLpgfUXWaQVFqmQg== + dependencies: + comment-parser "^0.7.2" + debug "^4.1.1" + jsdoctypeparser "^6.1.0" + lodash "^4.17.15" + regextras "^0.7.0" + semver "^6.3.0" + spdx-expression-parse "^3.0.0" + +eslint-plugin-prettier@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" + integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint@6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +esrever@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" + integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g= + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" + integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect-puppeteer@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.1.1.tgz#cda2ab7b6fa27ac24eba273bbb0296a0de538e6d" + integrity sha512-xNpu6uYJL9Qrrp4Z31MOpDWK68zAi+2qg5aMQlyOTVZNy7cAgBZiPvKCN0C1JmP3jgPZfcxhetVjZLaw/KcJOQ== + +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.0.0, fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.0.3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs@^0.8.0: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +fecha@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" + integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-replace@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-2.0.1.tgz#6d9683a7ca20f8f9aabeabad07e4e2580f528550" + integrity sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ== + dependencies: + array-back "^2.0.0" + test-value "^3.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatbuffers@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-1.11.0.tgz#90a47e584dd7851ad7a913f5a0ee99c1d76ce59f" + integrity sha512-0PqFKtXI4MjxomI7jO4g5XfLPm/15g2R+5WGCHBGYGh0ihQiypnHlJ6bMmkkrAe0GzZ4d7PDAfCONKIPUxNF+A== + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flot@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/flot/-/flot-4.2.1.tgz#a44ea240decee51cbd75d97ca69ec12e59365d27" + integrity sha512-tnZ4Pg1upBSfSs52VVRPZqF8FUxeVVI124srTV/XNcwJR5ygjaCZuwnpkAuZAWFLZMg2OCHb53pB6VoVB7YT4g== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +fmin@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/fmin/-/fmin-0.0.2.tgz#59bbb40d43ffdc1c94cd00a568c41f95f1973017" + integrity sha1-Wbu0DUP/3ByUzQClaMQflfGXMBc= + dependencies: + contour_plot "^0.0.1" + json2module "^0.0.3" + rollup "^0.25.8" + tape "^4.5.1" + uglify-js "^2.6.2" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.0.0.tgz#0f9ff0219f9b6f1a1b10fa25d7cc5015e60c997a" + integrity sha512-Kc7LI0OlnWB0FRbDQO+nnDCfZr+LhFSJIP8kZppDXvuXI/opeMg3IrlMedBX/EGgOUK0ma5Hafgkdp3DuxgYdg== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^2.0.4" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1, function-bind@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-document@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" + integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs= + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-user-locale@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-1.3.0.tgz#21ea740e413541281ae7b2b42e70ee523b7725b2" + integrity sha512-c5N8P0upjxCF9unIC2vTA+B+8nN7kU/D/TeItMAVYhWIIksyoULM1aflKflXM3w+Ij6vF/JZys+QcwIoDuy3Ag== + dependencies: + lodash.once "^4.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +get-window@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f" + integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw== + dependencies: + get-document "1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1, glob@~7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globule@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== + dependencies: + glob "~7.1.1" + lodash "~4.17.12" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight-words-core@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" + integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-loader@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" + integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== + dependencies: + es6-templates "^0.2.3" + fastparse "^1.1.1" + html-minifier "^3.5.8" + loader-utils "^1.1.0" + object-assign "^4.1.1" + +html-minifier@^3.2.3, html-minifier@^3.5.8: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +immutable@3.8.2, immutable@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^6.3.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" + integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hotkey@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d" + integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA== + +is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-base64@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" + integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +jest-canvas-mock@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.1.2.tgz#0d16c9f91534f773fd132fc289f2e6b6db8faa28" + integrity sha512-1VI4PK4/X70yrSjYScYVkYJYbXYlZLKJkUrAlyHjQsfolv64aoFyIrmMDtqCjpYrpVvWYEcAGUaYv5DVJj00oQ== + dependencies: + cssfontparser "^1.2.1" + parse-color "^1.0.0" + +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.8.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-coverage-badges@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/jest-coverage-badges/-/jest-coverage-badges-1.1.2.tgz#a70786b139fd8fb685db732e1e2d916d8a47287e" + integrity sha512-44A7i2xR6os8+fWk8ZRM6W4fKiD2jwKOLU9eB3iTIIWACd9RbdvmiCNpQZTOsUBhKvz7aQ/ASFhu5JOEhWUOlg== + dependencies: + mkdirp "0.5.1" + +jest-diff@*: + version "26.0.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" + integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.0.0" + jest-get-type "^26.0.0" + pretty-format "^26.0.1" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-diff@^25.2.1: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" + integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-junit@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" + integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== + dependencies: + jest-validate "^24.0.0" + mkdirp "^0.5.1" + strip-ansi "^4.0.0" + xml "^1.0.1" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.0.0, jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" + integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== + dependencies: + import-local "^2.0.0" + jest-cli "^24.8.0" + +jquery.flot@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/jquery.flot/-/jquery.flot-0.8.3.tgz#81d2ec4ffdf0dee729c8a442e8faa399e9b48207" + integrity sha512-/tEE8J5NjwvStHDaCHkvTJpD7wDS4hE1OEL8xEmhgQfUe0gLUem923PIceNez1mz4yBNx6Hjv7pJcowLNd+nbg== + +jquery@3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" + integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + +jquery@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +js-base64@^2.1.8: + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdoctypeparser@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-6.1.0.tgz#acfb936c26300d98f1405cb03e20b06748e512a8" + integrity sha512-UCQBZ3xCUBv/PLfwKAJhp6jmGOSLFNKzrotXGNgbKhWvz27wPsCsVeP7gIcHPElQw2agBmynAitXqhxR58XAmA== + +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-bignum@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json-bignum/-/json-bignum-0.0.3.tgz#41163b50436c773d82424dbc20ed70db7604b8d7" + integrity sha1-QRY7UENsdz2CQk28IO1w23YEuNc= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json2module@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json2module/-/json2module-0.0.3.tgz#00fb5f4a9b7adfc3f0647c29cb17bcd1979be9b2" + integrity sha1-APtfSpt638PwZHwpyxe80Zeb6bI= + dependencies: + rw "^1.3.2" + +json5@2.x, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^4.0.1" + +less@^3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" + integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== + dependencies: + clone "^2.1.2" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@4.x, lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.once@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@4.17.15, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.12: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" + integrity sha1-beJlMXSt+12e3DPGnT6Sobdvrwg= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + +md5-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" + integrity sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + +memoize-one@^5.0.0, memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" + integrity sha1-fIekZGREwy11Q4VwkF8tvRsagFo= + dependencies: + map-or-similar "^1.5.0" + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-class-names@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge-class-names/-/merge-class-names-1.3.0.tgz#c4cdc1a981a81dd9afc27aa4287e912a337c5dee" + integrity sha512-k0Qaj36VBpKgdc8c188LEZvo6v/zzry/FUufwopWbMSp6/knfVFU/KIB55/hJjeIpg18IH2WskXJCRnM/1BrdQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" + integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" + integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +moment@2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + +moment@2.x: + version "2.25.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.25.3.tgz#252ff41319cf41e47761a1a88cab30edfe9808c0" + integrity sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1, nan@^2.13.2: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + +node-releases@^1.1.52, node-releases@^1.1.53: + version "1.1.55" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" + integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w== + +node-sass@^4.13.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.0.7: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.8: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.7.0, object-inspect@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" + integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ora@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pad-left@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pad-left/-/pad-left-2.1.0.tgz#16e6a3b2d44a8e138cb0838cc7cb403a4fc9e994" + integrity sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ= + dependencies: + repeat-string "^1.5.4" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +papaparse@4.6.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-4.6.3.tgz#742e5eaaa97fa6c7e1358d2934d8f18f44aee781" + integrity sha512-LRq7BrHC2kHPBYSD50aKuw/B/dGcg29omyJbKWY3KsYUZU69RKwaBHu13jGmCYBtOc4odsLCrFyk6imfyNubJQ== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-color@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" + integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= + dependencies: + color-convert "~0.5.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pixelmatch@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.0.tgz#6433386c6a830b0d9ee3962f9ad59695500677cd" + integrity sha512-TdleROuanI+Uo/4PcOAH7b7qgO4kjzJO8K4y/TBAo1wx/5BE8cn1B0I6Jfk3mKcJsGpWvX7zjM8OjU5o9i+aog== + dependencies: + pngjs "^4.0.1" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" + integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== + +popper.js@^1.14.4: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz#662b3dcb6354638b9213a55eed8913bcdc8d004a" + integrity sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.30" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.30.tgz#cc9378beffe46a02cbc4506a0477d05fcea9a8e2" + integrity sha512-nu/0m+NtIzoubO+xdAlwZl/u5S5vi/y6BCsoL8D+8IxsD3XvBS8X4YEADNIVXKVuQvduiucnRv+vPIqj56EGMQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prefix-style@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" + integrity sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^21.2.1: + version "21.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" + integrity sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.0.1: + version "26.0.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" + integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== + dependencies: + "@jest/types" "^26.0.1" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0, progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +puppeteer-core@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-1.18.1.tgz#37549e975273b7fa450e0f8a8023db6175ed049a" + integrity sha512-E/p4oIYnPZsCATQD5S6IKOBUnGG87h14OAXAmHjm+9SFIYLBUtY2AWg38Jfus9IjcAucnrYBv6A5372bte/S2g== + dependencies: + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +raf-schd@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + +raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc-align@^2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" + integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== + dependencies: + babel-runtime "^6.26.0" + dom-align "^1.7.0" + prop-types "^15.5.8" + rc-util "^4.0.4" + +rc-align@^3.0.0-rc.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-3.0.0.tgz#5b0510aaa12dfef7b8d79877d39e43de5ef831bc" + integrity sha512-/T/4LOlKJLFe8EwsORuc3pFWOJ8caUpj2vtKIHWea4PhakoleM7KDQsx0n1WDQENIeSfrP9P1FowVxAdvhjsvw== + dependencies: + classnames "2.x" + dom-align "^1.7.0" + rc-util "^4.12.0" + resize-observer-polyfill "^1.5.1" + +rc-animate@2.x: + version "2.11.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" + integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + css-animation "^1.3.2" + prop-types "15.x" + raf "^3.4.0" + rc-util "^4.15.3" + react-lifecycles-compat "^3.0.4" + +rc-animate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.0.0.tgz#f76d7051136b7d650fb3d29366a160e95a369c0a" + integrity sha512-+ANeyCei4lWSJHWTcocywdYAy6lpRdBva/7Fs3nBBiAngW/W+Gmx+gQEcsmcgQBqziWUYnR91Bk12ltR3GBHPA== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "^2.2.6" + raf "^3.4.0" + rc-util "^4.15.3" + +rc-cascader@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" + integrity sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ== + dependencies: + array-tree-filter "^2.1.0" + rc-trigger "^4.0.0" + rc-util "^4.0.4" + warning "^4.0.1" + +rc-drawer@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.3.tgz#cbcb04d4c07f0b66f2ece11d847f4a1bd80ea0b7" + integrity sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg== + dependencies: + classnames "^2.2.6" + rc-util "^4.16.1" + react-lifecycles-compat "^3.0.4" + +rc-slider@8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-8.7.1.tgz#9ed07362dc93489a38e654b21b8122ad70fd3c42" + integrity sha512-WMT5mRFUEcrLWwTxsyS8jYmlaMsTVCZIGENLikHsNv+tE8ThU2lCoPfi/xFNUfJFNFSBFP3MwPez9ZsJmNp13g== + dependencies: + babel-runtime "6.x" + classnames "^2.2.5" + prop-types "^15.5.4" + rc-tooltip "^3.7.0" + rc-util "^4.0.4" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + warning "^4.0.3" + +rc-time-picker@^3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2" + integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg== + dependencies: + classnames "2.x" + moment "2.x" + prop-types "^15.5.8" + raf "^3.4.1" + rc-trigger "^2.2.0" + react-lifecycles-compat "^3.0.4" + +rc-tooltip@^3.7.0: + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-3.7.3.tgz#280aec6afcaa44e8dff0480fbaff9e87fc00aecc" + integrity sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww== + dependencies: + babel-runtime "6.x" + prop-types "^15.5.8" + rc-trigger "^2.2.2" + +rc-trigger@^2.2.0, rc-trigger@^2.2.2: + version "2.6.5" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" + integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + prop-types "15.x" + rc-align "^2.4.0" + rc-animate "2.x" + rc-util "^4.4.0" + react-lifecycles-compat "^3.0.4" + +rc-trigger@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.1.0.tgz#6b13a41161716d6353e6324a01055efacb07cf71" + integrity sha512-EyQjO6aHDAPRvJeyPmg/yVL/8Bp7oA6Lf+4Ay2OyOwhZLzHHN8m+F2XrVWKpjg04eBXbuGBNiucIqv1d/ddE3w== + dependencies: + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^3.0.0-rc.0" + rc-animate "^3.0.0" + rc-util "^4.20.0" + +rc-util@^4.0.4, rc-util@^4.12.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.20.0, rc-util@^4.4.0: + version "4.20.5" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.5.tgz#f7c77569e971ae6a8ad56f899cadd22275398325" + integrity sha512-f67s4Dt1quBYhrVPq5QMKmK3eS2hN1NNIAyhaiG0HmvqiGYAXMQ7SP2AlGqv750vnzhJs38JklbkWT1/wjhFPg== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + +react-beautiful-dnd@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" + integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== + dependencies: + "@babel/runtime" "^7.8.4" + css-box-model "^1.2.0" + memoize-one "^5.1.1" + raf-schd "^4.0.2" + react-redux "^7.1.1" + redux "^4.0.4" + use-memo-one "^1.1.1" + +react-calendar@2.19.2: + version "2.19.2" + resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-2.19.2.tgz#496e78eb11a00aee1ae6b5d02d221ed1ca2db952" + integrity sha512-zKbWxwmYEg84grFsCJz9EYpnGqsZy0iV67dHzkVE0EhBdXMg2eISBQYvw4+t8zdy5ySxQkDhUW8X8ERbSyZPVw== + dependencies: + get-user-locale "^1.2.0" + merge-class-names "^1.1.1" + prop-types "^15.6.0" + react-lifecycles-compat "^3.0.4" + +react-color@2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.0.tgz#34956f0bac394f6c3bc01692fd695644cc775ffd" + integrity sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.11" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + +react-custom-scrollbars@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz#830fd9502927e97e8a78c2086813899b2a8b66db" + integrity sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts= + dependencies: + dom-css "^2.0.0" + prop-types "^15.5.10" + raf "^3.1.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.18.0" + +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-highlight-words@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.16.0.tgz#4b4b9824e3d2b98789d3e3b3aedb5e961ae1b7cf" + integrity sha512-q34TwCSJOL+5pVDv6LUj3amaoyXdNDwd7zRqVAvceOrO9g1haWLAglK6WkGLMNUa3PFN8EgGedLg/k8Gpndxqg== + dependencies: + highlight-words-core "^1.2.0" + memoize-one "^4.0.0" + prop-types "^15.5.8" + +react-hook-form@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.1.3.tgz#24610e11878c6bd143569ce203320f7367893e75" + integrity sha512-6+6wSge72A2Y7WGqMke4afOz0uDJ3gOPSysmYKkjJszSbmw8X8at7tJPzifnZ+cwLDR88b4on/D+jfH5azWbIw== + +react-immutable-proptypes@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" + integrity sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ== + dependencies: + invariant "^2.2.2" + +react-input-autosize@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" + integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== + dependencies: + prop-types "^15.5.8" + +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-popper@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.3.tgz#2c6cef7515a991256b4f0536cd4bdcb58a7b6af6" + integrity sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "<=0.2.2" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" + +react-redux@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + +react-storybook-addon-props-combinations@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-storybook-addon-props-combinations/-/react-storybook-addon-props-combinations-1.1.0.tgz#22a61794cc3c106bf44be809af3c3241f6988e72" + integrity sha512-gCHyLTkXthuP3wV5nQn3A6ZrBjYnRniRtVprSrq+7Vu9SX1jUhIEPvqdLdPVRmlq9rwgKAX2QVo6kNd95kZ7Hw== + dependencies: + object-hash "^1.1.8" + pretty-format "^21.2.1" + +react-table@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.0.0.tgz#3297e454cbffe916626b184f5394d7e7e098fa36" + integrity sha512-/RKUYLuqrupUs0qHdjdQLmgwdQ9mgXPnpshqv2T+OQUGhTu0XuLXVc6GOIywemXNf6qjL3dj81O6zALLK74Emw== + +react-transition-group@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683" + integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react-transition-group@^4.3.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +"react@>=15.0.0 <17.0.0": + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327" + integrity sha1-JYx479FT3fk8tWEjf2EYTzaW4yc= + +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regextras@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" + integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-in-file-webpack-plugin@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/replace-in-file-webpack-plugin/-/replace-in-file-webpack-plugin-1.0.6.tgz#eee7e139be967e8e48a0552f73037ed567b54dbd" + integrity sha512-+KRgNYL2nbc6nza6SeF+wTBNkovuHFTfJF8QIEqZg5MbwkYpU9no0kH2YU354wvY/BK8mAC2UKoJ7q+sJTvciw== + +replace-in-file@^4.1.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-4.3.1.tgz#c67c92178b38052008e379197cc0d86ca927f7b0" + integrity sha512-FqVvfmpqGTD2JRGI1JjJ86b24P17x/WWwGdxExeyJxnh/2rVQz2+jXfD1507UnnhEQw092X0u0DPCBf1WC4ooQ== + dependencies: + chalk "^2.4.2" + glob "^7.1.6" + yargs "^15.0.2" + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.83.0, request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@1.x, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@~1.15.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup@^0.25.8: + version "0.25.8" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.25.8.tgz#bf6ce83b87510d163446eeaa577ed6a6fc5835e0" + integrity sha1-v2zoO4dRDRY0Ru6qV37WpvxYNeA= + dependencies: + chalk "^1.1.1" + minimist "^1.2.0" + source-map-support "^0.3.2" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rw@1, rw@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + +rxjs@6.5.5, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + +sass-loader@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + integrity sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w== + dependencies: + clone-deep "^2.0.1" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + neo-async "^2.5.0" + pify "^3.0.0" + semver "^5.5.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +selection-is-backward@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" + integrity sha1-l6VGMxiKURq6ZBn8XB+pG0Z+a+E= + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.1.3: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serialize-javascript@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" + integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-git@^1.132.0: + version "1.132.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.132.0.tgz#53ac4c5ec9e74e37c2fd461e23309f22fcdf09b1" + integrity sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== + dependencies: + debug "^4.0.1" + +simple-is@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" + integrity sha1-Krt1qt453rXMgVzhDmGRFkhQuvA= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slate-base64-serializer@^0.2.111: + version "0.2.115" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.115.tgz#438e051959bde013b50507f3144257e74039ff7f" + integrity sha512-GnLV7bUW/UQ5j7rVIxCU5zdB6NOVsEU6YWsCp68dndIjSGTGLaQv2+WwV3NcnrGGZEYe5qgo33j2QWrPws2C1A== + dependencies: + isomorphic-base64 "^1.0.2" + +slate-dev-environment@^0.2.2: + version "0.2.5" + resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.5.tgz#481b6906fde5becc390db7c14edf97a4bb0029f2" + integrity sha512-oLD8Fclv/RqrDv6RYfN2CRzNcRXsUB99Qgcw5L/njTjxAdDPguV6edQ3DgUG9Q2pLFLhI15DwsKClzVfFzfwGQ== + dependencies: + is-in-browser "^1.1.3" + +slate-hotkeys@^0.2.9: + version "0.2.11" + resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.11.tgz#a94db117d9a98575671192329b05f23e6f485d6f" + integrity sha512-xhq/TlI74dRbO57O4ulGsvCcV4eaQ5nEEz9noZjeNLtNzFRd6lSgExRqAJqKGGIeJw+FnJ3OcqGvdb5CEc9/Ew== + dependencies: + is-hotkey "0.1.4" + slate-dev-environment "^0.2.2" + +slate-plain-serializer@^0.7.10: + version "0.7.13" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.7.13.tgz#6de8f5c645dd749f1b2e4426c20de74bfd213adf" + integrity sha512-TtrlaslxQBEMV0LYdf3s7VAbTxRPe1xaW10WNNGAzGA855/0RhkaHjKkQiRjHv5rvbRleVf7Nxr9fH+4uErfxQ== + +slate-prop-types@^0.5.41: + version "0.5.44" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.5.44.tgz#da60b69c3451c3bd6cdd60a45d308eeba7e83c76" + integrity sha512-JS0iW7uaciE/W3ADuzeN1HOnSjncQhHPXJ65nZNQzB0DF7mXVmbwQKI6cmCo/xKni7XRJT0JbWSpXFhEdPiBUA== + +slate-react-placeholder@^0.2.8: + version "0.2.9" + resolved "https://registry.yarnpkg.com/slate-react-placeholder/-/slate-react-placeholder-0.2.9.tgz#30f450a05d4871c7d1a27668ebe7907861e7ca74" + integrity sha512-YSJ9Gb4tGpbzPje3eNKtu26hWM8ApxTk9RzjK+6zfD5V/RMTkuWONk24y6c9lZk0OAYNZNUmrnb/QZfU3j9nag== + +slate@0.47.8: + version "0.47.8" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.47.8.tgz#1e987b74d8216d44ec56154f0e6d3c722ce21e6e" + integrity sha512-/Jt0eq4P40qZvtzeKIvNb+1N97zVICulGQgQoMDH0TI8h8B+5kqa1YeckRdRnuvfYJm3J/9lWn2V3J1PrF+hag== + dependencies: + debug "^3.1.0" + direction "^0.1.5" + esrever "^0.2.0" + is-plain-object "^2.0.4" + lodash "^4.17.4" + tiny-invariant "^1.0.1" + tiny-warning "^0.0.3" + type-of "^2.0.1" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" + integrity sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8= + dependencies: + source-map "0.1.32" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.1.32: + version "0.1.32" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" + integrity sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +storybook-dark-mode@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/storybook-dark-mode/-/storybook-dark-mode-0.4.0.tgz#d58f6d6591150138d666876d342d724d841af843" + integrity sha512-z6srmjsQxMVaaiyeeYav4wywloUzQQg64vX2ajdGViRsbfy9z3TbBcOBdnDzLLLCAx9S8ATly8njoy3S6KsEpg== + dependencies: + fast-deep-equal "^3.0.0" + memoizerific "^1.11.3" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trim@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" + integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +style-loader@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= + dependencies: + has-flag "^2.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table-layout@^0.4.3: + version "0.4.5" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378" + integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw== + dependencies: + array-back "^2.0.0" + deep-extend "~0.6.0" + lodash.padend "^4.6.1" + typical "^2.6.1" + wordwrapjs "^3.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tape@^4.5.1: + version "4.13.2" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.2.tgz#eb419b9d9bc004025b1a81a5b63093e07f425629" + integrity sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ== + dependencies: + deep-equal "~1.1.1" + defined "~1.0.0" + dotignore "~0.1.2" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.6" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.0.5" + minimist "~1.2.0" + object-inspect "~1.7.0" + resolve "~1.15.1" + resumer "~0.0.0" + string.prototype.trim "~1.2.1" + through "~2.3.8" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^2.3.4: + version "2.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz#a4014b311a61f87c6a1b217ef4f5a75bd0665a69" + integrity sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.12: + version "4.6.13" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.13.tgz#e879a7364a5e0db52ba4891ecde007422c56a916" + integrity sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +test-value@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92" + integrity sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ== + dependencies: + array-back "^2.0.0" + typical "^2.6.1" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@~2.3.4, through@~2.3.6, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.1, tiny-invariant@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" + integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== + +tinycolor2@1.4.1, tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-camel-case@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" + integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= + dependencies: + to-space-case "^1.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-no-case@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" + integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-space-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" + integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= + dependencies: + to-no-case "^1.0.0" + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tree-kill@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +ts-jest@24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.1.0.tgz#2eaa813271a2987b7e6c3fefbda196301c131734" + integrity sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + +ts-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.1.tgz#67939d5772e8a8c6bdaf6277ca023a4812da02ef" + integrity sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + +ts-node@8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" + integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "3.1.1" + +tslib@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= + +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@3.7.5: + version "3.7.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" + integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== + +typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + +ua-parser-js@^0.7.18: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^2.6.2: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use-memo-one@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" + integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +venn.js@~0.2.20: + version "0.2.20" + resolved "https://registry.yarnpkg.com/venn.js/-/venn.js-0.2.20.tgz#3f0e50cc75cba1f58692a8a32f67bd7aaf1aa6fa" + integrity sha512-bb5SYq/wamY9fvcuErb9a0FJkgIFHJjkLZWonQ+DoKKuDX3WPH2B4ouI1ce4K2iejBklQy6r1ly8nOGIyOCO6w== + dependencies: + d3-selection "^1.0.2" + d3-transition "^1.0.1" + fmin "0.0.2" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1, warning@^4.0.2, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" + integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== + dependencies: + chokidar "^2.1.8" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +wolfy87-eventemitter@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wolfy87-eventemitter/-/wolfy87-eventemitter-5.1.0.tgz#35c1ac0dd1ac0c15e35d981508fc22084a13a011" + integrity sha1-NcGsDdGsDBXjXZgVCPwiCEoToBE= + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrapjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" + integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw== + dependencies: + reduce-flatten "^1.0.1" + typical "^2.6.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + +xss@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" + integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A== + dependencies: + commander "^2.9.0" + cssfilter "0.0.10" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2, yaml@^1.8.3: + version "1.9.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" + integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== + dependencies: + "@babel/runtime" "^7.9.2" + +yargs-parser@10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.1: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.1: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.0, yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.0.2: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/data/plugins/youtube-video-panel/.circleci/config.yml b/data/plugins/youtube-video-panel/.circleci/config.yml new file mode 100755 index 0000000000000..9f5fabb7c3534 --- /dev/null +++ b/data/plugins/youtube-video-panel/.circleci/config.yml @@ -0,0 +1,67 @@ +version: 2.1 + +parameters: + ssh-fingerprint: + type: string + default: ${GITHUB_SSH_FINGERPRINT} + +aliases: + # Workflow filters + - &filter-only-master + branches: + only: master + - &filter-only-release + branches: + only: /^v[1-9]*[0-9]+\.[1-9]*[0-9]+\.x$/ + +workflows: + plugin_workflow: + jobs: + - build + +executors: + default_exec: # declares a reusable executor + docker: + - image: srclosson/grafana-plugin-ci-alpine:latest + e2e_exec: + docker: + - image: srclosson/grafana-plugin-ci-e2e:latest + +jobs: + build: + executor: default_exec + steps: + - checkout + - restore_cache: + name: restore node_modules + keys: + - build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: Install dependencies + command: | + mkdir ci + [ -f ~/project/node_modules/.bin/grafana-toolkit ] || yarn install --frozen-lockfile + - save_cache: + name: save node_modules + paths: + - ~/project/node_modules + key: build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} + - run: + name: Build and test frontend + command: ./node_modules/.bin/grafana-toolkit plugin:ci-build + - run: + name: Move results to ci folder + command: ./node_modules/.bin/grafana-toolkit plugin:ci-build --finish + - run: + name: Package distribution + command: | + ./node_modules/.bin/grafana-toolkit plugin:ci-package + - persist_to_workspace: + root: . + paths: + - ci/jobs/package + - ci/packages + - ci/dist + - ci/grafana-test-env + - store_artifacts: + path: ci diff --git a/data/plugins/youtube-video-panel/.codeclimate.yml b/data/plugins/youtube-video-panel/.codeclimate.yml new file mode 100644 index 0000000000000..5ec9380d02243 --- /dev/null +++ b/data/plugins/youtube-video-panel/.codeclimate.yml @@ -0,0 +1,8 @@ +exclude_patterns: +- "dist" +- "**/node_modules/" +- "**/*.d.ts" +- "src/libs/" +- "src/images/" +- "src/img/" +- "src/screenshots/" diff --git a/data/plugins/youtube-video-panel/.editorconfig b/data/plugins/youtube-video-panel/.editorconfig new file mode 100644 index 0000000000000..ba4e65a47fe05 --- /dev/null +++ b/data/plugins/youtube-video-panel/.editorconfig @@ -0,0 +1,16 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 120 + +[*.{js,ts,tsx,scss}] +quote_type = single + +[*.md] +trim_trailing_whitespace = false diff --git a/data/plugins/youtube-video-panel/.gitignore b/data/plugins/youtube-video-panel/.gitignore new file mode 100644 index 0000000000000..0a87d3aa05e13 --- /dev/null +++ b/data/plugins/youtube-video-panel/.gitignore @@ -0,0 +1,31 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +node_modules/ + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Compiled binary addons (https://nodejs.org/api/addons.html) +artifacts/ +work/ +ci/ +e2e-results/ + +# Editors +.idea + +!dist diff --git a/data/plugins/youtube-video-panel/.prettierrc.js b/data/plugins/youtube-video-panel/.prettierrc.js new file mode 100644 index 0000000000000..263dbd3b276ea --- /dev/null +++ b/data/plugins/youtube-video-panel/.prettierrc.js @@ -0,0 +1,3 @@ +module.exports = { + ...require("./node_modules/@grafana/toolkit/src/config/prettier.plugin.config.json"), +}; diff --git a/data/plugins/youtube-video-panel/CHANGELOG.md b/data/plugins/youtube-video-panel/CHANGELOG.md new file mode 100644 index 0000000000000..b25c0ac8d6a2e --- /dev/null +++ b/data/plugins/youtube-video-panel/CHANGELOG.md @@ -0,0 +1,7 @@ +# Change Log + +All notable changes to this project will be documented in this file. + +## v1.0.0 + +Initial Release diff --git a/data/plugins/youtube-video-panel/LICENSE b/data/plugins/youtube-video-panel/LICENSE new file mode 100644 index 0000000000000..8dada3edaf50d --- /dev/null +++ b/data/plugins/youtube-video-panel/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/data/plugins/youtube-video-panel/README.md b/data/plugins/youtube-video-panel/README.md new file mode 100644 index 0000000000000..77bc223a8bca1 --- /dev/null +++ b/data/plugins/youtube-video-panel/README.md @@ -0,0 +1,41 @@ +# Grafana Panel Plugin Template + + + +This template is a starting point for building Grafana Panel Plugins in Grafana 7.0+ + + +## What is Grafana Panel Plugin? +Panels are the building blocks of Grafana. They allow you to visualize data in different ways. While Grafana has several types of panels already built-in, you can also build your own panel, to add support for other visualizations. + +For more information about panels, refer to the documentation on [Panels](https://grafana.com/docs/grafana/latest/features/panels/panels/) + +## Getting started +1. Install dependencies +```BASH +yarn install +``` +2. Build plugin in development mode or run in watch mode +```BASH +yarn dev +``` +or +```BASH +yarn watch +``` +3. Build plugin in production mode +```BASH +yarn build +``` + +## Learn more +- [Build a panel plugin tutorial](https://grafana.com/tutorials/build-a-panel-plugin) +- [Grafana documentation](https://grafana.com/docs/) +- [Grafana Tutorials](https://grafana.com/tutorials/) - Grafana Tutorials are step-by-step guides that help you make the most of Grafana +- [Grafana UI Library](https://developers.grafana.com/ui) - UI components to help you build interfaces using Grafana Design System diff --git a/data/plugins/youtube-video-panel/appveyor.yml b/data/plugins/youtube-video-panel/appveyor.yml new file mode 100644 index 0000000000000..b1eef59f643b4 --- /dev/null +++ b/data/plugins/youtube-video-panel/appveyor.yml @@ -0,0 +1,26 @@ +# Test against the latest version of this Node.js version +environment: + nodejs_version: "12" + +# Local NPM Modules +cache: + - node_modules + +# Install scripts. (runs after repo cloning) +install: + # Get the latest stable version of Node.js or io.js + - ps: Install-Product node $env:nodejs_version + # install modules + - npm install -g yarn --quiet + - yarn install --pure-lockfile + +# Post-install test scripts. +test_script: + # Output useful info for debugging. + - node --version + - npm --version + +# Run the build +build_script: + - yarn dev # This will also run prettier! + - yarn build # make sure both scripts work diff --git a/data/plugins/youtube-video-panel/dist/CHANGELOG.md b/data/plugins/youtube-video-panel/dist/CHANGELOG.md new file mode 100644 index 0000000000000..b25c0ac8d6a2e --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/CHANGELOG.md @@ -0,0 +1,7 @@ +# Change Log + +All notable changes to this project will be documented in this file. + +## v1.0.0 + +Initial Release diff --git a/data/plugins/youtube-video-panel/dist/LICENSE b/data/plugins/youtube-video-panel/dist/LICENSE new file mode 100644 index 0000000000000..8dada3edaf50d --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/data/plugins/youtube-video-panel/dist/MANIFEST.txt b/data/plugins/youtube-video-panel/dist/MANIFEST.txt new file mode 100644 index 0000000000000..96e61fc0b00d1 --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/MANIFEST.txt @@ -0,0 +1,57 @@ + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +{ + "manifestVersion": "2.0.0", + "signatureType": "private", + "signedByOrg": "themike", + "signedByOrgName": "themike", + "rootUrls": [ + "https://app.logz.io/", + "https://app-us.logz.io/", + "https://app-eu.logz.io/", + "https://app-ca.logz.io/", + "https://app-au.logz.io/", + "https://app-uk.logz.io/", + "https://app-nl.logz.io/", + "https://app-wa.logz.io/", + "https://app-jp.logz.io/", + "https://app.logz.io/grafana-app", + "https://app-us.logz.io/grafana-app", + "https://app-eu.logz.io/grafana-app", + "https://app-ca.logz.io/grafana-app", + "https://app-au.logz.io/grafana-app", + "https://app-uk.logz.io/grafana-app", + "https://app-nl.logz.io/grafana-app", + "https://app-wa.logz.io/grafana-app", + "https://app-jp.logz.io/grafana-app", + "http://grafana-services:9990/", + "http://grafana-service:9990/grafana-app/" + ], + "plugin": "youtube-video-panel", + "version": "%VERSION%", + "time": 1714056828666, + "keyId": "7e4d0c6a708866e7", + "files": { + "LICENSE": "b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1", + "CHANGELOG.md": "f039df40cb9e6dffcd8eb814227ba03e47f686d447bfb45e5eae8bdf83fa9465", + "module.js.LICENSE.txt": "6fca9fb5ddbe9c73d84667146676a9fef623ecbd6529d700b20950e5a48853ba", + "module.js.map": "220f06e6005ab6355f620c53d7aee43c57f5c7c5b9ff3866c6fa7d3f9b1b7f64", + "plugin.json": "2f04e3aaa92c2c41aed7bc2d789a0d46d806a056d165170223e39e8774a1df10", + "README.md": "5ba9f6f81524312f230a70aa9e0745398dbca48307968635730f8ced78c70367", + "img/logo.svg": "1defc6f7e585c67657bcfd8fddc599ee7dfa82f8674413f49fa274c2cd453ec6", + "module.js": "f927e1f1f6b086aa1db4b09906631457b90fdb8d3363971563deb2da20d9c640" + } +} +-----BEGIN PGP SIGNATURE----- +Version: OpenPGP.js v4.10.11 +Comment: https://openpgpjs.org + +wrkEARMKAAYFAmYqbnwAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm551tAgkB/2pIydJKFSCnVuC1a/9us0LJ6pGhRZbE3pocDSbyMJnnSx5/ +SCPq6HdpBL6y5EBp26S1LNxZFy6agwc0KE2sV0ACCQDbCJklB3irrk06eei3 +/kx+YCTmfaxjeiY/yV2cIFfHINJFqEKohib0UbspcV1Dy6mtgJDAIjOHzc9n +8fJrZn9KUA== +=I4ji +-----END PGP SIGNATURE----- diff --git a/data/plugins/youtube-video-panel/dist/README.md b/data/plugins/youtube-video-panel/dist/README.md new file mode 100644 index 0000000000000..77bc223a8bca1 --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/README.md @@ -0,0 +1,41 @@ +# Grafana Panel Plugin Template + + + +This template is a starting point for building Grafana Panel Plugins in Grafana 7.0+ + + +## What is Grafana Panel Plugin? +Panels are the building blocks of Grafana. They allow you to visualize data in different ways. While Grafana has several types of panels already built-in, you can also build your own panel, to add support for other visualizations. + +For more information about panels, refer to the documentation on [Panels](https://grafana.com/docs/grafana/latest/features/panels/panels/) + +## Getting started +1. Install dependencies +```BASH +yarn install +``` +2. Build plugin in development mode or run in watch mode +```BASH +yarn dev +``` +or +```BASH +yarn watch +``` +3. Build plugin in production mode +```BASH +yarn build +``` + +## Learn more +- [Build a panel plugin tutorial](https://grafana.com/tutorials/build-a-panel-plugin) +- [Grafana documentation](https://grafana.com/docs/) +- [Grafana Tutorials](https://grafana.com/tutorials/) - Grafana Tutorials are step-by-step guides that help you make the most of Grafana +- [Grafana UI Library](https://developers.grafana.com/ui) - UI components to help you build interfaces using Grafana Design System diff --git a/data/plugins/youtube-video-panel/dist/img/logo.svg b/data/plugins/youtube-video-panel/dist/img/logo.svg new file mode 100644 index 0000000000000..3d284dea3af7f --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/module.js b/data/plugins/youtube-video-panel/dist/module.js new file mode 100644 index 0000000000000..507664628ee4a --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/module.js @@ -0,0 +1,3 @@ +/*! For license information please see module.js.LICENSE.txt */ +define(["emotion","react","@grafana/data","@grafana/ui"],(function(e,t,n,r){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(6);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=o({arrayFormat:"none"},t)),r=Object.create(null);return"string"!=typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),o=t.shift(),i=t.length>0?t.join("="):void 0;i=void 0===i?null:decodeURIComponent(i),n(decodeURIComponent(o),i,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("")};case"bracket":return function(t,n){return null===n?i(t,e):[i(t,e),"[]=",i(n,e)].join("")};default:return function(t,n){return null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}}(t=o({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){var a=[];return o.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return i(r,t)+"="+i(o,t)})).filter((function(e){return e.length>0})).join("&"):""}},function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,c,u=a(e),l=1;l= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import React from 'react';\nimport { PanelProps } from '@grafana/data';\nimport { VideoOptions } from 'types';\nimport { css, cx } from 'emotion';\nimport { stylesFactory } from '@grafana/ui';\nimport qs from 'query-string';\n\ninterface Props extends PanelProps {}\n\nexport const YoutubePanel: React.FC = ({ options, width, height }) => {\n const styles = getStyles();\n let videoURL: any = '';\n\n const youtubeParams = {\n loop: 0,\n autoplay: 0,\n playlist: options.videoId,\n };\n\n if (options.autoPlay) {\n youtubeParams.autoplay = 1;\n }\n\n if (options.loop) {\n youtubeParams.loop = 1;\n }\n\n videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams);\n\n return (\n \n \n \n );\n};\n\nconst getStyles = stylesFactory(() => {\n return {\n wrapper: css`\n position: absolute;\n `,\n video: css`\n top: 0;\n left: 0;\n `,\n };\n});\n","/* istanbul ignore file */\n\nimport { PanelPlugin } from '@grafana/data';\nimport { VideoOptions } from './types';\nimport { YoutubePanel } from './YoutubePanel';\n\nexport const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => {\n return builder\n .addTextInput({\n path: 'videoId',\n name: 'Video ID',\n description: 'The value after watch?v= in the URL.',\n defaultValue: 'vYZzMk0NkgM',\n settings: {\n placeholder: 'vYZzMk0NkgM',\n },\n })\n .addBooleanSwitch({\n path: 'autoPlay',\n name: 'Autoplay',\n defaultValue: true,\n })\n .addBooleanSwitch({\n path: 'loop',\n name: 'Loop',\n defaultValue: true,\n });\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/plugin.json b/data/plugins/youtube-video-panel/dist/plugin.json new file mode 100644 index 0000000000000..57e610fba7048 --- /dev/null +++ b/data/plugins/youtube-video-panel/dist/plugin.json @@ -0,0 +1,34 @@ +{ + "type": "panel", + "name": "Youtube Video Panel", + "id": "youtube-video-panel", + "info": { + "description": "Add youtube videos in grafana panels", + "author": { + "name": "iOrCohen", + "url": "" + }, + "keywords": [], + "logos": { + "small": "img/logo.svg", + "large": "img/logo.svg" + }, + "links": [ + { + "name": "Website", + "url": "https://github.com/grafana/simple-react-panel" + }, + { + "name": "License", + "url": "https://github.com/grafana/simple-react-panel/blob/master/LICENSE" + } + ], + "screenshots": [], + "version": "%VERSION%", + "updated": "%TODAY%" + }, + "dependencies": { + "grafanaVersion": "7.0.x", + "plugins": [] + } +} diff --git a/data/plugins/youtube-video-panel/docs/README.md b/data/plugins/youtube-video-panel/docs/README.md new file mode 100644 index 0000000000000..f044a5a5ea5ea --- /dev/null +++ b/data/plugins/youtube-video-panel/docs/README.md @@ -0,0 +1 @@ +TODO: add example docs structure diff --git a/data/plugins/youtube-video-panel/package.json b/data/plugins/youtube-video-panel/package.json new file mode 100644 index 0000000000000..6a5866e28bf00 --- /dev/null +++ b/data/plugins/youtube-video-panel/package.json @@ -0,0 +1,31 @@ +{ + "name": "youtube-video-panel", + "version": "1.0.0", + "description": "Add youtube videos in grafana panels", + "scripts": { + "build": "grafana-toolkit plugin:build", + "test": "grafana-toolkit plugin:test", + "dev": "grafana-toolkit plugin:dev", + "watch": "grafana-toolkit plugin:dev --watch" + }, + "repository": "github:grafana/simple-react-panel", + "author": "iOrCohen", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/grafana/simple-react-panel/issues", + "email": "plugins@grafana.com" + }, + "devDependencies": { + "@grafana/data": "next", + "@grafana/toolkit": "next", + "@grafana/ui": "next", + "emotion": "10.0.27" + }, + "engines": { + "node": ">=12 <13" + }, + "volta": { + "node": "17.9.1", + "yarn": "1.22.10" + } +} diff --git a/data/plugins/youtube-video-panel/src/YoutubePanel.tsx b/data/plugins/youtube-video-panel/src/YoutubePanel.tsx new file mode 100644 index 0000000000000..ded7c19f0127e --- /dev/null +++ b/data/plugins/youtube-video-panel/src/YoutubePanel.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { PanelProps } from '@grafana/data'; +import { VideoOptions } from 'types'; +import { css, cx } from 'emotion'; +import { stylesFactory } from '@grafana/ui'; +import qs from 'query-string'; + +interface Props extends PanelProps {} + +export const YoutubePanel: React.FC = ({ options, width, height }) => { + const styles = getStyles(); + let videoURL: any = ''; + + const youtubeParams = { + loop: 0, + autoplay: 0, + playlist: options.videoId, + }; + + if (options.autoPlay) { + youtubeParams.autoplay = 1; + } + + if (options.loop) { + youtubeParams.loop = 1; + } + + videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams); + + return ( +
+ +
+ ); +}; + +const getStyles = stylesFactory(() => { + return { + wrapper: css` + position: absolute; + `, + video: css` + top: 0; + left: 0; + `, + }; +}); diff --git a/data/plugins/youtube-video-panel/src/img/logo.svg b/data/plugins/youtube-video-panel/src/img/logo.svg new file mode 100644 index 0000000000000..3d284dea3af7f --- /dev/null +++ b/data/plugins/youtube-video-panel/src/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/src/module.test.ts b/data/plugins/youtube-video-panel/src/module.test.ts new file mode 100644 index 0000000000000..26feee77f134c --- /dev/null +++ b/data/plugins/youtube-video-panel/src/module.test.ts @@ -0,0 +1,6 @@ +// Just a stub test +describe('placeholder test', () => { + it('should return true', () => { + expect(true).toBeTruthy(); + }); +}); diff --git a/data/plugins/youtube-video-panel/src/module.ts b/data/plugins/youtube-video-panel/src/module.ts new file mode 100644 index 0000000000000..c9520fd7b8847 --- /dev/null +++ b/data/plugins/youtube-video-panel/src/module.ts @@ -0,0 +1,28 @@ +/* istanbul ignore file */ + +import { PanelPlugin } from '@grafana/data'; +import { VideoOptions } from './types'; +import { YoutubePanel } from './YoutubePanel'; + +export const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => { + return builder + .addTextInput({ + path: 'videoId', + name: 'Video ID', + description: 'The value after watch?v= in the URL.', + defaultValue: 'vYZzMk0NkgM', + settings: { + placeholder: 'vYZzMk0NkgM', + }, + }) + .addBooleanSwitch({ + path: 'autoPlay', + name: 'Autoplay', + defaultValue: true, + }) + .addBooleanSwitch({ + path: 'loop', + name: 'Loop', + defaultValue: true, + }); +}); diff --git a/data/plugins/youtube-video-panel/src/plugin.json b/data/plugins/youtube-video-panel/src/plugin.json new file mode 100644 index 0000000000000..57e610fba7048 --- /dev/null +++ b/data/plugins/youtube-video-panel/src/plugin.json @@ -0,0 +1,34 @@ +{ + "type": "panel", + "name": "Youtube Video Panel", + "id": "youtube-video-panel", + "info": { + "description": "Add youtube videos in grafana panels", + "author": { + "name": "iOrCohen", + "url": "" + }, + "keywords": [], + "logos": { + "small": "img/logo.svg", + "large": "img/logo.svg" + }, + "links": [ + { + "name": "Website", + "url": "https://github.com/grafana/simple-react-panel" + }, + { + "name": "License", + "url": "https://github.com/grafana/simple-react-panel/blob/master/LICENSE" + } + ], + "screenshots": [], + "version": "%VERSION%", + "updated": "%TODAY%" + }, + "dependencies": { + "grafanaVersion": "7.0.x", + "plugins": [] + } +} diff --git a/data/plugins/youtube-video-panel/src/types.ts b/data/plugins/youtube-video-panel/src/types.ts new file mode 100644 index 0000000000000..9e63ae961f046 --- /dev/null +++ b/data/plugins/youtube-video-panel/src/types.ts @@ -0,0 +1,6 @@ +export interface VideoOptions { + videoURL?: string; + videoId?: string; + autoPlay: boolean; + loop: boolean; +} diff --git a/data/plugins/youtube-video-panel/tsconfig.json b/data/plugins/youtube-video-panel/tsconfig.json new file mode 100644 index 0000000000000..211e352ef5eb0 --- /dev/null +++ b/data/plugins/youtube-video-panel/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "./node_modules/@grafana/toolkit/src/config/tsconfig.plugin.json", + "include": ["src", "types"], + "compilerOptions": { + "rootDir": "./src", + "baseUrl": "./src", + "typeRoots": ["./node_modules/@types"] + } +} diff --git a/data/plugins/youtube-video-panel/yarn.lock b/data/plugins/youtube-video-panel/yarn.lock new file mode 100644 index 0000000000000..9b4a796e73974 --- /dev/null +++ b/data/plugins/youtube-video-panel/yarn.lock @@ -0,0 +1,12988 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ant-design/css-animation@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.2.tgz#4ee5d2ec0fb7cc0a78b44e1c82628bd4621ac7e3" + integrity sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw== + +"@antv/adjust@~0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@antv/adjust/-/adjust-0.1.1.tgz#e263ab0e1a1941a648842fc086cf65a7e3b75e98" + integrity sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/attr@~0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@antv/attr/-/attr-0.1.2.tgz#2eeb122fcaaf851a2d8749abc7c60519d3f77e37" + integrity sha512-QXjP+T2I+pJQcwZx1oCA4tipG43vgeCeKcGGKahlcxb71OBAzjJZm1QbF4frKXcnOqRkxVXtCr70X9TRair3Ew== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/component@~0.3.3": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@antv/component/-/component-0.3.9.tgz#ed561c639b7738ce03ff63a866f59e251de82a17" + integrity sha512-Knh/Nq0S8UkTfZj4SL7XizagTfXYqjFAYIqFtOmUaKpRMgccUi7p1oA7fJdNPGktkndljy6fUmCWocEeBXRS2g== + dependencies: + "@antv/attr" "~0.1.2" + "@antv/g" "~3.3.5" + "@antv/util" "~1.3.1" + wolfy87-eventemitter "~5.1.0" + +"@antv/coord@~0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@antv/coord/-/coord-0.1.0.tgz#48a80ae36d07552f96657e7f8095227c63f0c0a9" + integrity sha512-W1R8h3Jfb3AfMBVfCreFPMVetgEYuwHBIGn0+d3EgYXe2ckOF8XWjkpGF1fZhOMHREMr+Gt27NGiQh8yBdLUgg== + dependencies: + "@antv/util" "~1.3.1" + +"@antv/g2@3.5.15": + version "3.5.15" + resolved "https://registry.yarnpkg.com/@antv/g2/-/g2-3.5.15.tgz#5951808f88210f4a45ca1acb38fb25a743b4a578" + integrity sha512-gWN28V/BRHrCe6O12WcJ7ji9UE8XETSQ146ur4zMu5I50ZO7kxc/3s038N0iyuJh3Em9nlrTjfhqjlysogrX7g== + dependencies: + "@antv/adjust" "~0.1.0" + "@antv/attr" "~0.1.2" + "@antv/component" "~0.3.3" + "@antv/coord" "~0.1.0" + "@antv/g" "~3.3.6" + "@antv/scale" "~0.1.1" + "@antv/util" "~1.3.1" + venn.js "~0.2.20" + wolfy87-eventemitter "~5.1.0" + +"@antv/g@~3.3.5", "@antv/g@~3.3.6": + version "3.3.6" + resolved "https://registry.yarnpkg.com/@antv/g/-/g-3.3.6.tgz#11fed9ddc9ed4e5a2aa244b7c8abb982a003f201" + integrity sha512-2GtyTz++s0BbN6s0ZL2/nrqGYCkd52pVoNH92YkrTdTOvpO6Z4DNoo6jGVgZdPX6Nzwli6yduC8MinVAhE8X6g== + dependencies: + "@antv/gl-matrix" "~2.7.1" + "@antv/util" "~1.3.1" + d3-ease "~1.0.3" + d3-interpolate "~1.1.5" + d3-timer "~1.0.6" + wolfy87-eventemitter "~5.1.0" + +"@antv/gl-matrix@^2.7.1", "@antv/gl-matrix@~2.7.1": + version "2.7.1" + resolved "https://registry.yarnpkg.com/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz#acb8e37f7ab3df01345aba4372d7942be42eba14" + integrity sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== + +"@antv/scale@~0.1.1": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@antv/scale/-/scale-0.1.5.tgz#243266e8b9047cf64b2fdfc40f9834cf0846496e" + integrity sha512-7RAu4iH5+Hk21h6+aBMiDTfmLf4IibK2SWjx/+E4f4AXRpqucO+8u7IbZdFkakAWxvqhJtN3oePJuTKqOMcmlg== + dependencies: + "@antv/util" "~1.3.1" + fecha "~2.3.3" + +"@antv/util@~1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@antv/util/-/util-1.3.1.tgz#30a34b201ff9126ec0d58c72c8166a9c3e644ccd" + integrity sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA== + dependencies: + "@antv/gl-matrix" "^2.7.1" + +"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== + dependencies: + browserslist "^4.11.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.7.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== + dependencies: + "@babel/types" "^7.12.11" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== + dependencies: + "@babel/types" "^7.9.6" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== + dependencies: + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" + +"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== + dependencies: + "@babel/types" "^7.12.11" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== + +"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.9.5" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" + integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" + integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" + integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.6" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== + dependencies: + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== + dependencies: + "@babel/helper-validator-identifier" "^7.9.5" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.3": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@braintree/sanitize-url@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-4.0.0.tgz#2cda79ffd67b6ea919a63b5e1a883b92d636e844" + integrity sha512-bOoFoTxuEUuri/v1q0OXN0HIrZ2EiZlRSKdveU8vS5xf2+g0TmpXhmxkTc1s+XWR5xZNoVU4uvf/Mher98tfLw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== + dependencies: + "@emotion/sheet" "0.9.4" + "@emotion/stylis" "0.8.5" + "@emotion/utils" "0.11.3" + "@emotion/weak-memoize" "0.2.5" + +"@emotion/core@^10.0.27", "@emotion/core@^10.0.9": + version "10.0.28" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" + integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== + dependencies: + "@babel/runtime" "^7.5.5" + "@emotion/cache" "^10.0.27" + "@emotion/css" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +"@emotion/css@^10.0.27", "@emotion/css@^10.0.9": + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== + dependencies: + "@emotion/serialize" "^0.11.15" + "@emotion/utils" "0.11.3" + babel-plugin-emotion "^10.0.27" + +"@emotion/hash@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== + dependencies: + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/unitless" "0.7.5" + "@emotion/utils" "0.11.3" + csstype "^2.5.7" + +"@emotion/sheet@0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== + +"@emotion/stylis@0.8.5": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@0.7.5": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@emotion/utils@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== + +"@emotion/weak-memoize@0.2.5": + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== + +"@grafana/data@7.2.0", "@grafana/data@next": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-7.2.0.tgz#29ae47a1c8a331d12fa269ef900922ade829c0aa" + integrity sha512-m0QlXY8EIVE+RHeb4dUazqMB/VQy8gJWOioyizudGOXlH/C8hTk+Z/BeHEc8mbHGvINmmtcj7BPhPSUFP9jTdQ== + dependencies: + "@braintree/sanitize-url" "4.0.0" + apache-arrow "0.16.0" + lodash "4.17.19" + rxjs "6.6.2" + xss "1.0.6" + +"@grafana/e2e-selectors@7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-7.2.0.tgz#6a9d3613399ac487929fdda52ec6fde60dd834ac" + integrity sha512-h4qDCeRRBrfN1+h9ppCuO4LgW7jV+d+4Z8mYjVBXe3/FniMZEHpq60D6pMJrXx+/ip0df9Aj7taAWY7FsQKlHA== + dependencies: + "@grafana/tsconfig" "^1.0.0-rc1" + commander "5.0.0" + execa "4.0.0" + typescript "3.9.3" + yaml "^1.8.3" + +"@grafana/eslint-config@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-2.0.3.tgz#f5a90eb689458142d41974285c5225f43229175b" + integrity sha512-ib8d4bJaomxyXfe10KcBAqMzQkEwhJ2VekpEr7eLSIfINv1S5eA223WhIMY/7ZgVmjkxp1mf7i/U30cM4KXrUg== + dependencies: + "@typescript-eslint/eslint-plugin" "4.0.1" + "@typescript-eslint/parser" "4.0.1" + eslint "7.4.0" + eslint-config-prettier "6.11.0" + eslint-plugin-jsdoc "28.6.1" + eslint-plugin-prettier "3.1.4" + eslint-plugin-react-hooks "4.0.5" + prettier "1.19.1" + typescript "4.0.2" + +"@grafana/slate-react@0.22.9-grafana": + version "0.22.9-grafana" + resolved "https://registry.yarnpkg.com/@grafana/slate-react/-/slate-react-0.22.9-grafana.tgz#07f35f0ffc018f616b9f82fa6e5ba65fae75c6a0" + integrity sha512-9NYjwabVOUQ/e4Y/Wm+sgePM65rb/gju59D52t4O42HsIm9exXv+SLajEBF/HiLHzuH5V+5uuHajbzv0vuE2VA== + dependencies: + debug "^3.1.0" + get-window "^1.1.1" + is-window "^1.0.2" + lodash "^4.1.1" + memoize-one "^4.0.0" + prop-types "^15.5.8" + react-immutable-proptypes "^2.1.0" + selection-is-backward "^1.0.0" + slate-base64-serializer "^0.2.111" + slate-dev-environment "^0.2.2" + slate-hotkeys "^0.2.9" + slate-plain-serializer "^0.7.10" + slate-prop-types "^0.5.41" + slate-react-placeholder "^0.2.8" + tiny-invariant "^1.0.1" + tiny-warning "^0.0.3" + +"@grafana/toolkit@next": + version "7.3.5" + resolved "https://registry.yarnpkg.com/@grafana/toolkit/-/toolkit-7.3.5.tgz#219e143abcbbc65f85b2ed397781c3698500cc94" + integrity sha512-l1KcQqWAj9W/rlacvssayQ5UGpGgPP1h2dUB+PuA/5JSP4MuZ2dKn7YxrJfrNSm9Gau17mamv2BsEOCssY3mzg== + dependencies: + "@babel/core" "7.9.0" + "@babel/preset-env" "7.9.0" + "@grafana/data" next + "@grafana/eslint-config" "2.0.3" + "@grafana/tsconfig" "^1.0.0-rc1" + "@grafana/ui" next + "@types/command-exists" "^1.2.0" + "@types/execa" "^0.9.0" + "@types/expect-puppeteer" "3.3.1" + "@types/fs-extra" "^8.1.0" + "@types/inquirer" "^6.0.3" + "@types/jest" "24.0.13" + "@types/node" "^12.0.4" + "@types/prettier" "^1.16.4" + "@types/puppeteer-core" "1.9.0" + "@types/react-dev-utils" "^9.0.4" + "@types/rimraf" "^2.0.3" + "@types/semver" "^6.0.0" + "@types/tmp" "^0.1.0" + "@types/webpack" "4.41.7" + "@typescript-eslint/eslint-plugin" "4.0.1" + "@typescript-eslint/parser" "4.0.1" + axios "0.19.2" + babel-jest "24.8.0" + babel-loader "8.1.0" + babel-plugin-angularjs-annotate "0.10.0" + chalk "^2.4.2" + command-exists "^1.2.8" + commander "^5.0.0" + concurrently "4.1.0" + copy-webpack-plugin "5.1.1" + css-loader "3.4.2" + eslint "7.4.0" + eslint-config-prettier "6.11.0" + eslint-plugin-jsdoc "28.6.1" + eslint-plugin-prettier "3.1.4" + eslint-plugin-react-hooks "4.0.5" + execa "^1.0.0" + expect-puppeteer "4.1.1" + file-loader "5.0.2" + fork-ts-checker-webpack-plugin "1.0.0" + fs-extra "^8.1.0" + globby "^10.0.1" + html-loader "0.5.5" + html-webpack-plugin "^3.2.0" + inquirer "^6.3.1" + jest "^25" + jest-canvas-mock "2.1.2" + jest-coverage-badges "^1.1.2" + jest-environment-jsdom-fifteen "^1.0.2" + jest-junit "^6.4.0" + less "^3.11.1" + less-loader "^5.0.0" + lodash "4.17.19" + md5-file "^4.0.0" + mini-css-extract-plugin "^0.7.0" + node-sass "^4.13.1" + optimize-css-assets-webpack-plugin "^5.0.3" + ora "^4.0.3" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + postcss-flexbugs-fixes "4.2.0" + postcss-loader "3.0.0" + postcss-preset-env "6.7.0" + prettier "^1.19.1" + puppeteer-core "1.18.1" + react-dev-utils "^10.2.1" + replace-in-file "^4.1.0" + replace-in-file-webpack-plugin "^1.0.6" + rimraf "^3.0.0" + sass-loader "8.0.2" + semver "^7.1.3" + simple-git "^1.132.0" + style-loader "1.1.3" + terser-webpack-plugin "2.3.5" + ts-jest "26.3.0" + ts-loader "6.2.1" + ts-node "8.8.1" + tslib "2.0.1" + typescript "4.0.2" + url-loader "^2.0.1" + webpack "4.41.5" + +"@grafana/tsconfig@^1.0.0-rc1": + version "1.0.0-rc1" + resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.0.0-rc1.tgz#d07ea16755a50cae21000113f30546b61647a200" + integrity sha512-nucKPGyzlSKYSiJk5RA8GzMdVWhdYNdF+Hh65AXxjD9PlY69JKr5wANj8bVdQboag6dgg0BFKqgKPyY+YtV4Iw== + +"@grafana/ui@next": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-7.2.0.tgz#a5ed28ab1ff5ce8dc5426b86e924afa564cf862b" + integrity sha512-rVdHla4JACEkOo1Zxa9+MUbYAEeJ5P392QSRHpWeKiLQk9d6Poct0pw9pdKERbft0Y7n+q1Tqm32/jEwfqEMUw== + dependencies: + "@emotion/core" "^10.0.27" + "@grafana/data" "7.2.0" + "@grafana/e2e-selectors" "7.2.0" + "@grafana/slate-react" "0.22.9-grafana" + "@grafana/tsconfig" "^1.0.0-rc1" + "@iconscout/react-unicons" "1.1.4" + "@torkelo/react-select" "3.0.8" + "@types/react-beautiful-dnd" "12.1.2" + "@types/react-color" "3.0.1" + "@types/react-select" "3.0.8" + "@types/react-table" "7.0.12" + "@types/slate" "0.47.1" + "@types/slate-react" "0.22.5" + bizcharts "^3.5.8" + classnames "2.2.6" + d3 "5.15.0" + emotion "10.0.27" + immutable "3.8.2" + jquery "3.5.1" + lodash "4.17.19" + moment "2.24.0" + monaco-editor "0.20.0" + papaparse "5.3.0" + rc-cascader "1.0.1" + rc-drawer "3.1.3" + rc-slider "9.3.1" + rc-time-picker "^3.7.3" + react "16.12.0" + react-beautiful-dnd "13.0.0" + react-calendar "2.19.2" + react-color "2.18.0" + react-custom-scrollbars "4.2.1" + react-dom "16.12.0" + react-highlight-words "0.16.0" + react-hook-form "5.1.3" + react-monaco-editor "0.36.0" + react-popper "1.3.3" + react-storybook-addon-props-combinations "1.1.0" + react-table "7.0.0" + react-transition-group "4.3.0" + slate "0.47.8" + tinycolor2 "1.4.1" + +"@icons/material@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" + integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== + +"@iconscout/react-unicons@1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@iconscout/react-unicons/-/react-unicons-1.1.4.tgz#30731707e1baa49ab1c3198a5e0121be86b8928a" + integrity sha512-lhTSU3nKvzt1OwsRfFyK194QcQbE1Q4rRm6d5BOnKyZB+SN4qRv7tS4wLQgwk/pQyzn14Qw70nGA+tuKLRqcJg== + dependencies: + react ">=15.0.0 <17.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + jest-message-util "^25.5.0" + jest-util "^25.5.0" + slash "^3.0.0" + +"@jest/core@^25.5.4": + version "25.5.4" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" + integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA== + dependencies: + "@jest/console" "^25.5.0" + "@jest/reporters" "^25.5.1" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^25.5.0" + jest-config "^25.5.4" + jest-haste-map "^25.5.1" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-resolve-dependencies "^25.5.4" + jest-runner "^25.5.4" + jest-runtime "^25.5.4" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + jest-watcher "^25.5.0" + micromatch "^4.0.2" + p-each-series "^2.1.0" + realpath-native "^2.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^24.3.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== + dependencies: + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + +"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== + dependencies: + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + lolex "^5.0.0" + +"@jest/globals@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" + integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + +"@jest/reporters@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" + integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^25.5.1" + jest-resolve "^25.5.1" + jest-util "^25.5.0" + jest-worker "^25.5.0" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^3.1.0" + terminal-link "^2.0.0" + v8-to-istanbul "^4.1.3" + optionalDependencies: + node-notifier "^6.0.0" + +"@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/source-map@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" + integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== + dependencies: + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^25.5.4": + version "25.5.4" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" + integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== + dependencies: + "@jest/test-result" "^25.5.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-runner "^25.5.4" + jest-runtime "^25.5.4" + +"@jest/transform@^24.8.0", "@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/transform@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" + integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^25.5.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-regex-util "^25.2.6" + jest-util "^25.5.0" + micromatch "^4.0.2" + pirates "^4.0.1" + realpath-native "^2.0.0" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^24.3.0", "@jest/types@^24.8.0", "@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" + integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@torkelo/react-select@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@torkelo/react-select/-/react-select-3.0.8.tgz#04bfc877118af425f97eac2b471b66705484ee4a" + integrity sha512-becmEGnaOQpUcZS7kjQLaxjY0WKJcFFvAOTWIiU1XfwBV1sdCSgYFGWT+QhkCdRlP2Ux5U4cKhTUsWSeI9FsIA== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/cache" "^10.0.9" + "@emotion/core" "^10.0.9" + "@emotion/css" "^10.0.9" + memoize-one "^5.0.0" + prop-types "^15.6.0" + react-input-autosize "^2.2.2" + react-transition-group "^4.3.0" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/babel__core@^7.1.0": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" + integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== + dependencies: + "@babel/types" "^7.3.0" + +"@types/body-parser@*": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/clean-css@*": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d" + integrity sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ== + dependencies: + "@types/node" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/command-exists@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" + integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== + +"@types/connect-history-api-fallback@*": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz#4772b79b8b53185f0f4c9deab09236baf76ee3b4" + integrity sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.33" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== + dependencies: + "@types/node" "*" + +"@types/eslint@*": + version "6.8.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-6.8.1.tgz#e26f365a5dda12445d1d5a17eb70efd7c844a3d8" + integrity sha512-eutiEpQ4SN7kdF8QVDPyiSSy7ZFM+werJVw6/mRxLGbG4oet6/p81WFjSIcuY9PzM+dsu25Yh5EAUmQ9aJC1gg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.44" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" + integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/execa@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93" + integrity sha512-mgfd93RhzjYBUHHV532turHC2j4l/qxsF/PbfDmprHDEUHmNZGlDn1CEsulGK3AfsPdhkWzZQT/S/k0UGhLGsA== + dependencies: + "@types/node" "*" + +"@types/expect-puppeteer@3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/expect-puppeteer/-/expect-puppeteer-3.3.1.tgz#46e5944bf425b86ea13a563c7c8b86901414988d" + integrity sha512-3raSnf28NelDtv0ksvQPZs410taJZ4d70vA8sVzmbRPV04fpmQm9/BOxUCloETD/ZI1EXRpv0pzOQKhPTbm4jg== + dependencies: + "@types/jest" "*" + "@types/puppeteer" "*" + +"@types/express-serve-static-core@*": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz#dfe61f870eb549dc6d7e12050901847c7d7e915b" + integrity sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.6" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e" + integrity sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/flatbuffers@^1.9.1": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@types/flatbuffers/-/flatbuffers-1.10.0.tgz#aa74e30ffdc86445f2f060e1808fc9d56b5603ba" + integrity sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA== + +"@types/fs-extra@^8.1.0": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" + integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w== + dependencies: + "@types/node" "*" + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== + dependencies: + "@types/node" "*" + +"@types/html-minifier@*": + version "3.5.3" + resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f" + integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg== + dependencies: + "@types/clean-css" "*" + "@types/relateurl" "*" + "@types/uglify-js" "*" + +"@types/html-webpack-plugin@*": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.3.tgz#865323e30e82560c0ca898dbf9f6f9d1c541cd7f" + integrity sha512-Y7dsVhTn75IaD4lMIY02UP1L8e0ou8KQu8DKPJAegEFKdJR28/8ejayDG8ykfR0DtYCx3dCEHIkdpN8AOB6txQ== + dependencies: + "@types/html-minifier" "*" + "@types/tapable" "*" + "@types/webpack" "*" + +"@types/http-proxy-middleware@*": + version "0.19.3" + resolved "https://registry.yarnpkg.com/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz#b2eb96fbc0f9ac7250b5d9c4c53aade049497d03" + integrity sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA== + dependencies: + "@types/connect" "*" + "@types/http-proxy" "*" + "@types/node" "*" + +"@types/http-proxy@*": + version "1.17.4" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" + integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + dependencies: + "@types/node" "*" + +"@types/inquirer@^6.0.3": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" + integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== + dependencies: + "@types/through" "*" + rxjs "^6.4.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" + integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== + +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest-diff@*": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-24.3.0.tgz#29e237a3d954babfe6e23cc59b57ecd8ca8d858d" + integrity sha512-vx1CRDeDUwQ0Pc7v+hS61O1ETA81kD04IMEC0hS1kPyVtHDdZrokAvpF7MT9VI/fVSzicelUZNCepDvhRV1PeA== + dependencies: + jest-diff "*" + +"@types/jest@*": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" + integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== + dependencies: + jest-diff "^25.2.1" + pretty-format "^25.2.1" + +"@types/jest@24.0.13": + version "24.0.13" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9" + integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww== + dependencies: + "@types/jest-diff" "*" + +"@types/jest@26.x": + version "26.0.20" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" + integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.3": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" + integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/mime@*": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.2.tgz#857a118d8634c84bba7ae14088e4508490cd5da5" + integrity sha512-4kPlzbljFcsttWEq6aBW0OZe6BDajAmyvr2xknBG92tejQnvdGtT9+kXSZ580DqpxY9qG2xeQVF9Dq0ymUTo5Q== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.0.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" + integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== + +"@types/node@^12.0.4": + version "12.12.42" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.42.tgz#d0d1149336bd07540dd1ea576692829d575dec34" + integrity sha512-R/9QdYFLL9dE9l5cWWzWIZByVGFd7lk7JVOJ7KD+E1SJ4gni7XJRLz9QTjyYQiHIqEAgku9VgxdLjMlhhUaAFg== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^1.16.4", "@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/puppeteer-core@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-1.9.0.tgz#5ceb397e3ff769081fb07d71289b5009392d24d3" + integrity sha512-YJwGTq0a8xZxN7/QDeW59XMdKTRNzDTc8ZVBPDB6J13GgXn1+QzgMA8pAq1/bj2FD0R7xj3nYoZra10b0HLzFw== + dependencies: + "@types/puppeteer" "*" + +"@types/puppeteer@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-3.0.0.tgz#24cdcc131e319477608d893f0017e08befd70423" + integrity sha512-59+fkfHHXHzX5rgoXIMnZyzum7ZLx/Wc3fhsOduFThpTpKbzzdBHMZsrkKGLunimB4Ds/tI5lXTRLALK8Mmnhg== + dependencies: + "@types/node" "*" + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/qs@*": + version "6.9.3" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03" + integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA== + +"@types/range-parser@*": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/react-beautiful-dnd@12.1.2": + version "12.1.2" + resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-12.1.2.tgz#dfd1bdb072e92c1363e5f7a4c1842eaf95f77b21" + integrity sha512-h+0mA4cHmzL4BhyCniB6ZSSZhfO9LpXXbnhdAfa2k7klS03woiOT+Dh5AchY6eoQXk3vQVtqn40YY3u+MwFs8A== + dependencies: + "@types/react" "*" + +"@types/react-color@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.1.tgz#5433e2f503ea0e0831cbc6fd0c20f8157d93add0" + integrity sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw== + dependencies: + "@types/react" "*" + +"@types/react-dev-utils@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@types/react-dev-utils/-/react-dev-utils-9.0.4.tgz#3e4bee79b7536777cef219427ab1d38adc24f3f2" + integrity sha512-8cv9rAeSP1EmyRQAbZ/i6uYtai1VoKHGSBwDyCLM82wCkqoh3WPjJgI1pfi2kiLc0C5hNU7DLo7/c4hylfHLWg== + dependencies: + "@types/eslint" "*" + "@types/express" "*" + "@types/html-webpack-plugin" "*" + "@types/webpack" "*" + "@types/webpack-dev-server" "*" + +"@types/react-dom@*": + version "16.9.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" + integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== + dependencies: + "@types/react" "*" + +"@types/react-select@3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.0.8.tgz#b824a12d438dd493c30ffff49a805f797602a837" + integrity sha512-0763TXYZc8bTiHM+DUnWoy9Rg5mk6PxYWBrEe6Fkjgc0Kv0r1RqjZk9/BrK4wdM0RNjYjixlFPnUhOJb76sMGg== + dependencies: + "@types/react" "*" + "@types/react-dom" "*" + "@types/react-transition-group" "*" + +"@types/react-table@7.0.12": + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.0.12.tgz#cb57c8dfb110f8c2d0f04b9d44a70f9235a13b27" + integrity sha512-x/8nFrCjr1ySs51pkHsDQz3t+nW94qS/M9mpyLoweJNd9YKFzJ2mbVcUshfcMOyR1/UR+6lfz2EKA1lzOoJz+w== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@*": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.0.tgz#882839db465df1320e4753e6e9f70ca7e9b4d46d" + integrity sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.35" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" + integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/react@^16.x": + version "16.9.51" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.51.tgz#f8aa51ffa9996f1387f63686696d9b59713d2b60" + integrity sha512-lQa12IyO+DMlnSZ3+AGHRUiUcpK47aakMMoBG8f7HGxJT8Yfe+WE128HIXaHOHVPReAW0oDS3KAI0JI2DDe1PQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/relateurl@*": + version "0.2.28" + resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" + integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= + +"@types/rimraf@^2.0.3": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" + integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q== + dependencies: + "@types/glob" "*" + "@types/node" "*" + +"@types/semver@^6.0.0": + version "6.2.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" + integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== + +"@types/serve-static@*": + version "1.13.4" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.4.tgz#6662a93583e5a6cabca1b23592eb91e12fa80e7c" + integrity sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug== + dependencies: + "@types/express-serve-static-core" "*" + "@types/mime" "*" + +"@types/slate-react@0.22.5": + version "0.22.5" + resolved "https://registry.yarnpkg.com/@types/slate-react/-/slate-react-0.22.5.tgz#a10796758aa6b3133e1c777959facbf8806959f7" + integrity sha512-WKJic5LlNRNUCnD6lEdlOZCcXWoDN8Ais2CmwVMn8pdt5Kh8hJsTYhXawNxOShPIOLVB+G+aVZNAXAAubEOpaw== + dependencies: + "@types/react" "*" + "@types/slate" "*" + immutable "^3.8.2" + +"@types/slate@*": + version "0.47.7" + resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.7.tgz#fec860e24456fdf9f1169f69aadd7ce64707881f" + integrity sha512-Vy4E9lOKGFc5msZMwLWtVN9nrGYsdk6S7jXdC0Wf26UoMqJCS3yzXbNoFILSoCh7fq57ftJZrM6+8kkC/yT+LA== + dependencies: + "@types/react" "*" + immutable "^3.8.2" + +"@types/slate@0.47.1": + version "0.47.1" + resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.1.tgz#6c66f82df085c764039eea2229be763f7e1906fd" + integrity sha512-2ZlnWI6/RYMXxeGFIeZtvmaXAeYAJh4ZVumziqVl77/liNEi9hOwkUTU2zFu+j/z21v385I2WVPl8sgadxfzXg== + dependencies: + "@types/react" "*" + immutable "^3.8.2" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/tapable@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" + integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== + +"@types/text-encoding-utf-8@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz#908d884af1114e5d8df47597b1e04f833383d23d" + integrity sha512-GpIEYaS+yNfYqpowLLziiY42pyaL+lThd/wMh6tTubaKuG4IRkXqqyxK7Nddn3BvpUg2+go3Gv/jbXvAFMRjiQ== + +"@types/through@*": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + dependencies: + "@types/node" "*" + +"@types/tmp@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" + integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== + +"@types/uglify-js@*": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" + integrity sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ== + dependencies: + source-map "^0.6.1" + +"@types/webpack-dev-server@*": + version "3.11.0" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#bcc3b85e7dc6ac2db25330610513f2228c2fcfb2" + integrity sha512-3+86AgSzl18n5P1iUP9/lz3G3GMztCp+wxdDvVuNhx1sr1jE79GpYfKHL8k+Vht3N74K2n98CuAEw4YPJCYtDA== + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/http-proxy-middleware" "*" + "@types/serve-static" "*" + "@types/webpack" "*" + +"@types/webpack-sources@*": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" + integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.6.1" + +"@types/webpack@*": + version "4.41.13" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.13.tgz#988d114c8913d039b8a0e0502a7fe4f1f84f3d5e" + integrity sha512-RYmIHOWSxnTTa765N6jJBVE45pd2SYNblEYshVDduLw6RhocazNmRzE5/ytvBD8IkDMH6DI+bcrqxh8NILimBA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/webpack@4.41.7": + version "4.41.7" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" + integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" + integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^15.0.0": + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.0.1.tgz#88bde9239e29d688315718552cf80a3490491017" + integrity sha512-pQZtXupCn11O4AwpYVUX4PDFfmIJl90ZgrEBg0CEcqlwvPiG0uY81fimr1oMFblZnpKAq6prrT9a59pj1x58rw== + dependencies: + "@typescript-eslint/experimental-utils" "4.0.1" + "@typescript-eslint/scope-manager" "4.0.1" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.0.1.tgz#7d9a3ab6821ad5274dad2186c1aa0d93afd696eb" + integrity sha512-gAqOjLiHoED79iYTt3F4uSHrYmg/GPz/zGezdB0jAdr6S6gwNiR/j7cTZ8nREKVzMVKLd9G3xbg1sV9GClW3sw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.0.1" + "@typescript-eslint/types" "4.0.1" + "@typescript-eslint/typescript-estree" "4.0.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.0.1.tgz#73772080db7a7a4534a35d719e006f503e664dc3" + integrity sha512-1+qLmXHNAWSQ7RB6fdSQszAiA7JTwzakj5cNYjBTUmpH2cqilxMZEIV+DRKjVZs8NzP3ALmKexB0w/ExjcK9Iw== + dependencies: + "@typescript-eslint/scope-manager" "4.0.1" + "@typescript-eslint/types" "4.0.1" + "@typescript-eslint/typescript-estree" "4.0.1" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.0.1.tgz#24d93c3000bdfcc5a157dc4d32b742405a8631b5" + integrity sha512-u3YEXVJ8jsj7QCJk3om0Y457fy2euEOkkzxIB/LKU3MdyI+FJ2gI0M4aKEaXzwCSfNDiZ13a3lDo5DVozc+XLQ== + dependencies: + "@typescript-eslint/types" "4.0.1" + "@typescript-eslint/visitor-keys" "4.0.1" + +"@typescript-eslint/types@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2" + integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg== + +"@typescript-eslint/typescript-estree@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.0.1.tgz#29a43c7060641ec51c902d9f50ac7c5866ec479f" + integrity sha512-zGzleORFXrRWRJAMLTB2iJD1IZbCPkg4hsI8mGdpYlKaqzvKYSEWVAYh14eauaR+qIoZVWrXgYSXqLtTlxotiw== + dependencies: + "@typescript-eslint/types" "4.0.1" + "@typescript-eslint/visitor-keys" "4.0.1" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.0.1.tgz#d4e8de62775f2a6db71c7e8539633680039fdd6c" + integrity sha512-yBSqd6FjnTzbg5RUy9J+9kJEyQjTI34JdGMJz+9ttlJzLCnGkBikxw+N5n2VDcc3CesbIEJ0MnZc5uRYnrEnCw== + dependencies: + "@typescript-eslint/types" "4.0.1" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^6.0.1, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.0, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +add-dom-event-listener@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" + integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== + dependencies: + object-assign "4.x" + +add-px-to-style@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" + integrity sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo= + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-arrow@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/apache-arrow/-/apache-arrow-0.16.0.tgz#7ee7a6397d1a2d6349aed90c6ce5b92362e79881" + integrity sha512-hiabMZb2XgHiNK6f7C/2x/fyGS85PoCdkeMhJDyZipaJy1il1BJMDDEa3VLvM6mdxsG61pY1zev6zWetOj8Eog== + dependencies: + "@types/flatbuffers" "^1.9.1" + "@types/node" "^12.0.4" + "@types/text-encoding-utf-8" "^1.0.1" + command-line-args "5.0.2" + command-line-usage "5.0.5" + flatbuffers "1.11.0" + json-bignum "^0.0.3" + pad-left "^2.1.0" + text-encoding-utf-8 "^1.0.2" + tslib "^1.9.3" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argv-tools@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/argv-tools/-/argv-tools-0.1.2.tgz#fc4918a70775b8cc5f8296fa0cfea137bd8a8229" + integrity sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg== + dependencies: + array-back "^2.0.0" + find-replace "^2.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.0" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" + integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001061" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.30" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +axios@0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-jest@24.8.0: + version "24.8.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" + integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== + dependencies: + "@jest/transform" "^24.8.0" + "@jest/types" "^24.8.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.6.0" + chalk "^2.4.2" + slash "^2.0.0" + +babel-jest@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" + integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== + dependencies: + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-angularjs-annotate@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/babel-plugin-angularjs-annotate/-/babel-plugin-angularjs-annotate-0.10.0.tgz#4213b3aaae494a087aad0b8237c5d0716d22ca76" + integrity sha512-NPE7FOAxcLPCUR/kNkrhHIjoScR3RyIlRH3yRn79j8EZWtpILVnCOdA9yKfsOmRh6BHnLHKl8ZAThc+YDd/QwQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/types" "^7.2.0" + simple-is "~0.2.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-emotion@^10.0.27: + version "10.0.33" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" + integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@emotion/hash" "0.8.0" + "@emotion/memoize" "0.7.4" + "@emotion/serialize" "^0.11.16" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + +babel-plugin-jest-hoist@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" + integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.0.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-preset-current-node-syntax@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" + integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +babel-preset-jest@^24.6.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + +babel-preset-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" + integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== + dependencies: + babel-plugin-jest-hoist "^25.5.0" + babel-preset-current-node-syntax "^0.1.2" + +babel-runtime@6.x, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bizcharts@^3.5.8: + version "3.5.9" + resolved "https://registry.yarnpkg.com/bizcharts/-/bizcharts-3.5.9.tgz#b4c56c8bc5e8567f65748aeb3916902c4e9c98c0" + integrity sha512-1GI1SWNHfU3xRYGh4b4Dn6gfHMaOZnl0EXewZGEL5V5/m97k2kBonedA0LvtdrOQZRAAM+sP1uwny/ttkNsnEQ== + dependencies: + "@antv/g2" "3.5.15" + "@babel/runtime" "^7.7.6" + invariant "^2.2.2" + lodash.debounce "^4.0.8" + prop-types "^15.6.0" + resize-observer-polyfill "^1.5.1" + warning "^3.0.0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== + dependencies: + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" + node-releases "^1.1.53" + pkg-up "^2.0.0" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-from@1.x, buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +cacache@^12.0.2, cacache@^12.0.3: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: + version "1.0.30001066" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" + integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.3.0, chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classnames@2.2.6, classnames@2.x, classnames@^2.2.1, classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clean-css@4.2.x: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" + integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1, clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-convert@~0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" + integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.0.2.tgz#c4e56b016636af1323cf485aa25c3cb203dfbbe4" + integrity sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA== + dependencies: + argv-tools "^0.1.1" + array-back "^2.0.0" + find-replace "^2.0.1" + lodash.camelcase "^4.3.0" + typical "^2.6.1" + +command-line-usage@5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-5.0.5.tgz#5f25933ffe6dedd983c635d38a21d7e623fda357" + integrity sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA== + dependencies: + array-back "^2.0.0" + chalk "^2.4.1" + table-layout "^0.4.3" + typical "^2.6.1" + +commander@2, commander@^2.20.0, commander@^2.9.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== + +commander@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" + integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== + +commander@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +comment-parser@^0.7.5: + version "0.7.6" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" + integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-classes@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" + integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= + dependencies: + component-indexof "0.0.3" + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-indexof@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" + integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concurrently@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33" + integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg== + dependencies: + chalk "^2.4.1" + date-fns "^1.23.0" + lodash "^4.17.10" + read-pkg "^4.0.1" + rxjs "^6.3.3" + spawn-command "^0.0.2-1" + supports-color "^4.5.0" + tree-kill "^1.1.0" + yargs "^12.0.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contour_plot@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/contour_plot/-/contour_plot-0.0.1.tgz#475870f032b8e338412aa5fc507880f0bf495c77" + integrity sha1-R1hw8DK44zhBKqX8UHiA8L9JXHc= + +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== + dependencies: + cacache "^12.0.3" + find-cache-dir "^2.1.0" + glob-parent "^3.1.0" + globby "^7.1.1" + is-glob "^4.0.1" + loader-utils "^1.2.3" + minimatch "^3.0.4" + normalize-path "^3.0.0" + p-limit "^2.2.1" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + webpack-log "^2.0.0" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-emotion@^10.0.27: + version "10.0.27" + resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.27.tgz#cb4fa2db750f6ca6f9a001a33fbf1f6c46789503" + integrity sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg== + dependencies: + "@emotion/cache" "^10.0.27" + "@emotion/serialize" "^0.11.15" + "@emotion/sheet" "0.9.4" + "@emotion/utils" "0.11.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-context@<=0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" + integrity sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A== + dependencies: + fbjs "^0.8.0" + gud "^1.0.0" + +cross-spawn@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-animation@^1.3.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" + integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog== + dependencies: + babel-runtime "6.x" + component-classes "^1.2.5" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-box-model@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== + dependencies: + tiny-invariant "^1.0.6" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + +cssfontparser@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" + integrity sha1-9AIvyPlwDGgCnVQghK+69CWj8+M= + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^2.2.0, csstype@^2.5.7, csstype@^2.6.7: + version "2.6.10" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" + integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + +csstype@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" + integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" + integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== + +d3-axis@1: + version "1.0.12" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" + integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== + +d3-brush@1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" + integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3-chord@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" + integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== + dependencies: + d3-array "1" + d3-path "1" + +d3-collection@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" + integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== + +d3-color@1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" + integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== + +d3-contour@1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" + integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== + dependencies: + d3-array "^1.1.1" + +d3-dispatch@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +d3-drag@1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" + integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== + dependencies: + d3-dispatch "1" + d3-selection "1" + +d3-dsv@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" + integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== + dependencies: + commander "2" + iconv-lite "0.4" + rw "1" + +d3-ease@1, d3-ease@~1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" + integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== + +d3-fetch@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" + integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== + dependencies: + d3-dsv "1" + +d3-force@1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" + integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== + dependencies: + d3-collection "1" + d3-dispatch "1" + d3-quadtree "1" + d3-timer "1" + +d3-format@1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" + integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== + +d3-geo@1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" + integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== + dependencies: + d3-array "1" + +d3-hierarchy@1: + version "1.1.9" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" + integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== + +d3-interpolate@1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" + integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== + dependencies: + d3-color "1" + +d3-interpolate@~1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" + integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== + dependencies: + d3-color "1" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +d3-polygon@1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" + integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== + +d3-quadtree@1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" + integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== + +d3-random@1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" + integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== + +d3-scale-chromatic@1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" + integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== + dependencies: + d3-color "1" + d3-interpolate "1" + +d3-scale@2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" + integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== + dependencies: + d3-array "^1.2.0" + d3-collection "1" + d3-format "1" + d3-interpolate "1" + d3-time "1" + d3-time-format "2" + +d3-selection@1, d3-selection@^1.0.2, d3-selection@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" + integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== + +d3-shape@1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +d3-time-format@2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== + dependencies: + d3-time "1" + +d3-time@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" + integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== + +d3-timer@1, d3-timer@~1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" + integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== + +d3-transition@1, d3-transition@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" + integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== + dependencies: + d3-color "1" + d3-dispatch "1" + d3-ease "1" + d3-interpolate "1" + d3-selection "^1.1.0" + d3-timer "1" + +d3-voronoi@1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" + integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== + +d3-zoom@1: + version "1.8.3" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" + integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== + dependencies: + d3-dispatch "1" + d3-drag "1" + d3-interpolate "1" + d3-selection "1" + d3-transition "1" + +d3@5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" + integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== + dependencies: + d3-array "1" + d3-axis "1" + d3-brush "1" + d3-chord "1" + d3-collection "1" + d3-color "1" + d3-contour "1" + d3-dispatch "1" + d3-drag "1" + d3-dsv "1" + d3-ease "1" + d3-fetch "1" + d3-force "1" + d3-format "1" + d3-geo "1" + d3-hierarchy "1" + d3-interpolate "1" + d3-path "1" + d3-polygon "1" + d3-quadtree "1" + d3-random "1" + d3-scale "2" + d3-scale-chromatic "1" + d3-selection "1" + d3-shape "1" + d3-time "1" + d3-time-format "2" + d3-timer "1" + d3-transition "1" + d3-voronoi "1" + d3-zoom "1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +date-fns@^1.23.0: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" + integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dir-glob@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +direction@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" + integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew= + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-align@^1.7.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" + integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-css@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" + integrity sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI= + dependencies: + add-px-to-style "1.0.0" + prefix-style "2.0.1" + to-camel-case "1.0.0" + +dom-helpers@^5.0.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^2.6.7" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: + version "1.3.452" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.452.tgz#ef6877702722471aa044a2429336cd450629934d" + integrity sha512-IdbjgCEqDvcU/1kUQa6C49I2NZOY3SBmU9Eus7mdFdJJBqn0Lg1Epfi/T4nqVcxTNBEGhcjwMhY1EysMBsXZrw== + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +emotion@10.0.27: + version "10.0.27" + resolved "https://registry.yarnpkg.com/emotion/-/emotion-10.0.27.tgz#f9ca5df98630980a23c819a56262560562e5d75e" + integrity sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g== + dependencies: + babel-plugin-emotion "^10.0.27" + create-emotion "^10.0.27" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" + integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + dependencies: + es6-promise "^4.0.3" + +es6-templates@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" + integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= + dependencies: + recast "~0.11.12" + through "~2.3.6" + +escape-string-regexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== + dependencies: + get-stdin "^6.0.0" + +eslint-plugin-jsdoc@28.6.1: + version "28.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-28.6.1.tgz#c9e9da59d0d3cef4fb45ffb91c0acde43af4e418" + integrity sha512-Z3y7hcNPDuhL339D1KOf9SY8pMAxYxhaG4QLtu3KVn20k/hNF1u6WQv44wvuSCb6OfPJ4say37RUlSNqIjR+mw== + dependencies: + comment-parser "^0.7.5" + debug "^4.1.1" + jsdoctypeparser "^7.0.0" + lodash "^4.17.15" + regextras "^0.7.1" + semver "^7.3.2" + spdx-expression-parse "^3.0.1" + +eslint-plugin-prettier@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" + integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.5.tgz#4879003aa38e5d05d0312175beb6e4a1f617bfcf" + integrity sha512-3YLSjoArsE2rUwL8li4Yxx1SUg3DQWp+78N3bcJQGWVZckcp+yeQGsap/MSq05+thJk57o+Ww4PtZukXGL02TQ== + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" + integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint-visitor-keys@^1.2.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f" + integrity sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.0.0" + eslint-visitor-keys "^1.2.0" + espree "^7.1.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.14" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.1.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +esrever@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" + integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g= + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" + integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect-puppeteer@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.1.1.tgz#cda2ab7b6fa27ac24eba273bbb0296a0de538e6d" + integrity sha512-xNpu6uYJL9Qrrp4Z31MOpDWK68zAi+2qg5aMQlyOTVZNy7cAgBZiPvKCN0C1JmP3jgPZfcxhetVjZLaw/KcJOQ== + +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== + dependencies: + "@jest/types" "^25.5.0" + ansi-styles "^4.0.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-glob@^3.0.3: + version "3.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" + integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-glob@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" + integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs@^0.8.0: + version "0.8.17" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" + integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +fecha@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" + integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-5.0.2.tgz#7f3d8b4ac85a5e8df61338cfec95d7405f971caa" + integrity sha512-QMiQ+WBkGLejKe81HU8SZ9PovsU/5uaLo0JdTCEXOYv7i7jfAjHZi1tcwp9tSASJPOmmHZtbdCervFmXMH/Dcg== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" + integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-replace@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-2.0.1.tgz#6d9683a7ca20f8f9aabeabad07e4e2580f528550" + integrity sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ== + dependencies: + array-back "^2.0.0" + test-value "^3.0.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatbuffers@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-1.11.0.tgz#90a47e584dd7851ad7a913f5a0ee99c1d76ce59f" + integrity sha512-0PqFKtXI4MjxomI7jO4g5XfLPm/15g2R+5WGCHBGYGh0ihQiypnHlJ6bMmkkrAe0GzZ4d7PDAfCONKIPUxNF+A== + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +fmin@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/fmin/-/fmin-0.0.2.tgz#59bbb40d43ffdc1c94cd00a568c41f95f1973017" + integrity sha1-Wbu0DUP/3ByUzQClaMQflfGXMBc= + dependencies: + contour_plot "^0.0.1" + json2module "^0.0.3" + rollup "^0.25.8" + tape "^4.5.1" + uglify-js "^2.6.2" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.0.0.tgz#0f9ff0219f9b6f1a1b10fa25d7cc5015e60c997a" + integrity sha512-Kc7LI0OlnWB0FRbDQO+nnDCfZr+LhFSJIP8kZppDXvuXI/opeMg3IrlMedBX/EGgOUK0ma5Hafgkdp3DuxgYdg== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^2.0.4" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + +fork-ts-checker-webpack-plugin@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" + integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== + dependencies: + babel-code-frame "^6.22.0" + chalk "^2.4.1" + chokidar "^3.3.0" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" + integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1, function-bind@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-document@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" + integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs= + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-user-locale@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-1.3.0.tgz#21ea740e413541281ae7b2b42e70ee523b7725b2" + integrity sha512-c5N8P0upjxCF9unIC2vTA+B+8nN7kU/D/TeItMAVYhWIIksyoULM1aflKflXM3w+Ij6vF/JZys+QcwIoDuy3Ag== + dependencies: + lodash.once "^4.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +get-window@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f" + integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw== + dependencies: + get-document "1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1, glob@~7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globule@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== + dependencies: + glob "~7.1.1" + lodash "~4.17.12" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +highlight-words-core@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" + integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-loader@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" + integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== + dependencies: + es6-templates "^0.2.3" + fastparse "^1.1.1" + html-minifier "^3.5.8" + loader-utils "^1.1.0" + object-assign "^4.1.1" + +html-minifier@^3.2.3, html-minifier@^3.5.8: + version "3.5.21" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" + integrity sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immer@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" + integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== + +immutable@3.8.2, immutable@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" + integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^2.4.2" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.2.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +inquirer@^6.3.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-hotkey@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d" + integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA== + +is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" + integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isomorphic-base64@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" + integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM= + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-canvas-mock@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.1.2.tgz#0d16c9f91534f773fd132fc289f2e6b6db8faa28" + integrity sha512-1VI4PK4/X70yrSjYScYVkYJYbXYlZLKJkUrAlyHjQsfolv64aoFyIrmMDtqCjpYrpVvWYEcAGUaYv5DVJj00oQ== + dependencies: + cssfontparser "^1.2.1" + parse-color "^1.0.0" + +jest-changed-files@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" + integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== + dependencies: + "@jest/types" "^25.5.0" + execa "^3.2.0" + throat "^5.0.0" + +jest-cli@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" + integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw== + dependencies: + "@jest/core" "^25.5.4" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^25.5.4" + jest-util "^25.5.0" + jest-validate "^25.5.0" + prompts "^2.0.1" + realpath-native "^2.0.0" + yargs "^15.3.1" + +jest-config@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" + integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^25.5.4" + "@jest/types" "^25.5.0" + babel-jest "^25.5.1" + chalk "^3.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^25.5.0" + jest-environment-node "^25.5.0" + jest-get-type "^25.2.6" + jest-jasmine2 "^25.5.4" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + micromatch "^4.0.2" + pretty-format "^25.5.0" + realpath-native "^2.0.0" + +jest-coverage-badges@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/jest-coverage-badges/-/jest-coverage-badges-1.1.2.tgz#a70786b139fd8fb685db732e1e2d916d8a47287e" + integrity sha512-44A7i2xR6os8+fWk8ZRM6W4fKiD2jwKOLU9eB3iTIIWACd9RbdvmiCNpQZTOsUBhKvz7aQ/ASFhu5JOEhWUOlg== + dependencies: + mkdirp "0.5.1" + +jest-diff@*: + version "26.0.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" + integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.0.0" + jest-get-type "^26.0.0" + pretty-format "^26.0.1" + +jest-diff@^25.2.1, jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-diff@^26.0.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== + dependencies: + detect-newline "^3.0.0" + +jest-each@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" + integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + jest-get-type "^25.2.6" + jest-util "^25.5.0" + pretty-format "^25.5.0" + +jest-environment-jsdom-fifteen@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz#49a0af55e0d32737a6114a1575dd714702ad63b0" + integrity sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg== + dependencies: + "@jest/environment" "^24.3.0" + "@jest/fake-timers" "^24.3.0" + "@jest/types" "^24.3.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^15.2.1" + +jest-environment-jsdom@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" + integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + jsdom "^15.2.1" + +jest-environment-node@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" + integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + semver "^6.3.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" + integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-haste-map@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" + integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== + dependencies: + "@jest/types" "^25.5.0" + "@types/graceful-fs" "^4.1.2" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-serializer "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + which "^2.0.2" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" + integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + chalk "^3.0.0" + co "^4.6.0" + expect "^25.5.0" + is-generator-fn "^2.0.0" + jest-each "^25.5.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-runtime "^25.5.4" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + pretty-format "^25.5.0" + throat "^5.0.0" + +jest-junit@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" + integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== + dependencies: + jest-validate "^24.0.0" + mkdirp "^0.5.1" + strip-ansi "^4.0.0" + xml "^1.0.1" + +jest-leak-detector@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" + integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== + dependencies: + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== + dependencies: + chalk "^3.0.0" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== + dependencies: + "@jest/types" "^25.5.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== + +jest-resolve-dependencies@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" + integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw== + dependencies: + "@jest/types" "^25.5.0" + jest-regex-util "^25.2.6" + jest-snapshot "^25.5.1" + +jest-resolve@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" + integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== + dependencies: + "@jest/types" "^25.5.0" + browser-resolve "^1.11.3" + chalk "^3.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.1" + read-pkg-up "^7.0.1" + realpath-native "^2.0.0" + resolve "^1.17.0" + slash "^3.0.0" + +jest-runner@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" + integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-docblock "^25.3.0" + jest-haste-map "^25.5.1" + jest-jasmine2 "^25.5.4" + jest-leak-detector "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" + jest-runtime "^25.5.4" + jest-util "^25.5.0" + jest-worker "^25.5.0" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" + integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/globals" "^25.5.2" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-haste-map "^25.5.1" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + realpath-native "^2.0.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-serializer@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" + integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== + dependencies: + graceful-fs "^4.2.4" + +jest-snapshot@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" + integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/prettier" "^1.19.0" + chalk "^3.0.0" + expect "^25.5.0" + graceful-fs "^4.2.4" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" + make-dir "^3.0.0" + natural-compare "^1.4.0" + pretty-format "^25.5.0" + semver "^6.3.0" + +jest-util@26.x: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + make-dir "^3.0.0" + +jest-validate@^24.0.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-validate@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" + integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== + dependencies: + "@jest/types" "^25.5.0" + camelcase "^5.3.1" + chalk "^3.0.0" + jest-get-type "^25.2.6" + leven "^3.1.0" + pretty-format "^25.5.0" + +jest-watcher@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" + integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== + dependencies: + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.5.0" + string-length "^3.1.0" + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.1.0, jest-worker@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^25: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" + integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ== + dependencies: + "@jest/core" "^25.5.4" + import-local "^3.0.2" + jest-cli "^25.5.4" + +jquery@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +js-base64@^2.1.8: + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdoctypeparser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-7.0.0.tgz#957192fbcb8c574240092cca4635383a6ed706eb" + integrity sha512-6vWPn5qSy+MbgCVjXsQKVkRywhs+IxFU7Chw72DKsWoGueYp6QX8eTc55+EA0yPGYfhmglb1gfi283asXirfGQ== + +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== + dependencies: + abab "^2.0.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" + array-equal "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.1" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.2.0" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-bignum@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json-bignum/-/json-bignum-0.0.3.tgz#41163b50436c773d82424dbc20ed70db7604b8d7" + integrity sha1-QRY7UENsdz2CQk28IO1w23YEuNc= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json2module@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/json2module/-/json2module-0.0.3.tgz#00fb5f4a9b7adfc3f0647c29cb17bcd1979be9b2" + integrity sha1-APtfSpt638PwZHwpyxe80Zeb6bI= + dependencies: + rw "^1.3.2" + +json5@2.x, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +less-loader@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" + integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^4.0.1" + +less@^3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" + integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== + dependencies: + clone "^2.1.2" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.memoize@4.x, lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.once@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + +lodash.padend@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@4.17.19: + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== + +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.12: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +material-colors@^1.2.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== + +md5-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" + integrity sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memoize-one@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" + integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== + +memoize-one@^5.0.0, memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-class-names@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge-class-names/-/merge-class-names-1.3.0.tgz#c4cdc1a981a81dd9afc27aa4287e912a337c5dee" + integrity sha512-k0Qaj36VBpKgdc8c188LEZvo6v/zzry/FUufwopWbMSp6/knfVFU/KIB55/hJjeIpg18IH2WskXJCRnM/1BrdQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4: + version "2.4.5" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" + integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" + integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkdirp@1.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +moment@2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + +moment@2.x: + version "2.26.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" + integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== + +monaco-editor@*: + version "0.21.2" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.21.2.tgz#37054e63e480d51a2dd17d609dcfb192304d5605" + integrity sha512-jS51RLuzMaoJpYbu7F6TPuWpnWTLD4kjRW0+AZzcryvbxrTwhNy1KC9yboyKpgMTahpUbDUsuQULoo0GV1EPqg== + +monaco-editor@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.20.0.tgz#5d5009343a550124426cb4d965a4d27a348b4dea" + integrity sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1, nan@^2.13.2: + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" + integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== + dependencies: + growly "^1.3.0" + is-wsl "^2.1.1" + semver "^6.3.0" + shellwords "^0.1.1" + which "^1.3.1" + +node-releases@^1.1.52, node-releases@^1.1.53: + version "1.1.56" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" + integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== + +node-sass@^4.13.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.8: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.7.0, object-inspect@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-is@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" + integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" + integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ora@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" + integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.2.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pad-left@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pad-left/-/pad-left-2.1.0.tgz#16e6a3b2d44a8e138cb0838cc7cb403a4fc9e994" + integrity sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ= + dependencies: + repeat-string "^1.5.4" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +papaparse@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" + integrity sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-color@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" + integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= + dependencies: + color-convert "~0.5.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pixelmatch@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.0.tgz#6433386c6a830b0d9ee3962f9ad59695500677cd" + integrity sha512-TdleROuanI+Uo/4PcOAH7b7qgO4kjzJO8K4y/TBAo1wx/5BE8cn1B0I6Jfk3mKcJsGpWvX7zjM8OjU5o9i+aog== + dependencies: + pngjs "^4.0.1" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" + integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== + +popper.js@^1.14.4: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz#662b3dcb6354638b9213a55eed8913bcdc8d004a" + integrity sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" + integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" + integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.23: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prefix-style@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" + integrity sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY= + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@1.19.1, prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^21.2.1: + version "21.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" + integrity sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^26.0.1: + version "26.0.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" + integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== + dependencies: + "@jest/types" "^26.0.1" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +private@^0.1.8, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0, progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +puppeteer-core@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-1.18.1.tgz#37549e975273b7fa450e0f8a8023db6175ed049a" + integrity sha512-E/p4oIYnPZsCATQD5S6IKOBUnGG87h14OAXAmHjm+9SFIYLBUtY2AWg38Jfus9IjcAucnrYBv6A5372bte/S2g== + dependencies: + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +raf-schd@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" + integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== + +raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc-align@^2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" + integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== + dependencies: + babel-runtime "^6.26.0" + dom-align "^1.7.0" + prop-types "^15.5.8" + rc-util "^4.0.4" + +rc-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-3.0.0.tgz#5b0510aaa12dfef7b8d79877d39e43de5ef831bc" + integrity sha512-/T/4LOlKJLFe8EwsORuc3pFWOJ8caUpj2vtKIHWea4PhakoleM7KDQsx0n1WDQENIeSfrP9P1FowVxAdvhjsvw== + dependencies: + classnames "2.x" + dom-align "^1.7.0" + rc-util "^4.12.0" + resize-observer-polyfill "^1.5.1" + +rc-align@^4.0.0: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.8.tgz#276c3f5dfadf0de4bb95392cb81568c9e947a668" + integrity sha512-2sRUkmB8z4UEXzaS+lDHzXMoR8HrtKH9nn2yHlHVNyUTnaucjMFbdEoCk+hO1g7cpIgW0MphG8i0EH2scSesfw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + dom-align "^1.7.0" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" + +rc-animate@2.x: + version "2.11.1" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" + integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + css-animation "^1.3.2" + prop-types "15.x" + raf "^3.4.0" + rc-util "^4.15.3" + react-lifecycles-compat "^3.0.4" + +rc-animate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.0.0.tgz#f76d7051136b7d650fb3d29366a160e95a369c0a" + integrity sha512-+ANeyCei4lWSJHWTcocywdYAy6lpRdBva/7Fs3nBBiAngW/W+Gmx+gQEcsmcgQBqziWUYnR91Bk12ltR3GBHPA== + dependencies: + "@ant-design/css-animation" "^1.7.2" + classnames "^2.2.6" + raf "^3.4.0" + rc-util "^4.15.3" + +rc-cascader@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" + integrity sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ== + dependencies: + array-tree-filter "^2.1.0" + rc-trigger "^4.0.0" + rc-util "^4.0.4" + warning "^4.0.1" + +rc-drawer@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.3.tgz#cbcb04d4c07f0b66f2ece11d847f4a1bd80ea0b7" + integrity sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg== + dependencies: + classnames "^2.2.6" + rc-util "^4.16.1" + react-lifecycles-compat "^3.0.4" + +rc-motion@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-1.1.2.tgz#07212f1b96c715b8245ec121339146c4a9b0968c" + integrity sha512-YC/E7SSWKBFakYg4PENhSRWD4ZLDqkI7FKmutJcrMewZ91/ZIWfoZSDvPaBdKO0hsFrrzWepFhXQIq0FNnCMWA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + raf "^3.4.1" + rc-util "^5.0.6" + +rc-slider@9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.3.1.tgz#444012f3b4847d592b167a9cee6a1a46779a6ef4" + integrity sha512-c52PWPyrfJWh28K6dixAm0906L3/4MUIxqrNQA4TLnC/Z+cBNycWJUZoJerpwSOE1HdM3XDwixCsmtFc/7aWlQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-tooltip "^4.0.0" + rc-util "^5.0.0" + shallowequal "^1.1.0" + +rc-time-picker@^3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2" + integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg== + dependencies: + classnames "2.x" + moment "2.x" + prop-types "^15.5.8" + raf "^3.4.1" + rc-trigger "^2.2.0" + react-lifecycles-compat "^3.0.4" + +rc-tooltip@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-4.2.3.tgz#f6fb2a6d9e76ef64295a1d9b5a1618f8634c0645" + integrity sha512-7ySkaPGeqLLM4a/QYrKQ280aDthPxyvjJqQMstWX/AWX7/b1p23HIdHXdjBkziuvcnvXkW4lgZdFTVsylDiX1w== + dependencies: + "@babel/runtime" "^7.11.2" + rc-trigger "^4.2.1" + +rc-trigger@^2.2.0: + version "2.6.5" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" + integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== + dependencies: + babel-runtime "6.x" + classnames "^2.2.6" + prop-types "15.x" + rc-align "^2.4.0" + rc-animate "2.x" + rc-util "^4.4.0" + react-lifecycles-compat "^3.0.4" + +rc-trigger@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.2.1.tgz#e30271c703d3a470fd47e75b7432102c7d0c9449" + integrity sha512-iFQ+/FbzDvYDrTS3jXbdk4MgVNU0R/A8UAAQkspXSr4Q6jTcR6p+lfNhSS0JJgJuXtfjoInC0+8jXK8HUShQ0g== + dependencies: + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^3.0.0" + rc-animate "^3.0.0" + rc-util "^4.20.0" + +rc-trigger@^4.2.1: + version "4.4.3" + resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.4.3.tgz#ed449cd6cce446555bc57f4394229c5c7154f4b0" + integrity sha512-yq/WyuiPwxd2q6jy+VPyy0GUCRFJ2eFqAaCwPE27AOftXeIupOcJ/2t1wakSq63cfk7qtzev5DKHUAjb8LOJCw== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + raf "^3.4.1" + rc-align "^4.0.0" + rc-motion "^1.0.0" + rc-util "^5.0.1" + +rc-util@^4.0.4, rc-util@^4.12.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.20.0, rc-util@^4.4.0: + version "4.20.7" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.7.tgz#8c19f3a489744ec00c9871ffe3701cdb7ff4a38e" + integrity sha512-wzL7bGTimuUK/SgXlUIxcXYdQ27eAaBd8PTuiKz7ZI/Mbm5R6ZcRTWpeIGG56t+/79oi++kobfKbJrPxMTkKIw== + dependencies: + add-dom-event-listener "^1.1.0" + prop-types "^15.5.10" + react-is "^16.12.0" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + +rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.4.0.tgz#688eaeecfdae9dae2bfdf10bedbe884591dba004" + integrity sha512-kXDn1JyLJTAWLBFt+fjkTcUtXhxKkipQCobQmxIEVrX62iXgo24z8YKoWehWfMxPZFPE+RXqrmEu9j5kHz/Lrg== + dependencies: + react-is "^16.12.0" + shallowequal "^1.1.0" + +react-beautiful-dnd@13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" + integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== + dependencies: + "@babel/runtime" "^7.8.4" + css-box-model "^1.2.0" + memoize-one "^5.1.1" + raf-schd "^4.0.2" + react-redux "^7.1.1" + redux "^4.0.4" + use-memo-one "^1.1.1" + +react-calendar@2.19.2: + version "2.19.2" + resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-2.19.2.tgz#496e78eb11a00aee1ae6b5d02d221ed1ca2db952" + integrity sha512-zKbWxwmYEg84grFsCJz9EYpnGqsZy0iV67dHzkVE0EhBdXMg2eISBQYvw4+t8zdy5ySxQkDhUW8X8ERbSyZPVw== + dependencies: + get-user-locale "^1.2.0" + merge-class-names "^1.1.1" + prop-types "^15.6.0" + react-lifecycles-compat "^3.0.4" + +react-color@2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.0.tgz#34956f0bac394f6c3bc01692fd695644cc775ffd" + integrity sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA== + dependencies: + "@icons/material" "^0.2.4" + lodash "^4.17.11" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + +react-custom-scrollbars@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz#830fd9502927e97e8a78c2086813899b2a8b66db" + integrity sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts= + dependencies: + dom-css "^2.0.0" + prop-types "^15.5.10" + raf "^3.1.0" + +react-dev-utils@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" + integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== + dependencies: + "@babel/code-frame" "7.8.3" + address "1.1.2" + browserslist "4.10.0" + chalk "2.4.2" + cross-spawn "7.0.1" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.0.1" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "3.1.1" + global-modules "2.0.0" + globby "8.0.2" + gzip-size "5.1.1" + immer "1.10.0" + inquirer "7.0.4" + is-root "2.1.0" + loader-utils "1.2.3" + open "^7.0.2" + pkg-up "3.1.0" + react-error-overlay "^6.0.7" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" + integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.18.0" + +react-error-overlay@^6.0.7: + version "6.0.7" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" + integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== + +react-highlight-words@0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.16.0.tgz#4b4b9824e3d2b98789d3e3b3aedb5e961ae1b7cf" + integrity sha512-q34TwCSJOL+5pVDv6LUj3amaoyXdNDwd7zRqVAvceOrO9g1haWLAglK6WkGLMNUa3PFN8EgGedLg/k8Gpndxqg== + dependencies: + highlight-words-core "^1.2.0" + memoize-one "^4.0.0" + prop-types "^15.5.8" + +react-hook-form@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.1.3.tgz#24610e11878c6bd143569ce203320f7367893e75" + integrity sha512-6+6wSge72A2Y7WGqMke4afOz0uDJ3gOPSysmYKkjJszSbmw8X8at7tJPzifnZ+cwLDR88b4on/D+jfH5azWbIw== + +react-immutable-proptypes@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" + integrity sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ== + dependencies: + invariant "^2.2.2" + +react-input-autosize@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" + integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== + dependencies: + prop-types "^15.5.8" + +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-monaco-editor@0.36.0: + version "0.36.0" + resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.36.0.tgz#ac085c14f25fb072514c925596f6a06a711ee078" + integrity sha512-JVA5SZhOoYZ0DCdTwYgagtRb3jHo4KN7TVFiJauG+ZBAJWfDSTzavPIrwzWbgu8ahhDqDk4jUcYlOJL2BC/0UA== + dependencies: + "@types/react" "^16.x" + monaco-editor "*" + prop-types "^15.7.2" + +react-popper@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.3.tgz#2c6cef7515a991256b4f0536cd4bdcb58a7b6af6" + integrity sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w== + dependencies: + "@babel/runtime" "^7.1.2" + create-react-context "<=0.2.2" + popper.js "^1.14.4" + prop-types "^15.6.1" + typed-styles "^0.0.7" + warning "^4.0.2" + +react-redux@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + +react-storybook-addon-props-combinations@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-storybook-addon-props-combinations/-/react-storybook-addon-props-combinations-1.1.0.tgz#22a61794cc3c106bf44be809af3c3241f6988e72" + integrity sha512-gCHyLTkXthuP3wV5nQn3A6ZrBjYnRniRtVprSrq+7Vu9SX1jUhIEPvqdLdPVRmlq9rwgKAX2QVo6kNd95kZ7Hw== + dependencies: + object-hash "^1.1.8" + pretty-format "^21.2.1" + +react-table@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.0.0.tgz#3297e454cbffe916626b184f5394d7e7e098fa36" + integrity sha512-/RKUYLuqrupUs0qHdjdQLmgwdQ9mgXPnpshqv2T+OQUGhTu0XuLXVc6GOIywemXNf6qjL3dj81O6zALLK74Emw== + +react-transition-group@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683" + integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react-transition-group@^4.3.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" + integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" + integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +"react@>=15.0.0 <17.0.0": + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +reactcss@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== + dependencies: + lodash "^4.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== + +recast@~0.11.12: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reduce-flatten@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327" + integrity sha1-JYx479FT3fk8tWEjf2EYTzaW4yc= + +redux@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regextras@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" + integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-in-file-webpack-plugin@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/replace-in-file-webpack-plugin/-/replace-in-file-webpack-plugin-1.0.6.tgz#eee7e139be967e8e48a0552f73037ed567b54dbd" + integrity sha512-+KRgNYL2nbc6nza6SeF+wTBNkovuHFTfJF8QIEqZg5MbwkYpU9no0kH2YU354wvY/BK8mAC2UKoJ7q+sJTvciw== + +replace-in-file@^4.1.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-4.3.1.tgz#c67c92178b38052008e379197cc0d86ca927f7b0" + integrity sha512-FqVvfmpqGTD2JRGI1JjJ86b24P17x/WWwGdxExeyJxnh/2rVQz2+jXfD1507UnnhEQw092X0u0DPCBf1WC4ooQ== + dependencies: + chalk "^2.4.2" + glob "^7.1.6" + yargs "^15.0.2" + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.83.0, request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.17.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup@^0.25.8: + version "0.25.8" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.25.8.tgz#bf6ce83b87510d163446eeaa577ed6a6fc5835e0" + integrity sha1-v2zoO4dRDRY0Ru6qV37WpvxYNeA= + dependencies: + chalk "^1.1.1" + minimist "^1.2.0" + source-map-support "^0.3.2" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rw@1, rw@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= + +rxjs@6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" + integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== + dependencies: + tslib "^1.9.0" + +rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" + integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.5: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +selection-is-backward@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" + integrity sha1-l6VGMxiKURq6ZBn8XB+pG0Z+a+E= + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.x: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-git@^1.132.0: + version "1.132.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.132.0.tgz#53ac4c5ec9e74e37c2fd461e23309f22fcdf09b1" + integrity sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== + dependencies: + debug "^4.0.1" + +simple-is@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" + integrity sha1-Krt1qt453rXMgVzhDmGRFkhQuvA= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slate-base64-serializer@^0.2.111: + version "0.2.115" + resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.115.tgz#438e051959bde013b50507f3144257e74039ff7f" + integrity sha512-GnLV7bUW/UQ5j7rVIxCU5zdB6NOVsEU6YWsCp68dndIjSGTGLaQv2+WwV3NcnrGGZEYe5qgo33j2QWrPws2C1A== + dependencies: + isomorphic-base64 "^1.0.2" + +slate-dev-environment@^0.2.2: + version "0.2.5" + resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.5.tgz#481b6906fde5becc390db7c14edf97a4bb0029f2" + integrity sha512-oLD8Fclv/RqrDv6RYfN2CRzNcRXsUB99Qgcw5L/njTjxAdDPguV6edQ3DgUG9Q2pLFLhI15DwsKClzVfFzfwGQ== + dependencies: + is-in-browser "^1.1.3" + +slate-hotkeys@^0.2.9: + version "0.2.11" + resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.11.tgz#a94db117d9a98575671192329b05f23e6f485d6f" + integrity sha512-xhq/TlI74dRbO57O4ulGsvCcV4eaQ5nEEz9noZjeNLtNzFRd6lSgExRqAJqKGGIeJw+FnJ3OcqGvdb5CEc9/Ew== + dependencies: + is-hotkey "0.1.4" + slate-dev-environment "^0.2.2" + +slate-plain-serializer@^0.7.10: + version "0.7.13" + resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.7.13.tgz#6de8f5c645dd749f1b2e4426c20de74bfd213adf" + integrity sha512-TtrlaslxQBEMV0LYdf3s7VAbTxRPe1xaW10WNNGAzGA855/0RhkaHjKkQiRjHv5rvbRleVf7Nxr9fH+4uErfxQ== + +slate-prop-types@^0.5.41: + version "0.5.44" + resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.5.44.tgz#da60b69c3451c3bd6cdd60a45d308eeba7e83c76" + integrity sha512-JS0iW7uaciE/W3ADuzeN1HOnSjncQhHPXJ65nZNQzB0DF7mXVmbwQKI6cmCo/xKni7XRJT0JbWSpXFhEdPiBUA== + +slate-react-placeholder@^0.2.8: + version "0.2.9" + resolved "https://registry.yarnpkg.com/slate-react-placeholder/-/slate-react-placeholder-0.2.9.tgz#30f450a05d4871c7d1a27668ebe7907861e7ca74" + integrity sha512-YSJ9Gb4tGpbzPje3eNKtu26hWM8ApxTk9RzjK+6zfD5V/RMTkuWONk24y6c9lZk0OAYNZNUmrnb/QZfU3j9nag== + +slate@0.47.8: + version "0.47.8" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.47.8.tgz#1e987b74d8216d44ec56154f0e6d3c722ce21e6e" + integrity sha512-/Jt0eq4P40qZvtzeKIvNb+1N97zVICulGQgQoMDH0TI8h8B+5kqa1YeckRdRnuvfYJm3J/9lWn2V3J1PrF+hag== + dependencies: + debug "^3.1.0" + direction "^0.1.5" + esrever "^0.2.0" + is-plain-object "^2.0.4" + lodash "^4.17.4" + tiny-invariant "^1.0.1" + tiny-warning "^0.0.3" + type-of "^2.0.1" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" + integrity sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8= + dependencies: + source-map "0.1.32" + +source-map-support@^0.5.6, source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.1.32: + version "0.1.32" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" + integrity sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trim@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" + integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +string.prototype.trimend@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimleft@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" + integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimstart "^1.0.0" + +string.prototype.trimright@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" + integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trimend "^1.0.0" + +string.prototype.trimstart@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.6.4" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= + dependencies: + has-flag "^2.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table-layout@^0.4.3: + version "0.4.5" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378" + integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw== + dependencies: + array-back "^2.0.0" + deep-extend "~0.6.0" + lodash.padend "^4.6.1" + typical "^2.6.1" + wordwrapjs "^3.0.0" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tape@^4.5.1: + version "4.13.3" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" + integrity sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw== + dependencies: + deep-equal "~1.1.1" + defined "~1.0.0" + dotignore "~0.1.2" + for-each "~0.3.3" + function-bind "~1.1.1" + glob "~7.1.6" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.0.5" + minimist "~1.2.5" + object-inspect "~1.7.0" + resolve "~1.17.0" + resumer "~0.0.0" + string.prototype.trim "~1.2.1" + through "~2.3.8" + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" + integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.2.0" + jest-worker "^25.1.0" + p-limit "^2.2.2" + schema-utils "^2.6.4" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.4.3" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^4.4.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +test-value@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92" + integrity sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ== + dependencies: + array-back "^2.0.0" + typical "^2.6.1" + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@~2.3.4, through@~2.3.6, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-invariant@^1.0.1, tiny-invariant@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" + integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== + +tinycolor2@1.4.1, tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-camel-case@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" + integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= + dependencies: + to-space-case "^1.0.0" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-no-case@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" + integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-space-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" + integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= + dependencies: + to-no-case "^1.0.0" + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tree-kill@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +ts-jest@26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9" + integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q== + dependencies: + "@types/jest" "26.x" + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "26.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "18.x" + +ts-loader@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.1.tgz#67939d5772e8a8c6bdaf6277ca023a4812da02ef" + integrity sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g== + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^4.0.0" + semver "^6.0.0" + +ts-node@8.8.1: + version "8.8.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" + integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== + dependencies: + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.6" + yn "3.1.1" + +tslib@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= + +typed-styles@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" + integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@3.9.3: + version "3.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a" + integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== + +typescript@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" + integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== + +typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + +ua-parser-js@^0.7.18: + version "0.7.21" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" + integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +uglify-js@^2.6.2: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== + dependencies: + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use-memo-one@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" + integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +v8-to-istanbul@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +venn.js@~0.2.20: + version "0.2.20" + resolved "https://registry.yarnpkg.com/venn.js/-/venn.js-0.2.20.tgz#3f0e50cc75cba1f58692a8a32f67bd7aaf1aa6fa" + integrity sha512-bb5SYq/wamY9fvcuErb9a0FJkgIFHJjkLZWonQ+DoKKuDX3WPH2B4ouI1ce4K2iejBklQy6r1ly8nOGIyOCO6w== + dependencies: + d3-selection "^1.0.2" + d3-transition "^1.0.1" + fmin "0.0.2" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +warning@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" + integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + dependencies: + loose-envify "^1.0.0" + +warning@^4.0.1, warning@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@>=0.10.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +wolfy87-eventemitter@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wolfy87-eventemitter/-/wolfy87-eventemitter-5.1.0.tgz#35c1ac0dd1ac0c15e35d981508fc22084a13a011" + integrity sha1-NcGsDdGsDBXjXZgVCPwiCEoToBE= + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrapjs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" + integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw== + dependencies: + reduce-flatten "^1.0.1" + typical "^2.6.1" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.0.0: + version "7.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" + integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xss@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" + integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A== + dependencies: + commander "^2.9.0" + cssfilter "0.0.10" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2, yaml@^1.8.3: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@18.x, yargs-parser@^18.1.1, yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^12.0.1: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.0.2: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From 743e17a053e0864e901f72e97c231b6f077b50be Mon Sep 17 00:00:00 2001 From: copyhold Date: Sun, 6 Oct 2024 15:09:17 +0300 Subject: [PATCH 2/6] Add plugin --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 771a993d2a779..7891d3173fc51 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,8 @@ public/css/*.min.css .stylelintcache /data/* +# LOGZ.IO CHANGE +!/data/plugins /bin/* # any certificates generated by grafana apiserver From 7c8f1747a19066be2ea6f009e5aa05be40dab9f2 Mon Sep 17 00:00:00 2001 From: copyhold Date: Sun, 6 Oct 2024 15:09:33 +0300 Subject: [PATCH 3/6] Add plugins --- .../grafana-piechart-panel/MANIFEST.txt | 51 +++++ data/plugins/grafana-piechart-panel/dark.js | 2 + .../grafana-piechart-panel/dark.js.map | 1 + .../grafana-piechart-panel/editor.html | 100 +++++++++ .../img/piechart-donut.png | Bin 0 -> 38209 bytes .../img/piechart-legend-on-graph.png | Bin 0 -> 37972 bytes .../img/piechart-legend-rhs.png | Bin 0 -> 41450 bytes .../img/piechart-legend-under.png | Bin 0 -> 34314 bytes .../img/piechart-options.png | Bin 0 -> 48400 bytes .../img/piechart_logo_large.png | Bin 0 -> 3723 bytes .../img/piechart_logo_large.svg | 1 + .../img/piechart_logo_small.png | Bin 0 -> 2629 bytes .../img/piechart_logo_small.svg | 1 + data/plugins/grafana-piechart-panel/light.js | 2 + .../grafana-piechart-panel/light.js.map | 1 + .../grafana-piechart-panel/module.html | 5 + data/plugins/grafana-piechart-panel/module.js | 3 + .../module.js.LICENSE.txt | 20 ++ .../grafana-piechart-panel/module.js.map | 1 + .../grafana-piechart-panel/plugin.json | 70 ++++++ .../grafana-piechart-panel/styles/dark.css | 1 + .../grafana-piechart-panel/styles/light.css | 1 + data/plugins/innius-video-panel/CHANGELOG.md | 32 +++ data/plugins/innius-video-panel/LICENSE | 201 ++++++++++++++++++ data/plugins/innius-video-panel/MANIFEST.txt | 38 ++++ data/plugins/innius-video-panel/README.md | 36 ++++ .../innius-video-panel/img/examples.png | Bin 0 -> 479048 bytes data/plugins/innius-video-panel/img/logo.svg | 1 + .../img/screenshots/iframe.png | Bin 0 -> 39031 bytes .../img/screenshots/video.png | Bin 0 -> 55290 bytes .../img/screenshots/youtube.png | Bin 0 -> 55542 bytes data/plugins/innius-video-panel/module.js | 17 ++ data/plugins/innius-video-panel/module.js.map | 1 + data/plugins/innius-video-panel/plugin.json | 44 ++++ 34 files changed, 630 insertions(+) create mode 100644 data/plugins/grafana-piechart-panel/MANIFEST.txt create mode 100644 data/plugins/grafana-piechart-panel/dark.js create mode 100644 data/plugins/grafana-piechart-panel/dark.js.map create mode 100644 data/plugins/grafana-piechart-panel/editor.html create mode 100644 data/plugins/grafana-piechart-panel/img/piechart-donut.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-under.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart-options.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_large.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_large.svg create mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_small.png create mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg create mode 100644 data/plugins/grafana-piechart-panel/light.js create mode 100644 data/plugins/grafana-piechart-panel/light.js.map create mode 100644 data/plugins/grafana-piechart-panel/module.html create mode 100644 data/plugins/grafana-piechart-panel/module.js create mode 100644 data/plugins/grafana-piechart-panel/module.js.LICENSE.txt create mode 100644 data/plugins/grafana-piechart-panel/module.js.map create mode 100644 data/plugins/grafana-piechart-panel/plugin.json create mode 100644 data/plugins/grafana-piechart-panel/styles/dark.css create mode 100644 data/plugins/grafana-piechart-panel/styles/light.css create mode 100644 data/plugins/innius-video-panel/CHANGELOG.md create mode 100644 data/plugins/innius-video-panel/LICENSE create mode 100644 data/plugins/innius-video-panel/MANIFEST.txt create mode 100644 data/plugins/innius-video-panel/README.md create mode 100644 data/plugins/innius-video-panel/img/examples.png create mode 100644 data/plugins/innius-video-panel/img/logo.svg create mode 100644 data/plugins/innius-video-panel/img/screenshots/iframe.png create mode 100644 data/plugins/innius-video-panel/img/screenshots/video.png create mode 100644 data/plugins/innius-video-panel/img/screenshots/youtube.png create mode 100644 data/plugins/innius-video-panel/module.js create mode 100644 data/plugins/innius-video-panel/module.js.map create mode 100644 data/plugins/innius-video-panel/plugin.json diff --git a/data/plugins/grafana-piechart-panel/MANIFEST.txt b/data/plugins/grafana-piechart-panel/MANIFEST.txt new file mode 100644 index 0000000000000..33b777b9c4e46 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/MANIFEST.txt @@ -0,0 +1,51 @@ + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +{ + "manifestVersion": "2.0.0", + "signatureType": "grafana", + "signedByOrg": "grafana", + "signedByOrgName": "Grafana Labs", + "plugin": "grafana-piechart-panel", + "version": "1.6.4", + "time": 1667561514704, + "keyId": "7e4d0c6a708866e7", + "files": { + "CHANGELOG.md": "3cf9e5ba8ad605cce2750ca62db9917411cc36b7ef9d97077a91656061e375f0", + "LICENSE": "b46400c1ab5630edeb4e43b240a027d203375ebe5a9efb7de88c604c5c5cace0", + "README.md": "1b58c2c1b24e454df67413706d2f1ca9c70d9c73b2e00301f94658e48099fda5", + "dark.js": "fff3149cb5b5f0bf129e44556950e4d748de1568754654609fa13f0ea8fc5bf3", + "dark.js.map": "e117e9e155d036a51c68c7dc5830d57ed02ac7d14c469c0d29356a87e81de2cc", + "editor.html": "5f2eb5a452daf096fbb222a1e4232147b73bb212e40f6c43f81a787457dcc750", + "img/piechart-donut.png": "fb1205438704afa3fef06e7257b95ec826639e1c283698d3a02edcbec3311ade", + "img/piechart-legend-on-graph.png": "87897f7c19a75b0010e433c38774758667361d65edff58e11cb90edaf1b3b4b4", + "img/piechart-legend-rhs.png": "dd32a731b719e8dab59969c4457cda8486d30f64b900eec4a7acfea685cf889a", + "img/piechart-legend-under.png": "48b15d1ec0d36bf1e53bbe3a322281d7f63d691af607035aa8e846b5ce044909", + "img/piechart-options.png": "a85d0588d8475300dec70a1017f08b8f9f184a2f2e7afe5484c612ab8bc4c20f", + "img/piechart_logo_large.png": "8e327742fbdcfd07b12c6e9d98b6307b34f2e5e7db6357f6063f4181c4b3811a", + "img/piechart_logo_large.svg": "4daafd27c7e1ed130ead61aeaf8cb79f6c27636d477718e64fdb75cac8e621d2", + "img/piechart_logo_small.png": "ca3b1450b0b0c243c57aa06aea449e012eab75c448fa43dc13598628e380d231", + "img/piechart_logo_small.svg": "4daafd27c7e1ed130ead61aeaf8cb79f6c27636d477718e64fdb75cac8e621d2", + "light.js": "1d62878c5581538acfcbcc0e9c4550517a7820cf6234a954a386e6e2e365c7c5", + "light.js.map": "9d75b04323f2863737f4f11cd6a241bf681377b9549a76c411fefbca125a3ccb", + "module.html": "10d8f62fdc7359e904e04b34400d8770098d4973e7796b54f007e6a8fa284a3b", + "module.js": "83e720fb75c518ce3cdb27a7d67f4bbc15a59312e02d4d27548518ca04d19eb5", + "module.js.LICENSE.txt": "30f143a8e05630b1ab2ff90e572b97708701d7fc5f8e8fd2e44bbe9787723aea", + "module.js.map": "2dcb575f96e89a96eef0239d1a71d6ae93795ff84230f550e7c1c32fcc00677b", + "plugin.json": "12e8219a3a837b2b9360e44dafeca402130cdb4244c2424e4032b768ef9e130c", + "styles/dark.css": "d475f9e19c0b408b1ea5b51e26c2c42263aaa49075dd87aa9f5e0c27e8d4f0dc", + "styles/light.css": "a51abae38ba6e74d7aa8418f71ef28c8e66a5977cb7bd0d45e5de8d4496e5591" + } +} +-----BEGIN PGP SIGNATURE----- +Version: OpenPGP.js v4.10.10 +Comment: https://openpgpjs.org + +wrcEARMKAAYFAmNk+CoAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm5xv9AgdeqJx1KC0+uZr/JD+S5g/dL+DVelkmNHBTCFF5xuocAbpsd3wh +o53TkitFp3crGJ2P+XM67jSxxpVWowrWUq39yQIHcrkXuF6c6IuiP6IPqefn +LRZKpBnfbhcPHYicSUwIy4GDNdY3nhlD7iGvM40CRGlkE0VMfPnm4wuk/kaV +0x4BYFQ= +=tkIc +-----END PGP SIGNATURE----- diff --git a/data/plugins/grafana-piechart-panel/dark.js b/data/plugins/grafana-piechart-panel/dark.js new file mode 100644 index 0000000000000..72fa9e1827ea0 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dark.js @@ -0,0 +1,2 @@ +define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=11)}({11:function(e,t,n){}})})); +//# sourceMappingURL=dark.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dark.js.map b/data/plugins/grafana-piechart-panel/dark.js.map new file mode 100644 index 0000000000000..1ca3da557b1ae --- /dev/null +++ b/data/plugins/grafana-piechart-panel/dark.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,I","file":"dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/editor.html b/data/plugins/grafana-piechart-panel/editor.html new file mode 100644 index 0000000000000..d703af50629c7 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/editor.html @@ -0,0 +1,100 @@ +
+
+
New pie chart!
+

+ There is a new pie chart visualization built into Grafana! +

+

+ +

+
+
+
General
+
+ Type +
+ +
+
+
+ Unit +
+
+
+
+ Value +
+ +
+
+
+ Divider width + +
+
+ +
+
Legend
+ +
+ Position +
+ +
+
+
+ + +
+
+ Legend Breakpoint +
+ +
+
+
+ Font size +
+ +
+
+ +
+ Values Header + +
+
+ Values Decimals + +
+ +
+ Percentage Decimals + +
+
+ +
+
Combine (only for percentages)
+
+ Threshold: + + Combines all slices that are smaller than the specified percentage (ranging from 0 to 1) i.e. a value of '0.03' will + combine all slices 3% or less into one slice). +
+
+ Label + + Label text for the combined slice. +
+
+
diff --git a/data/plugins/grafana-piechart-panel/img/piechart-donut.png b/data/plugins/grafana-piechart-panel/img/piechart-donut.png new file mode 100644 index 0000000000000000000000000000000000000000..8e54878b1818390e9a64a85f95ea6cf191093121 GIT binary patch literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..51dfcbc9f3198216c00798282e5c3fcc1b284fc2 GIT binary patch literal 37972 zcmeEt_4y{_QT!-XJ&f(cK1|QS3OTv-Eb8pX|y-QZ$KarnyieZ8VH0u3<4q1yhZ|AWVxki zffr;~aaoPmuV2H~lvja|L~c^rZt9K}Zl1<2<{(Q4M|*P?S5p^ra|c%|N4FE?E>RGO z5+p16QNt_qaLMy4?iNDqbo@eLsnfTE5B+BhWyH4^`E==D!g)CQQzcCmxB}GeCVH#G z_l$TZaB()^DMk^ueGvxv;Yj!qU)|7~`>)zMV1hzd@Byb0Z_m{rRMOLc!ZFAg1R~tD zy?lRYDcbYq&70T2%0M8OAc|w;|GeY(p)~x@yUn-jJpWogK>nv8ivRN2&f*E2qDtb~ zzi;^S_F5kwy~a}W7(x%M{16@Nu)R{Q7wIt>!_+Wx0==EwGz|BpAEIZ=Q>Q3UZc!Q$^c1&E_{lidrt z{=Rd)%$i`2d+-b5ppq+8E7jO{qJUuaA6)r#7*f@d(nDds%^0sh=z_hrU-J_vU%TV% zOILZ43T4S%U0#}TrWuQ+bGq-32b{@!-nQCy%{RF2d=vyrT#JW}PI!Lm5x&V-+1}d1 zn#d1)g7pO6^sI?yQjgNJwQQD+8!Ad7BO|96JPh^t^MjoJzB5E7&GHjnsiyFAaunlH zbUoM}Qx>_}>@xB_QX!u)*3#3{($$@uSz4;Ghpma?13M}B@196W)l5PEyXn2Doh+~Q z@qlw2Pjg$_0|b2OfE9jyN!pn&6xMmQbTT_P*LArb*>$s^i~+9&fx0J9&WKlc=l=e! zF`uII)cL%5ejZUeRn&qpE_k1bM#3u$ALWvqo`c;V#?yu#F<^8?L=4~EslKrQcG~6j zzk8c(wjzwL>Rh)W9rx1k*WW%!=4iLiN6(SR7U$IsFa0WYF0ML|$f1&*Onk3C%)~_d zad&S|r`}?0nbmnCQ#qTnuq;pQ%ID?XJzs^<%F+}sy8pc4~(bbybaFl=qUeO zDOWs|e{$WtQC4228B3og=K!l~tabJZcXhX~WFC^7UYc20SuxTy5HZ~z4YG1W++77r z^;u@QC%5Ua6K3*Tb7CDW)-G|6b;RmBMEUR1DW+?PS;tepW>FloovU&tEiP!_#(a%E z@gcCGyxeyFy04E`y+{cqM10T9XXp9|4Gpb_mynlIlG}BAG(DXdmOG}$%V)PFxNkf? zJFA#2tn;(CsK5W}q{H)zWmZZGpE>PMB@6xeH&^A<3?r4FVSQQ^`V&oa2LxpBKt@K!Vuh?c#((3sy4%{r z$TzH!y0M-C8>QXgGgFqt^f{9|P!wxsMiKM*@4AZc1iGW6yY`E5v8Um2Lo)QxdRsSx zrvszMlan>Tf~qysu&w>{*p)~@Pm$IZC;PM=5u~KLMxRy{BdEAm!}kZ z85xc(2;V#gFgKsr{V3Pmij#y#{Vjct@Y7~O_-?(H;ljcKN60fFCqOnT3~mQUD;fR| zXA3-v(a~bf7ctc z#crz$3O4W9R@k2s)d@`(l9J6kuJ^mh@0Ly$6Hi)K^CDS0H`S;j$ep;AkdrDR9Lfx>_tM zrCLY8>-Q8R6cG{G>2>5@$J}Q7w&!Mw;^}l=>`CBUg=GZ)`PuN<bFW^$+~22LJVTstiO!1Q zYier3ANS|z*|fV~lH9h4*gXHpe{kq}-0`FpCu26acJ%0fi+E%+^j-RErzpwO*vPly za`38iJpgT~bLE}U?f#so`&N z|LNhrQJ%H+^iN+-^U-$3(g$@z!{ci@l5N0SAok0v1GYxy0yoNy7Mh*&+a@VqXLeet zdSoz()e9jxEVtis<+QFd%?0iikvO__DYG#$0$S->rAW9;38MOILe}D&B;pe%gfZeV;u#SguVY< z0wp}vrWCDHFD(V#4W4e51J`F69H9++7#JelE={+$x5b%t-3E^%IZualsv~s)_p9HJ zceC2ReDpXL6Qayj*(DG|?2%MI6?atH55*Vf_+F>|zFMwXazoHV8h_db%2(QWo8-GV+32FF@)7OMNms){n;A_muv@A%%87C&C6baC_XbzRKrbv@1?OobIe z{B^&s0bB#GbsZPkE4V$bqZyHsl5#+&%hO=wsSEHaNvpSLLme9%lPG4_)7A5EWcN*O zb9z`MxXj>nAoST=&LMx?FnT%Tt~(|xOdhxvyaRVO4DFr|g@~9_LF>%rnej&)TI?3oVBp((R4xlhdXmBM z;UQ`34g>Hxd@+DheQ{IYWQ66qP~5kqBm?8Pao%S&t#m#_ zD7TE@?9-!He)nYYzAHUEpI62K#W07>fuy@s7)aj)OIOAAnTWL?ROP0;j7iM0(g$1* zs$JAN3%8vSsESjIE@7%X7#50J*R6ccr^p~Ily6Sg3p>pG?#8m# z)&T)QG_vtD=2Ochwbg|!-d24_kLf(N*Guq4F1xK_wk~1v*yvV7Nx!ID-0!eO#N)_K zgPS09j_>drBp2fZa1Y$+=f6cP8^K_7fBwG|W32MuuLfSc2tNK(gHOBnuj@{7{-NG= zluv70sDJvtmF);?N@60qZ(h{_8JTYthhm|cL!2O1c%GzhlaU19bjb;3Af?meEx~9u zS8;O*18I0z9)APB@1>{i$UTzV&d>V65eh@q`~x3pU*GGs|05YOgE_bv*??@}R903N z)3WzHaE@i8c9VEV|3;$2!9ffWMb=mIgoB-X8SJUV@jIAJcP+3 z2Sz`zGn^nIMt6VSc!8R`rH}pI);FDSUFVKi@S94ebjR6hNEKqNU)+XN%60{2D%vKN zr5?UNpbq$+A8^60243qQJPNH+onE8ns>9nL)H^?#`-{eNPNt@>|8Vit!slyTQgu+P zJz9Iz{_x;Gx=4}+&)WN&b{OZFi!A!@zyLIp6p`)qP;2a8J;0i#&`Ks|=)aYei&rbr z5=WIK=j|^_b?zgQ@8IzTA_8x>13zv^V2IrIZaApiuZf633`6R8m*t#ROtS-X=(0h_UB0FNro^$?p~T$8@^P}^v~nuDo4=ys(O->yXrrxi zTIl$Jt=!wLCdjjc{X;i4S5jVZUtiy2H-q^AH9$>Fe}4;>Ow7rlc>O$dc5)hhFRB*6 zp^Kzv0q9GeV?@lPMt64yC++oZN*x6SW)utQVKz3lA)*y!%NI5NG9qt5r0RbKo`bHp zmOQoE{@IGCx22s1%}#5LMy-zk#1K0xNLb`y(yDMG*r!)wt}YpLxDD^yF}h7F?{qq9 z)bc+j_Lu2d)spxA5a;*Sjbpb93_)eUF8f?^#JXKIh@cRzK!u z!S}->d3kwEqKG{d9J)-vBCoV;&DxExrbAmfAeHEEJ(5#};6GlV;!n@bwegLK$^hnt zt@BhI{1ToFb7(uhJ7DX)oTNb9(4!KtlIncX-vs(gvzaiQ+r{;=^!=k6V z*%t(cH)-Xfz6-^oSz$*5w5dAP9d~S=K^z|UWS)>zj{Nq#^>umH7C`OlLkFyk@OIH) z;0}R#_RX^L>dxH+0>Bnc&&>F5WUS~nJLR@Lo&+M~EuO^8kH-E%+eS1c-kiEGYv0tB zD|5K_LaGCfzD2S^r?PzRF5@a?9s-^WJXb_a`=ci7>c;i27NjT^5QPIU$F4>rfvYgR*We@R2^oCXO9TkRGmY2`iO>XFyikB9VPEmzktbDgTn z^83E0MIpBlfMPx%ssly7B72>O(?dje@*U`Z+loE~1OG3m04#jJT-mhv)cyS%<&U1V zz=w<4;%vWl&#v3CPR~YTgin*(N6i_b04D;hrH3rXt~Q^mXQVUQ0BQGV1dE=Z_82u^ z>r$!V_H`)pV;#*UCnBX@42TIoFft6_Bmtr~Bz{*jTJ%bp+B!P2l7C+LYn_f5Jv?OR<=utjnCo;thLD6T zM`ni^`keKtp5O;`UwiIeujM>>UG`@@MuxQ;o{)J4tQfR-jHS~mi}?c^hdF_AvCRS) zo3@kIgRw1NA9PmlyS)q1$FrQSrzP^(fv3~975@?(^aeYG1GB*$J zvj3ccgkE2zVdFkPDRdU9g??wJ}}7!ixAQg6BH-ejq=v z>)_Rj(bICPHZu?mf*ngd>vHh_>@G)VDIliyc@-cszilUE7=JFF6Ax$)~f zKX)0a^Jr}JPxVhuOq8U;>ZxlL5&}r6i;JCU(@8Fjr8E^*5u7koy9o;>0!ge!{TdBj>_XTRcj!p!!Mb>?S_g|Dx^ptQ@q%L4T@=c zSds!=ljFFK=WD7u`?gx=M0}zUV>b_vDE%%B1Ol;;F-OXIPu}|Q@BrXZf)rc=JbXmX zlRu5G7Y@B5#G@I;0re7$nSw&aPr7)(gEG=85^X|74 ztCgyX{So-iQVWAZ*-gwQ6BASrpFEMWflzW8lNQhwDz*Tcd%x(?Y$ z+zW|UpbbnQI^DenUq$Y6u(N4DtQ(OZ8MZn#Tmjox>$aS)i3vBD4#f2Mf88JmK?n7d z=tEzF*kckC6LASr!s1gEXwuWuCttNR4NYvSpaTpmL(;?3a{#?$gdareUzfs5_1_@4 zpZ0=RbSJPb;1c-mh4%0DC)dA)0@wd<`2X_wzn~6Ic3*l4g-kqr35{NZR(t*>K=|)C zAi^Jcx)^Cn*Kbzrl?=mB6;K$KYs&7-KVpA^eH}5}`$7T0&+pFx;OgHk0QV9Gn=d50 z6UL&%I7eYwZf^QDxvBhT#4m?5QWYY(F2_<+z8;?vCNB9`jzaz3^`{;tMbK@|kQ*5a zwy;-oGBb+Pk$Kl_8I_ zKbksPl+p;Q7fvF${m~ylZB5#{+t$U_OZXn?LRMi_p(*o+L&h~jhV!SgK`Ev8Jsht5 ztRQJ>RjhK$lyPBCwK_h$6WNf62cCfxo=({Ha-^Q(l1ZjFlH9^{-VmzIH`*Y`QHRj7 zwZLNNTaYwfuPvbw75N(KKq%dge2#A!wf#1;w9j+FatM5HFG%QVslJsup?oP|kN}&X z>GV{mZ+Kc<2TME0qS|4O_lo#E!XGOGD;O`pCwh*)HpQc$HU7p0Mf5pjG2- z=KS9&=9|0CV;P2#I4p?3xkL+lhEyh*vSkdV*l`=$G0A`JZ4<}8>959XQBjGM3W0n0 z6L3|}WuoHjp*}uvQ6kek=GWMBQ$>`{3rsiy$qtrkcYilj5u5}q_6raz3L)t}!iybW z`W)SC#Y;3nz=I(D&kLRU* zxsxDMGplWgW}8pOedvkNYOYD()tUK_mCr!L=ZwQIxz%7hynBINw zlOktCD+##mNCBJ23u2jLr}cY!0vgAZ^LeqeF%)%FfuuaePEKm7SYLo?&h#zls~6e^ zo@HXOi{?650%b{V*Y~`rTj#^JVH}}p>sGJ39tr387}3SZD3j|pf4bCJl!y&a@Sx6z zHA(JYI$()Rj+|aUP69$AFwWdj!x|=*=_XbSql$hLUeGOGP+Y!FTh3NIf3W69{8VEh zQ?^A+0WvMh9HHOv>Fr*L6Lf8K%@>6v%5MUFe7=}x%x2Zq4G6rWGT`L-n*nAYe@PL4 zm{eww0xeov!Gec~;3$<1S4S`-E*PoJU!o%D^@Sxq_iekA6*+8ah3UQs0gd&*li*7IFTYKmdezHBK58ZgTj`AwTuQ(A$)SCy5F~skr_!`>E&Fsidy)o0-JaXPBJSq(-`6yX7Xn{9m zIqQSqJduT=b+j6htG~S-dHA75>o6}5rd#qki1~5rC$XM!aj~6P%En6*9>&3V`esM* zGERbxy8t*o0o_W^uESj|thO@(^-PJt>q&H3x?JAI_Im|+$?iusABGB|#;WZd{hFe~ zz6E!xR|$9C-JG*jpWvG1nzjTI?bZ| zfkUy)L{7DY=I5?_lH&V#T<5KggUpKA*#D^ofbqIxRaR+a5lWa> z&obAG$)5DT741(m6^i+eN(fq|6gL$mjC~{g5N{oXR9(Yl!HC`EV{tl6^ehO=R09vY z%iU$Of>>Gl&mz%`{KGn*QbZ=-gtBC&s=3O;e*0-~0>XLeSV`AaE=do6Tao2w$g%!v zg&>U~4;O#6zCAI!8?5xToKZGGr<)ulkdgAa`Z`*jL(*yDqk^A0SVG5a;FWn2|Nik7 zFFU3ni6g5o;lW6V;}DAoOOf?wR|ln|Zrmg;*9Ou3w9WW~i#zkqZk)EF_P#Q#4ZEm~ z&QxFwnJ!M9V!^-LFm9Yl-2!hUP>#95@h<}&e7i}X>u_AZe%S&Vah`z4khZ?uae$g@Rqy^ zw)O(g#y}hTH$O+M%7^ALlFxU=ZiX$lm{Lg04 z;)~M;h}d&No(Gjbo0(>jfL#!=%_dP&HCZ=QywR+ekK8}ko%00SAG+{iN*<$?m1(7) z$AvFg4waP@zg1m8Jeve(x!Ik1g)#Tg^po~CcjM*Q*;rgdxV$0oSG;2a)0YtT-b96_beKay1b%Z%EL^^DU##DfXLt>S@$<0?S zh;(G$R*+M2lYcq|ylkx)SaAJ4pWTx*F3!5+B(`JY=iX0d&i<150RrW7`nNkLBgg9 z@Kp=uiOXwkkFoDq*hd|yc?n&a(`Bz0j%XGO&-(U z@V8TE5q1H=mNvQP<(_%S=^IIeXv;MrTz{UEk`hAF_F*Efqx?ALA2D09M@tM_Og=et zrU&dyH0p}e=Y0sOek@@0lm}`&wCU7{e~S1b+5YO@nOCAK#EHWnX@^gOvx|0RQ^qnM zYlp%+dCsy6>;+4`KAnf@rSMqfY;~5D>U|R)w#Tiv8=0L7Ay#=F-d4!0zqx#xI$UM9 zM7*moJ-U{={-K>->e#?SIFG)>&F(

qlhJyirL>kJChs5ZhX!k1xjcJ+zlY||!(p7ELr2;E(hsrDe?tyQC@ zBoE{&x7ka)(V$)amnh>=KGZ+fatYGnR6>+s` zXR8)ygh)!6;aqHm-=1qi=oi9xvlPq~0iauuQdXkf;8))#|Ll;Vv z^tbLmWk0zUsIUoxH5>%Ff7brt6sjDaN^1ycZ(u81kkr7!9naZxMXm&t2wE|ofXo?b zPD&Nek9RKx^DrUG2m`QjkFCi;+hqp9roXXLGvaDFIn{c8x?Ja3nh026O*Ar0QmL$4 zttelP;uMQJR}U-pR~WOYpd<~7#x88GK|k37%HnKmSekl*wOGUu-z|rf*Q+!2bq^KrQk*fDhx9)@#kMy?jj20^jko$R_8POUman*WYviB90v%&j6+ZSsqnocVlitb7;7 z^LP2LyktiuGLP#p-Dq{ham0&Af7*mMLL@$@2j`Io7l7Aqbl5LT)#2Q_6#V!l*_uE@ zS~$S_{=6u+`U{cA&UI%`(puCUbyY6qLv6sULW7f1lJ*wW+yyCRDpHhB9>xjIH-sPhssQ;D;!sU+ko?&um= z!>=OJ*5InA4BK{~iuZR}T709r9bt6+Lj&eU$5P=;DtAdoqSfSI^6@2zk_sSZp@eZp zCIcx9{?;Qk@5iYXSblD#&&)e=_Dd=ejd0ju^Iyo?xpWG@qoP%ar_G)|3NbXb2=|dI zgo`P@AIQBEzGb=)XF=XZI7){zm|74pBF4XeyJ0;WikQ|eGXZ<;@9jtB{1^Cy?JdQC|dNfPL4Dc^C1C0ak z0KMUwEVV8#o1|hP^GdrZpULaMjs|)OUr7&}B>2Nnr|(LX1L=h2>HHc$y6=-G4muXK z^lB7_&IYFIVC9UtWQ@dUt(~RhS(P5eXiRjg$AEEK!9;DL@4XOJ7cD4AB!=_+MQxuT~*Vy!breh^jd=ZA2Pq*D-bMZ#%Ls%<5? z2eaDCUD@U_Tgg&G@#na{3&1=Y3MN+Yxp<~{kB<9y?^2p(#;eo4mz|3&+_*0*0}FFK z99k*^oz67rN*xWLGQDLMxGBnP99$N#qGQFU1!E$7toLQw9F;OC43e9lD>cU7dm3S# z5rbTi&WQU7KK1f@(}-5<^N>Xpjh0FcS73X4N6wOR{VA(ynd5I$YW-5@Xq%%-hONvD zuQ(nYW&XUASmFpSN^Z0%p7W|o#sA5_m+UGROs~A9>@XYBDcSGx+0!i9PFCM5^Qk?& zlb(-$*-kdcaI3}6=fmoBc8!hr`T~xhb&ug}rjp;^=!F$K#T?a*mhGFrI2qWI-1*vP z5t;MLOd2n(i|VVSSLO?ixCJO(m$Nu6ahbRxlPsHP^-Sonj>3*x&>FP1)zylO1=`lP zt8OM%aveRRENIx*C6TCua6Gj*`iW3BUuSak6ADmSil%wfLIBz@R&%c~?1lTAngc>4 zP~@;@J;iDN$xH}cAjTf}6Y5Rf;74zX{%Jqrzxwh#pT#vJy%v#`e00))sXEe%zCg{P zq^su192!On3wNhWMtCWMRxJkhAC?#5c}pooO$s^d8IR7qW|v;{~%g zF1F-JT@Qy?G%Lz`RN0Yj+*)AY`La1IT-x;fEp9Ve8cLz?y7=%C3-rYfKtz5V_QhPr zoeSv!&c6F)X#h$1rPokFdl5L>PZ|o4xS?6eaOGyFx)my$2;x}Br~!AOaVFO6!zqRP ztD@rZkbI5>}F}RXTkS0_!>WIhTE|T1aJrwUYw5zQ@ZMWL9&ehz-gJ+ zEvZCh$%5QZ;w-A7Ls&A3L*t+awudI~%_naa*+?{978si;z+48MnR_PJiA3xPiMSHD z6~<~52I}nUNC%wlLP=qCmWkmP)G780x+aNqp5P<1mmAe1wWK|qD@`9wy1Im&?FM8> zK0$9*6+^`m6qY!zF8{haSo0IW)f%_>iyV&7&+Y

zt>@O>5mI(S~5xoOGjo6WeLK|LL>xt7s00ZdpOE5#bc)&wN2x+9hYk4(!-7MUU-EG_x6W) zET&rU*I@*A^uY*L1O}d1H3kMGDKR z1uxmEkqy+og-wqsK-twk30BeGPwr{cC5#eUtIsKj6p|24aoP>k*=LZ#JnRO*vDpp& zW~vAm#L!H3hZ|O{TX|DU*Pg+&7pU8~n;-7gkzQncP2A5mRg^u=;GUd(^wuoX*j7zK z&{rFbGt)m!=EwlcZ9eY3La=r?g>g?!jKVwe26beN^Vsi5GdB3s*LvN22M>OAO73PZ%2!;($Yz~;IZ{i6j@3TksEx>V^(7*=UNvSX}uh4XET?3;OL!=Ryw z8$ZGD`w{J;%Hr$5bW#vyF@T`aBYutID_;|MOP^51a~z?G^fL*mh2E5)i$G*HX`G89 zmuhY)>=;s_!{k(^wu9vxde)^FUJ zPqt43mlBm~)6FIwI#S477EK}p^Xt-;^0m+SHOC@>z8L+R`prmgXJTVhW?_bsa6QEp zy)?dOvhL<6b?wh#RN;0S%9$U1&>D?>f}S_<;cv`8^<+c>>Ps?OZtq1Y1;G1kr(0Sf ziXFW&2lrvnW+6&YHwP+Eh4_nba9-JwY>TQdpU{#9b(Bd>8}ChfdoLR>T6&EJF(x%5 zTuxfN;E^(lD+u))!yx$(3Ij00UUOA38mxv4=JB)P87PJp$eEnxvQx=Y<_w;9h%0If zSAD2Ll`nkuK9Bre{q!rF6;2;Rr2lM zvi=atWpLcd1v|U5t;3N#rdwtc| zw_$+7QVMJJ^*rzKuK)pp1p>w0yZqGQ>e_4WSk|9wIV)vK--H`$o`xx4^Q&Dw`;r-6 z$1t3Cn1KAEGyd+I8TSl~^KVOKakV=o*%b4VxU?AXoCX5>Lem zVV>gUEV4g#Nd5!F$m6=6=!(Gh8AKysJF0c01dZ^p5Ydso7p#op9`c~CXBYs=@GzCM zW7k%Oq--aZaz)J4ecerI`9byb`&SO^=d51M1!2oSi)-j6=LG+PTgsbi#jq5K(v9^X zacZo8UL2#m4{p2-o-w9lXUT>0!r|O-%XK0uwRV@WMHil5{1U^XR|U%rU=ch;`La|a zJO~pi6uqw%+W_XPxa87goEaQ}2zK{oIdLy|)zIVW00P|uk2AywM8#3D=kyBD_v9ry z9DI+Sl!PF0Qh+?o-cr6B}3c0|Olmx&L*XF5QKJRXE$tUgwM-0AC2lHL; zlC)k~K}{rY4FiU7pKAOTv+A8|5U7S*>%uPoY{;eZ*>bfjE@w7k5f z8C`$)SDw6%@|OI(zA+V%=)JX{h*UU8??XdJe!+5$4m_1q5SGVW@{G2cQ(sVEwz0CQ zyq0Y?ZII^bY;jQer|)kwcBWkjkpiTHYRyE0af+4cV>?JA^cpc-hAA zVzkJ3ToWND>;KW`gWlEVOJx;2&03$&X(ZKBQVePOgpB81SG!PSJZcbVg9u1>ND$_m z|wF%YM3DRs5}LUZ_60)mxr+6mFp{4LiIf zJ}EAGVYr-Dfi6#xv5I&Myz}T&q{8OUz{D5h;ySe`_mDKVmEIg>I>XN4uapsO`NLKC z0dnD_xw&iLPsq_PsRPjCv!S>;m4)d)5VDD?kZdboVVv=(@t&s!!?PhxdW&zY zS+e)$p;=m3=R4l71hExX^Juh*TsK`?dPP3+Ok}v&4RBVt1-5QBQvs&~Bjtt7cH)ut z1ayU5Y`XY4==2>Bg6ELLn!gmk-F$OZs~9dli=K+E`LYkl_=xJB_*?tt(OTR|&Srp5 z0^6P%`=@Jm@O^`EMiS>TrZ6gF04sgMIw;g4j@T)BPR)3FT2Jql5OT4(-D@mRjodAO zDpSG90AW^DVuUMXPl9K2G z=qQ;SpO$~>3N>-^{IoWlJ06E~_P-qibi?^(4{%_Fy|(-zucL_2MOJ?L`RM(r3IE60 zh1wdzZ(XcE*vM-ers;tbct70|>tbmG>S(JK62@6HmC!IOj*V4Hm0^%K%Aj`a%aqO? z^R?^Y9|Ee?;_s9cZG;Lns)U#5V@+5&3Y$cs_HJ*p2i`Nvh{tTTH@Uie`Yw8-A7h**Wt zRN+g6)+BaoNmw5a>N(>#+iaLV2T=0X`4y|rR~^lfmo|T|$3FlBq5uK*pwM!lEAOmnSV=Lk=f&j$;yS`Nen` z>vh3I&2j*11H%jNc;uThoq4mEhQ*ETm#1SD274ROo@{DZGEk$!8d8gHwhTyGJ?szP z;NF#4CT|3jf$_h_f$GB74OyPU8N&8-K)t2 zd<`zhr_YYapeVkuIj6(;7asbZZZ5$)9aW={l4GnEqiw^q9Mz-umnhzhd}O+FNji13 zE%__#b`c~>GI(J!+nXsm@}t=NLgf%!p@s&XHnWH>L1vQVjuz>_qIXHemME~wm!;_8 z^hxEYOdUMl@kZj&S6IPuly8=67=2MCXdfZz%LXKZfUDLOZ|WZ~4~&W{kfR;IQ!?QG zsJwq7+UEU>T1hfS(Z9{aQMgW!=O+-cmh648+);m$s63wC@XP1cXx7c{h&4@v{QyUu zd5qnyzC5?d!@(OsSk>0mY3fzQQI#XaQaZ0UeakJ9I3bzTwL%ymQhC6*5^iBFjGAnf zrTy+~xZQE*=%K@)UTV0X`kbq*y&SKU0ht!Rt^HFc@ptc!h{G1H7a>pv| zrgvCL&cuw1VN-qdw72t#^Yh4pdzPEN3pR4gtQInltymV-_t5%&^Fx64ymV&SI#{lk z`d91~*6%S**T5x!XQbV+RYeZ4NAR7iQ46 z#;-(IY8mh2p$DtO5h>NsKuvlc#xRlLb3fs}HVNX8yQYbxC)fr8yP}WT=Gy<1ng~{B zA88riS|OK5MQpusnn?}np8scwLOIUmA9~+h4HNxNwLn;Gb;kgyIoYLvN?G3~1IHL5 z2fQoW=+fC|7yApjQjOUIe6)tP3jW>>yCbd=b=}Jcqn8C0)ezLKg);j+9;NE*c35s# zE0^XWK{3Jb#qi7-R<$aciA_=@jH?sfBmsM$ur zaXT#S7AZfy#!jFiSH26;n4MmeIDHf_)^f^kq^Z(=u_6+X_6pZnK2}Mx$b7)9joInu zX=pv_g_*{8(hfotD){rH_@Ut6c^^J17MT0{8eM$FA1A%j#bP~`@pih?xk6-x|H}u5 z;Z{omfu>|@X9$yJl9FJd4}uBJKBLWkDjD}(7vm-hgMEfzXm%X2M%hkcMr)(JHx8Cg za%CUaa4(W9UQ4&Xu`->x8L}X#yV?Cl0@R(mnRN4qaXe`X*|D*RLYFKOt@J0p0N#yc zn!4?%TbIR7R4J7!Varkl%fOzZP{&>rRZRlZG|tG(E3Ip39vHpr08yqXb^k8=cy&wD zPv-M;KnM4DI`^bXUJBT>DApkdi_%htj(h`_2xQr=n);#|ycvpX&11C%>ZeK0F1g`z zSt@Y`j>MlG)dQ7HxuKk^^NGh<@M&{Pc&kfz>+Xi4 zLoBf43Sk{%2mlu_S|(Xw`xr`<_^T7V0qU$DfaHW}*x*8e-`T#-?<~Z&(Hwo4s>&LW zS1HhoF|x=>BTv<3c-oEb1phD>QVP;aH9DS9uypmLYr}zPYsv^a#s`{bT%SX5v51m! zW-6$1C|v+THqPWmC*9)TpZlBWmX^2WgJ`3iNa?6LKCXXVH&#WgO%zuj(@qkqjS33> zZN?nf-Tp*=fV&PuwcjE$P9l6+!%&K$nkvzty7;YnQ>(`%0M9>*)*4U#Nx!?*jN%%p z@gWA{bxQ)50UUK&!{ssD)d#!Kg`KKembNaDPDJIl>_s^X?AVrQ{+iAq8XY7J`sWIt zn|XX{Z0com*qiW zILK@jYx)W!iL|~uwn%ASvpbvx!r~d~R6D+XCOJ3f*F7p;V`0ygyvx{|G(^j1h4LlG zE?zg+-quR|d>+`F??n@s&G&O<7F^3Uo5al-nwLmLHd5i^(j&@Squ6FEZ3Ksie#AG6 zHM39<5qY4tDl^g(F`@T?&bL<7u2ov_CGOlbKLeqo|JRobNLD(#ngj{get=ZPS{^p+ zRqRctG}&a{5hz~+wG>~uA`Y%E(1r$hX|eB)1wKF+l-GFP-A+V@FJB)2iBEK3bCjL? z(Z`mBIs0}82tQ@CHAwi`M9JXkn5*b(m$H^!&HUi7_GdPU8X|vRO;vDbW|ZCJt*EE$ z+Lg^~?T4$ukDf*}viQ{NsK@(G7r8s`J032s8AaItF8=&`K%B)(E$nm4GOR@)J9d`*L(_*DmoTW0?GNJcQ z=ol~$PT7uP4roJBWqmIFQuRVI*RsP0WRO#$@qeo^f%GqX=8=lN=lcD^uWskvzbiOP zEU(|6zPT8lcBS(w#veA;#B@U2;D~iCy4#8mzs>%&KMp^H&hz|@W9R;k*>umb^FOr! zHGptMf#=7mlk_mv@UWFDFPY1(W`EGK`RMjg0_a;V?)=v}UWc*r1@wBk--@o(^bNo= zzeu#d+*3fopo38O=}O+8iuG6AtI>E>s$E0g_Ai zukgs&gW!kPP54%}E8R^I{_s0ZOw0;nHh#-8W!CJUCn#k>NRA_SkRWhsZrba45a<;O z@W@)+4*-k-dF-h&;Yb@l9%B?ffl!Qo8I4{i>krp*4$^T|NB+9v11!2A5cPOlbtD4K7IOpN3MS(W8Q=%}E9YcicK(Ewl%tmGXOb5v7q_1xP{-pZ z^Nr?*{P%BzQgM7$){*YCcF0GPz=P|^XT)FhH=@pk|NN1=dKh{fy5$tqlc;)4g@J!p zzLSW8?Wi-iJcrLUxxFUJ0Q#E$3|Rk7-;w*-f4rSe483!IdN`Rf-PsU7{lE^56ARhxlf;B_JvbZ6ALvw7KW%ZfEl{?{|L5JqNA& zoXKH;KmbD_fu1AT$ucjiz=CzH=r+6i;B)lb9+M` zKs^U5In2O7x99oT}T-{CXb509TO z>h(Cqjj5#x1GN7|(^m&n z@jmY^poEBkba!_nDUEb@cXzi+$^oRMB@T#mNSCB^cXxO9T|VF6{TF6uXD6STH;%;u zTCg3;WYi1!pT(t(1c70sH{(>H@6mxEhPLfdpf;6xW(xnXcd&v#tvD~l4rP^;Gt)-F zZE<$4p;;)d&4mL1G=sr-mPIll`UKLA`sxn4z0$uSmE+W(s0IzTI8_H73g3AN<$h6T z#I}--h)IbqvBRm3jM&g0)ZZ0I?cBtQ_KSBJ>l8*a>VGgJfpfF3+J<-{iIeh+_W z&z7}7Xe(=F<&2UoJ`lbWwdf8lrr>0A@e#cR6#&SBM}-#NbZUv`W?XJz=*MR2bbKTb zLS$OQl-Dk)~xh z!CF#Y6JC*u*xEYiEK)juRgT!}cbv*UJ4izZa%Hy`X+ zMb~?~z0R*f-DJPmdilcyp}bKH1d2j&BX`|=n@^R(CNXh#uwe713SqW*6xGPkA?kk=PW z!60=b8$a2o0L3D8lJW9yZvj)em>sUe-G=CDJRUq^44^y~boJsde38f2H8s<_=yDS< ztlhZl=_b}i*0%okzA_xu|GjZa1QV#!mMOG%?-pdT(0?Vx3ClPlSCY>)JEKn^pOQ$7 z478Pi>Dx&)oK3{eu_%HIABI^>JT`B3L_f_zb{Ctv9L6a3BR)_^r<|dKv37*b5JG_u zBP3}>K8fqNR~j`biAZt;3Jq=nc3S5(9dvd!^vz@XY~cs=bL2=q=Fg>0`Z+?;>K1?zMH>fE8_N6iKU9DC(+2F_ z^Fs@5gBUnWE$pR!=W}JJ<&2qvS=<$jb{^XN@fyDM8lPP1FTZVriqOCG*qZ#YFSP0t zea#IN`@WEfqS;1A=wC{@>ixi9gKbks=P>b+m*Sg@n~<+Yg9&nf2c{OuPPaLoBF7@0 zHTa$dt~M^DD4IP}_l#ZXzIFdU?Rrz2hs0&YPJuo6>?^ z^o4NR856Gqrd+q}Y@R4it^>a^ZRERcCJZ1O3TO7$ze|V6_W!4nos!U4JOu298gCE>tAnS>byJYQme<9J~0?;_%H%M z(OVH1BZ)XZdzsx!HhD2~#5S7|3Lkk_c5M<2z89y}2hVBLaf=kwm0nKZITIz40Yzdv z0vZILI6E)G^AmnwI01kL3aHRO+I+{-`$Tk$6KJ4K5YSVcIVR&EluU#xh`>Hl<|t6g zWIvWv{VUSxbG>cQWUkbOnW=y>&L(dj3^0W*kPD;twOdNBchN+&Icy4sUQYKpH$2xc|d9d6^x!JO(MjL&01GIR+s3;8$pA;8YjLM9* z0l!qsy`hkbz%=5H7F!x2$Q?wnD>j@ahe#DrjTo!oKC~cpO#@QF$+&70NoWr&P|o+l zf!g9^C~xZh^jkM>K#QOON`-HtF(&Sh2o$4AzXdeKAyo2va{F}1k-b1MR(7OS-?u!* z&)vyDIrEEvu`9)7zyHv9i%66z^FBqxao^PZuhSspZLi&LjhDWjOwb`*Ws7BQ_Q*pVizt*x%cjd4Uk4GOwlgSo+1+=4p1;IOC zGKy^pZ5%utSiTjGhc2jLi>FK!!vi4lgK@bj@rtXfI-yq?Og_j~q1a_n67S)yy^LXl zoI0v-+s@uoJASfKhTFwo(Lm#ip_FI98dVBF0m#BYZf~Qix_?1 zga2E7sm+l3=xOCr(?60yx?g{wv#oKVbNt2-;(!feeUUkoPD@`6RA1K!j04^v=4q%F zrMWYq;#+0v?sn*2SyR0DinSMX3t z9#mHciU12Zt%K%aEWJ?_}neB5t0d`g%ThA$=W-o zee_rdM8TX@6lNe8=l!d;_YFT2dR3`$th`a2`q9~ptt`ZG@GZ6QiGX%+UCszeUukSZ zIb($T)lYIxF)buj4z7^eIsi=p3~1S%&N%p(UBa>h0E>*%fl97p>;(5!(05T#tD+c~ z9QB3S3?v`Toubmv7sGdU1W*C85YQaqD(HXX;2X|h)ZT9E#o$YdOF0Swh;#zpFpTJ2 zUiRYQGN^Dy9poYnh1U6P2V6ifCK%S_ojH7E5l$#EZ-d^Dkq@FtPLO6WaDsk^CK?WC z86nC@iMOxtmZSgtQr8{zE89B#MEVu@KTwjN$eHYj`nLeRtd(djXSVZzKHNuKP&15Z zo#gluoN{1y@E$3j;0x#HM00=?0@?r@&6JOZ2$>sJ4U=XKAIFOl_9O4h10v$-i1r|( zi11gI;xABA6ueB$2!@U8`b+e*TTmYvIddOU;~02bUtIvG9%Np&34J&t-=JH9)T~l;5}mJT zip^k@w8cBQ$T*uOUk53Hs`w!W!E0(F=Q9|Cq5p=96I^Hus=Z_k4)}#Hp8vBhTEhq^ zk{Nt1N)miL8)V5)c)QOJ^O5#HRi(Q{t;6kJit4k?RBTo)=2ZSd%tZ zcMoJ3N}s+9NhNqZ)7AIZW4M2O6X4l3uUdFpQCLs1720&7J{Z&b&}>r7sro%LCX5^i zMhCxu5Sn1phnjaNTiD04@76WqrtjMlt(trb)uARR^;4Wy91PT6)Mq|_+&gM`uAZ!=H``(Vq1GfRU7Dw4ldYgm1{WCR!`+l0~6j471zVPqzC<1ae2cVYo3^{$u$qYk+*{r58aW0W!Os+1H)7dpNb#a zlr{tVg+~^;tG&Wpx0?@4lKeQHL)h}A6Zx-c8{ASE@5r;(>FfLs06-mFPd5@-D&WA| zw3RtID;TqJM%2Q5%bc~57ecBKsZdaV&Lq!jGdeBds|JbH!F1^(kS^4d_}jzcVobT2 zZD3>UG5KKsSs+ zGC@>MeL##H24&rQzoV<4{X^e_JP)6zaPqf${KDv{<^J7xYlmr<}{qGsO$X7eD9g9 zii)1rhy(8M$*+Wo@?965eG8D9y#&-i`M)roX>X>%5G_JV9L1rE`cI8iz2B??Bpsdo zwD7&R+284=XK%wrt3-~Cv}e*8^(ABeqLTO}8_!nJmFx?yNR9??=y{p;+qZ7uGo~9d z75YI#jK{~)a{cb&h?tSAl54W=MN~c*RMiK6XibKGwM1TZ9Gy?R#g$CHvR$tbz@Pvdn4BEvAZi5!9N`siD20!%__4hua0%+7PETlhC!4b-1If%RZ zBcYdz$gZgH@_zDC4kVbUteH{*hzuYac|CRwJ1@EY-H8DwjFoc>nGLG;)5(egEVVBd zq)NOH4DqgFrO2r_H+LclO)`;#??c7x6Z^jsLe`C|`lf2yxCbjK5s3r(W1VAOowpht zX#cNdRGjsUiGVeq$GDXDRn;^ZHI}QOx(g^VX~Ijm{31mp)V(977ZS6}W+Mqs+%C#t zdJM{zL;m06pD+Ad)e?x;-0SGpR91!FvQ3*-d272+Vkg1`vA&c%QvYEF%qA7|&FNK% zz!`8Zbx34Wp&$YQUdo8bcFY1QJ>3Sd_%;NI)~c zh@sq98##0UdHW!P`WkHY;vkK22+}jFlvE5KD$QgG!IPr@)$^e6CY90543YEiXcT8D z76?8;?Tb!lAW?B}sULu*^MVwl=aJ4n?A}{xqiJ+fIxD(_%rn+A)T~5j_?E^> zFq(@1cUrsz0;>ZM>$w(VfSoNJ;Qjd0`i5A7J!355YpGDE&UrUbt{E z=b=q{`h*Cy|HlQIU`WrmGl*mH&wOM!)gTcwjo|d)&|Md~DsAgK5^{28Op3gHRu=)TL==njv5o?% z|0ypSS+6H0se2e3-+$_iVSkEh+n*{za z($tXH1bV}`cx`PLED&jY^m?h{9sL$>D8$AMRj)$W^*VdK&W0UB&Jqr_hYR-OkN;SCE{+W(r1k$4G~7X> zkZ89QHP*i1!B98zh211?lL(9)zfj2l}O(6i9>ATjIa32@>Fi)2(wV$ zaD$7Cqzf;~qA<6%Xy9e1)bHH?PUiLwiALBcr73+#7DPNBXI}WQ&|*c#uNzbZoq+@< z>AA=5J9U|7UmL5rO#E|WO_UIp0}usY z`is}mri$`2s_|pz^k7~h7KiX+OQ7OF)k@JI3b!F~;`XROFt{tP?M!WDemou;G1}(- zLip~yzmIlf|KtQNiK%b4$!#ry6DutYEN4XDtYT<0;0#zZ9{ldcH^r26v zV1J4h;DrubN51SXgRy=!kZ{2U#RlJqL6MIs=GanB%V*;?mX(g8M>vfLtb!eklf+m> zBt|Z@BDPJ;U-}1{sSFz(-d>rQ2z_EN!dKHLIbtk9pq%)>4(% z=Ba7jvtSA+%3FMiwO;m63V99ezpQ>>p~o8j!wF?+sArrz4?&7Gk)xLj2^A~N8;ZHf z9e)qXST6L!PkyDo>$KwGMB)M!Db~f1r?9+I4pF)=-}P^Zu_HAD%c48*zotfA28*V< z(!V*NB3yI{P5B$EFVUOQ0&4KJpIX6I7SLh=ty%h)WyAHW|Ih*Fo|x#@x{Xvd!rg|u zO_|@0og^8O!yuLL3l*7D#@LLsgB7b2=o|08)lrh+eG~hwuT=UL@6_V#&5LjjFT#C| ztK<|+B&l1$LVgpKAodk=N}|liHIZxw4;I*exwerDEtU~0GPh%Bpjy;lnih>t@_m1w zTC?A$chUFj9AF0?x90!bPpe@Nl+JFa1H8QvB2tgq}xo zpHQH!0i5ualZ$U`Rnf~!uil6t`TpGDAvhB<6uKKtLo08b}E z1TNS%9}r?VEjH-&d; zrk*03>^z<5LV7;<$rCRo#0?hTZ+ z+Vg%p4Ta}kHOS1A65^i67&;ZOe_Is-DM56&(p^aU5A_PQ`Ido)LwC2L%_J}Uduh?< z1RE1>Ucad$qBA=+eYpQkja8dOg#s%A&pMT%te^Fn!f{Q*r`5BqimJXIWmg@E!=s1+ z-~<{}leIWTn2?jjsA!%JnzJOKap~H_$0)gbDWB%g&dXgBT!0-e=#WK5XSp4@_sfYb zhP$5uQ@fU9cW78e1zop`g!}Jd!GOQLTNQE?fF0=z?N3f_zNgj3+w9Mv)xo7kbhaTj zZ5{2FvQX+~ie`uBAIED^G=LrD3+>0drHjJ#+~d~Gc_^rRT=ds6bwc^F43cz7bpPW0 zk7gqc2$@8%{{LQp-fn&(U`FdDlEczcQg|O$2X-;6#x%XfUt62$RgJCB)DbFPMR|n{ z^L~AC>?jaV8@bccRegP254)b{P)#K6my{A0C(IC|r}}PV$Hxnv4iwzMB3u9$uU228 z6rUySh3!T~$4hxiii!$HC!122$)+4OxOkW0E?EHQmjnk8fEO{f{Z?kDeTx!(7)Zl2 zqq$pQXVv)u-EwC@6Dbq?(#OYw16MIESR#O%_NBSk(tJ>HUi0mi7~1!~%hd_UYL3b>A1yRm|XRVt&?h%WEz4x&!{Q*&BLSmZz8 z=e+{}ZdS1TPU6f!BgF2*mV72_4`pJ^#mG&5HMjgpFq!?r=Q6YyIEI(?mj(eSf7xAM zjO6LzbI|5HUJy+eGKEx&pU5A!651LfQ!2o}({!&~;n;buj13DA5P<4PRZ_7S%D|hu zma%pL7Zhfl!ZDmnaV?Y_(T6p~*8d{VWQ>0`7%jN~e=~vpWeQpH%EKDu4OiB(f))8< z7cq!)*GSEp#&;F4gnqR=fU{ia)lLWjZ4XL9M9!0jxBPt6x%#MOwUxA%?rfq}<9tZh z~a_ecu5keDk9$r>R2C!S{975+V9+J-+&F$oAY0`!_J$x#>XY5 z(0G3Zr2Q;#H(Yml@!K|?bJ?!mTm%Y~s5Fd1D=|}OSQQx<4Vbi;Va4^Ug)7Y%LsHud zdPuYQfYCb;1W%=NaBy906?GgpZDApUvWI>YhuO_+zxbQV?=%>*%Cbm(rtuf_LaC7Dnnn2!($di}y(dSynnCr0bfrG~wK zas8jM4(;J^*R`CnT&>zXlSk91$YY!3^ z{i>A1{lMrsvh^PdiV0T_S5874Es6nEX+d;)RhBnJpha8Bg%$w(265v@^SaxGk@+%x zuOk|0uk%1QB@A+hJz;(T6B#Hh>6X5?M3z&a@nmmXGTrBe38Qjzh3aal` z6!VD7(PNVuE^`ViZHG2xHKzpb|A=Q=xq1cEaf1OQQ)!tGZxC?Q&XVQKUIiN8Cl_~B z^>Z4gG&kp}@Uy|{A2E;8AbM&b2n$>-`NeAK(eRwOJtTZ@$`cvf{7sq;>*v)SwRBf^ z{$sKbZOff8onbo@5>T!JS~GE5P7$T);vi%@aBIu;g|~qm6vh+f0ok$D-1Iq0GQ1$9g`YpqM z-DdYdv~tEM-msbE;eHb9s;PKZtt> zuTaQTAec5~nggg4H*zQa*WZMFh+gE+f03Vv%Dl9!_B!R*7izM-p2Z!vD-%PTkU(Bo z-nsJa<}*I-d6qxTbGt8;ZXy@}76?I0+2nm8<(Zkjk8iz1z8%cEuT1%E9GvGx6fVsk z+A__sdi&dP;{LRy9r+jwncIO42ucG7<4Vm3g%QZZg6lZQX{{%dR$>&+%DdRWQM`l(=JEeRIT;sRZRY-Q7x;<#yb^L)|p>2mI{);3leDy4Q9&TAU%__^)Pz(Cwnrl$AudE|OLQ+{_E4 zLoka^0bsEGprvzt-1ZH;^E9X!dHNS`(GdD-E`m`po7aqPUfq(VVYpe>@A9KHHBD>@ zxU>h(-9G;NMfwj#kN4g)Fp=b7`JtYrXP!RyEYZJ`Q(HpnGwEmE6rsbk$%{6H+H`UW&P_1NG0aalenWDP^6)*! z5l=^E$VtJbctbePf`yY+^q^~;Dz4{KYRLGH)Clt0!}?(a;WjpsNYO9<@pM>xkDxA8 z>VlBGG#r5-K-q0xeLHLsXNjSux|KI2g#ocJB69gw&&0Oz3H8aW-Jm(i&$fC#t%+2= z{0jc?$bKsyI|@BY;g%%bKO!$3Ec@t}Ut~ zl1+_*BXQ~Oa#_Lt$oo7dK-lSke)&+|01b(0YD}lrRxzhJ9v$o?sbdI1RQYMy65_ll z?dCRl)I>2iGvHpr$@RhgLHbCv%rP0)RHm=}q-!bbkyMzkdbf~;y0O8z$yD2$K9Hhp z?iVJ*%-IMY=;T|dna<}_e_$d@K3Eb(%^eG8%#Gz|5jzPgE;e)BZ7jwqChqJFU1TO^ z>IUBHm!SHu<+eUt9i(7TR;SwYdpzN^7D(jQe-`Ridn|3_&w4oMJ$~B!$A7=&xwh%r z;n-|INW6Emv8{9DJ0lH^IPcRh*!!4{u1VnjhW)!8HO>LQ+TE&c{S(_VY7**HdR6MH z7+g$R`h+iC$UJ-avXb?M@g@Tv>ZPuNyS%k;7599vQ$5} z?$oAYM-FFHs9n7Au36X@p5_#cO~~BdbcL`na|#l(kkH}QMJEr-E;FEtMT*ytEQk(; zQw6(Q3v{(FI79>+??q7J2sr8KILC%!M{qCR8~yg3KYczP4qFb0vef~vAX|LiX`Mgo zDkFa2u^ce_eYx6GpHK8uC7klXJw5o>V#R&w^Iew1-2jf%vaf7!ND~E-@76%XSf>_P z0j5e?;99D(VxS8$6WX9L#q`X!p*X&FYMMDW(NHA8Ob(OUh*I zT!RQDJw35gt21X&7lPoaQ}{|VPTqW@kp}!t8~q+t2wVTpDZbNLgq$d@_REPCuaj%Y4gQs5tTaV=c>r}71_CGb;m zV+HvIy>B{F#%Uf@lq0)!i2WEh%E>}$QDg1!XT z3$mTa>$$g)aC+04E<{n{m8(O|^?zGNub0grpO%MF4byoqM9v>kds0&uMYCD?(g_Z- zK+Ch`fBDJF9arzfy);E9Hx4GqW0}_?)-HZ4iH6ucQjJ27Aq^RxJEu{)w4$B3qmr`I zB0no7E|tq3BR$`cq`M(sP1>05sXP?L^w?{@Q@qigyI2mOU()M%UgXdon#~a0BJt2u9Jf5Kx^m!o>hiS23Do#$ zYo}RzTEaqY>GBuV@S5|lhr`tKyrJUj7N2d39@GhtajvIM;H}+NBC2eXi036P>T!*V zv%@YY=dPnQN5FoenY`%3Er)jhPXx!>r?fJt!ewLFaJ_S6%Y_nSA{s=$@vMja7gVFk zec|A{g%}5V-0)|0XTV_>@O}nynE1u z?V*FbqiJmL&3p<~U-mjHd;StWeYD`;6L=ZcRk0dDflyyMecVvB`B^IF;kGsNZif}A z#A1F(zx6)mQN?+$Q@NDjFvkD)Q*>jD-+iE=z~@0O!Djz$`{f5B8V=vp3-`NMFam$mL%gGIh=wO1u4mv#WfsdGRD>(#1n*XU}rVnEB`D9wP{AiUsG ztTZ~4VP!cnUDvmo1CsN=OXJg!>qt|Mzg!F@P_t&SB~OEYY~88*)xr-xXW5IfB*zS9 zZz}6G((zB8&$efmjALA{j-1y6Z#53%J#`U=dAX2I>+f^*neH4P&nupkmnU{V&krv9 z&{z0Y1yp-F!0Lkg%m#0^3NUWt9j%YVKjyI!&UxRvf#s(jyXV(yetz@OzEAhh z^_ST_1wwpw`QwK%!V(aor>m?jmUoC9=}WH1Nd+{GdY{3nPa{1JF>3(rCaa1e_59e%EFT@8&vh{8I{bVxEVG_F-SiEtMp_HKL(F>C z%dYHIl$;#;{GRV)EhOF_>RZ_Bk1ru`j_>(D-P6~t?YEva+Zi6GkUXf@9P4e<2q*8% z*>z%c@=Wb-H)`Qoi`@?<~Oh)r&f<6#LFoyUM0L zb)(-~f`EI$P)7V$uJU?%9Gd}SZ)mjG~3G=52V?=t2N!q%gDoaMwEeLw!85ZMIc zEV5W~$CC-sg?}Vj9)1hC-*jDEvVW%tKl{b51Ou!n8wChWU|Ha<-N{w`Y{IFlbpI~7 z&oP`(5hdz=p0E1XC-g{18|)rtFH;T}(*e|(5pk!xoaAqM>wNFob`DI6ha9Wy=kvgKbFjiGrk8U0;i3fUdiYOwTmC>IWN4r0Tu8@gG23>hV}^a!=( zW3b#G8q{sMQFp-Yd0tyiij=(2YVx>0?5aR#$%^Fu!`fYk)q9a??R|m~F(eN?RhAs+ zHJ4fnELwn&JEgDvb6OnY=VbUTk#kxzv^!2C6Tc2&+q@4M%^tX|k`!=`vXvH39pa@6 z>=j7A5M0x1R5NI=m$qN>xh8pHLoyzgLutB+EL@i=_1^ccKNxAzWN$9eB@W2he3HtM zXY!$J`0Qhvj3Z%qTs8gK4D3WKMi_9=h7E>wAejZ!mYWX&7A~LB81dFcl~hq$0}KA- z%En05WvfoCxzpL3(HlXm@u4|Qo?h8wa~|r)<-@qPa>(GWP8Gk$)0qt2!DE4}MpnMs zl+yEje6m;m`~AIVbYHaeWiW{n!_P(wgV?t2ZK!!X13&c=8lt0b=Q(4?oXI(?KIRep z+MOlEs_))UR$)AWs>tZN{bWHO|DY=4{j^~2tZ+&9bd&i{lQ@F-(ETYZ%W@mF5F87z zg-{hAJBikX+_M(~P zKfsZ(@$+HkVSpwD@{2=+3@n=~8TQ~oxGe6sdP?<5w%Z%+mzJaHN8c_DF2YaiWY5`5z}q<_mF|+m^IJwC#3QbF{jY+0|M@OGs4HefLz^qosb< z-9zUps^xHoPOrqPuJ(;pRE}m#{G++~rrF-o5VpVC^vqv^%#kap$%q&2iFgkm(nu^GKRTP#y6>H5 z@c9`IZJC=!p{4ijF0lWq*D#B8MU5Jzdk%aYveW54c4~@1P7oCH1Eq%7Mq4@0`yGmtFZk)0Z$-aElo+^Wl;BK9bnT`i1qJFu{2lvjO zgG@eumHka&(2F9@4SiX!HUy`@QIYVuq_Z_15;*(OIcBLqv&h@EVBf?+hOoVFm(Ev1 z^QtdSkpTgO)80(>`t#~M`$@#P+I7vX0ukuAdfhUU-_bT<&5cuILoHacm>iYxNd(U< z18wqcJ)VY+FCUs6GjEEX=li$wwiEMdWY$fahy7Z?y_)FGi=;#TJvBBqWvr6jxTfrg z2XVxT<+5eZqC5ks4Iuomo`;@}YRM8zSD%eWwO6hY>9^?jp`z}cimxwTgKNq0Qm9F_ zsDw1aGs7fz;?;%bA*T%k{b14y@ZY+KNJ1dC_dSS@s8L|T*Bw5r_`tTdU&bv?uR+_p z6nWH7k_1j)@rR{#PJQcNcjB5lM=sBrDs0P?4%=XuNF`@7!26rFWTS7Z(bD}*Q7IOp zI-0YfHq}F<=EWkKsj=Hkr3V81CC23Xm+7BPZb=8~X-$2>BSl|y~ z5q$r=05_V|qD?!qH}JEzL~MC1AKbK*kfR3ia9|IX+;r8K=v5ZO_?vH0QXvU$2GHNm z7}W7B5@K^b>_Byu@V+QM?`@8qZ;axAYccs<6OH;^B~ON;iP^0)%6Gmner8z z`Q*gpVS{Q6O+9ru@^Z~N4#HZ-V#HPH!#|1AU3dQDh12=g`Rj+_?yJ@gTx30(`9K2* z?$>ibzmL5HPBvF-7q_nL$B+ZWUKe?Lh*`4<=cH>=I z!YXuhv&gSE?wsd)pOJQ07-4H5RrWni$h#QqEJ6B#bm4y7$XXB1gQa+agJIMwi8S38 zxSW>46dhGJ`&N}+W%>KwEH-bnAcuEzZ2`D;&CPx?RyAG_Q!8+z)$bo8j-Sfe->~!; z42%9L=aSP`-@w}3r91FB@4Wvyay!g_zW(nVjtPWU8~d<%@B*6J+n13B;jhI#Cay*3 zc}U`OcKA0xX)okakjV6Jz5%i**j-^zz{cdTKNd#)fOCyg>$&%QBHN3z%+hJPHttK2 zlEXLEn5Rak`+Yc237m-tKWZJcm-`+xU9TZ@*%S2!UUY2?FVWAG&W%EaojosZUSFr4 z@~I*&@##E7DN+YqBS+Lm&-B)Lop^AhB}4S@mA=?1w*=IAEi0Vs8p?s~L?YNNvvxe2u=D}-W0q={pk(T5T<9y$m9)6z26z!t?8s}mEKaEFD z`T6ATQB}x( z%zQ1^m%`5AaLzh#;2O08x0`p5GJk4S@9p7V3)Stq8m^}P;Jx`=UVOLcOYV*W*Xm=? zz-%fPDZcM{{OQ_G_&UB7=^&1^q`UDbVuFXBZd|vvR_Fpr5MNV-^`wu5h2QR!eG|(b z|EQ_JV%s5Kt*N$OgC@!wfYNm>3c5)DfVzi=gGh31KsNQk!CiZi3 zR-?@McLwsf7Q@ukAA-KWSzVNILy04i7fCCY?!MK{+OazMRRvTO*h`@ND@sWyHtNrI zJ}$|JWYVdj%?d2L_(QXnwLoxaH+Gff(RyzpWT+C|Lv8s8 z&Uz?3#josmkZbOi`fn?&pRWeHuimZaA|IuQJZ}Vf9=|(}<)`51#-mXE>uK1Rv2*@5 zgO7j8`c=h^{CwA1(xNh}zOTaW>k21Gfb+j9qNxd^j5$!qY@(!w1 z`twfm@sQ|_qLHGp5oKOg*sJ8Ed-c632*Iw8%5ihAB>i3Y+n;UY*A9O2*L<0E27v!|u(tMC`B2^9S7IuajGd?HvdnCRu!29tc3FztS*HBfR(6 zyPS|uUFR@yI5T-Z>6rTGa?I6IA!8@-cGgSQcX)ic+_FIN>CzCBraSFgXykU6MeC0{ zJ)#R7&Ryp7>_kMaBz^Pkxnj>e-@8Y{XB8i2=gghGrPKLk`nM>V5Btx_yk)KDnWe*i zbYmmZ;s#{G0V|I!IDxAc76WPx`y7Tc9`-^H$4~0@T2MckezBP5$DZd-7R=(*h9egL z660ZiJu3wZpNElvd@Y~;sgC6*)mF8JyTr|g%%vLFe(;+d?JZ@nx}^{d{fz?#T`6Mi z0@tdTPz6jVRpsbvzh?<}SgnL)C2O#91-Nfwu@PJ?OrLI8#uKGM#9cyUSA#_ZZcLt{ zNCHIz@Apx|ZZgC^XvHYrBMkGE5iw@spJ+B0hEQwqF~b&O^Mo;HWkOt7ls084O;U|g zf5zo*@kn>osn~G`5|O+|6zN4Ach6+#yVWmwwasXvGO;oHg^`8WTR-@xc*3g+Ig#u( zd~o9KOdKI;KQ9Rmu%%KpN*g?IxZsQ-u_G7aqTWjjGP~k>R+Qo^Gv@@jy_l+FgBGPu z(rfH>XgUI9ZXJW>+n#@NoL!iU!?7cLZtYeWTeteTn0aC;$yw48|88O| zd>IL22JyuR)6qKTUmI0TzxzDcq}no;PB>rza_bc}XZy>e5B#~rLURRFKTi*f(P5cS zLKtKKfKmHNTtw}T_`JD`fS02`{d8}m$K^q$hYo7Un6O>5?JUnRrYXdz0v}MZGJmzO z$=t%1e7JCZxZldmknLB-E5OSt#CP?#ad+Oq(SHY{F!NBOL9&WGTj(S<9Cw>OxQ81) z4$J-nHxVJP=`p_kftnB$|L!$rrn#c+CEqL>bR?AwR2iMq$5jfvBa-OTyaW8XT59*3e*gP3knog{g2 zNUWZ*@5UaQG>9@rcURize3wVZW<^+3kLtqg{9m_}QCpVX7%TkMs3B;%*8Jb$pklI3 z-=PaEUB8>IoTkjX_&@o1ZkCqa!hW828x?NXHQ;=vY`K|cZl<^gLl1f0^|f>Nhx3lu z(k~x3WnIkpc%AwJ_J8?%jHEG1lQ(>Jm?G#ilYE*yua^NYRa|i~_U(Ozh~?|EcM#K} zxvQ+l)B57nPT;^cyVk(A$<`6XQeE@>QC>fy{V5g1Ck+V6sjBo-82V!Ap4+Uq7h?`u zMvZEm#7c@`fS)$t>R8(uY|l_Sf8rrO&&8E(l<$#kz{;q&ZWwW-tp?>QEQ-y!{ojo5 zl)u%t&?kUE6&#O(yAXtyw&jQ5YkFp6H1FYopgjfjf)!CmSyE(^;=hEfHJDHhs^trx##IpO45&uYW6jrcE(R?%_{=FCBM-e=rr3h{v zS((c_PVAPFUC)gVyOK&vRZa7;@jU$G=~%Ice_>Xs?-KP(i;uo5zRCLQE*4tTs z=Vg#6*IzZnnSTFPpUF7)vP(yBCBUg&$m4Iu(7(9*=UPuo5f8O6n9$)5i~h+i{R^{F z{Z^*cT8KzwW@u?B-Hfmd)R>z&dJ#mLU7zR`R0>_F5@m?b5}G!8)hkpJJEIwDDoj~x z*g}nhgTH@7uKZ3#hQ!1%#)v;?WpUKvcD)-P#t)%NnK9xS_<7q}J3n4h&opWEH1Cc* zE@#sYe!`~>uApl<89cS35DrJI;U=!i<3zRL9KGeeA(XVS$Yg5WdHZSgAv@2SI1}!r zAU5)m{M9s@Ma;g{6^Y}h@hG05n-0^z180+JT!7yEKU<&`YC*kc^T+E-&3a{Er$w+Z zGo*fBTs z<-*Eukg15Q$h2DUfi09X{Ex5XaD77P%2*SH-Tl0Vqs65(eOA{Nz9klR$;K1upUO?i zP#%hl&JH1P5V-hEcVD0D24|nZsh+pHa5bq-Y)gGr{rc1^a@-y~l-%CH0%2?{RQNn0_|TsdVQ)_M5L$_5nM@Ru6;bt zpdaV_;VF-4Fe0pSVb~xthBHSux!tmSl7C)_svui^JBXB(et|X@$kPif-Je^EQ<=dgAGddh?r(tBZ%y5Pd3H3-ziJQf zP*S>NA#9fsvKT$@aE7nOuQD!U@o?Y4Z49qW zZ6HfXnQvOyH8p<7&29!$t;iJNdZ^oe(B60l2RWcZNl2JAU?(V18tg3M>@y0xnhRe? z#+4ja$W19&67raLt!Z%75lPX@4w+s1l0%bfNLq@DAn4g_#APpAYlr!yVjY?dn_b;-$%PiR&$&DQ>V8q2MJeK<91yo@|BShNu4DEqjr z_>G0|SC^^Ddf$!Zaeq3|X>)CDvEvOjrzqk3`UJm&ql-Cc#iG<+ZJDBj0mgH|^AL|8 zMQ}L3i9GZA_5GV{A`l~wbH zJ2KUtyeUaqd>FEphh{1thAs@Ylc?-<2a0hQ7eplAkmdalqKBw>Dsc^dfFb%A8Gon3X6I!LbvWDHMb+UTlUIJmx7PIc zGp*#X^xwR{O-7wgjI&MV3w*Ahk~)$(WA&~Ty?cPcpWuJT&2Oas8rU@FZmSR-$mSg#)#6cX92vf|Je@kd+;q*ZI+t(Zda5A zy1OkqK-K#DxOf6~9g`Pp58I0x^UP->%*-#^p8}u4?ryq@N~3CPYD*TK?s^@gj+V!3 zJRXw*ACeE^HdPB0rJ*XwIM)FWEwZh=yibu|t6U68R0c(`=FY2mM*m-XSN@fB)`zLL zu_hYzWXoHbW;2?WiKXV43uUWFT1c*_DH?8Ji#sl9lu@JQfS@TdmZ+GfSYR$di$Y3j zZs3ZhsknlWnEU&k_x%Ije_+nJ=iGCDxc8iU&ppq5KIcB4&oga+hMQe0i|Kd3lm)aq z)kGcK6WZuOC>Z_S=`i&Z%R#uk=}$6(jqXXWyy53DIa4%X&^g+c@mNdpUaK7p{|G+v z%gA!!ST+NZ1(`gRQ-j%>IkAE37j!t%r6l{d#g5@eDF%gu`_Kxyd@&&t*gk(tS#yI? z!f-CHM(j{aHaEz8>StIoFE5!g);D_vKQubz{uir}@-f5~)s5v@4OJC<^WL}p)&;xj z*T*fRwr;%Zn_9=O`!!9jbU9<~^Y(4h6H|lE8aq2O^v>}re>&C4QE$57h<#a7;K~~$ znFtf0s^a~+gJyPv=NlcdttpI-L%DGF_>1Un=8t#Iw7k%Lx00lvzm;OmBhV`f$R0HQ zn7vW(A5Yu2=%r<(1DNY-Y=GB14=?9q{@7A?#oOw(F%o9(mXA&JzGwtlx2&nmBTNil z;cDA4IW|fJEaPSXKl6U2iCcsTy84z8{ic?ymuoL9Cb^Lk$p|Uf!QOuUVi^Frfc~^1 z45&OhFU<848E}>Mjlf+Hsy1FRoT?FM?7eFRKu%qU;aIDU@*Bk0F}PvG>Ey`H$ET~c zg>3V2YflHuyigZ%J6E<-kw`bDBb!;02q3G8pLNQy&(*0ka`eK<@ZNaUgbWr)-)$^P z2Bbta?>Ch`Y|QR@k#pu0UK8=`fLuY8#Uy$^91h&=?0fK)Q%Ie2!Hx-h-L1ed2g>UA zBRhS;bbQWb4>vp2TxW@oHL{JwVZE{zqLnctA3u#)(S z*kUrcbWy07%7vdOCP8%iEfr0UX^fwFK9-(>N-LvQuQ@!iC5DcOd;eU5n{B1p`0VF( zFGw*|xIrFd;5-;p9mvTb+j;g3B>fgg8OSiJCw z=Unf*-BI#mg!b83TCqOQu+P_4Px~oHTo2Yy__(!bHhZp)n~-pPq$HeoSrV06ThWm? zjG@mb%(X(Ztjx5xr74v^T{EdfiK(&qB$xp)UzE>{jv?LAn&;jX*DGSu~p4TI(8lppx$kM@Xw(3EXR30{H zC_n82ix}->TleFzx2tqZ6PFuctP{2wZD9EN{UgubqAZ}$p6p$UrNWVhFjZoe}k&>;Y^**HTH5=3l`HPPK3eR|NPm#OT6*&b3%2xf7@yGwZC zq9ClN18Wg)_WCf5WUzj5*LKRxJ>3B#d@_YO=^If_v_w2)~u&QY>6EG zjs#`7051X*!LO{A;B?$$`UGlu%U`R zBMOe6-0p~}wH(+R9tvG6OR{WkQ2!$qH%xsBvv8{bjb)yN1Kx(i9nm$=0k4Fwrdc z%U4W&f5!Ea5Fajmg2TLX{WX96A9SGwTGV}(5RUBY`~8q@yh={B(?iV~{emJr50DgCuqd(uh%6RWgmRyxST=v38m=Iyn5W<&H~)zTaUuAOkEH%hRS)}t>} z^G#&hM7)YEBsIH^T)V<2a1fOLnm4!i|%aagFcGc19ih)Pgim6ue zbv5!g;aIi!Fb#J=InJXQkv__}?mE@=9igB*q-m)%E7s4;HPkCd7Rw!P9>#5yxB=nL z6!(W4fvtL(E0ZV6NpLPIt2U=#&Gfm&FF1D@KLO(5Uv^#6;cpVk&aHTjanitPP zd|=XLX7a7?P`_ouYOoxiL*>cQg~q~`06H>}p{XW|T7@u3l~hytrI`7=RuE`t?+K!K zoB9TcM=^^+iz|1_z8RkQ*<0IZ#ddQbn?06Igj92nmH^c1N61v(V~#C3oM z|M)i`I|-z@N3j>^9&U^M+XeaT1HiTy1Uh);pK1Rb$^X42%A`ZvYznmt)_}|c5Xj-2 L)7e+{*HZoi7z@?u literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png new file mode 100644 index 0000000000000000000000000000000000000000..9b018c390531250defeddf0f093238f69012a6f0 GIT binary patch literal 41450 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

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh 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 D&k=w9 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-under.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-under.png new file mode 100644 index 0000000000000000000000000000000000000000..32845115d934b2c35d279f3919d36557cb8a61b7 GIT binary patch literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart-options.png b/data/plugins/grafana-piechart-panel/img/piechart-options.png new file mode 100644 index 0000000000000000000000000000000000000000..117962e05ff61b61972a4e1fc5c7637d00f78935 GIT binary patch literal 48400 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 a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_large.png b/data/plugins/grafana-piechart-panel/img/piechart_logo_large.png new file mode 100644 index 0000000000000000000000000000000000000000..21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a GIT binary patch literal 3723 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 p3YbhacYIB1Qj?lY1NpxI0|2nop0tA \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_small.png b/data/plugins/grafana-piechart-panel/img/piechart_logo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..10d49e48427e4576ab8a98be950633e5a8f76dc5 GIT binary patch literal 2629 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 literal 0 HcmV?d00001 diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg b/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg new file mode 100644 index 0000000000000..f6f2f7526e685 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/light.js b/data/plugins/grafana-piechart-panel/light.js new file mode 100644 index 0000000000000..ba95ba7480d1d --- /dev/null +++ b/data/plugins/grafana-piechart-panel/light.js @@ -0,0 +1,2 @@ +define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=10)}({10:function(e,t,n){}})})); +//# sourceMappingURL=light.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/light.js.map b/data/plugins/grafana-piechart-panel/light.js.map new file mode 100644 index 0000000000000..0fa319eb3a221 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/light.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,I","file":"light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/module.html b/data/plugins/grafana-piechart-panel/module.html new file mode 100644 index 0000000000000..e0faed58b879f --- /dev/null +++ b/data/plugins/grafana-piechart-panel/module.html @@ -0,0 +1,5 @@ +

+
diff --git a/data/plugins/grafana-piechart-panel/module.js b/data/plugins/grafana-piechart-panel/module.js new file mode 100644 index 0000000000000..e625b5d2ec81f --- /dev/null +++ b/data/plugins/grafana-piechart-panel/module.js @@ -0,0 +1,3 @@ +/*! For license information please see module.js.LICENSE.txt */ +define(["jquery","lodash","app/plugins/sdk","app/core/utils/kbn","app/core/config","app/core/time_series","angular"],(function(e,t,n,i,r,o,l){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=12)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=i},function(e,t){e.exports=r},function(e,t){e.exports=o},function(e,t){e.exports=l},function(e,t,n){var i,r;function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(l,a){"object"==o(t)&&void 0!==e?e.exports=a():void 0===(r="function"==typeof(i=a)?i.call(t,n,t,e):i)||(e.exports=r)}(0,(function(){"use strict";function e(e){return getComputedStyle(e)}function t(e,t){for(var n in t){var i=t[n];"number"==typeof i&&(i+="px"),e.style[n]=i}return e}function n(e){var t=document.createElement("div");return t.className=e,t}function i(e,t){if(!f)throw new Error("No element matching method supported");return f.call(e,t)}function r(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function o(e,t){return Array.prototype.filter.call(e.children,(function(e){return i(e,t)}))}function l(e,t){var n=e.element.classList,i=v.state.scrolling(t);n.contains(i)?clearTimeout(b[t]):n.add(i)}function a(e,t){b[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(v.state.scrolling(t))}),e.settings.scrollingThreshold)}function s(e,t){l(e,t),a(e,t)}function c(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function h(e){return parseInt(e,10)||0}function d(e){return i(e,"input,[contenteditable]")||i(e,"select,[contenteditable]")||i(e,"textarea,[contenteditable]")||i(e,"button,[contenteditable]")}function u(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function p(e,n){var i={width:n.railXWidth};n.isRtl?i.left=n.negativeScrollAdjustment+e.scrollLeft+n.containerWidth-n.contentWidth:i.left=e.scrollLeft,n.isScrollbarXUsingBottom?i.bottom=n.scrollbarXBottom-e.scrollTop:i.top=n.scrollbarXTop+e.scrollTop,t(n.scrollbarXRail,i);var r={top:e.scrollTop,height:n.railYHeight};n.isScrollbarYUsingRight?n.isRtl?r.right=n.contentWidth-(n.negativeScrollAdjustment+e.scrollLeft)-n.scrollbarYRight-n.scrollbarYOuterWidth:r.right=n.scrollbarYRight-e.scrollLeft:n.isRtl?r.left=n.negativeScrollAdjustment+e.scrollLeft+2*n.containerWidth-n.contentWidth-n.scrollbarYLeft-n.scrollbarYOuterWidth:r.left=n.scrollbarYLeft+e.scrollLeft,t(n.scrollbarYRail,r),t(n.scrollbarX,{left:n.scrollbarXLeft,width:n.scrollbarXWidth-n.railBorderXWidth}),t(n.scrollbarY,{top:n.scrollbarYTop,height:n.scrollbarYHeight-n.railBorderYWidth})}function g(e,t){function n(t){g[u]=f+b*(t[s]-v),l(e,p),k(e),t.stopPropagation(),t.preventDefault()}function i(){a(e,p),e.event.unbind(e.ownerDocument,"mousemove",n)}var r=t[0],o=t[1],s=t[2],c=t[3],h=t[4],d=t[5],u=t[6],p=t[7],g=e.element,f=null,v=null,b=null;e.event.bind(e[h],"mousedown",(function(t){f=g[u],v=t[s],b=(e[o]-e[r])/(e[c]-e[d]),e.event.bind(e.ownerDocument,"mousemove",n),e.event.once(e.ownerDocument,"mouseup",i),t.stopPropagation(),t.preventDefault()}))}var f=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,v={main:"ps",element:{thumb:function(e){return"ps__thumb-"+e},rail:function(e){return"ps__rail-"+e},consuming:"ps__child--consume"},state:{focus:"ps--focus",active:function(e){return"ps--active-"+e},scrolling:function(e){return"ps--scrolling-"+e}}},b={x:null,y:null},m=function(e){this.element=e,this.handlers={}},y={isEmpty:{configurable:!0}};m.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},m.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(i){return!(!t||i===t)||(n.element.removeEventListener(e,i,!1),!1)}))},m.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},y.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(m.prototype,y);var w=function(){this.eventElements=[]};w.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new m(e),this.eventElements.push(t)),t},w.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},w.prototype.unbind=function(e,t,n){var i=this.eventElement(e);i.unbind(t,n),i.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(i),1)},w.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},w.prototype.once=function(e,t,n){var i=this.eventElement(e);i.bind(t,(function e(r){i.unbind(t,e),n(r)}))};var S=function(e,t,n,i,r){var o;if(void 0===i&&(i=!0),void 0===r&&(r=!1),"top"===t)o=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");o=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,i,r){var o=n[0],l=n[1],a=n[2],h=n[3],d=n[4],u=n[5];void 0===i&&(i=!0),void 0===r&&(r=!1);var p=e.element;e.reach[h]=null,p[a]<1&&(e.reach[h]="start"),p[a]>e[o]-e[l]-1&&(e.reach[h]="end"),t&&(p.dispatchEvent(c("ps-scroll-"+h)),t<0?p.dispatchEvent(c("ps-scroll-"+d)):t>0&&p.dispatchEvent(c("ps-scroll-"+u)),i&&s(e,h)),e.reach[h]&&(t||r)&&p.dispatchEvent(c("ps-"+h+"-reach-"+e.reach[h]))}(e,n,o,i,r)},M=document&&"WebkitAppearance"in document.documentElement.style,Y=window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),T=navigator&&navigator.msMaxTouchPoints,k=function(e){var t=e.element;e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(o(t,v.element.rail("x")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(o(t,v.element.rail("y")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),p(t,e),e.scrollbarXActive?t.classList.add(v.state.active("x")):(t.classList.remove(v.state.active("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=0),e.scrollbarYActive?t.classList.add(v.state.active("y")):(t.classList.remove(v.state.active("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)},X={"click-rail":function(e){e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,k(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,k(e),t.stopPropagation()}))},"drag-thumb":function(e){g(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x"]),g(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y"])},keyboard:function(e){var t=e.element,n=function(){return i(t,":hover")},r=function(){return i(e.scrollbarX,":focus")||i(e.scrollbarY,":focus")};e.event.bind(e.ownerDocument,"keydown",(function(i){if(!(i.isDefaultPrevented&&i.isDefaultPrevented()||i.defaultPrevented)&&(n()||r())){var o=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var l=0,a=0;switch(i.which){case 37:l=i.metaKey?-e.contentWidth:i.altKey?-e.containerWidth:-30;break;case 38:a=i.metaKey?e.contentHeight:i.altKey?e.containerHeight:30;break;case 39:l=i.metaKey?e.contentWidth:i.altKey?e.containerWidth:30;break;case 40:a=i.metaKey?-e.contentHeight:i.altKey?-e.containerHeight:-30;break;case 32:a=i.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:a=e.containerHeight;break;case 34:a=-e.containerHeight;break;case 36:a=e.contentHeight;break;case 35:a=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==l||e.settings.suppressScrollY&&0!==a||(t.scrollTop-=a,t.scrollLeft+=l,k(e),function(n,i){var r=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===r&&i>0||r>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var o=t.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===o&&n<0||o>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(l,a)&&i.preventDefault())}}))},wheel:function(t){function n(t,n,i){if(!M&&r.querySelector("select:focus"))return!0;if(!r.contains(t))return!1;for(var o=t;o&&o!==r;){if(o.classList.contains(v.element.consuming))return!0;var l=e(o);if([l.overflow,l.overflowX,l.overflowY].join("").match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&!(0===o.scrollTop&&i>0||o.scrollTop===a&&i<0))return!0;var s=o.scrollLeft-o.clientWidth;if(s>0&&!(0===o.scrollLeft&&n<0||o.scrollLeft===s&&n>0))return!0}o=o.parentNode}return!1}function i(e){var i=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(e),o=i[0],l=i[1];if(!n(e.target,o,l)){var a=!1;t.settings.useBothWheelAxes?t.scrollbarYActive&&!t.scrollbarXActive?(l?r.scrollTop-=l*t.settings.wheelSpeed:r.scrollTop+=o*t.settings.wheelSpeed,a=!0):t.scrollbarXActive&&!t.scrollbarYActive&&(o?r.scrollLeft+=o*t.settings.wheelSpeed:r.scrollLeft-=l*t.settings.wheelSpeed,a=!0):(r.scrollTop-=l*t.settings.wheelSpeed,r.scrollLeft+=o*t.settings.wheelSpeed),k(t),(a=a||function(e,n){var i=r.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===i&&n>0||i>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var o=r.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===o&&e<0||o>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}(o,l))&&!e.ctrlKey&&(e.stopPropagation(),e.preventDefault())}}var r=t.element;void 0!==window.onwheel?t.event.bind(r,"wheel",i):void 0!==window.onmousewheel&&t.event.bind(r,"mousewheel",i)},touch:function(e){function t(t,n){var i=h.scrollTop,r=h.scrollLeft,o=Math.abs(t),l=Math.abs(n);if(l>o){if(n<0&&i===e.contentHeight-e.containerHeight||n>0&&0===i)return{stop:!e.settings.swipePropagation,prevent:0===window.scrollY}}else if(o>l&&(t<0&&r===e.contentWidth-e.containerWidth||t>0&&0===r))return{stop:!e.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function n(t,n){h.scrollTop-=n,h.scrollLeft-=t,k(e)}function i(){f=!0}function r(){f=!1}function o(e){return e.targetTouches?e.targetTouches[0]:e}function l(e){return!(e.pointerType&&"pen"===e.pointerType&&0===e.buttons||(!e.targetTouches||1!==e.targetTouches.length)&&(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function a(e){if(l(e)){v=!0;var t=o(e);d.pageX=t.pageX,d.pageY=t.pageY,u=(new Date).getTime(),null!==g&&clearInterval(g),e.stopPropagation()}}function s(i){if(!v&&e.settings.swipePropagation&&a(i),!f&&v&&l(i)){var r=o(i),s={pageX:r.pageX,pageY:r.pageY},c=s.pageX-d.pageX,h=s.pageY-d.pageY;n(c,h),d=s;var g=(new Date).getTime(),b=g-u;b>0&&(p.x=c/b,p.y=h/b,u=g);var m=t(c,h),y=m.stop,w=m.prevent;y&&i.stopPropagation(),w&&i.preventDefault()}}function c(){!f&&v&&(v=!1,e.settings.swipeEasing&&(clearInterval(g),g=setInterval((function(){e.isInitialized?clearInterval(g):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(g):(n(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(g)}),10)))}if(Y||T){var h=e.element,d={},u=0,p={},g=null,f=!1,v=!1;Y?(e.event.bind(window,"touchstart",i),e.event.bind(window,"touchend",r),e.event.bind(h,"touchstart",a),e.event.bind(h,"touchmove",s),e.event.bind(h,"touchend",c)):T&&(window.PointerEvent?(e.event.bind(window,"pointerdown",i),e.event.bind(window,"pointerup",r),e.event.bind(h,"pointerdown",a),e.event.bind(h,"pointermove",s),e.event.bind(h,"pointerup",c)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",i),e.event.bind(window,"MSPointerUp",r),e.event.bind(h,"MSPointerDown",a),e.event.bind(h,"MSPointerMove",s),e.event.bind(h,"MSPointerUp",c)))}}},W=function(i,r){var o=this;if(void 0===r&&(r={}),"string"==typeof i&&(i=document.querySelector(i)),!i||!i.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var l in this.element=i,i.classList.add(v.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1},r)o.settings[l]=r[l];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var a=function(){return i.classList.add(v.state.focus)},s=function(){return i.classList.remove(v.state.focus)};this.isRtl="rtl"===e(i).direction,this.isNegativeScroll=function(){var e,t=i.scrollLeft;return i.scrollLeft=-1,e=i.scrollLeft<0,i.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?i.scrollWidth-i.clientWidth:0,this.event=new w,this.ownerDocument=i.ownerDocument||document,this.scrollbarXRail=n(v.element.rail("x")),i.appendChild(this.scrollbarXRail),this.scrollbarX=n(v.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",a),this.event.bind(this.scrollbarX,"blur",s),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=e(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=h(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=h(c.borderLeftWidth)+h(c.borderRightWidth),t(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=h(c.marginLeft)+h(c.marginRight),t(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=n(v.element.rail("y")),i.appendChild(this.scrollbarYRail),this.scrollbarY=n(v.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",a),this.event.bind(this.scrollbarY,"blur",s),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var d=e(this.scrollbarYRail);this.scrollbarYRight=parseInt(d.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=h(d.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(t){var n=e(t);return h(n.width)+h(n.paddingLeft)+h(n.paddingRight)+h(n.borderLeftWidth)+h(n.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=h(d.borderTopWidth)+h(d.borderBottomWidth),t(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=h(d.marginTop)+h(d.marginBottom),t(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:i.scrollLeft<=0?"start":i.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:i.scrollTop<=0?"start":i.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return X[e](o)})),this.lastScrollTop=i.scrollTop,this.lastScrollLeft=i.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return o.onScroll(e)})),k(this)};return W.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,t(this.scrollbarXRail,{display:"block"}),t(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=h(e(this.scrollbarXRail).marginLeft)+h(e(this.scrollbarXRail).marginRight),this.railYMarginHeight=h(e(this.scrollbarYRail).marginTop)+h(e(this.scrollbarYRail).marginBottom),t(this.scrollbarXRail,{display:"none"}),t(this.scrollbarYRail,{display:"none"}),k(this),S(this,"top",0,!1,!0),S(this,"left",0,!1,!0),t(this.scrollbarXRail,{display:""}),t(this.scrollbarYRail,{display:""}))},W.prototype.onScroll=function(e){this.isAlive&&(k(this),S(this,"top",this.element.scrollTop-this.lastScrollTop),S(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},W.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},W.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")},W}))},function(e,t){var n,i;n=jQuery,i={series:{pie:{show:!1,radius:"auto",innerRadius:0,startAngle:1.5,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(e,t){return"
"+e+"
"+Math.round(t.percent)+"%
"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}},n.plot.plugins.push({init:function(e){var t=null,i=null,r=null,o=null,l=null,a=null,s=!1,c=null,h=[];function d(e,o,l){s||(s=!0,t=e.getCanvas(),i=n(t).parent(),r=e.getOptions(),e.setData(function(e){for(var t=0,i=0,o=0,l=r.series.pie.combine.color,a=[],s=0;sr.series.pie.combine.threshold)&&a.push(n.extend(e[s],{data:[[1,c]],color:e[s].color,label:e[s].label,angle:c*Math.PI*2/t,percent:c/(t/100)}));return o>1&&a.push({data:[[1,i]],color:l,label:r.series.pie.combine.label,angle:i*Math.PI*2/t,percent:i/(t/100)}),a}(e.getData())))}function u(e,t){if(i){var h=e.getPlaceholder().width(),d=e.getPlaceholder().height(),u=i.children().filter(".legend").children().width()||0;c=t,s=!1,o=Math.min(h,d/r.series.pie.tilt)/2,a=d/2+r.series.pie.offset.top,l=h/2,"auto"==r.series.pie.offset.left?(r.legend.position.match("w")?l+=u/2:l-=u/2,lh-o&&(l=h-o)):l+=r.series.pie.offset.left;var g=e.getData(),f=0;do{f>0&&(o*=.95),f+=1,v(),r.series.pie.tilt<=.8&&b()}while(!m()&&f<10);f>=10&&(v(),i.prepend("
Could not draw pie with labels contained inside canvas
")),e.setSeries&&e.insertLegend&&(e.setSeries(g),e.insertLegend())}function v(){c.clearRect(0,0,h,d),i.children().filter(".pieLabel, .pieLabelBackground").remove()}function b(){var e=r.series.pie.shadow.left,t=r.series.pie.shadow.top,n=r.series.pie.shadow.alpha,i=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;if(!(i>=h/2-e||i*r.series.pie.tilt>=d/2-t||i<=10)){c.save(),c.translate(e,t),c.globalAlpha=n,c.fillStyle="#000",c.translate(l,a),c.scale(1,r.series.pie.tilt);for(var s=1;s<=10;s++)c.beginPath(),c.arc(0,0,i,0,2*Math.PI,!1),c.fill(),i-=s;c.restore()}}function m(){var e=Math.PI*r.series.pie.startAngle,t=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;c.save(),c.translate(l,a),c.scale(1,r.series.pie.tilt),c.save();for(var s=e,u=0;u0){for(c.save(),c.lineWidth=r.series.pie.stroke.width,s=e,u=0;u1?r.series.pie.label.radius:o*r.series.pie.label.radius,c=0;c=100*r.series.pie.label.threshold&&!u(g[c],t,c))return!1;t+=g[c].angle}return!0;function u(e,t,o){if(0==e.data[0][1])return!0;var c,u=r.legend.labelFormatter,p=r.series.pie.label.formatter;c=u?u(e.label,e):e.label,p&&(c=p(c,e));var g=(t+e.angle+t)/2,f=l+Math.round(Math.cos(g)*s),v=a+Math.round(Math.sin(g)*s)*r.series.pie.tilt,b=""+c+"";i.append(b);var m=i.children("#pieLabel"+o),y=v-m.height()/2,w=f-m.width()/2;if(m.css("top",y),m.css("left",w),0-y>0||0-w>0||d-(y+m.height())<0||h-(w+m.width())<0)return!1;if(0!=r.series.pie.label.background.opacity){var S=r.series.pie.label.background.color;null==S&&(S=e.color);var M="top:"+y+"px;left:"+w+"px;";n("
").css("opacity",r.series.pie.label.background.opacity).insertBefore(m)}return!0}}();function f(e,n,i){e<=0||isNaN(e)||(i?c.fillStyle=n:(c.strokeStyle=n,c.lineJoin="round"),c.beginPath(),Math.abs(e-2*Math.PI)>1e-9&&c.moveTo(0,0),c.arc(0,0,t,s,s+e/2,!1),c.arc(0,0,t,s+e/2,s+e,!1),c.closePath(),s+=e,i?c.fill():c.stroke())}}}function p(e){if(r.series.pie.innerRadius>0){e.save();var t=r.series.pie.innerRadius>1?r.series.pie.innerRadius:o*r.series.pie.innerRadius;e.globalCompositeOperation="destination-out",e.beginPath(),e.fillStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.fill(),e.closePath(),e.restore(),e.save(),e.beginPath(),e.strokeStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.stroke(),e.closePath(),e.restore()}}function g(e,t){for(var n=!1,i=-1,r=e.length,o=r-1;++i1?h.series.pie.radius:o*h.series.pie.radius,u=0;u1?t.series.pie.tilt=1:t.series.pie.tilt<0&&(t.series.pie.tilt=0))})),e.hooks.bindEvents.push((function(e,t){var n=e.getOptions();n.series.pie.show&&(n.grid.hoverable&&t.unbind("mousemove").mousemove(f),n.grid.clickable&&t.unbind("click").click(v))})),e.hooks.processDatapoints.push((function(e,t,n,i){e.getOptions().series.pie.show&&d(e)})),e.hooks.drawOverlay.push((function(e,t){e.getOptions().series.pie.show&&function(e,t){var n,i=e.getOptions(),r=i.series.pie.radius>1?i.series.pie.radius:o*i.series.pie.radius;t.save(),t.translate(l,a),t.scale(1,i.series.pie.tilt);for(var s=0;s1e-9&&t.moveTo(0,0),t.arc(0,0,r,n.startAngle,n.startAngle+n.angle/2,!1),t.arc(0,0,r,n.startAngle+n.angle/2,n.startAngle+n.angle,!1),t.closePath(),t.fill());p(t),t.restore()}(e,t)})),e.hooks.draw.push((function(e,t){e.getOptions().series.pie.show&&u(e,t)}))},options:i,name:"pie",version:"1.1"})},function(e,t){!function(e){function t(e,t){return t*Math.floor(e/t)}function n(e,t,n,i){if("function"==typeof e.strftime)return e.strftime(t);var r,o=function(e,t){return t=""+(null==t?"0":t),1==(e=""+e).length?t+e:e},l=[],a=!1,s=e.getHours(),c=s<12;null==n&&(n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),null==i&&(i=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]),r=s>12?s-12:0==s?12:s;for(var h=0;h=c);++d);var u=h[d][0],p=h[d][1];if("year"==p){if(null!=l.minTickSize&&"year"==l.minTickSize[1])u=Math.floor(l.minTickSize[0]);else{var g=Math.pow(10,Math.floor(Math.log(e.delta/o.year)/Math.LN10)),f=e.delta/o.year/g;u=f<1.5?1:f<3?2:f<7.5?5:10,u*=g}u<1&&(u=1)}e.tickSize=l.tickSize||[u,p];var v=e.tickSize[0];p=e.tickSize[1];var b=v*o[p];"second"==p?i.setSeconds(t(i.getSeconds(),v)):"minute"==p?i.setMinutes(t(i.getMinutes(),v)):"hour"==p?i.setHours(t(i.getHours(),v)):"month"==p?i.setMonth(t(i.getMonth(),v)):"quarter"==p?i.setMonth(3*t(i.getMonth()/3,v)):"year"==p&&i.setFullYear(t(i.getFullYear(),v)),i.setMilliseconds(0),b>=o.minute&&i.setSeconds(0),b>=o.hour&&i.setMinutes(0),b>=o.day&&i.setHours(0),b>=4*o.day&&i.setDate(1),b>=2*o.month&&i.setMonth(t(i.getMonth(),3)),b>=2*o.quarter&&i.setMonth(t(i.getMonth(),6)),b>=o.year&&i.setMonth(0);var m,y=0,w=Number.NaN;do{if(m=w,w=i.getTime(),n.push(w),"month"==p||"quarter"==p)if(v<1){i.setDate(1);var S=i.getTime();i.setMonth(i.getMonth()+("quarter"==p?3:1));var M=i.getTime();i.setTime(w+y*o.hour+(M-S)*v),y=i.getHours(),i.setHours(0)}else i.setMonth(i.getMonth()+v*("quarter"==p?3:1));else"year"==p?i.setFullYear(i.getFullYear()+v):i.setTime(w+b)}while(w');function s(e,t){var n=t.data[0][t.data[0].length-1],r=2,o='
'+e+"
";return i.panel.legend.percentageDecimals&&(r=i.panel.legend.percentageDecimals),i.panel.legend.values&&i.panel.legend.percentage?o+i.formatValue(n)+"
"+t.percent.toFixed(r)+"%
":i.panel.legend.values?o+i.formatValue(n)+"":i.panel.legend.percentage?o+t.percent.toFixed(r)+"%":o+""}function c(){var e=t.width(),n=i.height-function(e){if(!i.panel.legend.show||"Right side"===i.panel.legendType||"On graph"===i.panel.legendType)return 20;if("Under graph"===i.panel.legendType&&i.panel.legend.percentage||i.panel.legend.values){var t=parseInt(i.panel.breakPoint,10)/100,n=23+20*r.length;return Math.min(n,Math.floor(e*t))}return 0}(i.height),c=Math.min(e,n),h=g()("
"),d={margin:"auto",position:"relative",paddingBottom:"20px",height:c+"px"};h.css(d);var u={legend:{show:!1},series:{pie:{radius:1,innerRadius:0,show:!0,stroke:{color:g()("body").css("background-color"),width:parseFloat(i.panel.strokeWidth).toFixed(1)},label:{show:i.panel.legend.show&&"On graph"===i.panel.legendType,formatter:s},highlight:{opacity:0},combine:{threshold:i.panel.combine.threshold,label:i.panel.combine.label}}},grid:{hoverable:!0,clickable:!1}};"donut"===o.pieType&&(u.series.pie.innerRadius=.5),r=i.data;for(var p=0;p
',r+='
'+l.a.escape(n.series.label)+": "+s,r+=" ("+o+"%)
",r+="
",a.html(r).place_tt(t.pageX+20,t.pageY)}else a.detach()}))}function h(e){i.data&&(r=i.data,0===i.data.length?t.html('
No data points
'):c(),e&&i.renderingCompleted())}i.events.on("render",(function(){"Right side"===o.legendType?(h(!1),setTimeout((function(){h(!0)}),50)):h(!0)}))}var v=n(6),b=n.n(v),m=(n(9),n(7)),y=n.n(m);b.a.module("grafana.directives").directive("piechartLegend",["popoverSrv","$timeout",function(e,t){return{link:function(n,i){var r,o,a,s,c,h=g()('
'),d=!0,u=n.ctrl,p=u.panel;function f(e){return e.parents("[data-series-index]").data("series-index")}function v(e){var t=g()(e.currentTarget);if(t&&t.text()!==p.combine.label){var n=f(t),i=a[n],r=g()(h.children("tbody")).scrollTop();u.toggleSeries(i),void 0!==r&&g()(h.children("tbody")).scrollTop(r)}}function b(e){var t=g()(e.currentTarget).data("stat");if(t!==p.legend.sort&&(p.legend.sortDesc=null),!1===p.legend.sortDesc)return p.legend.sort=null,p.legend.sortDesc=null,void u.render();p.legend.sortDesc=!p.legend.sortDesc,p.legend.sort=t,u.render()}function m(n){if(!g()(n.target).parents(".popover").length){var i=g()(n.currentTarget).find(".fa-minus"),r=f(i),l=o[r];t((function(){e.show({element:i[0],position:"right center",template:'',openOn:"hover",classNames:"drop-popover drop-popover--transparent",model:{autoClose:!0,series:l,toggleAxis:function(){},colorSelected:function(e){u.changeSeriesColor(l,e)}}})}))}}function w(e,t,n,i,r){var o='
"}n.$on("$destroy",(function(){c&&c.destroy()})),u.events.on("render",(function(){if(r=u.series){for(var e in r)r[e].color=u.data[e].color;!function(){if("On graph"===p.legendType||!p.legend.show)return h.empty(),void i.find(".piechart-legend").css("padding-top",0);i.find(".piechart-legend").css("padding-top",6);d&&(i.append(h),h.on("click",".piechart-legend-icon",m),h.on("click",".piechart-legend-alias",v),h.on("click","th",b),d=!1);o=r,a=u.data,h.empty();var e="Right side"===p.legendType&&p.legend.sideWidth?p.legend.sideWidth+"px":"",t="Right side"===p.legendType&&p.legend.sideWidth?p.legend.sideWidth-1+"px":"";i.css("min-width",e),i.css("width",t);var n,f=p.legend.values||p.legend.percentage,S=("Under graph"===p.legendType||"Right side"===p.legendType)&&f;if(h.toggleClass("piechart-legend-table",S),S){var M='';p.legend.values&&(M+=function(e){var t=e;p.legend.header&&(t=p.legend.header);var n=''+l.a.escape(t);if(p.legend.sort===e){var i=p.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";n+=' '}return n+""}(u.panel.valueName)),p.legend.percentage&&(M+=function(e){var t='percentage';if(p.legend.sort===e){var n=p.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";t+=' '}return t+""}(u.panel.valueName)),M+="",n=g()(M)}var Y=0;if(p.legend.percentage)for(s=0;s0){if(void 0===p.legend.sortDesc||null===p.legend.sortDesc||p.legend.sortDesc)if(Object.keys(u.hiddenSeries).length>0){var R=void 0,x=void 0,D=function(e){R=a.find((function(t){return t.label===e})),(void 0===x||R.legendData>x)&&(x=R.legendData,k.color=R.color)};for(var P in u.hiddenSeries)D(P)}else k.color=o[o.length-T].color;else k.color=o[0].color;X.push(g()(w(k,a.length-T,Y,f,S)))}if(S){var H=g()("");void 0!==n&&H.append(n),H.append(X),h.append(H)}else h.append(X);"Under graph"===p.legendType?c?c.update():c=new y.a(i[0],{scrollYMarginOffset:2,suppressScrollX:!0}):c&&(c.destroy(),c=null)}()}}))}}}]);var w=function(e){function t(t,n,i){var r=e.call(this,t,n)||this;r.$rootScope=i,r.hiddenSeries={};var o={pieType:"pie",legend:{show:!0,values:!0},links:[],datasource:null,interval:null,targets:[{}],cacheTimeout:null,nullPointMode:"connected",legendType:"Under graph",breakPoint:"50%",aliasColors:{},format:"short",valueName:"current",strokeWidth:1,fontSize:"80%",combine:{threshold:0,label:"Others"}};return l.a.defaults(r.panel,o),l.a.defaults(r.panel.legend,o.legend),r.events.on("render",r.onRender.bind(r)),r.events.on("data-received",r.onDataReceived.bind(r)),r.events.on("data-error",r.onDataError.bind(r)),r.events.on("data-snapshot-load",r.onDataReceived.bind(r)),r.events.on("init-edit-mode",r.onInitEditMode.bind(r)),r.setLegendWidthForLegacyBrowser(),r}return t.$inject=["$scope","$injector","$rootScope"],function(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype.onInitEditMode=function(){this.addEditorTab("Options","public/plugins/grafana-piechart-panel/editor.html",2),this.unitFormats=s.a.getUnitFormats()},t.prototype.setUnitFormat=function(e){this.panel.format=e.value,this.render()},t.prototype.onDataError=function(){this.series=[],this.render()},t.prototype.changeSeriesColor=function(e,t){e.color=t,this.panel.aliasColors[e.alias]=e.color,this.render()},t.prototype.migrateToPanel=function(e){this.onPluginTypeChange(h.a.panels[e])},t.prototype.onRender=function(){this.data=this.parseSeries(this.series)},t.prototype.parseSeries=function(e){var t=this;return l.a.map(this.series,(function(e,n){return{label:e.alias,data:e.stats[t.panel.valueName],color:t.panel.aliasColors[e.alias]||t.$rootScope.colors[n],legendData:e.stats[t.panel.valueName]}}))},t.prototype.onDataReceived=function(e){this.series=e.map(this.seriesHandler.bind(this)),this.data=this.parseSeries(this.series),this.render(this.data)},t.prototype.seriesHandler=function(e){var t=new u.a({datapoints:e.datapoints,alias:e.target});return t.flotpairs=t.getFlotPairs(this.panel.nullPointMode),t},t.prototype.getDecimalsForValue=function(e){if(l.a.isNumber(this.panel.decimals))return{decimals:this.panel.decimals,scaledDecimals:null};var t,n=e/2,i=-Math.floor(Math.log(n)/Math.LN10),r=Math.pow(10,-i),o=n/r;o<1.5?t=1:o<3?(t=2,o>2.25&&(t=2.5,++i)):t=o<7.5?5:10,t*=r,Math.floor(e)===e&&(i=0);var a={decimals:0,scaledDecimals:0};return a.decimals=Math.max(0,i),a.scaledDecimals=a.decimals-Math.floor(Math.log(t)/Math.LN10)+2,a},t.prototype.formatValue=function(e){var t=this.getDecimalsForValue(e),n=s.a.valueFormats[this.panel.format];return n?n(e,t.decimals,t.scaledDecimals):e},t.prototype.link=function(e,t,n,i){f(0,t,0,i)},t.prototype.toggleSeries=function(e){this.hiddenSeries[e.label]?delete this.hiddenSeries[e.label]:this.hiddenSeries[e.label]=!0,this.render()},t.prototype.onLegendTypeChanged=function(){this.setLegendWidthForLegacyBrowser(),this.render()},t.prototype.setLegendWidthForLegacyBrowser=function(){!!window.MSInputMethodContext&&!!document.documentMode&&"Right side"===this.panel.legendType&&!this.panel.legend.sideWidth&&(this.panel.legend.sideWidth=150)},t.templateUrl="module.html",t}(r.MetricsPanelCtrl);n.d(t,"PanelCtrl",(function(){return w})),Object(r.loadPluginCss)({dark:"plugins/grafana-piechart-panel/styles/dark.css",light:"plugins/grafana-piechart-panel/styles/light.css"})}])})); +//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt b/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt new file mode 100644 index 0000000000000..f3f36ee139d7e --- /dev/null +++ b/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt @@ -0,0 +1,20 @@ +/*! + * perfect-scrollbar v1.2.0 + * (c) 2017 Hyunje Jun + * @license MIT + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ diff --git a/data/plugins/grafana-piechart-panel/module.js.map b/data/plugins/grafana-piechart-panel/module.js.map new file mode 100644 index 0000000000000..260f4022009b9 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/module.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jquery\"","webpack:///external \"lodash\"","webpack:///external \"app/plugins/sdk\"","webpack:///external \"app/core/utils/kbn\"","webpack:///external \"app/core/config\"","webpack:///external \"app/core/time_series\"","webpack:///external \"angular\"","webpack:///./lib/perfect-scrollbar.min.js","webpack:///./lib/jquery.flot.pie.js","webpack:///./lib/jquery.flot.time.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./rendering.ts","webpack:///./legend.ts","webpack:///./piechart_ctrl.ts","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__6__","e","define","this","getComputedStyle","style","document","createElement","className","v","Error","remove","parentNode","removeChild","Array","filter","children","element","classList","state","scrolling","contains","clearTimeout","w","add","setTimeout","isAlive","settings","scrollingThreshold","a","window","CustomEvent","createEvent","initCustomEvent","u","parseInt","f","minScrollbarLength","Math","max","maxScrollbarLength","min","b","width","railXWidth","isRtl","left","negativeScrollAdjustment","scrollLeft","containerWidth","contentWidth","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollTop","top","scrollbarXTop","scrollbarXRail","height","railYHeight","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarX","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarY","scrollbarYTop","scrollbarYHeight","railBorderYWidth","g","R","stopPropagation","preventDefault","event","unbind","ownerDocument","h","once","Element","matches","webkitMatchesSelector","msMatchesSelector","main","thumb","rail","consuming","focus","active","x","y","Y","handlers","X","isEmpty","configurable","push","addEventListener","removeEventListener","unbindAll","keys","every","length","defineProperties","W","eventElements","eventElement","splice","indexOf","forEach","reach","dispatchEvent","L","documentElement","DocumentTouch","navigator","msMaxTouchPoints","clientWidth","containerHeight","clientHeight","scrollWidth","contentHeight","scrollHeight","appendChild","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXMarginWidth","railXRatio","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYMarginHeight","railYRatio","T","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheelPropagation","wheel","querySelector","overflow","overflowX","overflowY","join","match","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","target","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","abs","stop","swipePropagation","prevent","scrollY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","H","nodeName","direction","isNegativeScroll","setAttribute","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","marginTop","marginBottom","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","options","jQuery","series","pie","show","radius","innerRadius","startAngle","tilt","shadow","alpha","offset","stroke","color","label","formatter","slice","round","percent","background","opacity","threshold","combine","highlight","plot","plugins","init","canvas","maxRadius","centerLeft","centerTop","processed","ctx","highlights","processDatapoints","datapoints","getCanvas","parent","getOptions","setData","data","total","combined","numCombined","newdata","isArray","parseFloat","isFinite","extend","angle","PI","getData","draw","newCtx","canvasWidth","getPlaceholder","canvasHeight","legendWidth","legend","position","slices","attempts","clear","drawShadow","drawPie","prepend","setSeries","insertLegend","clearRect","shadowLeft","shadowTop","save","translate","globalAlpha","fillStyle","scale","beginPath","arc","fill","restore","currentAngle","drawSlice","lineWidth","drawDonutHole","drawLabel","index","text","lf","labelFormatter","plf","halfAngle","cos","sin","html","append","labelTop","labelLeft","css","pos","insertBefore","drawLabels","strokeStyle","lineJoin","moveTo","closePath","layer","globalCompositeOperation","isPointInPoly","poly","pt","j","onMouseMove","triggerClickHoverEvent","onClick","eventname","item","mouseX","mouseY","isPointInPath","datapoint","dataIndex","seriesIndex","findNearbySlice","grid","autoHighlight","auto","unhighlight","indexOfHighlight","triggerRedrawOverlay","trigger","hooks","processOptions","bindEvents","eventHolder","hoverable","mousemove","clickable","click","drawOverlay","octx","version","floorInBase","base","floor","formatDate","fmt","monthNames","dayNames","strftime","hours12","leftPad","pad","escape","hours","getHours","isAM","charAt","getDay","getMonth","getDate","getMinutes","getSeconds","getFullYear","makeUtcWrapper","addProxyMethod","sourceObj","sourceMethod","targetObj","targetMethod","apply","arguments","utc","date","undefined","props","dateGenerator","ts","opts","timezone","timezoneJS","setTimezone","setTime","timeUnitSize","baseSpec","specMonths","concat","specQuarters","each","getAxes","axisName","axis","tickGenerator","ticks","minSize","spec","tickSize","minTickSize","delta","size","unit","magn","pow","log","year","LN10","norm","step","setSeconds","setMinutes","setHours","setMonth","setFullYear","setMilliseconds","minute","hour","day","setDate","month","quarter","prev","carry","Number","NaN","start","end","tickFormatter","timeformat","useQuarters","span","suffix","twelveHourClock","hourCode","xaxis","extendStatics","setPrototypeOf","__proto__","scope","elem","attrs","ctrl","panel","find","$tooltip","sliceData","decimal","fontSize","percentageDecimals","values","percentage","formatValue","toFixed","addPieChart","panelHeight","legendType","breakPoint","getLegendHeight","plotCanvas","plotCss","margin","paddingBottom","strokeWidth","pieType","hiddenSeries","sort","valueName","sortDesc","legendData","body","formatted","place_tt","detach","render","incrementRenderCounter","renderingCompleted","events","on","directive","popoverSrv","$timeout","link","seriesList","dataList","legendScrollbar","$container","firstRender","getSeriesIndexForElement","el","parents","toggleSeries","currentTarget","seriesInfo","scrollPosition","sortLegend","stat","openColorSelector","template","openOn","classNames","model","autoClose","toggleAxis","colorSelected","changeSeriesColor","generateLegendItem","showValues","tableLayout","$on","empty","sideWidth","ieWidth","legendHeader","toggleClass","header","statName","cssClass","getLegendHeaderHtml","getLegendPercentageHtml","stats","combineNum","combineVal","seriesElements","seriesData","hideEmpty","allIsNull","_el","_max","_key","tbodyElem","$scope","$injector","$rootScope","panelDefaults","links","datasource","interval","targets","cacheTimeout","nullPointMode","aliasColors","format","defaults","onRender","onDataReceived","onDataError","onInitEditMode","setLegendWidthForLegacyBrowser","__","constructor","addEditorTab","unitFormats","getUnitFormats","setUnitFormat","subItem","alias","migrateToPanel","type","onPluginTypeChange","panels","parseSeries","map","serie","colors","seriesHandler","flotpairs","getFlotPairs","getDecimalsForValue","isNumber","decimals","scaledDecimals","dec","result","decimalInfo","formatFunc","valueFormats","onLegendTypeChanged","MSInputMethodContext","documentMode","templateUrl","dark","light"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","/*!\n * perfect-scrollbar v1.2.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){\"use strict\";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var n=e[i];\"number\"==typeof n&&(n+=\"px\"),t.style[i]=n}return t}function i(t){var e=document.createElement(\"div\");return e.className=t,e}function n(t,e){if(!v)throw new Error(\"No element matching method supported\");return v.call(t,e)}function r(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function l(t,e){return Array.prototype.filter.call(t.children,function(t){return n(t,e)})}function o(t,e){var i=t.element.classList,n=m.state.scrolling(e);i.contains(n)?clearTimeout(w[e]):i.add(n)}function s(t,e){w[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if(\"function\"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent(\"CustomEvent\");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,n,r){var l=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===n&&(n=!0),void 0===r&&(r=!1);var p=t.element;t.reach[h]=null,p[s]<1&&(t.reach[h]=\"start\"),p[s]>t[l]-t[o]-1&&(t.reach[h]=\"end\"),e&&(p.dispatchEvent(c(\"ps-scroll-\"+h)),e<0?p.dispatchEvent(c(\"ps-scroll-\"+u)):e>0&&p.dispatchEvent(c(\"ps-scroll-\"+d)),n&&a(t,h)),t.reach[h]&&(e||r)&&p.dispatchEvent(c(\"ps-\"+h+\"-reach-\"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return n(t,\"input,[contenteditable]\")||n(t,\"select,[contenteditable]\")||n(t,\"textarea,[contenteditable]\")||n(t,\"button,[contenteditable]\")}function p(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function f(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var n={width:i.railXWidth};i.isRtl?n.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:n.left=t.scrollLeft,i.isScrollbarXUsingBottom?n.bottom=i.scrollbarXBottom-t.scrollTop:n.top=i.scrollbarXTop+t.scrollTop,e(i.scrollbarXRail,n);var r={top:t.scrollTop,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?r.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:r.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:r.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,r),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){f[d]=b+v*(e[a]-g),o(t,p),R(t),e.stopPropagation(),e.preventDefault()}function n(){s(t,p),t.event.unbind(t.ownerDocument,\"mousemove\",i)}var r=e[0],l=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],p=e[7],f=t.element,b=null,g=null,v=null;t.event.bind(t[h],\"mousedown\",function(e){b=f[d],g=e[a],v=(t[l]-t[r])/(t[c]-t[u]),t.event.bind(t.ownerDocument,\"mousemove\",i),t.event.once(t.ownerDocument,\"mouseup\",n),e.stopPropagation(),e.preventDefault()})}var v=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,m={main:\"ps\",element:{thumb:function(t){return\"ps__thumb-\"+t},rail:function(t){return\"ps__rail-\"+t},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",active:function(t){return\"ps--active-\"+t},scrolling:function(t){return\"ps--scrolling-\"+t}}},w={x:null,y:null},Y=function(t){this.element=t,this.handlers={}},X={isEmpty:{configurable:!0}};Y.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},Y.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(n){return!(!e||n===e)||(i.element.removeEventListener(t,n,!1),!1)})},Y.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},X.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(Y.prototype,X);var W=function(){this.eventElements=[]};W.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new Y(t),this.eventElements.push(e)),e},W.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},W.prototype.unbind=function(t,e,i){var n=this.eventElement(t);n.unbind(e,i),n.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(n),1)},W.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},W.prototype.once=function(t,e,i){var n=this.eventElement(t),r=function(t){n.unbind(e,r),i(t)};n.bind(e,r)};var y=function(t,e,i,n,r){void 0===n&&(n=!0),void 0===r&&(r=!1);var l;if(\"top\"===e)l=[\"contentHeight\",\"containerHeight\",\"scrollTop\",\"y\",\"up\",\"down\"];else{if(\"left\"!==e)throw new Error(\"A proper axis should be provided\");l=[\"contentWidth\",\"containerWidth\",\"scrollLeft\",\"x\",\"left\",\"right\"]}h(t,i,l,n,r)},L={isWebKit:document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:navigator&&navigator.msMaxTouchPoints},R=function(t){var e=t.element;t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(l(e,m.element.rail(\"x\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(l(e,m.element.rail(\"y\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active(\"x\")):(e.classList.remove(m.state.active(\"x\")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active(\"y\")):(e.classList.remove(m.state.active(\"y\")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},T={\"click-rail\":function(t){t.event.bind(t.scrollbarY,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,\"mousedown\",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,R(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,\"mousedown\",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,R(t),e.stopPropagation()})},\"drag-thumb\":function(t){g(t,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\"]),g(t,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\"])},keyboard:function(t){function e(e,n){var r=i.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===r&&n>0||r>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var l=i.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===l&&e<0||l>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,r=function(){return n(i,\":hover\")},l=function(){return n(t.scrollbarX,\":focus\")||n(t.scrollbarY,\":focus\")};t.event.bind(t.ownerDocument,\"keydown\",function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(r()||l())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if(\"IFRAME\"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(n.which){case 37:s=n.metaKey?-t.contentWidth:n.altKey?-t.containerWidth:-30;break;case 38:a=n.metaKey?t.contentHeight:n.altKey?t.containerHeight:30;break;case 39:s=n.metaKey?t.contentWidth:n.altKey?t.containerWidth:30;break;case 40:a=n.metaKey?-t.contentHeight:n.altKey?-t.containerHeight:-30;break;case 32:a=n.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,R(t),e(s,a)&&n.preventDefault())}})},wheel:function(e){function i(t,i){var n=o.scrollTop;if(0===t){if(!e.scrollbarYActive)return!1;if(0===n&&i>0||n>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var r=o.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===r&&t<0||r>=e.contentWidth-e.containerWidth&&t>0)return!e.settings.wheelPropagation}return!0}function n(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function r(e,i,n){if(!L.isWebKit&&o.querySelector(\"select:focus\"))return!0;if(!o.contains(e))return!1;for(var r=e;r&&r!==o;){if(r.classList.contains(m.element.consuming))return!0;var l=t(r);if([l.overflow,l.overflowX,l.overflowY].join(\"\").match(/(scroll|auto)/)){var s=r.scrollHeight-r.clientHeight;if(s>0&&!(0===r.scrollTop&&n>0||r.scrollTop===s&&n<0))return!0;var a=r.scrollLeft-r.clientWidth;if(a>0&&!(0===r.scrollLeft&&i<0||r.scrollLeft===a&&i>0))return!0}r=r.parentNode}return!1}function l(t){var l=n(t),s=l[0],a=l[1];if(!r(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),R(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,\"wheel\",l):void 0!==window.onmousewheel&&e.event.bind(o,\"mousewheel\",l)},touch:function(t){function e(e,i){var n=h.scrollTop,r=h.scrollLeft,l=Math.abs(e),o=Math.abs(i);if(o>l){if(i<0&&n===t.contentHeight-t.containerHeight||i>0&&0===n)return{stop:!t.settings.swipePropagation,prevent:0===window.scrollY}}else if(l>o&&(e<0&&r===t.contentWidth-t.containerWidth||e>0&&0===r))return{stop:!t.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function i(e,i){h.scrollTop-=i,h.scrollLeft-=e,R(t)}function n(){b=!0}function r(){b=!1}function l(t){return t.targetTouches?t.targetTouches[0]:t}function o(t){return!(t.pointerType&&\"pen\"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function s(t){if(o(t)){g=!0;var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==f&&clearInterval(f),t.stopPropagation()}}function a(n){if(!g&&t.settings.swipePropagation&&s(n),!b&&g&&o(n)){var r=l(n),a={pageX:r.pageX,pageY:r.pageY},c=a.pageX-u.pageX,h=a.pageY-u.pageY;i(c,h),u=a;var f=(new Date).getTime(),v=f-d;v>0&&(p.x=c/v,p.y=h/v,d=f);var m=e(c,h),w=m.stop,Y=m.prevent;w&&n.stopPropagation(),Y&&n.preventDefault()}}function c(){!b&&g&&(g=!1,t.settings.swipeEasing&&(clearInterval(f),f=setInterval(function(){t.isInitialized?clearInterval(f):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(f):(i(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(f)},10)))}if(L.supportsTouch||L.supportsIePointer){var h=t.element,u={},d=0,p={},f=null,b=!1,g=!1;L.supportsTouch?(t.event.bind(window,\"touchstart\",n),t.event.bind(window,\"touchend\",r),t.event.bind(h,\"touchstart\",s),t.event.bind(h,\"touchmove\",a),t.event.bind(h,\"touchend\",c)):L.supportsIePointer&&(window.PointerEvent?(t.event.bind(window,\"pointerdown\",n),t.event.bind(window,\"pointerup\",r),t.event.bind(h,\"pointerdown\",s),t.event.bind(h,\"pointermove\",a),t.event.bind(h,\"pointerup\",c)):window.MSPointerEvent&&(t.event.bind(window,\"MSPointerDown\",n),t.event.bind(window,\"MSPointerUp\",r),t.event.bind(h,\"MSPointerDown\",s),t.event.bind(h,\"MSPointerMove\",a),t.event.bind(h,\"MSPointerUp\",c)))}}},H=function(n,r){var l=this;if(void 0===r&&(r={}),\"string\"==typeof n&&(n=document.querySelector(n)),!n||!n.nodeName)throw new Error(\"no element is specified to initialize PerfectScrollbar\");this.element=n,n.classList.add(m.main),this.settings={handlers:[\"click-rail\",\"drag-thumb\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1};for(var o in r)l.settings[o]=r[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return n.classList.add(m.state.focus)},a=function(){return n.classList.remove(m.state.focus)};this.isRtl=\"rtl\"===t(n).direction,this.isNegativeScroll=function(){var t=n.scrollLeft,e=null;return n.scrollLeft=-1,e=n.scrollLeft<0,n.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?n.scrollWidth-n.clientWidth:0,this.event=new W,this.ownerDocument=n.ownerDocument||document,this.scrollbarXRail=i(m.element.rail(\"x\")),n.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb(\"x\")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarX,\"focus\",s),this.event.bind(this.scrollbarX,\"blur\",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:\"block\"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:\"\"}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail(\"y\")),n.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb(\"y\")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarY,\"focus\",s),this.event.bind(this.scrollbarY,\"blur\",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?p(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:\"block\"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:\"\"}),this.railYHeight=null,this.railYRatio=null,this.reach={x:n.scrollLeft<=0?\"start\":n.scrollLeft>=this.contentWidth-this.containerWidth?\"end\":null,y:n.scrollTop<=0?\"start\":n.scrollTop>=this.contentHeight-this.containerHeight?\"end\":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return T[t](l)}),this.lastScrollTop=n.scrollTop,this.lastScrollLeft=n.scrollLeft,this.event.bind(this.element,\"scroll\",function(t){return l.onScroll(t)}),R(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:\"block\"}),e(this.scrollbarYRail,{display:\"block\"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:\"none\"}),e(this.scrollbarYRail,{display:\"none\"}),R(this),y(this,\"top\",0,!1,!0),y(this,\"left\",0,!1,!0),e(this.scrollbarXRail,{display:\"\"}),e(this.scrollbarYRail,{display:\"\"}))},H.prototype.onScroll=function(t){this.isAlive&&(R(this),y(this,\"top\",this.element.scrollTop-this.lastScrollTop),y(this,\"left\",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(\" \").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(\" \")},H});","/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero. Negative numbers don't make sense for a\npie chart, and have unpredictable results. The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter: a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], { /* extend to allow keeping all other original data values\n\t\t\t\t\t\t and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series. Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"
Could not draw pie with labels contained inside canvas
\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"\" + text + \"\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"
\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY = parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"
\" + label + \"
\" + Math.round(slice.percent) + \"%
\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);\n","/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones. This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy. This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object. Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import _ from 'lodash';\nimport './lib/jquery.flot.pie';\nimport $ from 'jquery';\n//import './lib/jquery.flot';\n\nexport default function link(scope: any, elem: any, attrs: any, ctrl: any) {\n let data;\n const panel = ctrl.panel;\n elem = elem.find('.piechart-panel__chart');\n const $tooltip = $('
') as any;\n\n ctrl.events.on('render', () => {\n if (panel.legendType === 'Right side') {\n render(false);\n setTimeout(() => {\n render(true);\n }, 50);\n } else {\n render(true);\n }\n });\n\n function getLegendHeight(panelHeight: any) {\n if (!ctrl.panel.legend.show || ctrl.panel.legendType === 'Right side' || ctrl.panel.legendType === 'On graph') {\n return 20;\n }\n\n if ((ctrl.panel.legendType === 'Under graph' && ctrl.panel.legend.percentage) || ctrl.panel.legend.values) {\n const breakPoint = parseInt(ctrl.panel.breakPoint, 10) / 100;\n const total = 23 + 20 * data.length;\n return Math.min(total, Math.floor(panelHeight * breakPoint));\n }\n\n return 0;\n }\n\n function formatter(label: any, slice: any) {\n const sliceData = slice.data[0][slice.data[0].length - 1];\n let decimal = 2;\n const start = `
${label}
`;\n\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n if (ctrl.panel.legend.values && ctrl.panel.legend.percentage) {\n return start + ctrl.formatValue(sliceData) + '
' + slice.percent.toFixed(decimal) + '%
';\n } else if (ctrl.panel.legend.values) {\n return start + ctrl.formatValue(sliceData) + '
';\n } else if (ctrl.panel.legend.percentage) {\n return start + slice.percent.toFixed(decimal) + '%';\n } else {\n return start + '';\n }\n }\n\n function noDataPoints() {\n const html = '
No data points
';\n elem.html(html);\n }\n\n function addPieChart() {\n const width = elem.width();\n const height = ctrl.height - getLegendHeight(ctrl.height);\n\n const size = Math.min(width, height);\n\n const plotCanvas = $('
');\n const plotCss = {\n margin: 'auto',\n position: 'relative',\n paddingBottom: 20 + 'px',\n height: size + 'px',\n };\n\n plotCanvas.css(plotCss);\n\n const backgroundColor = $('body').css('background-color');\n\n const options = {\n legend: {\n show: false,\n },\n series: {\n pie: {\n radius: 1,\n innerRadius: 0,\n show: true,\n stroke: {\n color: backgroundColor,\n width: parseFloat(ctrl.panel.strokeWidth).toFixed(1),\n },\n label: {\n show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph',\n formatter: formatter,\n },\n highlight: {\n opacity: 0.0,\n },\n combine: {\n threshold: ctrl.panel.combine.threshold,\n label: ctrl.panel.combine.label,\n },\n },\n },\n grid: {\n hoverable: true,\n clickable: false,\n },\n };\n\n if (panel.pieType === 'donut') {\n options.series.pie.innerRadius = 0.5;\n }\n\n data = ctrl.data;\n\n for (let i = 0; i < data.length; i++) {\n const series = data[i];\n\n // if hidden remove points\n if (ctrl.hiddenSeries[series.label]) {\n series.data = {};\n }\n }\n\n if (panel.legend.sort) {\n if (ctrl.panel.valueName !== panel.legend.sort) {\n panel.legend.sort = ctrl.panel.valueName;\n }\n if (panel.legend.sortDesc === true) {\n data.sort((a: any, b: any) => {\n return b.legendData - a.legendData;\n });\n } else {\n data.sort((a: any, b: any) => {\n return a.legendData - b.legendData;\n });\n }\n }\n\n elem.html(plotCanvas);\n\n // @ts-ignore\n $.plot(plotCanvas, data, options);\n plotCanvas.bind('plothover', (event: any, pos: any, item: any) => {\n if (!item) {\n $tooltip.detach();\n return;\n }\n\n let body;\n const percent = parseFloat(item.series.percent).toFixed(2);\n const formatted = ctrl.formatValue(item.series.data[0][1]);\n\n body = '
';\n body += '
' + _.escape(item.series.label) + ': ' + formatted;\n body += ' (' + percent + '%)' + '
';\n body += '
';\n\n $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY);\n });\n }\n\n function render(incrementRenderCounter: any) {\n if (!ctrl.data) {\n return;\n }\n\n data = ctrl.data;\n\n if (0 === ctrl.data.length) {\n noDataPoints();\n } else {\n addPieChart();\n }\n\n if (incrementRenderCounter) {\n ctrl.renderingCompleted();\n }\n }\n}\n","import angular from 'angular';\n// @ts-ignore\nimport $ from 'jquery';\n//import './lib/jquery.flot.pie';\n\n//import 'jquery.flot';\n\nimport './lib/jquery.flot.time';\n\nimport _ from 'lodash';\n\n// @ts-ignore\nimport PerfectScrollbar from './lib/perfect-scrollbar.min';\n\nangular.module('grafana.directives').directive('piechartLegend', (popoverSrv: any, $timeout: any) => {\n return {\n link: (scope: any, elem: any) => {\n const $container = $('
');\n let firstRender = true;\n const ctrl = scope.ctrl;\n const panel = ctrl.panel;\n let data: any;\n let seriesList: any;\n let dataList: any;\n let i;\n let legendScrollbar: any;\n\n scope.$on('$destroy', () => {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n }\n });\n\n ctrl.events.on('render', () => {\n data = ctrl.series;\n if (data) {\n for (const i in data) {\n data[i].color = ctrl.data[i].color;\n }\n render();\n }\n });\n\n function getSeriesIndexForElement(el: any) {\n return el.parents('[data-series-index]').data('series-index');\n }\n\n function toggleSeries(e: any) {\n const el = $(e.currentTarget);\n // Consider Combine entry as special case (not clickable)\n if (el && el.text() !== panel.combine.label) {\n const index = getSeriesIndexForElement(el);\n const seriesInfo = dataList[index];\n const scrollPosition = $($container.children('tbody')).scrollTop();\n ctrl.toggleSeries(seriesInfo);\n if (typeof scrollPosition !== 'undefined') {\n $($container.children('tbody')).scrollTop(scrollPosition);\n }\n }\n }\n\n function sortLegend(e: any) {\n const el = $(e.currentTarget);\n const stat = el.data('stat');\n\n if (stat !== panel.legend.sort) {\n panel.legend.sortDesc = null;\n }\n\n // if already sort ascending, disable sorting\n if (panel.legend.sortDesc === false) {\n panel.legend.sort = null;\n panel.legend.sortDesc = null;\n ctrl.render();\n return;\n }\n\n panel.legend.sortDesc = !panel.legend.sortDesc;\n panel.legend.sort = stat;\n ctrl.render();\n }\n\n function getLegendHeaderHtml(statName: any) {\n let name = statName;\n\n if (panel.legend.header) {\n name = panel.legend.header;\n }\n\n let html = '' + _.escape(name);\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function getLegendPercentageHtml(statName: any) {\n const name = 'percentage';\n let html = '' + name;\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function openColorSelector(e: any) {\n // if we clicked inside poup container ignore click\n if ($(e.target).parents('.popover').length) {\n return;\n }\n\n const el = $(e.currentTarget).find('.fa-minus');\n const index = getSeriesIndexForElement(el);\n const series = seriesList[index];\n\n $timeout(() => {\n popoverSrv.show({\n element: el[0],\n position: 'right center',\n template:\n '' +\n '',\n openOn: 'hover',\n classNames: 'drop-popover drop-popover--transparent',\n model: {\n autoClose: true,\n series: series,\n toggleAxis: () => {},\n colorSelected: (color: any) => {\n ctrl.changeSeriesColor(series, color);\n },\n },\n });\n });\n }\n\n function render() {\n if (panel.legendType === 'On graph' || !panel.legend.show) {\n $container.empty();\n elem.find('.piechart-legend').css('padding-top', 0);\n return;\n } else {\n elem.find('.piechart-legend').css('padding-top', 6);\n }\n\n if (firstRender) {\n elem.append($container);\n $container.on('click', '.piechart-legend-icon', openColorSelector);\n $container.on('click', '.piechart-legend-alias', toggleSeries);\n $container.on('click', 'th', sortLegend);\n firstRender = false;\n }\n\n seriesList = data;\n dataList = ctrl.data;\n\n $container.empty();\n\n const width = panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth + 'px' : '';\n const ieWidth =\n panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth - 1 + 'px' : '';\n elem.css('min-width', width);\n elem.css('width', ieWidth);\n\n const showValues = panel.legend.values || panel.legend.percentage;\n const tableLayout = (panel.legendType === 'Under graph' || panel.legendType === 'Right side') && showValues;\n\n $container.toggleClass('piechart-legend-table', tableLayout);\n\n let legendHeader;\n if (tableLayout) {\n let header = '';\n if (panel.legend.values) {\n header += getLegendHeaderHtml(ctrl.panel.valueName);\n }\n if (panel.legend.percentage) {\n header += getLegendPercentageHtml(ctrl.panel.valueName);\n }\n header += '';\n legendHeader = $(header);\n }\n\n let total = 0;\n if (panel.legend.percentage) {\n for (i = 0; i < seriesList.length; i++) {\n if (!ctrl.hiddenSeries[seriesList[i].label]) {\n total += seriesList[i].stats[ctrl.panel.valueName];\n }\n }\n }\n\n let combineNum = 0;\n const combineVal = {\n label: panel.combine.label,\n color: '',\n legendData: 0,\n };\n const seriesElements = [];\n\n for (i = 0; i < seriesList.length; i++) {\n const series = seriesList[i];\n const seriesData = dataList[i];\n // combine lower values than threshold and not include into legent\n if (seriesData.data / total < panel.combine.threshold) {\n // Jump hidden series\n if (!ctrl.hiddenSeries[seriesData.label]) {\n combineNum++;\n combineVal.legendData += seriesData.data;\n }\n } else {\n // ignore empty series\n if (panel.legend.hideEmpty && series.allIsNull) {\n continue;\n }\n // ignore series excluded via override\n if (!series.legend) {\n continue;\n }\n\n seriesElements.push($(generateLegendItem(seriesData, i, total, showValues, tableLayout)));\n }\n }\n\n // Add combine to legend\n if (combineNum > 0) {\n // Define color according to hiddenSeries and combineNum\n if (typeof panel.legend.sortDesc === 'undefined' || panel.legend.sortDesc === null || panel.legend.sortDesc) {\n if (Object.keys(ctrl.hiddenSeries).length > 0) {\n let _el, _max;\n for (const _key in ctrl.hiddenSeries) {\n _el = dataList.find((x: any) => x.label === _key);\n if (typeof _max === 'undefined') {\n _max = _el.legendData;\n combineVal.color = _el.color;\n } else {\n if (_el.legendData > _max) {\n _max = _el.legendData;\n combineVal.color = _el.color;\n }\n }\n }\n } else {\n combineVal.color = seriesList[seriesList.length - combineNum].color;\n }\n } else {\n combineVal.color = seriesList[0].color;\n }\n\n seriesElements.push(\n $(generateLegendItem(combineVal, dataList.length - combineNum, total, showValues, tableLayout))\n );\n }\n\n if (tableLayout) {\n // const topPadding = 6;\n const tbodyElem = $('');\n // tbodyElem.css(\"max-height\", maxHeight - topPadding);\n if (typeof legendHeader !== 'undefined') {\n tbodyElem.append(legendHeader);\n }\n tbodyElem.append(seriesElements);\n $container.append(tbodyElem);\n } else {\n $container.append(seriesElements);\n }\n\n if (panel.legendType === 'Under graph') {\n addScrollbar();\n } else {\n destroyScrollbar();\n }\n }\n\n function generateLegendItem(data: any, index: any, total: any, showValues: boolean, tableLayout: boolean) {\n let html = '
';\n html += '';\n html += '';\n html += '';\n\n html += '' + _.escape(data.label) + '';\n let decimal = 0;\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n\n if (showValues && tableLayout) {\n const value = data.legendData;\n if (panel.legend.values) {\n html += '
' + ctrl.formatValue(value) + '
';\n }\n if (total) {\n const pvalue = ((value / total) * 100).toFixed(decimal) + '%';\n html += '
' + pvalue + '
';\n }\n }\n html += '
';\n\n return html;\n }\n\n function addScrollbar() {\n const scrollbarOptions = {\n // Number of pixels the content height can surpass the container height without enabling the scroll bar.\n scrollYMarginOffset: 2,\n suppressScrollX: true,\n };\n\n if (!legendScrollbar) {\n legendScrollbar = new PerfectScrollbar(elem[0], scrollbarOptions);\n } else {\n legendScrollbar.update();\n }\n }\n\n function destroyScrollbar() {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n legendScrollbar = null;\n }\n }\n },\n };\n});\n","import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';\nimport _ from 'lodash';\nimport kbn from 'grafana/app/core/utils/kbn';\nimport config from 'grafana/app/core/config';\n// @ts-ignore\nimport TimeSeries from 'grafana/app/core/time_series';\nimport rendering from './rendering';\nimport './legend';\n\nclass PieChartCtrl extends MetricsPanelCtrl {\n static templateUrl = 'module.html';\n $rootScope: any;\n hiddenSeries: any;\n unitFormats: any;\n series: any;\n data: any;\n\n /** @ngInject */\n constructor($scope: any, $injector: any, $rootScope: any) {\n super($scope, $injector);\n this.$rootScope = $rootScope;\n this.hiddenSeries = {};\n\n const panelDefaults = {\n pieType: 'pie',\n legend: {\n show: true, // disable/enable legend\n values: true,\n },\n links: [],\n datasource: null,\n interval: null,\n targets: [{}],\n cacheTimeout: null,\n nullPointMode: 'connected',\n legendType: 'Under graph',\n breakPoint: '50%',\n aliasColors: {},\n format: 'short',\n valueName: 'current',\n strokeWidth: 1,\n fontSize: '80%',\n combine: {\n threshold: 0.0,\n label: 'Others',\n },\n };\n\n _.defaults(this.panel, panelDefaults);\n _.defaults(this.panel.legend, panelDefaults.legend);\n\n this.events.on('render', this.onRender.bind(this));\n this.events.on('data-received', this.onDataReceived.bind(this));\n this.events.on('data-error', this.onDataError.bind(this));\n this.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n this.setLegendWidthForLegacyBrowser();\n }\n\n onInitEditMode() {\n this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2);\n this.unitFormats = kbn.getUnitFormats();\n }\n\n setUnitFormat(subItem: any) {\n this.panel.format = subItem.value;\n this.render();\n }\n\n onDataError() {\n this.series = [];\n this.render();\n }\n\n changeSeriesColor(series: any, color: any) {\n series.color = color;\n this.panel.aliasColors[series.alias] = series.color;\n this.render();\n }\n\n migrateToPanel(type: string) {\n this.onPluginTypeChange(config.panels[type]);\n }\n\n onRender() {\n this.data = this.parseSeries(this.series);\n }\n\n parseSeries(series: any) {\n return _.map(this.series, (serie, i) => {\n return {\n label: serie.alias,\n data: serie.stats[this.panel.valueName],\n color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i],\n legendData: serie.stats[this.panel.valueName],\n };\n });\n }\n\n onDataReceived(dataList: any) {\n this.series = dataList.map(this.seriesHandler.bind(this));\n this.data = this.parseSeries(this.series);\n this.render(this.data);\n }\n\n seriesHandler(seriesData: any) {\n const series = new TimeSeries({\n datapoints: seriesData.datapoints,\n alias: seriesData.target,\n });\n\n series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);\n return series;\n }\n\n getDecimalsForValue(value: any) {\n if (_.isNumber(this.panel.decimals)) {\n return { decimals: this.panel.decimals, scaledDecimals: null };\n }\n\n const delta = value / 2;\n let dec = -Math.floor(Math.log(delta) / Math.LN10);\n\n const magn = Math.pow(10, -dec);\n const norm = delta / magn; // norm is between 1.0 and 10.0\n let size;\n\n if (norm < 1.5) {\n size = 1;\n } else if (norm < 3) {\n size = 2;\n // special case for 2.5, requires an extra decimal\n if (norm > 2.25) {\n size = 2.5;\n ++dec;\n }\n } else if (norm < 7.5) {\n size = 5;\n } else {\n size = 10;\n }\n\n size *= magn;\n\n // reduce starting decimals if not needed\n if (Math.floor(value) === value) {\n dec = 0;\n }\n\n const result = {\n decimals: 0,\n scaledDecimals: 0,\n };\n result.decimals = Math.max(0, dec);\n result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2;\n\n return result;\n }\n\n formatValue(value: any) {\n const decimalInfo = this.getDecimalsForValue(value);\n const formatFunc = kbn.valueFormats[this.panel.format];\n if (formatFunc) {\n return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals);\n }\n return value;\n }\n\n link(scope: any, elem: any, attrs: any, ctrl: any) {\n rendering(scope, elem, attrs, ctrl);\n }\n\n toggleSeries(serie: any) {\n if (this.hiddenSeries[serie.label]) {\n delete this.hiddenSeries[serie.label];\n } else {\n this.hiddenSeries[serie.label] = true;\n }\n this.render();\n }\n\n onLegendTypeChanged() {\n this.setLegendWidthForLegacyBrowser();\n this.render();\n }\n\n setLegendWidthForLegacyBrowser() {\n // @ts-ignore\n const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n if (isIE11 && this.panel.legendType === 'Right side' && !this.panel.legend.sideWidth) {\n this.panel.legend.sideWidth = 150;\n }\n }\n}\n\nexport { PieChartCtrl, PieChartCtrl as MetricsPanelCtrl };\n","import { PieChartCtrl } from './piechart_ctrl';\nimport { loadPluginCss } from 'grafana/app/plugins/sdk';\n\nloadPluginCss({\n dark: 'plugins/grafana-piechart-panel/styles/dark.css',\n light: 'plugins/grafana-piechart-panel/styles/light.css',\n});\n\nexport { PieChartCtrl as PanelCtrl };\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/plugin.json b/data/plugins/grafana-piechart-panel/plugin.json new file mode 100644 index 0000000000000..39bb5ed4f3d8d --- /dev/null +++ b/data/plugins/grafana-piechart-panel/plugin.json @@ -0,0 +1,70 @@ +{ + "dependencies": { + "grafanaDependency": "\u003e=4.6.5", + "grafanaVersion": "4.6.5", + "plugins": [] + }, + "id": "grafana-piechart-panel", + "info": { + "author": { + "name": "Grafana Labs", + "url": "http://grafana.com" + }, + "build": { + "time": 1667561513884, + "repo": "https://github.com/grafana/piechart-panel", + "branch": "master", + "hash": "4eff3329acac076f56b19375ac52fa8228ddbbba", + "build": 15 + }, + "description": "Pie chart panel for grafana", + "keywords": [ + "piechart", + "panel" + ], + "links": [ + { + "name": "Project site", + "url": "https://github.com/grafana/piechart-panel" + }, + { + "name": "Blog Post", + "url": "https://blog.raintank.io/friends-dont-let-friends-abuse-pie-charts/" + }, + { + "name": "MIT License", + "url": "https://github.com/grafana/piechart-panel/blob/master/LICENSE" + } + ], + "logos": { + "large": "img/piechart_logo_large.svg", + "small": "img/piechart_logo_small.svg" + }, + "screenshots": [ + { + "name": "Donut!", + "path": "img/piechart-donut.png" + }, + { + "name": "Legend on the graph", + "path": "img/piechart-legend-on-graph.png" + }, + { + "name": "Legend to the right", + "path": "img/piechart-legend-rhs.png" + }, + { + "name": "Legend underneath", + "path": "img/piechart-legend-under.png" + }, + { + "name": "Piechart options", + "path": "img/piechart-options.png" + } + ], + "updated": "2022-11-04", + "version": "1.6.4" + }, + "name": "Pie Chart", + "type": "panel" +} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/styles/dark.css b/data/plugins/grafana-piechart-panel/styles/dark.css new file mode 100644 index 0000000000000..19704aece2457 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/styles/dark.css @@ -0,0 +1 @@ +.pieLabel>div{color:#fff}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{cursor:crosshair;flex-grow:1;position:relative;top:10px}.datapoints-warning{pointer:none;cursor:auto;left:50%;margin-left:-100px;margin-top:-50px;padding:10px;position:absolute;text-align:center;top:50%;width:200px;z-index:10}.piechart-legend{flex:0 1 auto;margin:0 1rem;padding-top:6px;position:relative;text-align:center}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{padding-right:4px;position:relative;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{color:#d8d9da;cursor:pointer;float:left;font-size:85%;text-align:left;white-space:nowrap}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;padding-left:10px;white-space:nowrap}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;height:100%;overflow-x:hidden;overflow-y:auto;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{color:#8e8e8e;content:"(right-y)";padding:0 5px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{display:table-cell;float:none;padding:2px 10px;text-align:right;white-space:nowrap}.piechart-legend-table .piechart-legend-icon{padding:0;top:0;width:5px}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{max-width:650px;overflow:hidden;padding-left:7px;text-align:left;text-overflow:ellipsis;width:95%}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#262628}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{color:#33b5e5;font-size:85%;font-weight:700;padding:0 10px 1px 0;text-align:right;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#8e8e8e}.piechart-tooltip{background-color:#141414;color:#d8d9da;font-size:12px;white-space:nowrap}.piechart-tooltip .piechart-tooltip-time{color:#d8d9da;font-weight:700;padding:.2rem;position:relative;text-align:center;top:-3px}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right}.migrate-button{height:auto;min-height:32px} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/styles/light.css b/data/plugins/grafana-piechart-panel/styles/light.css new file mode 100644 index 0000000000000..00494761030b6 --- /dev/null +++ b/data/plugins/grafana-piechart-panel/styles/light.css @@ -0,0 +1 @@ +.pieLabel>div{color:#000}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}:root .piechart-panel--legend-right .piechart-legend,_:-ms-fullscreen{flex:0 1 200px}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{cursor:crosshair;flex-grow:1;position:relative;top:10px}.datapoints-warning{pointer:none;cursor:auto;left:50%;margin-left:-100px;margin-top:-50px;padding:10px;position:absolute;text-align:center;top:50%;width:200px;z-index:10}.piechart-legend{flex:0 1 auto;margin:0 1rem;padding-top:6px;position:relative;text-align:center}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{padding-right:4px;position:relative;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{color:52545c;cursor:pointer;float:left;font-size:85%;text-align:left;white-space:nowrap}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;padding-left:10px;white-space:nowrap}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;height:100%;overflow-x:hidden;overflow-y:auto;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{color:#767980;content:"(right-y)";padding:0 5px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{display:table-cell;float:none;padding:2px 10px;text-align:right;white-space:nowrap}.piechart-legend-table .piechart-legend-icon{padding:0;top:0;width:5px}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{max-width:650px;overflow:hidden;padding-left:7px;text-align:left;text-overflow:ellipsis;width:95%}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#dde4ed}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{color:#61c2f2;font-size:85%;font-weight:700;padding:0 10px 1px 0;text-align:right;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#acb6bf}.piechart-tooltip{background-color:#dde4ed;color:#35373f;font-size:12px;white-space:nowrap}.piechart-tooltip .piechart-tooltip-time{color:#35373f;font-weight:700;padding:.2rem;position:relative;text-align:center;top:-3px}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right}.migrate-button{height:auto;min-height:32px} \ No newline at end of file diff --git a/data/plugins/innius-video-panel/CHANGELOG.md b/data/plugins/innius-video-panel/CHANGELOG.md new file mode 100644 index 0000000000000..41983059e4fb6 --- /dev/null +++ b/data/plugins/innius-video-panel/CHANGELOG.md @@ -0,0 +1,32 @@ +# Change Log + +## v1.0.6 + +* upgrade grafana dependencies and grafana tools + +## v1.0.5 + +- enable custom background colors for iframe control + +## v1.0.4 + +- some small textual improvements +- add docker-compose file to allow easy testing +- support templates in iFrame / Video URL's +- support full width for videos + + +## v1.0.3 + +sign the plugin + + +## v1.0.2 + +geolocation for iframes + + +## v1.0.0 + +Initial Release + diff --git a/data/plugins/innius-video-panel/LICENSE b/data/plugins/innius-video-panel/LICENSE new file mode 100644 index 0000000000000..c6f917cea3950 --- /dev/null +++ b/data/plugins/innius-video-panel/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Innius + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/data/plugins/innius-video-panel/MANIFEST.txt b/data/plugins/innius-video-panel/MANIFEST.txt new file mode 100644 index 0000000000000..272a40f8c257d --- /dev/null +++ b/data/plugins/innius-video-panel/MANIFEST.txt @@ -0,0 +1,38 @@ + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +{ + "manifestVersion": "2.0.0", + "signatureType": "community", + "signedByOrg": "innius", + "signedByOrgName": "innius", + "plugin": "innius-video-panel", + "version": "1.0.7", + "time": 1680849057599, + "keyId": "7e4d0c6a708866e7", + "files": { + "LICENSE": "bbe881e9ecd692de0c4999a2d034130b1369e3cc646f7171b611cef3a3f1c58a", + "module.js": "0a1254d160486832bcd190e2d9e7fbeb1e9cba663adbcd7635ce02a1dd706847", + "module.js.map": "c9c1f22e3395bc7607dce7c57a9f3008d476f68f8e21ced8d6dc7c60c964ae5c", + "README.md": "58a7d832f0ec556f70d91cce028879b4415308727dcd19855171b319e87099af", + "plugin.json": "f45daddde6199109f9f0309fe377c8390eb5da4c1316b90d842e0d05a56ae1d0", + "img/logo.svg": "0830fb44aa94f29c16facaf731d1b5ede8e7015ae40dff16e25aabf6ddd023a3", + "img/examples.png": "ead211c62df25d295bb6a841c78ec26b5b379f6cfe16966b9bb6253a689ca70a", + "img/screenshots/youtube.png": "f658713e8694bc1320e8340300b7776f11fd886a05b7db09e944575d8abd7e05", + "img/screenshots/video.png": "2c21d23620ca3cd82e37e64581a3aa2cf9f97423f9880b597809643c182de45a", + "img/screenshots/iframe.png": "3a1a1474b0f704ece445cc74f179728f619b786e3ad7a94471cd0dcd2db39a45", + "CHANGELOG.md": "65ac19aad275f981add5b9994b6df80bb4eab1d0e63938321247b6147630c3df" + } +} +-----BEGIN PGP SIGNATURE----- +Version: OpenPGP.js v4.10.10 +Comment: https://openpgpjs.org + +wrcEARMKAAYFAmQvuKEAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq +cIhm5zf4AgQPzThNEa66GKJuEYrcyMlBOGdjEjY5uLRl53A+ZqdjUJqiGbZK +8DbeeZ4ksaBpaWiO42tQaIBWaPLdHwttQ9jDwgIFGiG+OZF1U/GV/PUA3tQE +a7dpaPEsLqAnyGbaYy1B9i7bnjYkjljLVUoRdyVaQviCC99N0U3SsX4X+DnO +ABOB9UQ= +=B9vL +-----END PGP SIGNATURE----- diff --git a/data/plugins/innius-video-panel/README.md b/data/plugins/innius-video-panel/README.md new file mode 100644 index 0000000000000..5a084c931fe1c --- /dev/null +++ b/data/plugins/innius-video-panel/README.md @@ -0,0 +1,36 @@ +# Video Panel +A panel to display video from a URL, YouTube ID, or an iFrame. + +![GitHub release (latest by date)](https://img.shields.io/github/v/release/innius/grafana-video-panel?logo=github) +[![Marketplace](https://img.shields.io/badge/dynamic/json?logo=grafana&color=F47A20&label=marketplace&prefix=v&query=version&url=https%3A%2F%2Fgrafana.com%2Fapi%2Fplugins%2Finnius-video-panel)](https://grafana.com/grafana/plugins/innius-video-panel) +[![Downloads](https://img.shields.io/badge/dynamic/json?logo=grafana&color=F47A20&label=downloads&query=downloads&url=https%3A%2F%2Fgrafana.com%2Fapi%2Fplugins%2Finnius-video-panel)](https://grafana.com/grafana/plugins/innius-video-panel) + +# Configuration + + +### File +- `URL` : the url to a valid video file. Eg: `https://example.com/video.mp4` +- Grafana [variables](https://grafana.com/docs/grafana/latest/variables/variable-types/) are supported. For instance: `https://example.com/your-camera-feed?id=${__from}` +- `Autoplay` (optional): autoplay video +- `Loop` (optional) : loop video + +![screenshot](https://raw.githubusercontent.com/innius/grafana-video-panel/master/src/img/screenshots/video.png) + +### YouTube +- `Video ID` : the value after watch?v= in the URL. Eg: `eQpyJQ2womo` +- `Autoplay` (optional): autoplay video +- `Loop` (optional) : loop video + +![screenshot](https://raw.githubusercontent.com/innius/grafana-video-panel/master/src/img/screenshots/youtube.png) + +### iFrame +The iFrame source is useful when you're dealing with camera feeds. +- `URL` : the url of the page. Eg: `https://example.com/your-camera-feed` +- Grafana [variables](https://grafana.com/docs/grafana/latest/variables/variable-types/) are supported. For instance: `https://example.com/your-camera-feed?id=${__from}` + +![screenshot](https://raw.githubusercontent.com/innius/grafana-video-panel/master/src/img/screenshots/iframe.png) + +# Installation +1. Go to Grafana Plugins page and search Video Panel by Innius. + +2. The panel is available in the Dashboards section in your Grafana main menu, and can be added like any other core panel in Grafana. diff --git a/data/plugins/innius-video-panel/img/examples.png b/data/plugins/innius-video-panel/img/examples.png new file mode 100644 index 0000000000000000000000000000000000000000..b5b69778fd5d3e9d012313027988eb397cc42e9a GIT binary patch literal 479048 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≧SlkcIv=AYokLq2-hr!5Nz_~Tt6%#cx z1O2DBa`oFJqgnkrLUIWxVGFBN-Pg`b)<;l>yev19N#ATImN(4fN9+!n+k=PSJ}<9! ze1_G9-?=9h(zi#2L>h;@&yg;7?P!8)6qK_g2*`o1sYQO^(cn}6noJnt>B8V6;F-!{ zs2M6AdOPy^sSKUc#u1Ov*-6YKYbBFK1@WL!p{x?-_n#VyN=QuiQT0?;8DhQdJpw=wJy(gn+no! zGkR(d9lT#jvh~PJ>|~3}vT+qZc<4Q)twS;3+Bl%AIiswq3^I5=vlTAuZq{UdEB^wi5vsq*{x^ zvPweu12|IPwZH#}G)@te|Lyb41~O#q2OwT+5Hi*CN zpDz~l)=UB+FFf{-`eTb6(_z>@(<7&N07LU57{X1~7I-N)#eBrE^q7mb0Db@_PP*Yp zjc`?C|GKvv)7!4Gn?(r0f3*yHh2KpDIZ+fg!dT;r%qhlKOh>;U1}sm$Cd>zM55=C! z%s0Irqr-koQ1b!;RlH{O>W2Dh*lJLUCv4zEB9RhfQQ}?E7pVM7WBZ%2Bf@Wrx`j-3 z<~;cv9sz84>!K1$v`;lkIP+_Y@JtH7y7Gq3%SrG9B9$ZC0XHs<;`#8WpGM*FE4s5b z$%cJ4wpxW3?r!O1=;jNwF#9^>es^L9KLX#+#faanHw=099e6JkP5fx#!NM^?G|Xk8 zJ_A`Fd|dU~&%f3<@>0d`Er8ETpZgu{Il;D4x*@q@1EH*btHm}%PN8#aQ1`+0f5$rc z=-jQ4FX-JgE@!hB<6Z?7g(DiHEbdm=B4~{K^WR&y8XO-62R@;O83~~(PU-*`FCtyG zSY=Dzy4wR3Rc%W@eN_Se!v2(d22QZG-jP{u((x}BZ>x^?DIK)J|F?w9WkvK+^2iIG zO@Q^mM3}!bIxZ8ov<76*R@tiPp5F;GeQ(ZYPhAc^_%rlLSato=0#~nOXS_Fbd*w~j zHTOB!x*h&OX6IgGrTJGD_$n;J;ks4u+)s~ZoPtTTL z20yTkjo9_Qmi5YWno-knG3*=&olCcl`Tx~(9(7Q$JknpY7h~*2U!Q48rNtH3?#>I# z^Ud_M0=@2RB3{;+fU&AkaTST=XXnk-%p8l19{+V2%!37fM7Oy5!I=}Jgla%ldEt(T z$+0Q;LbUdn$aZ^c>BZ(FBqv69Gf#_+0jqgLFTUSe-ioV~7Q$66k?vP?c=pAHlayG+ z?F-s8F8(Qbnr>l?U(2b6NrTp@;23B=BU|)OO}NMK(*Y5%e;w!j!YB2b$`)N@26}2m zP5^I$6eAe{5RRSCZH`~Y*?ZA6 zzG+mq%l(5Nc!}J`#VClgyDe7Q79fXLm^=j(Wsm$i&1vE?4Rg%iRtVjD0at6brYD-q ziqLyLmU6wZ)~&!w=Dl&mOUTl>zlGHo6k|k77#>eX74-*6kNLX-ZiW1}cBxH*#ZPbj z7tLQ+Levc6n+dQT(f~MZjGOR4jOJlkM3)mn@V{y{5@ABLsN2!EJL}z_%Mf2)SZ|!p zK@z1#OzuPmRzMVGHLTLFm|{)_yEjtHj(Tw-wAkJYoTE}> zry2R=Dp%|3Cr5Ph5$6qx<@r?YbKX%O7=sI2^dE!XbHKmiOugR@)tJ(4FJHP|q1}A7 zn7T1?%J_3!91%PVO{Dt|b`94VMtrSNwVG?|_`aC9;IO!uLl5cAZ~T5h zlQ_mTKhUO-lYq`=4PpT|M)i+f)3khMz(t7~oK{B;l>?tet*B;}3lLmh{IwD~G&IBV zTB)Vj3_Pp23a$s^N;J)V(PJ#M4P-K`B59mh4y#xX-bRQMBiFAB;AXZA1Z5};nfwH_b&`47U%Lz8QSQ=$bwHJ){@Z^U)K~7 z-#);}mt@CGK9N;QF`A3PP_YvEb4Pl4<2vNZ{>^5+m)}t5bCnTfH?ylV1G;+4j|6Z* z0CvPf&rE#|m$Tkg7t+;7saMqsDZ|C9%U5h?E)e9B0wKQ0Y>R*wTgN)tcd!BByGkXD z*T>-9o#KNPUx{8D>{!CWO(YC0fZq|{BOa1dWNEDshgDfIVGB$(ap9vsq^oM}m{p`t zkfXMS?iPLRT03{9m^z;7NR0_n^#*Ri{cnk*!UdV}wV9{_hI}8OHA2D%_uKJC*2KWW zb-Pia2&~=rh;zcuk@>K2tZ2(esmB-gHAs#>42rOLgFt7hr_2nubJlo2%t-<1C@<7H zCjNTvjLJ4VCPR5kBJ14;zDXI`Zn_kQ^baL{{3TYr>!6Pfe3Fb+w=-=2$F(<4QWg8* z7GnZG%^e_D5ird_i;^>S#3uVZ3J`z(J=)~etj^oO>(HH6ay~!hy!6Nf0}K2bCL1G3 zFq~(FUcl>_g;?k#Ku+(f=duI2748pxn;)is+J#a9s>whr1lt|l!ip`?-t-*C{l$J| zFVpa8*qsr{&M$m=5D_$dQ{e;UTt$<2pYtajH}P%rbo+d<++=RNl0s_J*JPkQ-E($d z|Bf5W+^coiQDC5tJP9#u5UlcqN# za!e2hnik!rY00oV@#3Q#mxv$HWcZz9syX4~$9wQqs9_p6&r?DA5iT|=KI|c0q9Kf= zuei>m}oy5OZ=pqr@r1~xTwmp`ZIqpb%wDO~D z%n>|UaiS+cy@oV3Q@fj4D}p&ajCwV@0H%Kod?wZuwGI;iySpqL%VPrg0ei=bdgShV z@Q2-sY*`38t;Vl0CnIr2)5Troc1auUnLCQf87;wiT_54H?rAlQBC-8n79iwh8R;$~ z#Zzz~N7<#sE}tpSk;J^T8zz|-Kh!!+nA8u4tUY~7|I;c-zsJqvG5#D^SQ`U>ws@t6 znJr0P`P@7vRnVbVkGr;YD}%P&6cwHkRpX!uGhmr-Pfo@W-l{%WUtvj8{4o|CYx$Pt;xz&L=!)kzZk>Z1XH-xq_ z;*DI1+qpI+p#9`-!$s+>WXf zv_EokpGB?RZc8<_&eSTmP46Cd>HD!FxJ|H3_}%*~MEv*QO9`^gdR*n5-rpoDdTy?% zn}xJoCV#)4@8Z)QXHqad_q_v>OX0#_9Lf0lI_&3ger2X4U*A?{B`-7LPW0!mZ;h9) zU&pYKQB37v!(;`56oRDy=2c+vmIb^IR;a`f?n@#D3@a`DrV7%JnqGRWtAZuufn~D$K&p~H>?DEGn z_-eEJckI{n9x~VAP_FqhX_FX4NSF1`D6X%7r{DEKwE>Uekv@iYODt={KXi%>!3Kj!&spCuKD<`T!r)jfH^d%W5+yc*EH^28Li1+W+ zw`Gy>7J1zsZ`2;b4<_rU{~t}~9Z2>6$9qzUNcK4Po)K~mC9-GMIXDg>d!J*4?3HzF zvQkmv*z+7@k8=p2V;)%t*(52Ed%nMW?|+^a)pO5ETQ_RRbJb9g(l=vtO zXc_|yC6$uKuM*K~%$AgCHbCe@Qc{`<;M;sAieBdVz?h`%*zBr(MBXE^b?icv!0O(} z3pO&eQ}PY{@_pbg#QBu&uC9+EVsSI8_%nEV^5ajlsM#_IGOS64?%++22Mv35BTwSj zKf^vBy-}EbsF5_5KhRp;cw9kRc7@H<82KA=H>^=G-)z?7aCP;^z35FmQRb#FW}7pZ zxI%02HHe{AD?`%z1>s{t@ZD^-9;M&EzwbU9PD;*Jxo-h7f}d9Whzd{9K;hN@065u| zM7+o8Ei-)wDEMed?iABKwq+&%$k;J7)+RpX;bNSBb?A(!Ye3b}p>Ovb1&$*F<<~`1 z1sn855)i1K%4o?4l0vF27a!u+%d4h z2WTS-gNjtwdO0BeEX`jMz_jUT{zNFgV_T5rw&m?KO$Xp|=9;l&@Lt!7*J&qL47-v7 zz;$+AYABlQtOA-Um`c$+omFg3^!wXA0B|U-MTUgcf-D2i`L_`YTp#vHs^j{vK3yb_ zne=3*!=i?KWck+F1EJ}VV`;YKssI&2gA8eWDfFh_exS&AwySabvg&5vGDI2|E!394 zjk&3h5Uv8lIWqZ_R+D8k{B+@)(Ek2&AiR(OUrWUOc`H~u&rd(Q0(JS=au-|h*WgS0 zxy&&C5J<}>t*xP`X{xF?mnik(^fU{$=kDJ+-Mbu;5*{=iu*Hn&dZ4FUQS;=643>xT zC0t+xthLNg{Mkw{b~;je0t|UeQ5*}iFQ_)Q3QiUF*0R9-uZ~n<1IOr>{*dqvO$2_k zG*o-ws7>Oc0or%>%g_ESzyOvX8!bRZ2c^}E@totxt2_8Z+xZ7VW%;{4gSX*}jt7kG z=S@j$2)k<{30CqtoPUcNWX$}wrj^^jm~pztN!;J-u*`DOJO2@!sI16AOWUAV4|BskxOo->equ&Vo@(_eT`76I;hu-sCpJ|9MAx3S(-%WeIB07jaKDCxq<$CS_yxzF1o| zV_pBaLO#y9uJfg>kb>SRVfEe|I$4}F1Y2#}{~K^jQV~fm`sfT&u}SNg-90Gg#@Z$x3;q|H z(dE`$n8+MFDilnDv!9XI-y910-a7mA=*)!bse%m&Gq_ftvFVg6F7^EU9SE8mx3W7p zHH?lAT_XiL3bT>Ye;jb@R#POj?_%3uHkxmli+f&`u^BK24gIf-u#HGRzi*W6AMMnO zBvRmfcQ`Z3ygJ4N?P2ON)+gPX^T@ISk4ER>bzx8r(d}!y&(o~_O=@VCO)TDl$OUP^ zvF7~>3gR=gas~NNc9&S9bj*lm9fJA(|8xxmWE}v0gn&Yq{$<(>5(;o9#8N%8BaR!B zWBgi#a@D^5{AjoC_NM%bkFLe)PQXLEXCkuADl6h}eX3BHxOO7j%!b`jQlS)m%N#iU z)YQoG8Sm=CbqoYP_V^PZLckt&pKk2tu=B@J@-c90ha}=Br7ueg92|FeY<;9m6#8Js zGCvSFS{0TP{NKEyl+p1|$2I8tct|RQLJKKwTtQAHi1#fd{(2j!u6n9&MKk7d`H!jZZl>?O^Mz^|!n>pD? zhSzElql(yE;?PfGp&XJ0bV}E^_ftV5XI+Bo9a?D(cwzgx=1Z$`TNYvLBB323tXo^L zPv6QL2wlEiTAJ9VXxZ34L-v8ebchPR>o z3p)22h_ijlEB6LyArnOzsxiI|!QL+_VI&rZT6$<1%W?DHp@BEybAQG}zh4b`w%B*S zNGBGqLKs}PQKU*0Y^!PldT}hZ29a3Gpt_~#Un@iRU`BeGT(m=XMtYrE0@#Dk>8xJq z9rXNxKd`=J3)@=EX>E-^b{IOgI5eSqmOWLe8%3+9YZiUo;HdS_ztSC-%SF#aA+x6? z=K@79p*34C1-F74sDwu#jJ{SE|XXwDWySmxJ^~XM4!>5!#tH3`5d(5>~W#{XecmF$vP|L-N&;Nrh+N$J+ODp=;U=U2zkjsbaB=i*Gn*$NufPf zHhEpBXyqMk<8yFhy=RNYgODcmeW{+$@*a+SGV=+`P?cA;*xo+y6^T<_&k6XtQ(vxh z8;0I#C#~}PaXSDO5@uZ)3HHiEe|oReK#nQwlK#S=7g@b4wWb4ViXl2$5bG;FAO1}@ zK+LcQaEu>JjeYz>Q#L04EdeM}!k*KA?9mU;5v2Mf$SkBo0Tm1Xz4bRx7Bi#_QB;u% zK|{xW40=T~>xe0}Ezz^=lbXBe3Z?JG&JO&SF8(I(q|{%Q1a zaD&e8-kO;B_gM0|->)I=;uU{t_!zs_1CKs^`<3u0($7Q3pf840$4b8I^`LnQN6W~o zh8>GV>sEwsASI9JG(YvFguew|6nJk*;W+wZ{RsA?%w8P}V(9-;#JfLYZ}#!`hfG&y zQxRe?*&OB2(@HiAC7;BMn3s71vn%EWx${NYcsY$cxV%+1J|crlzD-Y2($oK$C$>tc zLR|Q!bGF+#mdOa>t(p?@@6|mliEJryDkH5>CFI)xcxI*nKT4~8$8vY;Z8v|cyF~3E z{2O-q_`<^Po~_qcAipB>I(_q<;1wfK9`W^(GzMdYz${I(w8sG8FbWT)54Eg9nDs+> z*zmH@gP8)dz<>_R*`0Iw59!~t0OH=dHcWH}w!_<%*O6SJ9Y03HAE2a6ji+?GNJ3et zX~S#JgiL=~QmjTDZk6-7u|k(CA4cL9=8H#H4I&O?lexZkCu7BKrR0Wf%~9r4vweFy z%fFKCRb6r(rE0E!z$l(3Pn)diUWsWy5qEiwfdc8Y;RWfoNZ;<_7It-by8HltzX@9D zk4&-cuv@V_k4r(Mi;E++64sNMQ!LHB=6X8OH4wNW)uRl?Ar|e7lT=nwNraiMhy#LI zRwR1;Yol*K)xP_RgggpfD@wrvi}Quou@I#NYjz9b@JaVoIiq6h+*I|ERri#~+r+4Qmo_Qf2{!7}>LkUyfvpG-&kt z$x}KxXYE1c38_q`moj zEd+mJhL`02_78FB*je?AGzW?^MZ?u#ocoRPD%`gg8_0s`yLhyOBbc#n&~Ttauld>B z%sja@lJp?|nM!_lT6n9nl!?)XZ>A2mOKOCUPpLSa3h^vh!-t);)jt$R1kW%j-h>;Y z`jtY~jF*PKo6ytGFYBwaGW_BOKC*l8VH(>GD$;yMSHj-RBv0cY)TFCt?Rj^D$-CFK?4XL}5u+A& zO)VQyzyWAJqXKxi_IYKF!O!Yr^)r^YXYwPGL{sQEWkba z>_@lk61@fk>&mhF+q@l?Nw@W_LzIx!Ro^X~osEOnoXnAD8`YB%V_;WZKg@4Hb@oJ> z>*5;BPfA89rDP$jp8p?U&7kV_T>jcG{r`X z*T1Pse&yecWj}UFmY@OMI|Vfnkz_4tBB%@@wu!!^oW^(VjwDN!Tq}Ol!hoe#_E+#C z!I!QVEPzXLU}4e$MrbO6I4WdV_raLfcs*d z_kXe5`UaUD9wZ^=^c(fw10(_MtK;LPD`Q4q{>W%36K$a)G@MNMM#tN`-lCzIv0gqK z?R|$-78{UY+Q2(eZ@@~+PIQ#ENKVX{TVvs*eamLoT@j4MhpJ|3wlAN6klT<{LUa*? zg1e1#QKBOC^Cs(1yiWq)!eAzl8H3EMR-JLFh8}v}A!6MSMd8j`NZNMvd(R;Qgh5}m z9~Z@7G!0e73lHoq>D#3%TkVocXJe83{mJGVvW)CgYv^~hVhuFa5_LEA5VKSbeX3OD zIO#3AAD>sRS-Tp$P(>-Xf1F*NU31l^|)anwpc1a#bl4SWm$_qslth(VE zCvOGE!Lp&^Z1Zq%XuG}7^J2Rz<8%G;avW#{R4~ zgUZeZU;x9>Jsfq|ho>wR0+S^v(|0}?>nuHM1IhDN%ki&!3snlTA>?oX7@T|4{X%kDLpk z>o*phnEmXUvI@iV|Ekik1#tm{sEeI-07jZ-n#Y{LrgmO&e|z6=%`D2q;k&~w{<(JS z13BiFo{UY+yZeJlk>p&5VcMt?pgrwc^R~MD_tb+A+V}AI{I7`&Ql%R9 zAmu1+o7N9z>TEq({9=oIpeLUY5|5t}NNZhttTizKd`0r%-cZg2) zg;mQx(}A;s14)68uslc~{?CuA7H&m?G+GJ~& zu1JX&uSHSFTU#wV9I4BzUaSk_nsA`CmeDvPkq=J)PKRNMdga%VN56Ui{Q&vU2FM5; zd99fnTO&~^*xTC-Jc>H)$;S6Is$#Q>O$e#6(Y8p6EXncW6Hj36CJSacVJ%8im}isb zM2BR7OXErv%zAdV<9Z#F&^Hr&_M~X(CBuXBpUQm=JB$`>ySs@vCyt@BB1AwDAvI`Y zHis$3f!BvIjzu4VS4K|HBOF~&SFVSIu<4;zv06JV(+Yogx$L>XTz0>Vh6cDs)C0b; zqsvG5(}>sMUZT@~Br#dH<2tea7MuAkv(O?fG*|m>`P<$-O5AN41D~7gE^0dRnxOlo z(IP{YVCq`cPCk>Q`?HlPcAupc(?UB?0 z4zbm+MNGYw39O6-63uu}39I$*Jb}E-MCI@v3Q}piWC6ug`+kan;ZjA%IX)HOtR7$&Jfc}Z`ReIW3V3en&{ zQZT&DYjzQ||LS0Dt zr{t=jno;QoGiU{!Z3qeX2jDzeyr8mx3Ip!)TUMR$_Os;KFG|G;=K2Xr_*HaA9DO*W z6)IH4pP$MPhjUU~o8OW4=E8?aVu-Dov1sWq;-(#o-`ZzHOF1NXID4Y+-7x=v++eSp zl_}S`&WynxFD`k_Ce~jWYSc*VJ`qB7`M$O+UHvvOQOf%FvN?;T`jzsH9Ev=OHbMYq z{)M#(hn_zh!!BQZp^)B9KFiO7dNq%qJ4VQN^CM%sFz+M;oE|f55WI4asQu}0lXw=~ zD*`r<>G?xH8!pVnd-}RtR;Rm>z8Y z${5G3HIB-WcMfPR653PVxag#~WU7tZ2>Sg)=A&Bb;#&c#*r{^E?CW_Sgo!zlI3U$8 zw5_-qK*GNV?(VHXO1?n7HQz`$&s=@+AcL#rZxof55AYC$9cp#R+$A+>G~57Fy%ohF~hZr3I@9$lvCf*rH^!y^7QcJfZU zwOq{912OX>rcHMc?~>H-xdiOxH;& zBJt!3c&6s7pjSt*+#UTdB#432w19^ycLJ}ET8@7fARf|?d#1LI&yhw@wO|`~^1I5f z+|qY#n$B;VCVm~_4iyH8E^(KK4`}iX2#5+Jpv|OWc3zQ^1qj_R#J>z2!Q|R@-iev{ zLgmxEb1-GL(bp>AnpO+`oD6sZc?PJad{2#_>l-u49>t1UHa$W{)jGZLB!N*44*pHA zcvyXS{(e;gmPmR}NE6sW^@O0(OGJN&Wrn<#DGSc`pK3w`xb|*V6*F60!x_N7_C3ks zSv}~o${NtJPLC1AhMZY#bS2~)gcmzw2=vxz3`!o`@LPzAKv$H;inqS6pytF4gvz<5~lE{IF4k|G{ zt-%Yl$;aY1gVorFxe@g1oX8HFI)AoctBdkEiPx0tUAa#U3ajte=i2rS&D;U5=dD*= z=xczZ(EbbGR-8c9SJFe%hkq|!BCUHu>)c3CvoES<;3sZbMY>DWP@>y4+B}RGZ0v4* zs#DBvyTUvYnio&;8YtpC+RsX*hzzBtTWF45>a}EBH zre#qFaoXSF(p2aOM#@8!BOBXia1vZIuhyKvN$Ia7U?s^rw!(FL zIje=~qlKe}a!8d3cnF1gu{-i)09eDD^y)XEQO1J!{Gp}vjUMgX_1-GI)4oXBpy86v z0SO62MSPRoKls@tbrxU*e$VD|Aqt=g$v&>wJf>r+TxU$IVpPHVBke!|qv{m0thrvQ z(wW2_YAS#w1m7&-;}n~}1{#+p|CdHaS@)6jK3jX2)`1^#kYL<<$Iaywy2$q6pgwkz}$P9oDnR5+qkRSIk-VEHYzdRtgm`6gPPEk8t=0(Dwrra)1cQH^cFY zUy7QB;|Khs`~c6{)kxTnCz)I=yE^~vaKD*m_9wbTRxPj+YjcU6!NW^^K$)1WN8jD| zH10<6unk36FI__K7oYQOsasiQW^0*B>y%iJIUDHiRY2!kZkL%>&^-@tw`pCBTKZwZ zxb@lX)Qv3!Z>GFPiTW{R>{pwiXcrSdSj!ItuDCM2oJQVBP_P>orV|t!dPuY2T?sqL zy8$Y)84QFyh8ySjTTsOi`b-ZT`8@z*V7=@PQS}34%%JPQl;i;~zgF$<5!1xICsMqX zzapbJl?D|&${hg!879nvT?tBp>e;jq*Il;K4>uM1)twY^Bfj|Q-<8S=zDcljLR@~6 z0GY@65cd$@4`#T}OP_{M%(ezcpNsm5I87(kIS4IM`SZIw?VI1m}i_ds!hW*%JVG5AC}iKgyjJV z?_R-@Mn>b>*}qIT7=i)@aUPyeVwsZxC43cSrv5>j8@D|4Xi}S86jddUE(iR^u7286 zOAMihzngMuy^t>sNb`DsvuAiTh{+%j)^}R% z0IF)OR7U_7u6_fM2v203qA#fS&>gX^j0N9R*(3WNwMt}UY~pWu|1#jMF=RtIj$|BD zXTiMvkA6cYoziXC%J(m+F9Q5Wr~jM!Hc zr2IO>)yzKZ`Kb^{BFpA(gaeS0a@I{sx)thh5|<(GK{GI zVh-qh7)yA|A65PFwM@m6jMPsB#qzYqBF(Q@R3+hW_rhMjOG$#`8aSy=y>5GD_Dk5m z6Mya!s$=&r{KaWa*NVmyD!qx}mS1Wn`G8WcF;LH8Oh5fQY=h9&5Gr~S9}&OQZ#5(d zwN8+9CeSGDw=#Aombc7Fe(+c!qpI#D&A99}Q&p4}>n0ifj`jn<&mSB0WW*j1U}TxO zU?bOH$?S=3euAo)|7#yRxTWXwGvtW$384{HtnXCkz1|*_ObC41*sE#R&#q^rK@Z8K z9ehyJ4~9+VHVL@4Dp{3>iHzKnY#$H()$qE26JxhB&0;GxAdX8z)ZCn5#fUos|eJRnj9uMTY@A!4@9g=&fCQQ~Ux0J>okP-A-ODr+Ir@q+nZTIxu;AztL zJclzxuI0S6C}E)L`1U5y6G`!HD&B@}*4s2EmSgu1ez2Szv*jEVdralVE6$l=6SJpO zn|0I0);g@nWbUnl+C>f<@ontgcp1#s+zbHyc=>(7T;ma<-M@IfgB2Shz3(h}(aq`! z_|>yRLgDmKqu523{+QDO{ktS~Gxb-aWRKr4WROl-_SdeiswTS*{d+G;t2qA)?rX?3DV#;xhbx9joo1UGyN@}s*zPEMLK=H zz7I40V3|N?+mLG=a6YWJq^phati(Q!B^hq9sdn2AE+F?HpOMF1gqoDIMK;WwSYb|5 zuf`@59x0P_3_iM-KEevC=mtKjzjAr zbu$)=ad6k9fMCk7Yw%#$PE;A#E)zwp2?D2M zoJ}SvMf!3QoUA>S`pL!ifKbasMoH0Zi0P(o`r@;&iwqlH&Hlx+S1NZVh{ zN7-Ow(xdm03rl%wNeC>QMo$d4ao+!wJ_Z)kgwG?sd4n>Ei6!3QX@=a;gM;?Z_;C$F z`S(Ua$^E3^85fug3-)0kI@W0@LHEb+Qh=IxG?^{CAKITP7xxr}Wxr?5V92+6$8wo@ zv40$$gB}y$tO?bkH(*aClJb_1zZLKW>t)(>=z_i_`QIz?!Fscmj(zi+@VU4#FGyn8T?*7ToNwT=`WY3kU&tJsiISNb;4ysyC4j zAgPx<-uljcFvYlhiCzS$BRF!7+>CGp_GEaSv{QWuGOmcw-Ap$1Qq z`Q)x39+?)rY@X#84s9~dD*q-Ol-TbRoeX%laQ^t5nv*-`(F4!pH9eF;|6F`OY>^#W>T>s0B<%=!I@KSqkcX*(3v4!YTD$Q5TPz zu$0h;=zGHVvlA*k1}C~LzDsH57X7J6-J~)jwgWH+1Rm_ClqLESf!UJos{sI8$$1T@ z3?0WL8kjLJmdD49Gn$`2ZUx;GcGf$n2Lg7E9n=9^!xhm$HVFjJ=Gx?r$hdftGp3~w ztoS-k%_sI`ajegbXys;L=%rCUs<=v$NoGZ%V#=ZnhR{^dC`sGF?HmjAC*BYG1y!0? zSv?=LDJ`~sdHD8NF0_p}0*oPNYO00^R_Nmo_&xq#Fe?MgK(mT|$KX&%Ql{*IR_)Pn zSg3N8NMc^%FYd0a#c0lUw@35|sH?*9NM2)qlU-F-w9s(>MA>(^)EN1|%@J;OSkYEG zZ&xdpl20iwx^%y|8jz5>I|F5^&~^^J}3t^&vi5URwfUpzNvqUmWV|U6qz} z!uoqW)*E$={>ry#kBR=2sA@#&eS{ezU-AG%Pqm z8hZoR`Ah?I9wWeJ2#KYap%>C^$-J|^MmS^EZ(Z|~Y*A0uK6S86-#v$m#uS&e8GXdY z1A<)wS3r_CgME2zlT?-qvxPy-#MkAgKS6ex>-l-UU%yAW`z?%u5kGxCxO;O50LIM% zv(6dJ0Dm|JA|*=bBK2QlO-V_3K>hr(ls5zhAX3d((0^4`D^o?KUEu6RR`1E>1XWU(5FB^O)>ErG|FLU$}KhgOFL+y4U!9d)TuK#y`;_77ejynAk z{pgEDiVRd+_D$k-jaiT7w|u{C(^KKkm89jnw&p!DJ|~RPTkOiN*Mdd+K8;719!P49qHU6PzAAsG0iCB#(bQA z%T*h+bx4Vs9Bh#2hlN+Bc}iKsA>~Goqnwd*!d9KEAyHpdU>Ot-Ys1Tz9p0S1_=1Qo4zC7LbreWkvi~5X=8FQ@xoqlOSrvH9C6#sN57!coc*IQ`Ra%9 z`8RPc3d1O0ZJ03}4Drq3PvL8tr=F&f$eQKT>qn z@=10{#J3IqirB%m3ipBHr{?px@sDo}T=4OU-VqWTR)n>YdV5^Df?Urf?@u%;d&VkF z@Fgu6Gi0ewJ=E(3HX{PV%lQNlk93YJiY_{tli_bEa%-yMT|whlD;o+L57I8QU}n=tTzG5SSn8ZcJ9Sflc<$R7FJ7=D^n2gm9c{U7mqDxbsZAJT zAmo}%Ah#qw=o1zh&V>!X0kk3|Jpy~=wzrubVb>$I5zQi0$plh|^bp^MA~a^h{~AX4 zsvoR7J+?u>>J`6tq|gNDfWLP&D{YSA+I%q*hr2XP4>O=>WbC z(graNKmF}Lo*N(xSFMjf63GkVOdHCsZGjT3ZjCOWgF5enjgJ!gCC`$^vq0Twd_XEX2gE z>6a^6e&_3ek7iX@rNXD%uIcXAoW>?|8b| zK1^QX*KqV_yF=8s%CxCYT7NBdfv&Eiy<~oj$eyN2L=~OBbN_TuK3j>5^R z;zC<-J!AsP>Lkhl5k`AsC`hIcy}5rc@yaOOV6fRQdSfkS#vm5&*0pdw+?L}VK!v+d zHe8bhLH=AQ(0^0RD}!w_K;OLEe2Pl1zh&52xU5e+MrGs>wpwxU`@INO?4B?dSR2k#lLjD+M zy}~&#*BSa}5!_U&^wLqg{elJv50Gu$)xvX~e(2su*8@t+87;oxw6z&mz?Nov%T2_Z z19oz|$6jzGCn%tD>@6afP60AT&<(uHb`0cuiW7k4{0t+01}6G4YyA)%9!z3x%U`CR z{a}sbBfS-VA6voZGXc#bwfL>+?IkEs=61@Ug1l7@X#ds27C@VwS5Up+nc)&WA9m^4 zKi!m^?%pgyVGM4)Z8&tXsCvil;UA^vJU=hf z`EcQxIjiJ>sy(0fTKocCR(sxIFOMPigxx2H{bLs926YRTu^mz_PD9K&DHa$PNDr+L zl59k;Ok@2NO~{>F+$yu|4J3iY=%o55b-{%VpSRUw2vTWVRjbeQK*l=l#XQ49cumIW zhV|&WwNnX@3je^^gF#TpI8WDKk}YJB)LWFbYE|0qK|cYmzrbzx7~|tuKu-tVj(;$E zY;-p~&ss#bE^^Ksc?e;2Scw78#`dw+b>U=)Lq{sqXP3Hh$l*AISY4T-ez08`!Sl#c za52?9L9(WdR?mmF#nxGd*^-1R{B?T-?xW~~{g?1|0g$?xU^XuNd6U8Si4Pb;{PLYF z8NkT{McO0_42S>l3Vt<>1W;aiJc`%KXjU>7-9Yc$TIZ8|fB6ROFGVH(qd*hGx^chg zb|MS%Nk}X7#dT!A>$POUW#oJZ>+9AA1qtvS6)5y&$eiLeQKTv3vwTWNtN5I}t1Hy6 zh>5?pi#Jn)nvH~)GsvP7z7$MNpAcRMdn*p3W2xXCaB~l2{k$R>26vVS&%B;W=%1du z>|X2oy5R)BxlmOpgF*jVr@u}#T_scNlIWP9Xcp_ecgcgc*Rs;A zh-N=}a_^7>bEA$GyoJ~X!+AivIVY~aLmn1uI1v+^6ITJ(Gs+UsXT}TsMChZeN-1VI zY-dS1qGhs7g%Y7;sq`#yoi&{{7m^=Cj9EaFWNG`RGN|r@xo1n#)igOa`uwtA7amgn zt(;RbyYD6I$vh(NJ}kr*Q&Neo;;5{OTBRP^;IvS@X~E?$yCf*N{Cknd?~6(^CA)$4 zkFYs&EMlLRpFNQmVb3Tc^7Z`Jju8UAdlW<)Mt?wY5~QBwV{#-VRh#XQ`0dx9eXj8- znb)GHb3>3Pex580&Y5Z48C2Q$?Sc+|Q*0ezf4??m^E08WV%hGv z${bZyo#$?=0!R!fCSilnv~e)_)6Yjc5!ybQtQg+HK&u1(wY-w2hr^J0fwuV>8@jS8 zK5NFO@z#m$nQM2V*wt_C&1S;sz=TE$OPrTPJxgal2DD>2rCVm^?9P7gf` zt4g|zRH9jnQnSSJ%XD)Ew&T25f%fN{hhN;PKk z>jjVJBP4$-O-}I&kZPTVil}z@Ui5OeDID+?#W6kTP4b`gz1%k zx8R#PRf_DyR6?G1`v`~)H>qt2w{u#_>}andpK;HGG1#1P3o%CM{;00rx<-5xdEE?k zJEi?Kj8RaB_I8$^tUs!AV<(EB^;iTmV|VG}eCmtvKd!#9_KOeGx&YNw6`Tab|QAo-axeIxxg-iS_Nl+uKtvHUs{VoMGHv#NVfICBmW&?%YVZo}y@81#&+ zih5J1^ZeKT{xU-l`?D)*G1LL{U9)m2lVETNh-bEl>4?X_jc@`|ea6zA3X-CR)efGCdb6ZI zXUNz0tK}Vk-=O9HV1zSU?zTO_rQvzsJ$r40wi?|Gn8RaV4x1L0@fSWT*o}NJCGY0L zOkJCo=@~{Os}9kw{RvNOpOm9|{D`9lbQDJsw$41n!fB<&JWB(5RR}b-n&szkeMT=C z?bq2@xHM7OB|Y(oTzFWQ-UCSU@BHJt_R+g%pP%9>MYANk^OyXs1S=}i%N>Uv2>J{o zh~&-SL?Yj+WGbOE$32m0hxbno{;6mYs{H}Z3c7&;MI6~Z%CWbjVBl8AAUdC;ZBl!M z67OU53Owg}4N$6-DehD&CqR@3CF^4enO~Ru$HQ{P`?uW5GfGr3vRhGcu!%}X{(gxC z-=4+K{_yMT8R;mE$1-$eW((Z-taG5mwaq%l0vY?H>Ov^yjiGUo;efj<2PW$cKN1L>Fz*`0`?4~0&*-1? zdrpi|-o%I=eO|w#ZQL`L^=%83psFwPAkzJ>u1*y9>1CBnj(;~#4!D{(niC`KpqQ+J zHYi{7*!E}0`d&P8FaH-(%~7%KU6mXT9$B0YawGJLax+X!0%k{m>k#Gob^(P%9#9_S z(Uw+(U2&Kg)l^kS`|NbsWNhS}oRd!iF(k3?T{iY)dl}Kn++u`(BhI^Rg7*83AT|2z z%J=z+JS+Hh&)7qaXYs(x2{ zcifNRF${5wh^(Cya?L_D)tcA1?)=;u{)m2a^tlhXEY?_>QB?52jcfFeeugzT-v7Px zVDB})4zurv+Y`Kl(R#Uyk5hZov>@Z9_gIwVZwR$&*Y0>;cd@e4D*=ddzDyNlPjmsb zCvqr{DR=%*gor8ahOW6R6%X=}wCJ}Th?MX^AQcuHUsYwjEs|+L%Mj2Y36`perh3XG zl?osNOe{b7iyc%BVnKd^Z9i-LinV10Z5;Sz_p7f7veA4LOqq*GuMGF8)T8p?4Iw_Z z@5jQYqW|ikb!!`601igA*uJ$e35aG$Q@faXlOvvmI z!Nt3w;wK@}sV70LXEomB$-BM2aP%$C!|(?_8PgoUWxkuKCB7NShNE-HOpx}leHrDJ zwJUMwf5dsYTHQet0U}ygMnp`s84&4pc=+o7YXQO{!tnBl)ZYRQKaPyUb(20a{-J!t zq~CR4g|6kNhB_MkNtBZvvkH(ARFWcP`KFU0TnZ%b{jKVP*!fOji4YqDc=? zr`H>$KQ0D7MHX|fPdnt*>(VqHvb<2!ll~p?kMEiClPQ**&^bdZ8)?RSxRTz{!P9O) zMu%#kUfa!v1zG zesCq~%@;LgSN*fc*alPMZ;xelB0#)eM>ue3XcN$C`|)p9+U&$9QZb&eA*tH?uWX%l zD=g_A#PwB4^EUkO*fM(hRN=o_#E_JE^#886%HMTOo6{^wQBJQEF!8GWaW*V&x>ggb zen>5WB4+({ltw)AIqd7ype;@73zvy<^oaXAm8K}={Z0K4#t8^ce2dpft+^j4*`&{d z`TotY?i-gj{T%R7okU#mZROwAGVeDSz1j4Bt$^4=tt4yBeT%6=4jjm~>NTWQdbL5v z1vQ97BH6Gy53_a4-}*SG9nbXxkWb2yw2mI+Eno+AB2I%FBV2ZQm6o#kF7tLj5)`y7 z&BJ2Ho;XzRmd9Lpy;iZ%^Obc`xjVju@=x$n;~p7CM3kzg!;51;YR(xh&U~bL;;K9n zzew+C_z(cP9vlGATlvZ+kFajLCIn$-o7gMjbtL|Z1->PoyMYkH9L%l@Y$_G+JaH!{ z#8gyLQa{_h+Nth_xXfMD7611k)i(WU6zglSx}oCHP-Q#xX6$z|n3qg>9b`r<|DAAc zZ@q?nzuODP+{dW8a0Z`zbsrK&38coS^xuy5z#zwCzm7mHFDmp+ zk^)mS)@gzBd<^sq{P8YK77$;YV4JBs zSRR#D3II!4!rNdU_A%N;#n-Nzv0E|-wwck$ST~6Jq$PlAS&yN+3zU%Tfx0>gew})H zrFO`FqsV4G^G^)E;$)(_R#_phF01L31GpV!Ey*x)`D3i7U5aw~8vm2qk21}LA|~63 zoKq0qhKTEih&k##dm$x?tNc$*`}#JE?~Xp^ud*53SQJVyy(R~HtV`4u=B8{}zqooD zcow=CwlCBiF)gosKiL-_``V0W3+iv2+WhzS8^ZQ3uCr6ODP>Q<$n5{nbl&l7fA9OZ zX%V!P5}Q(LmJ+M>ETu$@P@`(qNX(*YmfEpvv}nx`Y9>ZeBe845-ibY`##>vXzkI%r z$M3K6f6goSea^Y=>w2C#cVP^RfOi_Azovix7K7N=$p*npOaa*&@x&^js53N|88Q5t z%u|c%XUw=q;K|9e_FGnPmvdrB1K7t*@^TNp7&^);ol^T-{HzzfjIfEhInnUvmX!F> z4T-fu`XJT?k2u0na(b;yEaI4(vAum}30u<$AmFq_|3_pAjWW+LBf zs(nB&Y(!UHdEZ`vDgTN!zx5uQWzH`2Z48BrFAGk6T~dY#N&tsRK?SV7UR+VJH3fj6zPUDNGpx*#H8 zMyIKws;@flgSlhp{S>LmM%{qJ8_{#7&J75--T+_mA^0Te$ogSaI$s=~wTMI*CWYL* zBbp+HNJ2yc@rlDCLQDA2Gd;|hVMwOj%RLofPj&?MU46v9IXS{E4LOY+l=x-;4geih z_%={K+3b)uq@EgDp8)lb8j~C}zuA?ud>Jz*mSQ>CrhPt*47vCbDj$}^8RWVqaOmB1 zW@W_|P_+Mc$0&&UZKYf*Y?HMv5^CL_;ayDQIrs+<@PmV#vY&v-AIT<_#7AlJxl<`qp zd@PMKrj1%v>HxIOTZLWYNAFTtssH7l~f!;bZkm z@^sk(xTV!xJe2RfcIm*^=UG~M9-&C{8U}cb=A*ns0uDj_QHJ!>c6<% zHyAC=idb0Fy9x8d{2_`-R>`&!=c*h#iE;cq5k{&}Qau z<-N>|aWN+nT{yAlYg9H0It;KnP=8t{5O>r}y+;`s^g)EIg*qXY{=}7C$K~UiMFZcM zPxPXL)yFO4422@hT|W67Y8pn7a{A@`#F7Vdqr-9ZHtEshV)K@7wWR~)KVAJ$QITsn z#f};M4V;{;Y$vfewyYWD$F3aFRr^)Im~FewN8U3z#K!+zu?-aZe<8)_(B3fzX29Ht zO3P(^x^m^Cnp*>B>3Tv(HB*;mH=CiBzDyfdh>TslX@}sx0o?Bg(F&n#bM8UyB=8If zwf-k2iCg;_5|aD3O#$3-a)$P`Aoic!XTz|NmbG%1@X$DcEdzLT4>+4Gq|N`E0DC=O z3skK+^?XwfEhJ)xEWwi8qY5Nj-e_7ui=e{XLFaz?9b%yC6PD;~FcwAvRDA}#=q_asRQA_=_dY>yC2)^B2^&Z8J9n2R1f0v;S1T>L~pmo zgoH(54v>2FL*RL)ybF}VrcPF6%@0l#3gD)Q|VLARkN_*yjqD#9G>Uz4&W$cE9#CSY&g0MP}= zwD@R&pN8z%Jky(!{gJO?sjBvfh9Jrk+&RN{?vdufl)f0=x)Rh78q|}w7(V$KJ#bph zr|{K;_A>qWQydUOLlFsa3#=f85js=G4rI~pg^GTN?p;ee&XU}6@)DnrJ|F%_%l(*Q zdD7M3x+d$Odm65)m%SmN3@(*=R{k!|_ss)^ee+Dn`vUoNXmVgA9onD(Db+j{S>FAm z&@<7e$;#4m`L~hK+ZQBj%_>>?<&1>H02t3;1B{<>2pc?Jkk=lzTT7F_x;Y?PcbRRI z=;2`?si%{om=cS*d_<@22<5m|wlmEethCw?7j@3^jyIx&KYce_H;S~AXUcCMl$3gF zI>0_}dBp${?{;_oKKG9HGQu`Fv13*HO>I2eK;?gNCZBT(M{SY_p}8v=*oPMF5K^>T zQ_xiQ;|lXu3Eneo<@6M@VQ1AdqV$?}b&X5K31N25f#q;ia?CxY0Tjd!?t;fr9u9D8 zSg1&@Mb$5U&9MnvMujM-!#)d;dO0mT!wkVShW)hk?6EEbh+AnCE&X45QMGJ0lfD?| zY{27wNu3lklGXW+;^9|J5Qm)WMQJehgusKbWbY zl+%;Wq2(L-@H0UT=BW;NiL|&yjuCt;<@4Z|Qxm*fNPfh>+)Lt~1<=-nKiDwy+5VN=ft~IOD!^IRlqe#mzR9bmKl+E#Iv% zZ6W8yniGstvGTaZqIrIl!F!}? z!|AIW>r9lp<0IRy?@$VIp_H|6uD7m-Jbm2BFJLX0F<4-i;ryc456R|uIL+lTIP1lu zd@A+Bfe0Y=SY&5$-bgcxMKC!|IOu(+pli;0BR4;=YX4@(rQ$T9y>rj6+(Nvz*$Le} zQHi-zaUhMyV7WWbB#jbyekq^)H3z#^HW_rG@ESs(bi#|CRN87oL<4p8MxkMf_)sJ_ zD2=cfEZ;xeCZA5$HG=IehIxYwy1 zU-N`VxUsSSu^0%hEbc`xpJoK`QGx2>ZBiaepVj@Trxgaopds;s?vKnVFl(o2?{#Ex zBCoR;K|5#P&p!nyJ+U}pe*!-T3hE^+R>=#UJGmk!CN@4z7)=C}+ut7MCu8ge(o)*y zhE^?Q9ooDJc?O6_32YT0NdzZ};eSI#jM;rVz3Z%WZVLyFZNmElsGGjY-jTiS-5wp& z>-nPai6@T2pruK0E-&MB&1NV3q(>ImVzWW#^KLt8L4}S1FH!fAzO0g&;!<@mgmyUx z+9EnYt(xwcw{Y)YtrcHX^WVTI8VF_h>c;A}LzNZv`=__I1UO~{26WIuLDTWO*nxoN zxz;_HHrxj`lPBF$D$+rYtQ`yxD~}-hIB!$jL1T25GQK>_y!a~sWGZv?ucPuA9cRmv?QLU?wtQo zcQBA5`LupB{THlOETC{#kF*&K35%fxfYW%Een}cbM#~G%zM}gS*I$y-9dr(P)J^g* z+K2@e^)TQlgqHz#P^5-mKr9q~l_?5rAskvf58GQWpwC_ycoEP8jPs5IuItV2s(%L0 zAZ@BdJerhzB_Qimn9O%s&sthhaia~x*8j$q@5+}aKQKeLuQ{G8(YQCzX=e$&h*#GS z?4qd^)*Srz53;oL@$kb(gzw>G6R(^i6=7DVKp;$QX$xre!8zh20diwm(em*1e_}aA z4#LX|mAD7XI=3p`KB0y;TzRZC$6Aiv!^(~nTkuQmx@Y5Ez_T2yr8x*EY?YDt*v1#! z&Tp3AC3?9vG+X;#C(Y!kwd*Y)T%-mCi>Qci;k`O(T57xdbntk)x1t}T(JKW;+(#sO zCA=;~Pzdw0XmDhUOJdYG!yv27ov~r@)+-Fn#&t7ac~A6Swbf4B_`xc~&%kVS3zV}{ z&|URba$S!-B;+&=3URs>0_CQU`b_`trO&P%D4Vc8>-ji499~XYCS{*J&qj9lly}KGwLP1jri!5xQB!g~MOpKuZZ~hXVp!X&J))v^tT^aw8z@ZtD z(4Q%b(pKD~*!%DiQV3>`Tl2SW9888|UU@cs+RKN-_me=}V#~snkcPdDC!_p36rNf(;fRrwc9qA3 z8RRXh{j5*_0+Kuo$yTj?6~S!fI;G?YkZwLfn{UR4{j)m17FwF3Bf z6vupqUVSs8v+y9?m%tu`%9srLRS%O_e}Ba$7&*}V_mr?BJd{@y`AanSN%_djhqURo zQ}hf1m8^projnleF8xH-$6Yx^#loO|bp9l{#^Hr~xF)Rj!x+o{)MqJa8A z011zP*&w17&;m>8XMfIj!EMoa4U!C04kosb|6jJUGb;wrW7jImKK@%YX~UBFIp*XZ zKR&oSZ$Wpc2OAtU<2KN+tNQUi@t}Sz~l9snh<;}WrCze+-l3)8BS)^{| ze%B=0rIBO3HZ>8GKn2>ds=tQ2^b&4IN)TX`8h`#HzJa^OCfTpAKI>o_M-%Q=4>Z}N z?^WY;mc#I(zHeCB-P=-hT8wBn_3Iy*2|0G6SVQ(;C>~eQQKy2}Atey-*3kQ_SgUGD ztMcf0n4DO_K+5fCuz3DtynNCtc28mBY9geA#;;U#H;T_8!lD=55TZ3XW%d-(gM7pB zQy0gmOv<=O;+x43RM;mO3P?xf6*~AA9Ecn61n#6a8uJj%!QLiK`?_l&w!Rwivj#=k;#tnwa`3=`xVj9xyR2A31O~y{>Y3iEF`D{$iCLB zw;JM&UY$@FW^0Ni4KGn)1=yIz&K!t~_cl8|FK|z|eASkD3Ik>K4t zAxn2;mdQ!P$$vdINRh)>FE>M4&1=1TKe$)nQWG^@Z_ANmQ%)|6geQz}Rlt*kV)UpL zIOmZNoD1bQdu}?JJMlX2gGf&P&0ezJ4E$jKfQ~N0SvRCnoVlc&WXjuppXT?JPC71O z(M%zLTWc{jT0sZi1!rd^cA<8gl`j8YIRwP>-W}Zn6Lq6WCO_U|khsjMde=PeJ?3%V6Oc4g&e65$UcVMm_-RlR*%2(pD!tV0th zuWg)kRNdeV@S7Jl)NmJSA&7Wmp60Oaqm@fj{d21a9R@!Qp<6bw4L@Nj(f~^t^4C#9 z5a7_sC8NSk7D9b>u{X`W3tc*&H5I*%cVcS_zLx4$&7^xO2&_@SOgs&@Q@J6M@rz@9 z>s#~dizZ|I%9n@|I=2^nCAIJ;4R{}2#H7&qu#kdY`bjqN#i0IEhuWn?zrn{N&mwNT zN$j9Yv#NrJ---8Gxf4>*hvs?bSun+Nm+D1Xm5g$4&kyoXxMZqnd$35hF^`m`q}+e_ zJ<;=RXP^>9t3xDiiFNV5?jOOIjht5|>3b|h8j{)g6EpE0N%#!|=%AjbCSH9JEAAOM z^R^^P7N^1=c`cg}ap;@1&!5gWh^+_9PzNWM#TKrk<9Y@%1D6o9&24iAkSf-N-{B-H z;GYK~hh5{lOQWV=Oo{4g4{r#Ol3g7VF;&7C?l2t_);CT24oa>u9-B;tF8+L!{WZmh}8L z>Lr!BptCok-QBhy8_NIf1DGmsj_;Nl=iFrTqk_PxCM>%@h741vzcf)k2Z%r`AHIi~ z$G#n);yAp+Q2RIit$SzV>(S6a9W#er=~eO4i8l}B&RalrB9Lm!SO-$azdvVcB=`HxtV)(x^Lou;S;RoM@2W zmiTW4Kr`7~`)l50e-ZPyMkOqJ`PY5M$5ZInm5RUnQ?;C`Oz;Q4O-)&gJ(^a{2@2!4 zOyeRsDLPBsaU!(3=SndbhdOw1_GR^! z`eAA1U4o{&zv5t}m}_b-H;HE?s+@z(A%%_x)=7qfK_X5j3s%pm+XhV2=Z1ySR$ax~ zOJ3ruENagk+deflyb0wc$2NK4}1CIa0nmeb^4r|jeO zyfVA$@w`lXOMj^nfO63;lZ-|ljgopZ=IztKE$78Z3c{o9AX8TM6s$u8SrTPhTc1&$ zXQwt&xt~vpyt~mL550c|N_AxVcyO<#R4bEmUB<#?TMkrMNe`xoCeDXyAkm z=d;wttoF9`@pt_Od)PM@y5Ryr|81}lnO*ya&w4sqnJLZHmovGnR&SM zDjjGHDa>6BQrHw)`!!uqaV$_r;F7k%Cjf^n_Y_-w79auc;sMT`9!RAR7Qe?!v_X=c z>81q_zx{H{GEG@xGUBNf7|z-n=?S@*`KuwbsGDObCnqKh_biZCG#_M^`ZJ_I0_4);vcPZr> z7lVGE6tI}~XalZ;< z#0@M|gcaFa5FdWX*ica3J zLy6LD>VIg+htIchzDOX>Pb0T>CkY{U2n_vZRDp|F81XozZIt%IxbyDLW$gsp`lI(O zM2gS-YtW{{-iuk?IK^Yf6gf~Nd}5Q?UJH~!(+u)wbIJCF7U*EUE1Ul>QZIw($`r^^QGhfo>JNYjZ+2c!U#KpL?2iU$PlQ^qKtgwYI zuaoI7^hfD#e?{um3CyUE?+ygktUIt}DJ1cm3AIqR^!z81{=wwF#`vN4-gJOhsnCo} zvy$v0PF^|wh^2a4$t;CLWlqJ$R0G~^4F0PRYBo;hvSyVG{3ESw-Bp+=F$B(jj!l0s z=UJznmelh5U#CaFN~@2N>|EGDnphJzB|*k9;x6yU&@s>fGsps_*Q~NV0iO0lNQ7D` z@p^{hIDNlB_2vq_>I=l*(6wKqHmMzC4cFuA4CvCHYpG%_fkkhywe&)Pw)bhX zxJMx8C~Ylz0hKxhmAlhEX~wd=zo3Ci$=FF5C$&oNvZH_MboVhA1HtMd?~DEpJ`Rdz3{n2Onp)Z{_f9$*ZXd8La#CF4^AQ0`W=%e&@5n zsfZ5EoX#oGHGYr)97lZCBB+-F{)npgRfcEakM(c(Ar>-~VY)}hQ!9UbryE8e2EFcZ z|5=3w?jHhik27VuKJSWpee<`zy4bXcPE+oXKdu=qn&Vd&o+*P(*S0!R$2GrWyU~&i zhKbV>-RfBj?;KZcGOj>loy%gi7HxCZ#ORg z)|NHQd=xs)==kGn>t9#KZXr{Cgj#VPVOcT~u2IL?cefFGN{->F^>D3Dcob*)3oYHw zGBrs6OsrgTdc<8)X1u^IDORkf^~Z`mM!CN9EJ%1*Gq>A&FbJaeEMtS7UzMu7k#C+% zjD#8u9;o+ovmrbWX?651W90fi}}kWjqJ4SpUgh4Sf1?#FbZ_bk(DuQR*f>&sKQ6S z81l0@C}xM}vch4*D?ocRk>M~~)i+EUrp8grQ|FllMY6@DLfgG*S1_%_Ut%tl^dBhi zxjt8(e{qZF>qoUon3r)-HaDgrM>=R)(vlA@uFqN=j(;$W9QdnEE)>AXhw}dTLIL{r zM zD92in6HIV_s%~(1h(674@>j6jAaBES%l1Dxqi~h@&GtVYbpy`P+Ni){!Eld)!iqpd z0snpWzbmbd3gxuVp`jH}+rFmv(6jg1g50hyiz@!%R!_ss{3?g2{yQfwqJXJJcD0nb zx7rJeqV9e6cE~qKIqLNQJ$t3>WuIKV6e$q-b=EN@1I!1{+0{hhDIRa{^oz z{&Qg3GP;H7Zc-}v6e{*sXOt3tawq*HFkDkmd$f@T=>>3=`#C5dW zSG+nai7%K>Ye=D0er9L$uPVvPV1A8W*;lnGbCGef2Sac_Ys}|q_$af^Xf<^s2HFvQ zi3s4nOwpDMCOH&dvGbQI(Jmo8_(}owoY;V`vi5d1cY*|fkS-CIUw?mHwVf63{|w{P z+h+W%+goLrH#%qOD1OTyYCYn*^Xd`3Yr`J~PyRu!IPjXq@)$a=)a=TqpjPc=>W*8Z z+Z6YmAOkOU=p*+69||3!cP+NbKSuwvDI+*kftabYZP{4hj_{->dMk7LK9H<9!kCa5@LKum(zg5&^hMcfRL10o2ux~6 z1ykj5t5)pr|=W}ptcn~S(KaH;T~4w&wKtT z?T7-pNByp)^@^Ff2L2;9f=ZNygKs9CdlfW-Ri{JnD9k z=Zk8O)(oqx$F;9x)(lt#FcV7LqQNgZH~2jSr$4r^ino*-cnB{2=TA=x@myBkYl>-z zSWq%~-yC}O4nS*?i(876Bwy%j9*4zoAi28^d|9}$j&QwBKQI&!SQT=*%xuSg|8|UB zrn7v|?NRERKME!C>FK^xi$G{#HWMjObt5>~MfM(CB)-7Y{;*z6V5<%|j%H)9ueoKC`%;pQ3!MlT32_tq$xh3@qdtSr|>R<`|LpUXP zeebsL%-68zZDl^npPCF&ySfyDX+2a-!Rl3^zY2yTE%M7Zl6W=N4M5@q*~iSKKgxs< zu*x-{ha*`$zU-wo{B990*pbph~Bew>q1*{JE44w6?n)s3c^2i==3u|GjAh2Z@51 z2AXJ)7Do>9zzg0Z_S8G$I+l0|?kwB)Ne!llmOp#u-h*rjrSEF^b}Wn7o@x^XG9Z8c zQhn%hvwee%HqI=bBRO0o_{x!(S-rNBH|Whb-mC9k0gS{6F<5TjAQ?yQFbBT#;WDb& z)xX(GMei7o$+);lBS^;xi_okTY;o9vY-(b;RlDK+9^#ASw@0e@VU?H6Y?rz4?SWu& zQ*S|2@7s7c+nP{Xq#+i>rx&HCA&wu$ix5z6?k1h&x6#lVvWHIe*{}gjTWo+pUW%d&z8eqD;tldE7~J^cB)$VvG3vp^#;a$v*LkW=&F)> zaA1ulzRG->+_f}fuNsRkNp=~Z#|(h(bqk^ zi*rmX5QbY~D}^!NpQj5_v%~Ci92Cb`iZ6IARi4|uIdph4DKHwOzTE|S6==nRh~8ch z9qMkr8B*i@1sKe|s}vpj)@uiyyfWPP1ohfglrY<4$h&K143g)Zm*s2DY3Mnh zl(9Z_{GVf?F2fx~p23G-WrGy~sB~%e(c#H`gY2E}){0fH%zOP+J~`g*b+%7-&+@hy z*)M~V72MK8?u}&@q!OttjaB?Ke}j_!9#f6jPU3kMs^~y7V47cV|i1%o=d66dI%E@RGlLNfw za|o)~1b&2rwGTV(_+};>#I}^~>XK;Q37Uu3whGL_93+cF?LGJtvQ2z)z^88^v=_Z= z{m4tA|3NkGZdS#{4NO4{G+_34?xD+VLz?e5C*Qiq&(o2Pn}?x#rss#51uifT&(Xf* z#Za)lR~zO2?q^Wo5FW6xcEsXLW?(eL-4=^nw-u&od7)i?m`Jo&wZngf+gB|fe2-J# zMN^1xP$S1K8_rrOdHN*wVGg&YuBTS9rWPjl84R*xYg2zB~j%@xl2I{pWcDr_Q)N!^Ed(2mERA> zt*TBT>^s_pKAqasG^{*(uDPt5QBz7j2Vn~fk|;MQ&{z0S8E9B*CA?nBd^e{){&UK7 zCJdTz#&|yt#|=(`Hj@x!9O_OzdJgqBqw!U4-U+6G#9#xHh1j+%&glUeQo9Xv7f{G0 z)&9w+8@>_e+Qc84uG(@pva-#e8gI^L2+cetzIaTh5+Y3fi=x~h24_}pi*d1NE~i_) zI=R*e;h@76r-%Apz~1LoH;({nVnM3b!fcqn!uFoX_luf=L}0q75VWim`tpQmT6-{s zmRAaakG(?#dohXUOO!`Iea@mD)zNV4(&~H1Qh78~2Hn#WXz3pCh)BF5Bm=bVIDVMK_-*Lvjr1(cOGqSec~rd9Ab@ zE~Mjxo;&$uaXL$XRh7II=Q`T4RS=6sQyyZA9Rv1eZfPK#HN4LuijrGriiT-iHK`IQ zT71=>qK|R`aazM<;UC8MX@gT{{kf4Z&w%!o5BOhU-7#X9v0_gk8JofK zt=p`iRM=FB>t|KaW$*WUvGSQL<ge~77rmg(PL4;-8X;MM~0qtk(-gS7Nc*@ej zKa=#!NU3b$O@r23H7T6xx?9r%(Jx&nP_rblLp_0u2t7zMPhVVk z3R6zwE7#JuXVS4aGS!~CL%wJ{?vKn8YT%6tUX_?z3~F#FV{9G#~?h^Q)d;j{vq z^o*a-+kII)gqNj+VpjTE2L3E3w8Ku4z9gOt&RAa64O|WEtg>?Y%nI5IA~Jw19orM` z!!%)1N^~6FCLh<+qwkN9mqZw)5tui&K^S=6*BL^#2bxnHo~Lk;fVvLz&_S&QZtEeh z{%o;8-c7FWDVqDZ}hc3C|+YQJx(BRCS{m z&j+}>8M!E!So=&RPxXJLvS?v9hF^j|nsq3+`ckcy(@qi=k)rUv9eK3Xm0Ol*iYwA} zyCdQ(k+>U8{H`A`*Q~N2sc%yL8x0{0K`DKJ9j3rOrFxh0- z`ac+Yv$D61MqfK3MxNen<4!2)^@vjyg>Bo~y-qU+wlEub^IyO;Gr!G6Qe&hoRsV(k zYhEzpInh19f%SN4pG1Ri&Eyi`9z-}~8bZ5ocE$k#XEFUNECOOVwz~Fj&>;QhlS9ew zn~08nUc7B$A%YzszV>+ca#ue^k0b z6#CmbNTvRIS~xM-#n1zK(_PS#;S2l*J-ju)SYmLgl~v8+OT6Wpsc3^3J^Bbj|NLDm z9}+eUul+KB5NbJ10M1#;=y~7cg1;)G0H+9H_@X2QX9nu+_R_Qyp!3ntw`$zDrL&iD z*J14fBCo$F*k_>Z(xLO=)b8j0rFIPLH(2C7;Z$S{@B%eWcUYF#A;r#k4=Ppf&ukz=GL%5r$+w!T$fI$~fRQd&O*#F-?n$lMGk~dyIx4;pprm1P!*0nBJg`^!HtWWNPPu!A zj0VQ6nzuB!>XH*>P%jdkV=`=LJf1M#HXk6{Bsw+ml;7U?U9*~p-wehl3`J6dI`6q! z*Ed*nfSE`B?0B%$6Q$X63z5Isb{qq93&EcIcRxvN2co0e%dAqQ-ZrumwQcw9NVSJl zN15PPe|&XNeor!+E}@696?+$MMJl!JTO{WbohD`$wFDgK_0YWi(CCW`&a=c>|kSF=fr zh4EQU=#P-WhI#UC1HaieB}fQxi(=Ab-rgOa_C=RsYmd|6eTo_ygI&qji+^joB7QXIZWw&m(ixS6A-ysCO(Zk7S3 znWC9mWQlqyxLAmfE#o`d&qJ-EI=$N2`0qYTr5;5Iv)M6)Do04pJH!WuewGYOe;;)4 z#kJFBfS>ScXdEtejO=l3E_>s|JtSFbQ(NsNww%<6x6jr>wgXTaSg5` z=p{waH*I<6ufd0iyp*(RTeGh5iUd|n-Xr8}>>!s97re$>(bnWXT*cO8NZZoM zhv5y=nen)%0Z*ZnehkM{@<0yx(Py0Ih<; zT5J#xXb0dN`Yk-&P)q&8_>Xawn8z@dntPbK?53oxs+$`xlQC7JVMw2=^x+B9ahgY9M|ZUWw>~1p~eq?{9|f++#xXY>AH~( z!xaTZnm-$22^>;gWBZ3rDMeRReK3p0nik&q}!v-5xfB8WMyYY zT{j#kE7E=MNxODl91y~shvQTZtzMOOe%)mE z1(;rHcFygE;9@>iw)qs{#61JXq*G zgcy>xH&#vxhxy-%6@xc$3FQQSE>PrPI4Lmu&;{uf3^(>E%>HIJHoJ)?kqC9ym&j_4 z8A&2gD0d18qN#sTmA2^Ivc&JCc<`F82~dPntrrLy4g%g_@IwC7hSN5yK((@gr32(` zY=@Mgbf)YQ<8y&DH#R872GF|%VufDuMSUmYcC{~noAvIH$;tN)Y3HV%)UWk5^_~Ik z^VpYQhQyOVuo+SDv7~*P?a#nrXC>`J89D#)cfbpambDH_dCmwQ@l6%Ikrz(Xy<9)6 z*c1Vp5lah=1vc9r4xcDv$tDX!uUE+hH>h@iTZ{)MZZX^csr1Q%#)K+kHDv z^Id&T$(L7+32E~J%vI@>>ExQULXxXDH1XH}o;SVrS@H>5AD+9CRsy@TB0lrbxSoF4 zsv9@y(S4RdsO5Los#&{ zYzAE)u!vt@9=%Wv%COe-7M&0~_V2pra?0TfoW1p_dE=#xwM{_gLf|%AS`6PP1%^xc z*N=)O+N8)yK>koF(+^AYV_cz{+7z)W)*}qW!baPYaHnWeBfc-M5g*NNYZp=qA9A*J zumiSbTJBZ$Bul1SLT2P;;EYMi$BjL^3HLxRiHgfb-x)t-7Dq%f>8$MYDIP|{7Wa=Y z7QQ*TfQ!+^Hr}su^*GhM^%rb-N3-JfP$RXpCnq_BTkgun^2K9}{V8H3I{d@;4 zsfWK)M?J0iZ%bJk{%P~)VIixXVw+g!+rz4hoMhj>(dIrG@x_8zOP6N%wxt8;btVUh zhEZWcEfUdV0}{(_0KZ(Y%TFVO@+b)~g?y&B5}<*j$H4r8EpI6eQM$T^+Vf(oA9@8q zhN=Zg@8I7@$a8ya%QFU1j}&I~aV|nAns}JZ*@#LWA5mu64g{M^>h%7CVt)%~V99>2GGO_UU7ORsuFzI3U1^R3^ zQZdFuEy>m`19%KeKp05{SMDiW3W;kjt z`rk#BnX5@wg{1C3aCv36VCSJrH5scoN=>HV9qxxb@Q$dd3d7EeeUD9;f(#-JjR!1m z)L)b3d@IjD+*Wg^J$-(X1HSNh>WTbP6Ao?v%VMkky&C%BYXKQL`a&zbwiLB{>sIFz z6M0H0@R3GzOJI(a!YFy{yDwbQ@WyfZH|4RCZh+|N|33>5UyDMCtIJpkmFr=&jYiOm zl7hEax+|;FAy+aNW8x~xl-3yhJ&^RbIknY?Jr6CxNZ>Bv=prP8X^5LYsEpZ@lJN3& z3|t?V{Db%Wi4btD#mQnc5wxhyiY-`th^$7RrMc|ERos0S8N^~^(+PvE21-s$#jEK5 z1Tt;?{NQg%a%?ibRqD}(dNrP6vE=QAqX7HQ6 zJH>eRB~^hj^TnCe(=9GajH3f$uf_7>ggOaY7;dSSehKr(_d#y+g#G~GE!Gsz?3J(e zlAzvgZ*O4vh4pm0Ud6U)v}WD~86r!XmHda(`dpbLyiML=cqqQa=~I0ZdkH~?t+a2l zwGkyH57e`|$g>;dpuH_OLv>yhm|HL1j3E=29k{{P>^6XGe>3lqX)bP`bh7;G;4BR` zOWtp}M-@U$ncRCC0mqX5nC1HjTOOC@NRvRt>R1E;TagB2$8~%hQ-`dd?`*Qb^_#rv zSVm2dQ4Es8LLkd4M#nJ?&6@NmGF)79^W9<8=L&v#)aNmH}C)8sn#F1)~~7Q{*gxX7Yd^cgsIh zctpoVzTm%K+B;OpF<4k+b;vx2i}uHjYXE68fiJn^(>_0QcvACSur){q-re;sCwTiV z<~qz(7nMWWlBTV<0>pUBHj>S{X?rytP-P|_P%3zymPSxp^-Jj&b0X%ZQ!a3RAVIqL z1QmL##lR`PyZ&yBaNDNkqDDOJPh;j+UJ(T&N_@O}nTxjh2*1*Le$Cs%4pTI>`iMu>US z+`Vy0q>LO4h*(F5Y{<5?e3z6+_WcQI7InFpVFgbI(DeXi2@< z6rhHkfE@=+S;QEX{5?c#a)1^?N#Sy4f53tUanWv7^e5llP;Shm7;@dwm)u1xWfM%bR~}k_!4@ zBchuh<&#Y(2fg<(#6Q3{6vb?zR`8gNWK4g6tnWS8Jxy5M0t}Lo%3~D`N@I z81NsuR*ss70#x5esGQanai)^wp z?nTy3BrEm1-{0@?`x8FnocB5J^E$8RzcH^ZrioS2-^x+2J`AU4#tEMv?!6%@Beo0# z#-`5Lt@@H)ShZp$<xkQtYp>b;qpac>N>UHZGGVIls}F8Rb1B-pDi3 zdE0BZG&XH6jc-ka2$;DAT<=c&8^gq*6NLRnjjYtB!5iy}bbb*r5dwdEY9MTOl$fOV z$zPTuxuSaA;K>T~J=o~VgotJtc`x#EM(r0axQxH~<*1~Fs5W<;6SGAczimiA> z+5!OqnPYa*uvn315+*=@csHMf+}6^5;3u`6_MO=8em8#)%#TUQzAM@9B*hAqtBK-> z#F?hu{(6LeS0kgsHg}!(m)|=Q8#i38vgUs}M(#<>M zL|?OL`N56D8^`mJ9&0A(2uGEPSltq-3T(%c`rget$=kB|!XYBtnTSpX+HB$)jUKxv8;llzd2hBRT^(pGvswhdn6%-0d7rqM9= z;dON5b_;4E)Z&WE#$|N zS6kFi!-_770x1F^zA5?bMcFp9wq@e6_W;$q9Zb7l-Eq9Psnvs0wJ~?*X+Z;1gWgTx_%Tnm8g7kHc9^z}bR2bZ)==!ntjB#-vK$ zzbDE)aP*Jt!v2OkkAHSDd%yoYbGdsi4KxcO9@M?SJTvF_j{$rsTY*Qh?`zXkG=J8S z^r;oW{bc{$5I@V<7rKL1_%&UI3rEEwkVYAHH-L9q2Q}q%y`)J@Hp+?E%Grr%I!6Zs zHt7S>5P8|DX`d%h*Ez<(wwD#O;Ohfl;boMKy8F*U3!sTng>H?_JwxgM#D25dB#;N} z*7{s^Ln(Gc5N!X9NCg!Yu$Th2@NP{^VU|Mj)iT)M1I8xEP3r#=d}jRaf|lO~z(%h; zpF~yjmq~5}8~1_767}-A1%j^#Fpcov%g?DpCfY}Bwo2dT(k3rm|5^&K-|`$HKx>6n zN{{qr|Giv&6HbCo;MVvr%N0ukk8>|Bm(q&J-t5!~&R;fH$zr1P13%j|5zhwD{jN0f zjP;#IsF$q=Uq((Fx~iGrhdX&n{9Tv(t)U%UcnpkJKAeXJ^D@8c7EcOL|3-JSe94Zc zN_t;J)?8K_V`^_0$UJVG75+fBdq(+p#L3S{mgK0nheXsc0V~LzdfS) zo`W+X1kzY(PUYpZ<;w7Z2-7Pa6IQq|FiJbL3KOU6;81AT4{69i(psQe zHS-3xu-ThEQr7&(7OY~6+**T@Xv^RUTKeUBGBhI0p<59p=YdWrEukiEqS5s?4UNj7 zbGj!`Lp#LEM?9D$9GWC93+tcbHZo|QTVV~}s*c+#6CR2rmp&V>r$%~;kv>C1FU2YD zlQT=j1)aS9L0Fcxr3)ZhyRAAsb^7tAA=)EU&Hj@Q?+(!e(H>a746wpW@%2E*3BUx- z@Bg%)VC!6RYbX7Nt>v85OJ1}4l2oYV9!zB5zrI~N`y_)Bhy=E|TGXPu9<6*i^^X17 zlTn8em~i`MtPeY{{J37QuBs1aIS;s>&Za=it|HXmb>aASF`BXDKHw&FRL=l*3Z?IU zOYZoEV5xK%06MF@EB~|(QzE|A`a)k!pE_B)c%qTJq){^}cg&eBfe%F`+0+QMZF{I>K}Fp|{=Pn@rB+P;N{ zYC9fI6i2UE+f2_%5&HI5;=rr&xn62iMiBbz8+_0oI!!k}zdJE}nHdy$Yq0D3_*na= zM&k&mMDqu!aK58ftyA!dWZ-uW?r0PQdC_FIDVYokv(1owRiVZ%Jp5cfK^;;za=mH4 zR{Idlh65&GuBU2k^|EBMo0Q0k?DdleHzF>|)QL>$Z7(dwlz(x^WB)vseaawAAU{am z<8vz{xm`B3vF?Y70)^_POI7TA99-O+Te3ZK)vehd$QP%x|9NqGdhy(v$8&(uoOV}m zGnoGjxgSM@C>-PZ^}5fcFiO3oEt)rB874$S5fM9rg5HTFDE3qPsor}jHAGy2YT>;d zmg*&HT69UU3SR9`NrF{HWlH&V?<}d4J_!zeqK)-i8tqIUD#}G3RLg%~Ob)Y?8g=Qt z7c8Sxr4QeK@oqPb5}8@H6U3mH$_f@SgrF>2lR-G{A6onDrG?dW4oDyF ztJKLO+ag3!K4;71;5c#EGtt8DHIK6a`hQLSi~HZKRQ0WO=?#HJT<}Q<)0&I@!)c}I z(t5+WkX)ChNqC+C1J@_vjVGoGBpGLc@sbBAWRuceO_Mz!jFk6YHa5t3)0+s^F>%h8x1KT+N+U3#gOM8+f6stDNfHL_4Yerj0++e;!imw8QOE*DNh;5z%QRt}c+N0elF0qZC&p>iP=Q9-5g;2g=-Yst1D*dX< zw^J=)jPsIytZgPtEkTqc5{$U71Pg!++fPFCZ>~V~xAirE`EUD^Z>}tG5z{x#)r(GU z|2b&kyyYBU3srOE>3?wai(Z3D$w=~>WX#_>#6#neZk`&&VTEn7bK8g{7~58#LLK_K zEU)}LM{K-*0+&W-a>kuD+_)RWPJHC`d~?>(>ef5#MnG*}uBm90Ucl?!J$}F@n$a}&6;VDhQ(u)d1 zi&5oRciEU4@T~e#$jWG8)nK=ued;J*&T}qFj^Xj8#J>Kbpg8>IA-=m1hxmijR|90-N(*^lV-YseS z?!n|D4`S*80(9YU$l3f~T*K**XPepto9*3lADO0i97>XGv~q*b3BzvOx8rS}W|Q9* z-y-9xzQ0x@2N@OmKI?rgdFrFp8QRF=vnI( zCv`$G125@%CmRFX{@r4TD~)u1EO#o^U{!@tc24!xNt^jVV@EmSStB>ydsVCw?_N~Q z7Ut_;OvH4K8HeVyC^cyWvEdXa9C4$O(qy8VrmO<~X6@(@js)XJX>>Oqi+#&9m5Nrq zbX3{{_(zMM5mC26JlZQq7I$6!k9#x#PFh=uyRsVCr+2S=s2Fp?DWvtPfs&-ymvKNOk{8u|*|lVk48ous7`D;u+1dXP7YpG{(b; z>zTXwcuXx~pN4fz(8+L$?+ zX0EW^H`fk|1fV!0ei;ug>-NSt=VsM+9Bg{0i`B12x^{`? zEqBV=brxJv2Nv(^MDM>XQa{kiB+2C51xG?}8DS;u>0J!q%NG1ccOTWh#qi{!X%fvG`Znz3Nx6qgshw(9*aH^@ngAVTXlwDr`?DS@faBgY z%dIPd|3m~-g*=s8Br6D%a^GUmeYIcEf6g?qfjU)CrB;ks+1bEkQ8< zz=g3E*W^qNmn172MvAZQ+{m_z2ki8N2;?P@ZkT=^GT0A!A;nQQvRRmTPjUruBFTfm z>=OQc-~2iRf0epyLiLmyVf9c@l~u(2r8`N#nC^VKFc=eod_qduFkDuf7yTNgwZ zykq7?-7Nr(23+XY(N!Gmk|KFz(@H^~Z>aih?|FeQ22h_R{GazY9INZ23E6ByOA2_I zPKX#5oa11J{~g=yYidNuJZ?!ixL$Vw%hM0yp>2lr11$n#0Eqo5WqeMFWV>7(uG(wP zaQd$!yjdl|Np_xz3%aqb1J}T#-%>-7tq`27S2(50Rz6lypz}+oqa18{MRyyC&e~Fo z*MC&h7NnfP0^W)5s2{ZC(Thtix`E)%7-DYGcv2)N=D^b-BsL6-4ou8L(`J^tC|ckm zu|0a~$X8+r5;yAO&5-x(?B1~aQPZ6 zw?4E-lrzvtAdEap<1H2H9g~|yDFF398QsW36K99=siR&099vmq6Gz;@$U;+S;0@8p z?G*y@0(0$8FPo@Xv-((n9s9x?h ziz{K9eopXf5&$#Uz4XA{c8&SBW?ot^SguOhWsH<=nBLt)snDCv?Q^0doFy{3e~r;y zce)#90K(4nWLKS#bE$_-^4BK9CrWjqaJlWt0>0C=ty=+$=`eOCofacd$0mZ^v z#T#dZm7VzVNQ&Z{{sFxDcMeKoGsT6(P;;kjVz~9d4$)P*X?&&y;ekTLnsYRKW4|A3 zwrFsZLz7xYe$SD9w&YFx^(=U7bl_=%hSCJXdR!_f896Ec&qBr)W{5Ybgb?nt6NC&- z!NWWkg)ix5GIn2>r-HJ8?`#3YySvW#5bc#U2_Ubk}mpye) z>~kGJ?-eEyk!5H-=rGOmrkR~pXSo*uN<1KGJj1QObOs>t1XZ7WkDei}qc%dYBu=(U zFO_=A?VpGq_ZXa6-+G}(;}$v$pR4?PUL@DMtoxU^r1++6TmAOk5laN9l6WU5B5^N- z%uX{P?1*mo13_`iR0gtoLC4iev`r3TcU}2IYD~w0X1=mrY#VU^>N$8CccS=^Ci3PM zPydCjHtc)gE>Uw4&d3%=Z>bIu+(+pGspNE}tEBY~$~^klUBhMl+=5&9hRTFhd#fLQ zlTIEu6(-%$;=}Fn7;{`hK&bUKZ~n zcL!OVP3C*ACTmcF@kqx0R?>IR?u^L;Mbv_~o)oA2h&E=}!|P5`si8Ka-bX$+L{^6Z zBD+G%wv`#kzIPDAKpR!j*cDLQ`~}F3Emu0V*+C8UOQMK&kTKahC_xY4F3C(uQSXX{ zm%}>rT3Y;*D*7WJkpMp`K841>dJ^)3?K^~L;|Zt{rqk&8Ee5{_j`!E(xnI>FHxoc( zx4IeA?Yt6|(MrcniimxvjO$F@Dj&h1zlX}F7VTgjEK!cYI=SG1E}USy&u^teZ=V|; zRuu^gy7k0$2u^F<(j)w2n&vY;Z$grCc6fpQqXF3j5wbJct>{Sh7%(&akTVj@4Uu@} zks$U#N<7gcZ^sWWn!ZB!=yrOgV}1>@Azt3g5KoeZR1$7~xLmuS<5-;b5Y%2_t8CNf| zhSlP{m-@(x>A4~HmETWpv)ZXjB<~lLm^yZ5W_4{mN|3Px0?=`}C@m>uBKBxTRZaFq zu)Hz8W&a5Eey#WMUt`v?m0R=0j(6xLxedBFAC1#|frQ=k>3Zs$KANm>GavKHx_=n$|1%CV+M`FrcD zZv1=>G5U(SU5^OpZd__W5&?s?wXOtD){yObsmvDs?&xa}mSzz~OH!m{o3J)$>Pc{*#QRfObdwlH^^agl1!{d|l6IMOLLfvvlER&;_IJsGP1}B3(EHMp`|`IlEauVgLv|dO~d<) z8(Q^yc9S2OJt2;^HLVamoM7s*qJZ6Ts*_58QoEi`aD+Vth@H33yOoPkHaviM(Cn-s zagn#cElD09rx>rL?lTubY=LLf|0-~^ah46%WbEuICh6X+XTp!tF+^Fsi7{%06VXQu zv_Z^883$%5$8u?YI7#RIDmP#7sZ}#yq0=8TJ7~$b04jBX%2Sl0m{{rxqM${`v3~Nn zvF^+Bl)7416sFQ|?p8%i>VvzY#GT`ompA`_qC1GTBvtOO&sgcCgA8v_h#R?3xZ{ol zHd8?*zA2kN{d}K?YKF_Fz~BwRtNHy1XCa~aLY~Xh86DI)?{F`h6wgPdynfa9l9UEX zZ9Z?ANHJTkJ|_-fL&NlA&ocbuKtgrSm_GhFqvCi!baRi7#3U8y>b*l*OCXhkS;8e4 z&h-*-ortKdJN(dRZ;~Yft5S?zV`1rDxDF#-EsA;-8OYA9 z*O?f^1Z$@QUSKhF!(;Pr?qDppZ#{YHWMkJ3(q+2h^>5qf{y_PJaw9L7AJzAnJGVE>`&!{%(a9^gF!2!qYJ8^*dEjG&pdo~eq=4Lo0tlP@URbIo1(j; z=rJ}V`dfh`@hO9#N6V81djs1#xSa2GL2^lOYd%TzjVIN{?jaVSomic$^L1fU{~AjG zJpe3GjlSwXrg*IH91Sylot9Eq3{NqnXwx_dA`H54A?a4Q<7io)HjS3?mY@MF_?LR@ z4u=_Xky0E@UxbjFI<&x3jqp7VwzN`YfTxdd>c22?w)k(Un99f5gbP zEA`Phgw+a0nVwBc=CQRBxZ{qp2SSk4!JY_D`a(YcIBK^XbTfcgQGmQRt7Ty?4g#Al@akV>6Iu#HgBe**t^Wig|EpZ8Arvu5uUWEq$xaYEy}U* z_uA$24c~T2c!25Uy-G(#p}hUfB8VN#FkLZ9nR7vbni6FreB>Ha&QL;P=znAA7=z() zHJ6<^XKd485URQe%WA>&in7T;TnH>z5<<-XZ6+4tAr@YhPd9Am z{L*wHfC&19%~ygvA{LKqOLn19uKP=jF=3DSG9?ujS=;aVdt1--lJ7o31r_;)N{@Rt7F9zPqafJ(a+-!&Q)>HyXn0DT!xY(vVf8Fa61vUB z1F$g;@2#88oblfR%(1sjv_lCA4gebfx@-o@NB30tJne3i28RFl@>TYjuz9>=z3V%c{uiuwXkD&M&g>zi} zw3gYJY$5B3yL~Sobil`M@1K`CT)b%ORI^*VtP~N;4-whzffVXz=xd6Nx#*Y2b=NvY z!9Fpr5eX%P;p&RqBK*?=-QOAlFXYBB145J%RU?wswPK$FQB#W2@c}s2%CX2UeQ3@; zGOjQ~_c%!88R+-E>Sb(Py|*)giEcIllcv;%-(&2C#ooM>{=n_7z+R_;o7G$ZkPmWB z9^!Cx9A!I04RYB2I^Czfpp5d2DQ3H-Z4p z_34N8BxAEao_6~Li8`b zWr{D=BG1f3QPGw-=bVMOm~SuHaI(4_9-v4N78E9;0Xvp8LN|UZD;PyelB5a=pTW;< zhmQlMq39FH5+%44n{4XP+MNxF^P71qeIg?{&h&8i--5>cx0WVZsuXjV8mj`1JU{`# zlgha5${q*j8J>i16DEvj2m6aE@+W=;^eWl$rX>20uRQ9z=kIJUVdYqIEfAwWvpvHz zas0Pwr-Kxz<_&m51C)u>WQ9IN&C-QkS`&?K<4TdN4_+MJpDOtPeVFVoLyCX2 zhL)x_I)3zI3tv3isDbn~`7WHg?B$D^dLe+8A0fwI^S6);aM0SkNwU45n>p^`2krOp(Rp_5Pl zI__W*`T?ShW^{aV9C;QMvNeF!US|h;DjR(v#}{KB84ajpWW%9K1x_|vRU^RG0B#zM zG}Qx0bn#Y;-E;ZE;D`0cSJ6w55bKzRcnBuGCGbE2RD&zxx9Y!}| z%l!vTcf)uR>RjZ`3qKKW_YBx#b$YRze_Jpn4*O{y`*Tw+J1S%)KF3U@BT6t+LdLVaDtaNe%X}*s3t?7{n{uI zJPYE({+eOLLp^H;*FQiF;qkd=g&#=qyYH;m`52nMcJy&6fray5<1*ygE}LV>Xf&01w~Y7o zY6#I@=V0tFbvYy*R4hAZE3$-bwF;6;aZp|}(*ZPib@TMbX4>jYoIVtC@%%}V>w>8M zu(e-_+X$wVcJf#Q3Ibw!)^@p8Enn$nkGrk0+S*ws@|kS#3f?nm)q5tAEOq=gFDl{M zQyV8>-~#y&_&VU7u}>igq2u$Cds+fJH~T^d0To}Pig^kMBy;`C*0ZfUP_z*k%u}FS zPZ0s%65sKMx@w44(K;_TzOMy^PHoQR=W5zy-TI{ZIVR1YAkoq57XqFPNe&*imP&0` zLX1gEF0GBKevRk>w6w!h$Eb=78xHMb`YSquLptvpD|k33=`ewK!uzS;(bIRkEl8?j zP^3UqOr@4_yG019oj!2?aIw}=N}qYFbw}+SzA6q3l`}2KV0h{VY7r~F-`G)_oMz+V zK)(_b9;U@GTuhoOq(?kmU140(($rYQla= zcF{FzsfDi3i{#9OUwZT+>0$%i9xKlv!lj+kWJW}i1CxBu>oa-hg%+~TYsGpyl0T|4 z+x0uDi{6;mg_|~*SjUKp{W$ylATO)2$OnjiJtuf?IE{c2{du8--~H-%t&CSs9eUbm z8@CmvxKjV?_kxq>9VZ>{uFe|hzK*yTIK4sm@q9?|C1I(ibOe+@U43Tt($fnfkC*31 zH$>s;x-Wz7Z|WJ~=QsHEfNBhnL=348>H{37pVzzzmA7rUwsG~XuWjEm*Nvj4^SViO zyQZ*K_4rL-z@ua&Pj-rVlRL}kX8E)3cw+DhOQg)iQzhH@o`Gbj?k#|@8y=nYxa+L% z&CTb>L_Uh1c8%2oeP69?z_y#omEy0K;*-CMc#zC|7uW+5gR(yIstP3en+H3eb8nNz z@U}Se0pQ(+&XPhApW;%TDr{6x`>`<=U9t^e*Nh~(oR*r@~brWC-9*!;g?ZX)EC#SS- zTeIr@2q&y(ZYgW_Wp?$gs@J^JvzuVRyu(5c40`Q1J4jN;{bdN29MEqKRAmz0Ei(Hi z4FaST3>USlB9O{yi|Pc2ARbPQcDFd;LjJUK{})6yaPIoKpXZ1CUd^w5*i3pP6;tl0WGX-Lx#NO)LjF|RiNTEzuwI{XdOwcs1<0!DjL(6GuQIC% zJ~dss)lWd_CvbS)&ezj(PT0nk6f zMO%lL#>=v7H2SgLzWu({5m>EtU77nH7y?DTVJxDtigJE9ZM5*re=AR_Vs2ju;gi3ufLZ57qbu-YW6ecM+L@HOc$-i54sD}fAnLsuYhE6 z98t6m>Z~!9{KDiq?MnZ)lJ76)r%H?0Fku;gu}f|k)HF1p8gvsj+kKa6IVkPN=W;^E zOMi$RVU>PAZ65Q=$wA3a!bHv4&hqJ8$Rp)G!Ma)>eoARiXd|1DV^{Fz{U#&u&74uq z;W@>?%m7mPj6Y)OKHD)j$m%KFJe4h%0z>y~*?VO_Yba~kH{X>E<|OMr%A1;uePW!M z#fVPta&v$OX3yFBiRh2Nx$`&i+9MGlP(F&|Q?R|pr5*$^M?w=!bU5}SFJ%XkML3i! zKU~il@A!~6!0fAJ8mX*4Ttnu|^xlABrcKjb;C~MydYsGPe?jylc_nS{ccV3gpYG7+ zmB32dcW0`hxL}H!BvJul^0(r@Ujapv)BU4<6+dPssg)T*+o?A9`|Ibb1b(?C5jYfC zYd`(t%0L#23KeXx>Uv21;3)-Zw^S>8F%@Z0)IJmECQ7}l{( zv_)zoJ@UvS$@3wd4VYdrzkEk#L|_Afld(ts|H>stV1TzY^yL z(_A4B1d!8fZG*!)-&-aH8#D>S5lCgTfmP}6V>iL)oTB>b(7DdKKkCsKr3PYrp?X)tS96~{g)tO#j5h)iCY zeehO1G;V&;^>1PpCm6ajzzFW?$g;%seXCWl8+z3+^svQt=%J>+u54@la@&WE1{_?} z>&LV=V{=38u#loymBZPl@J5c3j5fbqNa(j=$A@xE=a&0l57T?wnUUhV;e1Fi)1W#J$kz^2SeW$!w`}`?nQGJ1?&L#%dndVC9&>I}W z^@Ny2z}2mNM9!~J^)r2I_RI8FX-RBKUsAut{;BtBT$`{T zT8a`*xKD6CR!dzZRhj=FCQ zKUQ**iH7p?*x;U-r-$&n-bJzDn+xd%om!(oGrWFG3~Um|QoP-0&%YPz^=+@LKnI+E8?^sgoAj5pzX^Nxr@A4RWQqw2_EVoBVz=KS1XIp)fF~fF;rQhH>QN*H3C_{JU*zL@nV)X1>ly@K1_n;9}SYW z@9@kyvY@TlHM>~F8sNfq;k?fW9Ff||p4HIOsR#>PK>tQInO1rf&F1&UNnMU{AHVhy zsO2B}J0Z=4jq5&{3wQLFX4SSj;$=~fI=mxQbnbqo#DS09;fG&pT;PlV*=TrA`}5_$ z>Vh;ke(5d*JTj*H$Tf-E@>XHskevX#-;c4mxhYOZkCcZVHs!s^^>Nx+5R5u>F2T7s z+5RlFHC&r)^)N7}V$>|GTXb@!{v7vlu8Tvg>|;99)8d=JGj#oe`-f5i$y3LFUO%3M zFB>BGX?}2_$?6i{`b`NkTIJSP>eJp=)2JY}QV94Dj1d%k_9fHG<+k4oqM>xV-+RhG z2PbSpA?RO>tK0-T7jX0+iWhFxpjUL+Fuw zMNYl$2)vnLNVr`TsrRk;AkfeIuGxhUxi8QnDAqiOQ!A(+@rFErx&L@}c@?J4M}xcl zFZdzxB(tUWbvSbjbT+~I#n}}r_Qt*_GlpIY?JG|Pb0fd zhE#^p8ww~Wfn$ffj#VU2EtNTav{pKSe@9JLjRSSVnBQxa<<&R1c<9cZxgeu-A4f)Z zvCr`~ZUG>85nq-62T}HbqO60k@WRb^9N;^AD{M>shbQk2mPmf|xmn^3y6he|hN*!( z-j4`-3DDWJL#Hc({9_#-Gles7#VWX4S}!QL%$}T>Wy^IL+(i`G>M&%Ft3}|)e^A}P z;!9MY6@T!?$haSaa>4PSX#3$9aTakAw+A!W_c(4*?EcK*58kz{eIE1~j*MscLtwOKUp#+g!xjkC60z8w- zPOu*uH~uM!%C?opz*nOrJAHzJ7blM6A0f?Lr_6+7Vju;0Ziw>X2?}JMx&h zA%&8~xs+t@|;fp~o*WNulTnOoHDFz0(Mf+0CVb&hcduhq19@hA;Qh>Pc*7^g> z`bRh#8BVNXP&io^EPeA&#at6pTvyapNvkI$xMP_@=48nR$F7GIZk!@&&xp_6_->P*lCZ z`drFW{HhlAZjSyUoEZ_rKR?&P*Upe#E;b)v?Z+I5){{=^0o^|K7*uu!4Km$-l(75a zo`JuTgGgo}IdbNriWR+r{x)a{uzR8#llHYNaME1^Cf*?d;}CX^y09YY(W(2x=_9r# zh-U4=_BFbS^lL%P;e?}2LxbFYpx{^<|9BRmSpnIPB0$6mWZ*Bhk4^EXW7w6)`heS5 z|8jNsDUQkb<`xl*^)uKAmLb`#<)d?C*&Mxl7upe-Ba{G>9)`Js%&eR;i@uPH7_!?N z3QDmn60&3XY+xjF*_Qym-IQ-{r|EPmxMExw9>QRBdJ5^Tj0&+HhVAm*`=^hAbG?Ypt>p^UH)xts0FaGtN<@bA`+5FiPlwSebO z-7M3+8?02q%wR;8xvh4k5I@WL;2GZ#e3(1IQ9RJg`Os_B|m zp~4#xl5(F-YvUDfWu9!)kvR2sZG#6+E+Iz8LlJ6D*Ta1)1}6S$*{3X_FC%2ULVBK@ z^3OmLZ!_!?qI*riV#_@5w4?p!J1F)AvK2?1;s&{6OyyymiN_!v0NH@$;Pi4trO3z}H;;*v{#7ZJQ=U3)JS=)fvdxJ3AdoiWa})K=w1ftS5hGsVtYYzPVmui7$+$8OW$%bE6XxfcPiy()Gc zbYw20Lvbsw=$Tmho(+bOysj60U;pkAg_k3%ln;l{+2>;`5$0LTk^cE^|Aygp7j!X5{&fB+_ z=@{yL%LZ9s4w!R6q-;u$F(|#?n~ZD(qKoXcqhL?>c@`CFK)nc1SebTz^Y?o9u0|Gm@ z%vdFSV<`uLAM6n+=2U2sx0jFGOx!+?3Mfy8raoQBJ~3((whR4D0twnW2=OMcCS?N< zM?pE!IN7Em)Ua9dO3>{JLDgKG==@$#M2cV@9XV2a0iFU$OL=*G^GhvB^oeQUFwvjE z1aiF#ZYe-6)8OOv5@Mxw8OFW9iK6($2CT?ikI&yZN)4eeOK8W*Uy)#v1QRy)_Ae|> z{fg*cSmmDtJAdDGM+BzPvC`C44k#;V-0Z3GJGC^mkTO(zTNhS=acfClXwEU*X)}*y zP7iO^p18ky>DTHa=WUt(2U$dW+!H@WerQ6S3AHr}{w(eFLmjz4?b^l>W~N6i|&%6`grBuixTym~$^bKP1^1En5wq6;@DH&Bacl z_x^n{G*d?`@1OPM$9Nx0LR<>g%MPKM8~1|F#wvn6!-mBS*Y>Zg?z7?i583@cO}7=T zfNvNzik;cSGJYi3Y*nEJF-^ilx5B-ElHp7~zx4gjYIE4? z?%qTSL3#C~5B5w5nPCCL^qpF2TO3!21`(FaoYbGGx1;gNTmwep+FS#exya`q;!suA zxVO_T1zb3^_KW0}=X89ITI`ba|3!k;qKv`1+kIaTLvJb>H=ZR3gY$XhrMswB>B2uz zoSF82{c+FS*}<+uqMcAUz7HcaN%!ShXj2zNj}oz~*%>JadpH<$k=(cQ)J6$#?@i^w zYHpr=mnFuEe~1zSjXTJi?$cyJ0FAnk(U2{jL{jxDsYVRL|7!s<=26Y`4yskk!?r9V z0t1k0^K1HFN~2o)1D$$Zc`s9?TW48joOgb^?{>dQ-}dtG7P{YR=qjI~|RXhGTR}M1bz_gzlOYWw~f=VpAepLkBl%oi|iz;*exnAi0mj z{}R1PV&s&og_rY~W8im~jDgN?In^MF@cu(WxRt63pc~G0KxYF8=-Q08T|;UM!<7rE zU_tH@l7F6-1+8=s5%_n0vqsflXTRJi6?aM3h9$)cpRkk1-yP_92h;#7a|YDFzlT3w z6fzAJh`VTdIyfoEFwK+d(I$y!X$x;|k|LR0hkpF4DOs-S`q7>A22ve@?LfK-Xm8OqYcvLfk?WNdgZEC}F5D#yRb$5Ehn{ zyz=xB5N-$Bgn zhTr{Tpv(}D%N6IUv~VH`QE<@y6!buSDu-P-XW#6~gEq$5=Gmc9 zc{?+|{1BcMptEXk2^GnB8+$ltl4Zl!N(~`pSn+aw(pa;BgBO z*^MgUkvR*Td+n~G^n9aeg0;s>+Bmu^awPFEJv~>Qde5{;!KPnIG zJ}EP4NKvT%_Wtuv_Hg8fjImpjyy=6*&%eESVlNQL3jGK9wLZ0+!~VzVSF{Nf-Jf$m zafxNa&qV?={AOM4b^XU;#trG|?yGP>-T71)eOJN18snfW+iS#m8}3(6(L2BClWgy2 zLXY%vTS#$U{vpPEr!*lU;ri@)|8^C(mH-;{*dA_LalFo1!*Ak%a5sF*D-2EnSf0Fx zW-prAy<}t^KO!Y&_`rC}8|GFJ4l>gEy^VSy_Kf(#adlMah9_~h5?z_`94Fry;s3qugN!D<4Sio1L>5M8X+Kz6r?t4NJ#gFw4ihf zjE>P5FuDhbAkqR7Bcx$;iAV^DXTNhk=Wlr4=Y8(DuIuX&aJfXQ%@%!-#(Zc=kG&}Q zt6LXEk45q^|Kqycip2gs!d;i<-0dL z%$G?WnOlZYr~3(92C-FE+cXqiRaAQ$E54XAYd)V2eit3@F+P`~hE$%kh59yI6ij5! zhLUOHI_<*^>^Vt7K~2X~yO^lAS=iYw-odvhg=)M@ZkZ2HFV`0!)Q?9RMCLN{RmyG8xd*u-#E%=ikTOn(k!$cpd$D-obkuA?9ZsbX%wA= zP?@2RqX~cm*aSxG{5B7DG#;Vby12|`>@jWRuQXKT!2|Mn2syJr&Q4Q+vD2@T^kfEL z36gs*8sB_(+H+`Y8J!M%Fr}D2o_P@$xFz`d!lr#!b=rLGA9?v&s{yi??!+_gQTs8R( zW|(&7jN-p}Smdf^ef|)|IilOIxkZF};$l@OLPRt!{oi3f@)l{)*R0+}ER@pXK)V2^ z)Cw7BjU~cbZbiRS=T1Go!V^=!WYf zv3LLWr_ZrYN5hM7dRPAC%tkEmUcY=vH_58~;|?u7E}l2R>a_|N4CwPB=55#I6v>nb z@>SPHoM|-*9@Mj~I=9`vjY_X-rAtEz%lgnRnFv&G0^5C9hk-`=!<&Uyf+{PS!TG?E=yUFoHe? z$GCvqT`P{%QG7H^+gn-u2_h*@6n^pW6x zc&=NZZIZIpLC3q_CHXnDWUD#GW$P<$Ifn%Py7iT2 zxRfA36PdNEJ%Kvh+ws}A`pE!%*S?Vc!oXF#b|b4D^z_WEw;h?)p3VDgrnLUdO!i-p zar)@8XI2hYPFm0@*wBayAeiLyh)7!p=MHuSrHH^zDFyal_xm4Qw_Z0oq?JFl`{n*{ zUOmaoA>`wC`n~%m4&?59L)9y z)^dDj_f5dvo#0g7*a?D9m3xN0k3W z$f;D^Iv+3hE`hPBSBX$NDJpCDGnG+|cgxMZxF0E@D13UdMUnHh72<#p?-Ebv74l35 zc+dKkgRo(bSp4tEjGCXnR)Q&Z-deC?=TCec)2-`LyO-_v$EU+Z=g^bxwr>yI;8A=) zV)&0XD_>dWeEgS0?VP?yX3a?8!MgHD@EA(k3bWvDo3DutGk9#ahWOABLfdk*xl9 zEdpR0a~%5x%DiRczAb}soJc}M?509c^z5eZ6Y$(G8o$M=P^S+PhpkBdO9qgJu6SeQ z63+9SnuL$u`|mB}7lKFn^m!BO`wH5oO}~?;fNbt!Nqw=FTcjcY8Wo^8)$QD>VX8)C zC6D?ri(Vx%*P^kJjL{ zCK%l3B*5l)^Qp+Nx z4RtX~&#(=U(4sf7`mz7z^#$yTbkW^U=S;>)PTE#~`<{k;n+aKjOuMB%3ie8%y+BMi z!8CDHjwD{y(jAsx9JN0Wk`J&F({ce4lWK)V?QXBuF3Z|qo! zzksjXUB0+ZMz`@Uoe>DLtY;xs7iZOhQ}svF@#gRn8yE&`>Le$PvT;CF zviqn7rbse=)I*ma*37B@R%qvN2V*zh*G*aDlCOaiIC@CKg1xf1C4#+xV_u?o&5!u;HWNp0V^k8fWd#khwyurl1e-ThZyt03(4wy? zJSZ92_~o~X#PhBa#CI6b&}0+@5jwq4^_J_8uRwehvrrorfHoPUVpA?-hmY@+Jn*UX zFSRdldM`AHL#K1);PQJHU=P$w$E~^1g=tHJH>H2jf6*#{70Rv(?rX+?;6h_6(mW2K z1aZ#?-_BmUJ}Z%75m~Dw5$kQ~X3GgZ`pEaL&~($av19H>ta95jm7;l!qRU{_P`LeI zl^J9WPb2>}@Qz@a1|i^F^YT2Kv3*MU{jrC?KI>;M5-&vS7|ClCNT1qfiQDm=>*RMm zK;Y{z1EIluKsnT8N6D&JG=M0$ba?FKZerz+9DjFJJ_nIy{A~4|^70PA_{h2G^&(Fqvf}Jij8Z_f^eYtFHgajl2@dh+^J%9eF`Fb? zPc($|eR+h*`VIWpkM&J4Uw~lJ%@V?2F-zzl`(Ugo(YJUp78#2y@(pc0mxG2k%y~pRMI}wQ>-#K00z3$FwzSj~_*g{(Goj15>5S-RM z5y@Up_N}mnOFO5@{Gz8EY?YA#Lf3FDL3F+U6xQjZaq;tD&RmXG&w%o zJnHTQTtFy!ic>?*y|b~k^DAn1rh6{)eZM+-y#Zxg3Vu{|DzuxTN2A;<^U#9W_3;uH zEi&;Ajv>D!S)luC&%Z%c12crKKD}FGU+ccG&9AY_ZX&r{YgqdB0!RR09t|)^U0<`)fTJmt zhK<(9;pxPO3y>F&HD2pd4S(?p)HVD>g{+Wv0*P<*io^_ofup|F!~LG?H7_3--BwNg zV>52&AOJobZs5$Jb1z%u4sSAso>@o^*eGyT=>g zj!cE$?+;5MX-%}o5x8r?_R26#O^)a@0^n^gDIbsMQC-*WT;cReK(P#ZHJX50@%8E1 z8`j086o7|S==1a@E*Ec4vMHx$GX-&iOIJu0#js%`^QE>t`yvPru@Q;hoT!e@x`?fJt$W zZDo8X6)HmNa(gKNle_}>`rbP(_B4%ovUh8x_Ke`VeiGYk;ElY1XQS7)G*fM*s^jO% zCP$nm3!m90Lna_B?C-~n@pF-92o1b+(X)5%@J1b%%bB2G^OlGgiS}nza(?LHs{80! zBi5Og!Rhn8^{;PYnZv)Y@2fhNJ9X~EGjW1{Ys;KRzvBdE89OXqY%3%~K&kZVDOxDA zRx9@w0`AFl*4mbSTb`jw-EAiQmgiZS?Mvej(yeL=b4ZXsufTX6vb};}i8!LF+E|(8R3-JIr#OuV zI`M&&Trk{9rjNsRx#rQb@@B~6VwFsf8MM`($HdaIUGs#v?4WEszu2>?UvIyavB2JM zf038`-PyV5xY-VH!PDaGTZc-0R|XXAoB?ru$MJ2?pTQ`7^Rq@ULUBU(Q-7xzJ2gO zI|;r$+9)X<_kyG;sbu9`nrn>P+dX@G|JB{e}jrpVB0UMPyeF|5e zE|Kt;;-g1pfO4rC%2&)N2L{v7T=nXYndb_xTXEkW(ozbOEl!v$4`&5aAf9p8s?I8Rg~fb8rm>$g4W~7tdjp zL(ZO3aDcphbrI|@Z!6b7f=@D4lvg!NdBNoH+?u=Z0daFbc~}OUz)^7R@YgeYA`&B{ zgITj}`AXS-mAuu14SaD*t--S4`nsAKe_v58sMrYv>x_0i6~M)C1(c`8XaM~G;@6yI zkQ#~KkQQb9xR&wSegiP**b2B|k0Kz?e=JuU*UP-_p1Kkq0V^PXfuY%Ac{kK{eLN`` z3ifb6D%(Z8Zy>DQ_G6JqTpx2k|9rvj|1j5-qs%(VHm3}t6I5<5qQ|~*su|m4QC;wi zWmj4h@FW$ruEi+xA}v%|CH?;T^*pDFjGYaPFcD8Ya2 zE#8^0AYPy}&h+MD52=i>=|<@V9pS`WOEU5J;qVaX1Cpf&wzOEHoP3V!a@D&Rpjsu3 zmW92H&>;j^zBDImFz*?*{HjJ8zv#|4CBGD(w-U3l&KE@TQ;*7=dICYPg$S>ETmL zfrt(zv~aJr9&gDfF0H5Y2&%)C=9>D$TFWvgU9*~-J$V4ksfmjLTP0_87qe+lUR3zk zFj4>E`MAvts#`S1pJJaX$bAJ1bquklD9&I*ALI@Ur@RauJtYQ;rwTIf{^M zbLSYfoD^d|2X>cCY#Do4e4DKtpS?v=uOuS-6$+la_-$t|(!M{SllVY1*TUVD75v?u zJuVSI7omHeJ}JVFm*K={9&*Nju4DnctYT}>a}lEA1+%M0ssO+F;5^WF}vcC(D@a~ zD}cnDx^k;&^hD(Q+RL#4*wT2GlJ9y|DcZa)2<(q;G65*0IHJub(0Xogr!8jxur~Fc ziXqy*N)c@i8y_D6cpQFB<`D*y_wL2nBiX!15{U7y0PP*P3>R*wM^*k_9q8_$(}WK8 znC}4U7R1Cqr9(G77fZ62_LiPV9`Q3%6&rscepx2F5#xZoe0GgDy7dh3JWyJqFNRVf=5=)_ z_+5Kw82Uz5jY)bPo-6SSq_9u8J!Utb%UEASGw_yvw(I9-k72h@aOKl%z#Rz#FlT3U z{qs~?){b|hULwE)W`V#T1Z`No-4HU#+`Pwh9IbxkGhHEEGo+r;RAo=7?PU_fBA9{6 z>DhgwYRfhJDPBY2gb{sr1?QUE!4;i3xY(=)er6WV$GBN634BfFz`AgNS=`vABV_XI zUT0tGr!>YJu!i$A^!GNq&1~R#NT^#=A_P93KPdA%T#%F1L(lU2int^O=F$o zkDK7f`FbWg&p$5P>zW%N`T~&tbq=i^{n=1Uw#)(-7M1jqC~ z_k6}#4UPFtprs+hb7uANSBd9EDpk1&8(NJ*Y3WZ00_*tNqE-5o9mID?|I~8l90k#q zUv@t>dhh!dnnmhz5C4|Rj6zGdr+>C2kMD00g-K!Uvu|+fWVrit1L|$Zg9KIRmVax8 zs?%10M8V;E66V3~hadjk7XMfnmY#PX_BPv6V5`|TU5r~6pSyI7=;?+&kL>__qitT9 zOG%GD0G13O0NROAPe!19`Bug^NRIlnJ7+M5jmbpTXOeFV4j2}FIILfQoMAPmdZ-^= zhI~b;r-w)i&K8LRYoXh=#a?2n)=M|im`b36uQZ=EnPaavM@8WO!SQZkAj6=eO_O|N z#%AVb*J-7=uy*oG1he4IG=Sp)j=Uz=$)9t(mJjYeR!m18wVzyZDF0xOc8=@a8IOyY z2&^Vs_LoJ6`KpoJG;piqz%K>luYO0qIr{s}Py1~55p3DxI|i&P?pu3AmCwU01TO)e z(bQUt6=c3g5slI8p%8pd88KXe0`Q7yuC!5#zKY!!I)88@yYzJxU3d&ABk%B}ZM5{U ziyhoZYMi56dN6Wn+cXdV07m>Q57l4DO%4x4vIey**kVFuYo370w+Z`TeH*QRw@m>P zED`V*iGqJrLw8m(6xy^-cY~5ib*x*SBrLa>zJJ&3OGKoTnE&napP7qlTbQuI$seCr z8Qw3ulI4G1_^C`-k^lXeonM%edStUm}pVLf;=vg#P1eeVAdJ#)c9HPwFPY)*5M)mrA0aFIC3_&D79<o!zJXJtGkiS7Yt0E-nGr@Z)79C_U@}cl{v#Q6SKI#PmcroaRT&nb186QK;CO zQds|~fTzH_ibSK(zje$zLoa2`y;{TKV&htG>4$-`)#ClE`e}B6uroD0QuMQ=E+jT4 zGnzJQJq1bOBSpzy*Z0tK6m~lF2X3~3A)?%an|>n;4=$rF_fFXSO_)9N-S6H5mQDy_ zOOnyTL}#ekosHun8P-y>i}wM)IndY_+UZhGe?EvC)E1q$c5^;f!}*C521@Nq_D+}G6Cjcmw@#w6)M z)g1b}I-U2mpRlyyu}@1(e%4(7oL!B1MDkOxt*VJD@N8Irc}YpCLuK8^jg7PCk}K8- zN6R|YJJT8`P$D+ zbv1HC2facy!1B!VLU3s-(B%MLx+YT@A?HR_)I8$U4awWC;-1_gPB!R<>iMKsGNPPx zXI2@m@McuQ)c8;`ZdZAe0rsTIen4=&4P(b z1_Q)tIIsjsOknnB^5w`rm<~ji1ZEd-1(|g+lyt+xzIP0iEY97u`PhD-YHQFu4p04A9TEDV zi>mLBXd*PERd~*HLs>lqDAvfr3`|wghQua0-i|0P#c{lgSBWgjs^HLrk8*xmph$mb z9`O10m4+b!x**99texeDXYfsFTkJL_gKr0CX-dg>4U?jh@CbT&i}> z7-V98rEO^KIDYVo;M|KBY&WP?bZ8xKA^|c zJLo1xm+>e{);zm9ZFcue_6QM|kOyWQJztPtEXBGGkB*M;t0zkbo406Py;!JdsR)41 zz^>eN5y4dDjKv5JYH9QSBj7`GFWPO3WPQgkZ2UY!+*6Za?{^A^BqmTo+(;5|4Y|R6 z={&@uz7zACCA!B-jENBngH0GVOYf@)6=dCqp=D|u==#-t(74G`o)5-eVU}g-bIH3M zs}xf@@2`pmK0mvt%arabxKt%B`WfdR`|2OBtXe;M16uQMgRa=X>n_gTNKisf{<_*F z#ZV0a?{|KBYB#wxOSFZ2YUj60IQ!Y&!$3xfW~)P9$)>+nTrZthHzh-xWXBg|sD(;< zMCW43+&ZRXOx|TO*7fc#5LZ&&*Yd4aOH*=Y9Z>EGx6$#xoSLF(;v-ItJ;(koj(nJ& zO_kV{H#T>z1h3QR?N7ZT}&eRuUNdXvY75a3pt_>ogAa zjBj}BodA04W`o9I$L;>awBx%V5swUw_aEpX#j`}qJOu@XL$*(T9$~at!XuMl!D&tr zB8RnwmHsp-p)50!&wLYfvRP`sAh651F;w^AC=AKJH_$%7&aQk*yiAzZHDFXT9cu zr(AL8_JQ94=6juoB%)ico`n8lwH@L5HrV|KsTdq~XQij6WJ>-b%l6a!GYX_2CrlJuELeU4?l zTWrTOZc~|6tUCiIRa#X9DN!{*9-w&8)%nZ|AOtJK+TLL$-bOryCHt)wZ9hgHFyN;s zW`=JM&`L^zN{!nAu5=H!2`mybzL!yK24tSOM0jv;J{;MTM?EEvBjbAYwFJ2fS39)0 zF_MH#jdAJp76dvB9c5qKgr4#8hus#}tXTK3GyvTxExLEPQh@OwbTeyve znEdsYZ|jc$ZVQGdY34fV)1PC4?}dC!-cKB?j zvtf~C1+o9@zL#=D zCC_|0&$0#47X)Gl=$FS8YR%95r#<%foiONh?bT{OyFR|yMbs%mLBP$Lo!zJS1WhJ6ZoI7c zeRG5)QrHBXpZ_y6ex;-y`o%urtGT_jTTI#Q^g8ZnCxY?#d&G?P z#oN2_LfR|NuSTczgVk?M1m-r;0!C#W;7*=6A!hq4ov#|;_>YSpX3=`D*Agb}A0*(p zsT~I$1{4axwFg`C8+itW;S7&|bwxz%i(b3Gi*PWNa~%HPi05?NO=RG9OU z|9M8=qf{{c^ROFLDZ^X?08K#8HQ-Nz-+Wtsz+j*I9+}JY2@z4afXT&|5a`MA_QN6U zohf?!n@{lXHmmP+b0g+h-*!C*c2#B7`90hPlBp%p&cHo%M#ovzR6-+`y2t*ekuP1~ z*f%g|n~#;XL}1-B{UQG9!c-TWx=TB}S*{D&uFrSQBI6*Z~p;Malqcl`ZXPvd8B zipzlUuy4tf%Xf3m{M24_{L#O@3w&0&Eb_a$hZVsW%~fWCgC<&g4jetsP_I2jIYZtw zS1dOLpIK)rdFE4Q#hu2idL3%|m-Bsi00>Y*4K|>n1yL_wEWKrWm@|r*N`nGvO`nJW z-BmJ^8h^h?IL0^_F2XkHVF0nTF;C{N9CsGgQGD6}LBSoLJhI-f+z@RY@w$S=#j{dZ z!6)!-)B8^CEG7F~l2cf{m5j4lI)V-N?RHF=bdS0DJ@nq;W4+NobA3x)wI|q^`Vc_l zp+HP9Jn4-^iX4H9a49lts{$ES7C9<2_9~=FqvU?&}7XXzh_Tt+l)QAxO46aI-|Jb>NQPbsX?fBJiPG?bN|Abs1# zIlgF$eS98(jjhG3-x7kn&qE^M9Ldvsgp?^almjYP+`Xk4tDLtm6bbw}t7v9Y>w;HX z&Vf&%f!uzWf{zM^_kSV|g%siO&%*`c1Iy2E1`o5B22vpM9H8SkRTIYS8@D8jVi4kH zy%c&N@6Vx>*Q0Bj&I?MRio<8IsK=epPTMX6B`((rKjTs=jk3zrhaSfzb>)8uMH zhm3<0g^lQf&Tx5BWNBGk1_MV+gY6riYp7!TST?9A!w7=CHUTy4KIYz=T~xmnr+odR zuca!3-WnSkNsMU_k8J%Jj8=Hq*uIyqi#D}S-uZHGO;aPKhAW4=h2St-Ak#Me)21^? zl(MXh>TWjUGjo2{+@ND6`od=a`-`)2XCG`HQCIOLMPv8dgA;Rt_dQ-zjP#xvJ^Du4 zi(tSd^Uf2wd3xnp-BhaAUwNntG5fp8>W^;JD-}@oN$(?%oOHuwCrjw$+T6)g- zu^b*kD#QYL4}0P{XVTBjqn+JET)0vY~^c~%y2wf$^-GZv+qcyA%VGKCNb zQ=%bt=kW!36DL0CHOk7yroFth;18Y1F{V<2_x<^ddmCBDZB4M^IB`-|ln3||oD(Mt zO<7(7KvXS;Tx4wwbyIjW$Ld0CJvxtwy1kaE7H0*~;-$;bul-(a%r~%{GNg;0f5vCZ zREQMRUuegY<4`&4z9C1oZP9W|MYX<3gsr2&cnMN7_0SU0ln=!NdE3I<@YPbvjEtsY zz%@uX7Ef04B_EKA&rMi@G7s~>xtil;JkT5ki4#ALa}3Yyk1#j;0Ktbpt|>6 z=YspB9H3RnT{E}5?VHb?MV6FzbZ|?}v2Xg4&eR+0=s1F2cniU(diu0%n+L2*Q}zR_ z8%lUy5mG$XyuDvcAM@RfL$j>$`M}ZH8wJ3a!`@TSTvRG@_FBozjdFg(`gWk-+_`0l3_dfEIM-`;8~oCB`w08{aR#H> zm+5aI;EF$BsQ>{c+xYBU63MDPJ zE5H)NqXMEL(Jlw0hHwOX<4;tXgirIA@B@L!s)>1ok{cmNa%E zTw$}Bh%Dy5{9%lJ&MZDZgTi*i!cspkrTO`M86Sk;A_hTXmT>0Mo+7`jzf>zh=kH$x z7%3kJ3y+Or@V)ZG5ag} z1X@k_Pir!PlZ||VD}|Iq9J4s1dQQ#2Cs~6~?qNdFWC$vRRRdAL43ihZ_UzBGeRsUK z%c~$3YPbpLh z(r5z9DE1uCRNwPc|AeJT@60qZjBxxxzqP{sGtdNwj!4@sHWhbZ7bJTjWr*{0{mPv= zmK+}Y9boJ-!S{iY8XzeDgKZvJH_-fT0MCN-DV3gd;kY9H?5p10O#~Fh{P-Y%&?~D8 zB_qKvJ-F7@SN(7L+k>`;?QDw#>#IhCijvbnQw$M!=LFddh(Ig)yj$6Z9wWXfxVW z4F&Jx5pOe+rs1w+DpCJ$!8vM@Np=L|rRQa~q$~v%l z|E1!;_8B{Oo0{NfwG4~g8m(iS~H%#VpS`G+5C>tE;RKN;JSbpPnc)ppAJ)Y~wN zSGV@92N>&Mf<06NBgio|XFzrOrwnE0?|yjXJLsl#Z|$iv;1;y4L+}FmF&!UBD^@Gf z7i+b}i0*s8V0<0VX4EQU{cZr9KwY}~LJOD-8HE{&FJo&r19LByah#B$L%}NDw{qkR zh^g+zP7Pk^a)s3UyFZg>o`4;%9!^kk7|>+N6{JP^iTB5VYmso3 zXzZ&r)8z80$qqxr2Kl83rzQtGmg-wrinM4mt)zHVOK>8!8nFKPtUd7cz9;S6Pxi0f zBqwA3<)LFAIz>FfHNaZp06`h^;is5x>r6*~1;sY}QVXvzqpdH0U6LUQ;N^~6#DnbZ zm!R<;F7FhcX#M91jm?9o*ulwkD33ES$G?qn3e~!}vkP4Rkh0`^*UdBNhpBaIDNx=B zl)1f#rVe*qirPv3X^y>0a`2-8d1II+#=I|+_<@6#yVi5}U2`@behT)oVFt_@WORO- z|GF6P9>soO-STk93GcE=dxqGaH_9es&Z-Ri^;9i?(M69C0`i`C-5{&Y{JUz_l}yEx zidUL3ZL#-FB7@|2zLwpSVRghP<*>bWZF~V_O4~t!rN?S}fa*5Ej)P!mY>QUl6iN_u zWid!d3QvZc-=YY^LhmsotGh+QdGne?x)Zi~X$mPIfs0hb!eWnH2EM}Ylf$>Y)l>9O z=-g%!+qYJt(&81yU!9i|b+Y!LQFa~ulnzvdjY2uU3|aBNx625*aE;$9cZX+VEwWzd zj@Jw${4r@zXzDZR7EK!6=WSIJwn>rOw`n3v{3SMvHzxCx0 zn_t??AO7`x?(at^<3hMlx|e2l0cmEUpgD_|yRNs^71JqRg$cAyZle=j+y0>Y9f3Z} zbE~*0=lgNZT;?V}>lhT@Olu-g%-b1OO>ul^D@LFVt}2kh>3TvDSF}-YWPOG>#0C*g zS)v_uM2fEPABRR%W4Ni=e@~n*uKj}`Iwh-du7KUh(7FjT-M68yK8jyrLlU9$QZ;&; z8oL-ajBIY-I7BJ(M-AiF@43%5SqBCNH?715bjM(&m!l6_|M~+#KUu15UiZTERhVN%m4A2f$@|X{%XZ|^A^>H9n=JH@kG7fVqAeD>Pv}2I8r9|ydHyr@i`rH)|0qT1 zG?fk=Jd$i=a5=smP$n3J9Xl!ecqQW&v%Zpb{Wc?m2_N0Mgy#yWr6oW0%?)P83oiMM z9LSQV8qn4Wh{%}$zaBnz;B~hY_rQUvO1yIGr*|fhV}b_t!|7zzCP@z zo`W?!-%pu=Wj09!b<(+ zI1cup7{HX4#A6lmO>?>WwLFHn=ba{xUiGnz7ih#Q-&;CdbWt^ml@1Q zRuA(l+yDKh&W8<^OwKt=0sOlr8fLw?#_cu#n(UOUjt2nlbFhf2J^kURo(PTN0?w`q zjSxfv2%0D3K^;NfZ@fQIsmZ!FD8AdfndZ>^tWbm-xXSxmo=d!E=L4k>wOVZOfR1sH zh?I?h?I*a-nrPzGx=g1MSuvIvQ_m5Q9rQA#D7t`zCIoBdnUVaKOW#cI#uA$1^{039_bmjS;PmJJtex zbb&s|J8d)eY>*N7y7tEeCyX2(rhaUE2Pqp;ftq7q{fm;Vmfm0Qik*E*n;k1tR3L%% zG~4*Ga#2HKLiST4)Md4xHJ=bRskJPMAW$MDtaccTU`gf(a68SSNXW#sb{BcTonWc7 zm4B_4!_*ZLq&aHwQ>%r3&I1YXof^vJ?6}&s0LCjTRS33A7GmVh3MeK8Y!4KcEv*)E zO01rg2=jFan8$MsCdHly^2(=~d?S$DxE( zb#rWXl-7vZvK?k?D7dY!q+yTO)Oi?WoZho*$2l;kJePM;_CmNvsPQAcYv7ibH@LCC zRETmvp7FxJ>CuFWFmjJOCz7PYaMV~uf16a%P5*bqp6_faB|9g@a6%ws7}XdmxMv<0 zr1uo{!0`|WGL0ov_V}vy&wcnJh+m%jfnS3Dtlq=~c`I}XK z!uA(_L8?*c7eu2P&T6$U(~%bDrq5nd@GUUW5ks{t1>9hpa`-P9#I?oKu!nR7cjuOh z9Uq5e1Df?1DXkd8=<#u}iqFRO^LpW4j`c*7aL>w#x@l`0xh9&pP!`edg$|O%wvI*L zZargfv}vk)(^p*YjBPi!GMoKi4Tm859$1W$s5PhO zbmY;Pw682-Ff83orHuZJMcXW$U~3x&HFK?*pk{+T#LJ7&gQ46jvzJ~JzWuOimCQhI zYmPX}n_Jk=Q+fmTJ`(2CU}aZ+YSZU=`~puYg=9;C+^=M91~jse^c4Jp1#;PNWa%WV zG4`V&j{&v+Que}a=)Ahnx+%&XCKpzrlJ1)N=q>&Li}@JU>R$^?&(eimAU5(%<{fds z>&Kg}E&m-Ty%3yE3BGNSh5WFyx zoZI)_#^X+SH@*vxLi@DsVS+b)xHtwJ-eU~a9e~mEUH1gvR`0vF48v!Cmvm!zSKW=V zYk@j7Y#(qS#a|FleXjsXzPLtk<#KvrZFA?}0Qmo_oD-H z-q7gfZ?^Iy8xy+9Ms{c)faER==!iU)2OZs)j0FS=En>za0f+UYg@R~kkai7OuyKNa z3$mdB^>eZ(&>bhNRW~uTPf{pQc|6}$N8ea9H9y6x5_?xB=-;cyA>~f;r;P9%xXn?&oYFo zJIL5@tF6;ELc`qEu*i`{@PqqO5yRjbBB-@ZNPAVJ1(=Xt&PN z>f}V}or<=`$!deRRH6V@sS`u8&&8ywk82|OnJe2XPC%Cz64j5X<*Y@hs^*+m%p|5|_* z=aL>!V!5<-c4({E2O?%EC$o(!I19vICM-bqqo@Obwz-lcE+PFO!wH@PUN5hQWwRBm{$(OV%W?RDz@zTl3~}X!52AH2>vh!2}oU+T=0BALjdQi>&b*Gg)dE zn{;ySh^3f3G?&_ZKlz;8o#*PWBwr4@NYc<=rHDt@qD*g&a+L4|>TQxAsVF*}Iro|6 z>iYoKhYJsLF9njNdL3+lkt>0pNg$h77Y8!T57_7p)5JQh|{*uuGcb3pCK*-Hg!NbJ419t9Mw_>Ir+z~{+aFrgh6IEU_W z)G-G22qeyc6*sFbib59G>Pbr4A8qj_Z)!(D%YoTXwTMjufqq%C#a5HvF)z85mj zwAk@j&(Z6vCe`huXEy?#`EuGRaLW>gd=z&Fvs&TkKBKz#4nq_FsmCyISM7Tem^z*2 z+qxJVL1yUG;{3glGrjZnz4^elsZBc?DnE?#3-k3u2V}B&9_I%iI-a(Gyf-WD9ScCw zm_N$fdu4eJ3Yn}DBP{|HqD+%xB}DRf#F>idFViB=QM2p)?DhQmxCb0!46Zu<^X z4J<60w>fD`Wgo{pvYaf*!`?oOdzPTmUH0&ir`D6b&Zr%^d0K{Wnc{lTn{O?q%L124 z_IWH_8Row6Gs>N_fztLz&@sQFr*|0vE~rOR)!B{L?{9n#U*7w=zy)-Hin+)Y6GYnR ze~zjc`ty^v;=VP}(!@p>4KH)2Ecz(oG4b(;IszBP_BgykwU`!Ld(DBqyFG2n6CM0C zHbIQ?fgLuzdFJp&bgkf%LdDHdUIK1gGk^5EluxjxMD0x)_6hg#z+i&V@UpLgcNi=@ z1lOPwpr_dhEaB|z@J7o{F?7zmIjnd+GJPp@=LP3h3fq$}V(6n4*;;A#AQUYhN%o?3 zO4PFb5?#ILytPOzSc*;ZNBN_Rn9kOSF0Jtwvq&wnsCpKfCok~EQ2O}>HQU)BzeM{# z>q%wMkWm{M@c{!Tm2t5_THM+vVur-s5!7xr7Uom(Z-D_FTMo9Zao$0hK^jK3&-NrO zLBB~bgA!#!q~gP08!+I{V|FgSEi+^i8V~!2Uj4J9O??D~qQm8Te8Ig*Y*`0q2v^vaxPKVL3WK*lhKODzLm63HGs;J!q>0wQOy>oF;lFu#pq`xKW;^dE^# zJ!7JbFHD67e9?UM{#V(SY0wn=_YAf0*J94D5*zDgh=S1+q!9cH&Alto3ikeXlqV7Q zr?Q~t8URdzq)J;aqj=2wley%sVgYEu;dDQ4c-hc-L=TR!xqtD`(~>Lm4lN<^*i|h`Zo{w%~HUq zz1Hefg!nLP+DMuYw>D0l$E&R_-i)Ec26Td*e@+No!sWf&UScex6~?Xd9zD&TZZxfe zYqBl6`nQ96YUkPC1H$DToVKbV48Xh!Z;BDpVM?>?O~Fk@iCwJ`g+ubz?ug)f>Tvux z*tD}Er?#%Lh#Gtjy`0`Dn2rS*OSe*)kyUyD?76P}@2~V#oCeF!|CBXN?~@-g@tYIS zGfR`T3@j;{R)tS{sO{8eujLc5pTlXK+>owkj}LK$hV=HO&VeZj(`J}w!;^H9`{}#{{DJ6s0REjEZ>v}P%{{;@(jqGZXJ3V~0QU);QiP)_Y(j4hQm6pQ*3=H^}7Hgx}8y9prw&W zI;aRcJa+G*<#n3i&TT?*)$LIQP$34u|@k@;|Y~Ryp^q zvi{xPMv3OtNvH8*dYy}GA9!o~4cVoOTvlUjl-jsIbS(A&LB#(<(|NzM`Lkf9ea=1)ldXgL2E?SDq4N>{o(xwavaHXJa_Kv zyw3A;zA}%qIr?op>yTX5yaTgh~cZVtNqljtwy(R|RgL`fC-`Pt;+ z%i1)bstiS^e@>^fq045yY$73UNOMb3E$~p5F0pmrB7!{4QMD@kpZ=wi#DT)QsEdU{ z@HEc`x#f`L^yxfEg8IOGW{-LM?@n{UHxvyZd5-wo8*m`M0K*b3yAStky z(bNAGeg4t@fw-TwC<4T)lSp9^<1=EGPueVMuXP$X>M?5!+vAitfT+T&rkRv z|Bg1XQIRG=$Y2Z+{KI)>np6;a#Dey?S{(Wo^PYJt2OV@HjHSB3rr@VD+;A&NmX=1q zlY&RZ(Qs7itnxy1R6+zXK1=Z{)KA<=OP#pwY+rhpK(q)Wi=?^U^ZH@GOK#0enpbh?v6H_E`1#NX+Q#1_(C%D|H*1Em=96m-8vU@Ptoz#Io?DRpj@MXf>j2*AF zZOnv^xz0^_9yYlbicu}FBT^Bt(V8kvIYOpq9A%KBo~2uY)D-LKAamt;_Xz*pvljvA zv;t;d^lo5ZrmTyHm8sS|>U*W?lX1_0LL0T5JC`Uvnp@%vC6B-{Y1J>N4sdU6xu?XU zG=L$Qm7G(0BYBNQDF#pgEs}r$g5$&`Oai8Fs#5k7QkkC&iO=j-+l|NQndgU(^jLs> z`sCDe%{*Cf&#U^vr87_Z0AFh9kb4<+-Y+a0v+77>g@@8j);MB+j|=;EdT*qPO9`Kw65{AjaL9HV3ss%ych>4Vtwohcp$NcD;wC~ zv#n&*Y-8`k6};XtX^c0jVkXTv))xU~ZdAIDL&xq-#CErs?!I;}x*=Vh@7iy=NE7@M z7oS14fESwkZT9>@7HXBW0L-g_`ILteg$@$*{q{40-&U3}=#ywgaB1kVpOo`mAFZ-} zhcHjiAK-FQcfZ{n{q-{@6~<(lb9Zke1~}uSZz#}-jVescvF5s(*YcJ9v=R;eI?vZV zYVJ_*rTndcZq^6sC+`E*iDiS?R`4cp+Jb4{$TP)`!E1jECqdq+e|W~{^`;VT@AiJt-mcp+@g8x%FrfMM{oIJDE&Yiq$m^iO4a0NpC0xUvU9N zU%8g#jMt2zdX`|CHl+UE{hJBLI?q<~^dFl~i~WVV9En^zVYvejYNiyep%svL{kgi} z)JHz{L_XAGNhnw-ZK5JKyUcQB&YlvcO1Q~4M=BOc!@(V&+5ZAmCgL*x?-%ABh=r&8 zR#+MoHgzVs5-k#u@b%rtPD=iFyV~r9pPWf48VWOy9Bn=9S;JlxM~oU4shBMqr&;n) zv-necIqSlJX=cB4IFa1&u;6w3pZNW# zW@@-~9XlGGl^CM`iv`)JV`H1P>C4jxA6}Z`!#@pgR5*dSdw!iYg#atNw;j3+cL50y zak&b%8a5fSUy;4#3^>&mH=3=+GNbA)?hgV+Grq+ap)yI+6255(n%i6@j<;_HYvs>c zc-|bsxw;~Xu;B?DE+z%1WFJy#zmqxE3-cfb@;-0Q7YQXTvHg2>Q~1C@&S-G|u4Ar! zm#Gp&$235;71xW0nsK#|75e?a$JYLg5sGbc-wy1RaAVRU1#k! zmC=SVDKNX1GjTG`mo>i@0T|_CdzfbdPnf�??IiQdMjR*!oWSM1sJfXefE+GBbRx z`_$?rouY1P6B-46YH^Yth=rHK1$auxj{V(+cvAsY?%v&eW1zdkmy#fK8YRUf`{)e| z@p)l{mxd3NVGGswX#LKyWG`j_w_W5?=676on`71v69YGZWb@XBozz@J+v|V_R^tiC zC#c7n_H5Wzp#|m155Wsg8+f`hmg<7_)zdtr&S!y${tmlxoSejXe;P4;X zk6qKHTQFSstIO8qv?ToWSojbI7cMxAXvOF+rhNX*=g549`J%V3M-N#nMGgoz9WDPDl zp98hB>(#`5Tlrmqo7ti7zD*3YAdDX_6H$CNGxUslDdhHw7W}t`!kXKijP{x%!B@L@y)qUDj$$o(MTpqW3=G@4}9Vy`J?NkFJh zu)!#oTFRox4%KM3A>di3xvbe8q_0*_T7@^+;p6^*90b|7PN%GluMR?_=j>Q*@hhZ~ zVQ?->QA=NwnJm-T-V;w~q2ry35(t~7Epv>u($4%eEt6)uYBr6ZDQL)3Nb|)ik`;m! zY2#o)8BJpFL2HrI7H-1hl-(bBVE3=0+5+c6H$(QGsI0gBTm^aulH49KF|_1s(+?^{ zTxLTYoSq^26nacLK8}P{>07d#MMS%gK(l~4N{jquPVFk|XXk1e?AMEH@0Z&g2lj>+ zX~JLujRLBSqw0yTfK7FV{yfGOJBrc`?rVoSGCCNks*>Cd{~{o0A1B|cqmBWhm(!*L zX}iDnj|daZU@E?lyO778#Y)L2A#xg!=g`$xf7=C9D=AE&DVl{S+q`O9Bt8 z`BJTGoAy>{E@XZEqjbpQJl6mGStEKM)$u+0!OU7+eJ5kC`K$0h?cMW@2rk>ERlIi* zYkK zqjsJ(0Trhd2P;3rAwV^exc^5_< z_#%v$sW6LiUd@cq6Corj-cQa7E!H0{5 ztOReeE|G*{3s`a<9DFK$0r{n9;3efP&da=z5J&#->W2@)yKZt5pYNc0u~j*dlFG$u z@7DUT*x3AYuFgwwQ~A!;fgWZ!orbT#v|Du2&~`UUr){+OFZlB}@y019Xd5oin&rlS zf2lsS@U4z@*3`jh?8XbQuI)xvxKF zHg=EdLk-Ykrgm~;anDn!Wkxr|ASwVYjm&d(z^3+M`OiH7tf=rkX3MWJKpjq}%jQ#I zI^4as#Sam(>5zv=${)jm$GiW5bQsBu)kV3aFYAUri)wwKmLYocaZA&0abZIs_5HTs zQa?urQpJeadv2(V9bVGW!{Qg}g(O0-Ct83hNRM9ji+`mZ&4aT@>SZvwp6Ab~Fnpv( zbAc{&zrqTaWnEv%kvuMee+=k0^~@~ak*xkEtqt*Is8AG4Ef1PO_Xx|`W`FJrt*3XP zOz6M9ajl>>SrdInl+5f~gYcnHX^9feTo2-~ng`XqIFk%Ky%Rl1< z@fEXIkN@e{82cSB`&___AV#&rbU^eUz4Vs2$LbEoPh@lxRp!n8=6=SW2?|ryP3>)?>@J7Q(<|XZ2I!Dg_lU4( z8SqBJ9my z?2@C?(#u0%fx6HG|1$n$zVL)$>lmyGsWjGI#YS(PfW&<9l|1$w8I(j;DypUi|Nd=< z+$rQ^0Cp$g%UuHGy@Ilc@eiAA2k!T~n`Vi{ul(3bizQ_54-z9*4D@y%6SRd?Y*gJ> zf2oeITn*{H0{T#%Wxr%!+i`&*Ni9G;bM7Brb?8t$+>^aablxf{Z)!A?($;h*@I^5l zkZ1SB`G3|T|jTDZ8uoXQ~0 zMnkgiv{SgbCrO;TpE^Qc%*WTtS?CdUB+>7QCOprbx^c6Yz-f}vo>s9TuhLCZ9no!e z@;BXukrsG!i~G=gpzCx$i~`M>P?n5qtTk}4_JvU5R{ikYml_uvK^ON@G4e~qfkn*A z)A7aqLr!1#5v>%kPRoA~sI{(ka~5tG5Fr1q;6t*{W8;a`fb4uLG1e}xj;Hr?&0Pj0 z={2)dA`1mI0XbIw!jSvtbWi*qaR!$DC9(|o+KgxD{W=Y=prX)<2ql5tA^fvLhsZTP zeK|CxZeuU?3ka#J4}hWR8^qYVPLyR6zR5vRzca;QP%9@hz2QQqhi6eY=6?s)gcYZJ z$S3`;dQkxfZ&(rJ3sz`g0h29W$jB7`tfkjV*2~LwQ~8*VZU0`4v=SIhdx|zI-~nr3 zPH+MhEfO?R{1bd20*Ce`fwP0z0o;(NrX58hOXg7uR( z3;Knz(!aIG=zK?-|y^>ODXw=TCQ7j4V76> zdnH-kjMFkaAERz0$)CwN%Z3wcK%$D7rT!X4pdaVNC&Rn^D!BYc1gFeR&%o=k!G--! zvbHNEPa*wvDBAA%_tFLoh>!icP8`OF$6HjMbF$e@qn-Aa-aW(kxtXy_Kt7cf(h5K|feuQ5xUNfU;Wmf6tV+ePkY&awH1*tjv)DC2OpnofPBDm*A}7 z)1&y@&X|G%KJG5B`X>3jkXaAl9C0#F%cVif-eaXdNTBJd6nBuC0j#2Pw@2sU$zO`% znT(YG5mw1P=G6pQ?0wC_<1}B*ieaV{tigxG^;^)JSMbmoE~iL$3B_@1ruBK^AWj7w zy^_)dj~@zpHct?YjaT@P(M*a0Os7`>bO`zt?v%TW?-zU#RTijqi?oj9j8P1%KV3!1X{LV46HP&2d9%GP&>4RIzf(z~!Uw+q4 z8GbxZ{&7p>VFpBsSc-ii(~F%I$nw{(mzf)17CxsOAH)=1P{$eSejejqn}0d973#O3 z2U~aj-+4x*etH3of&Hpuo$99?pJ0g?orfka`a#$+bSgsdNf47v=X&Idfqw2Ktls1C$(0av? zi*yJlW!Dd9DZbVdx>XtKb;T>EV_G|whQ{^$IK@mOOUFb6H+H#LT7)m;p}VqCkmRl7%a&~Gw>>|n-llAp$NY+&C+J}x>_>*hcuoG+2Y0RQ`E{gRv9`16lnqr>fl-QRU=IEw~7 z;*{Y8CQRXFKyRKW@8#*7u!&TEZ{X(BXh|UJcNNP=ELH9Ez$ZTWcu%ynTG51_`vvU7 zDf?cNhigSRjo5Cs^%QKX8;9F8UyTz?a%%?8lBiVB{29wm+&%l~D3|8Ax|U)N`!svy z?Z*xdLh=Sip%rK|iAN%FscYiAW(r{sKy09Ax`lz>kbRr_11r^6135iEG*NTDevIkg zx;u7|wKw(?iO!V0h&Bd>LE>v_y#=dqgJt?1j*DVOW#4N{>v%J*^^?hJjbon$n!&gAvU=wL)#=L=aKr$%0$c|x{C}giOt5kc zMfYrSn)88Z^@N23nFoJNvR=@YsXl4F%>-AVsbWG3sye2lEPnUB9UFY(d+9q$s_oT3 zpwy$i9m5GL?C8FB>h`V80ZKqpb`|&z7Om)J-A;&JGEDA#8sVDMutvvbs-*&h(N;@l zIw_I+e*6x{CQ|q#m0HRTKrq@FBq|`tPVj=dQc4h(qQiZpQ^)oJ&4+0YDf2f_mK}yD zL-3kR8^4CzIjXeXk<|l})v5*g32lvxhIe-vop&q49nGnefp*y6;PJM#s@T&pzWgdq zzfvS0&+z@j*X{wFW}M9?>>6%JZKqWRd`qP9#CzR>b)LLEqj=09al@wxk1c1v-e4s- z6E`|B%NnhsMk{r6tt*jFMRgI)MiotQpE)}!n`Z4-YH!NC#73-^!Cn@M-4J!gYpO1%Pu>4OU>uyz!-u&USM>!jIcDJwram z&%s*d*G@Z9UvC2wXiL(HJ&zY!3aWOLT9$31!aSZHel5pRh(7FvXx+=ENxM!qM9K-U zw%8}M)sHUef0QdhWp4V68;$_9rnL3`!H>JMSJ>W*ay-r~RH@t#Iw9zPAml93y*az*G(=62a*&wGBpa10hmti; z8dD>Hf%R?=OP4&K5bj=mV%Lyu+)uU|@lmIY`Z%)B>j1xtyD0C7^{ZAHVtyUHtJ&r0 z_eLP?ReRbqA7y?bU-K8K%pc~8t#WgIQu^4G8@XHl_d>Ja}wUotJail^Mw0Cd7bTMe2Sz@qe{ zk-Bv>85M+<%e*eUNgR@|>Gj3*)sw;S-y2eRq}*LxY`i(pXf61#=sY|8UHGG;4C6o5 zbb|Hbye>x?fQ=YxvwupYoC!%Hbu3Fm?(+tXXr5$O$uz-NXfS=L6OD}E`;XSzjl-{Y zE^oV<6pXc!qRe1xGdiB$KsC^ScNr>@&V87T+RA@XJTSuLxK!>~$0fy|s?P&!e|q)3OscDEP_HXM zMbbpvOVygRZ_qztVm7YP5+h**Xd>(9X{fIt8GxS=){AqQPka3yaI4F?+oZJIvy!Rj zK;_b}ie|_^594J2tiw-L$lmeR=lkD=kJtH2(7BoTcYXERZ!D$I-#}y|(WN?cAEc?4 z74VlJc$Q6j0}K<3vs0NV?k8{3KGMKYW7L+sMecTe`zb*!Ek`Vw>hvsuvfUkdc;zq} zH`(i{oj&3RT+h=+0oFwUK|JZGX=gM2$J2XR{@?MpE>L~1+e#E0`;dm~nClzh-@liaN(WnaVOkG1N&^0}>o>1k*(6C^wH<8v z>b*l-WQNK}%Cu9jlpLs2h;%A`FsJ*5CL)g6c|r>UenJN!+_FAdu?6_5yL&iTyWbf< z`C?W$JnYuJy=WA&h`ws&?uzo1denyJ0fBN}@1J@5 zm*=C!b$#)?6eyjut>(C;*oZbg?OmMyX@s-~F7}7IB~SCyN>NUVVY_ZL${1P&dGC>D z^t%%{>Y1}24{^?sBX4e*{0YTj~aN9nWS3h#>_p74@#BIe*p2>(VWU*8F;8 zn{cg7VNOw1+*qA|cKoUjg?}=y6?6AKH{6ZRlOR;s#Yr zsbs+}(x7JO`emGCaBDg#S3xkP?dm56C?%7jO?E>S7{U2T>)$(UgRsGFG3F3Oy{4iiTt+&J z+M~F}ZF^9%>yZS4+vH4n#wnxCmV8=w2duayXdsuxk&u(N^lx!AVUdU{-q|FXg^lKMWtOqudknt zy-~8l;$)epw#zlc@qLARy)RW!F`P50Uyv|bczm2`to&n+Gkk8xpbQ~d+uRBRswmK> z-Ji-ebr#G3t{D)s4SttA<%CaL%t(6)wmi8Shim>B>3{f}9UDBEmf)-vm!kJgtl#wROP7b7oOQ*ATR;FRSy!+!3( zPTmHYR1D#>bV@`EQJ~T9c)AhUhN%-PB-q(}-W07DQWqjOCI5O;fWmwyFw)I`aN06s zISUnkuF=RwT#CPti2fZqr zx~2j8%iLQri}^aA4P+Qn&_SIqFqkz)o%M=LysA7sN*Aa#5^8^#{o4sn*$cZ`n-85& z12V8x%9%ad=IVvHNc)dXU;kx40lf4JjxF!9e1{HaM`%gC-4A{N0UQ`aGm)E9zaf2o zDEuxq)FfiII_ACPBu=3bt>L)l5YwXWke`3OLjgPAbCOfcA)nFdaOFkl+-&rlHdUw= z7U@SqtNIQ?Wh}&3V<)ab{qW87-^DImV!p$0Gly}Aq?Nw;S&}sIIm~q*wELQG|6SsXst-@k@60h)8Wu*A=o_@_Kjz6{m8P z0fwoG%Y%v8#DdKEO^lvY9a;Td%oDi$DAGH-T66is&uUp}b;7mVCAdI(R}YW&Ite;5rlMJxLyalpHcBGFh9@-qPz zf(uo7$jqMVQ1vPo9K;2Gd477Bp4Evi;Bt{ov#BrG7ees20=Z1q)k(dU<;vV)vMcV4 z%D)nai@zn1Wm!L+N!KQKV7o@RtJ^&75Ag4-xG8d z{~l(Q!X!oYtU9w12XFEbqW{ldIxK~3LoVbo_x1PB>uNcIvT=@;HR(-2b%@R=viq7` z-!Sx1>8I2gpOm$aJn%7NeJx2i&Sxpz3QfPWuV04(rB>azhh|&+LH@k?l3XlF`p65pF9#cTAeX6IS1LoVH~f)K z0r?!z33g1@$1a$P2MVy@{3d?N}PS7tBYqwTUng^dSa!KrTg&g`OMJ`7yBXM z6yG@jxjG;lDFc!34j%gLG-?RBlQ|V`w8(`)agLP##z=pl2|;|+d{-V63T9WnJpWpH zLC3gH{$^VE@dCLbV6}~<;Zr#JYeUKLOQ$mrZMX5CYZH8tNQdKHX%PdA zX+=GWw1Ei^4UkHPfI@F-h$Q2k_;zhP_uz3|SM>5Lkw#0EXHD7)sL2edYuY2d(nQguBj!Nu-n zQ8>@w@=xEXa+H(0-YLSyBCl;98DNudx04$$BERLN)hH0y`{^+iYWt-{zQ+wCYA|zt z)nMq=Ww{-IS8*;?WL2-G*X=#{0R57dJnfmx1gOt*7I3uO;}#%$93UJn|D_9@^G*t3 z*gNW+9l2$Zxsl;1wSL_8inU^1#|C=?1(?<6N2TOBOlRVayA_O{cGgc-U32uHqLB>v#i&xkzm^B zjfM>eqR0(`VT4k$SD@JNT-^-QW&xDd_h>2jmo_bqERmYxj+eA+KN}lwR=A39!+*1U zGgkF8DxF1M(}e{hjn5%6rWkw4zW{mC4-YP;UElvu$%8f5$fmfjkvsm8Pz4vNYvpl1 z^?s!5f=QuIHxJ%DYcaj~x%ji;llk)nU^enTl7s~twpC+OB**!L#-&1&q*00650y_X zd3O+Pkt_j+>p$pa8Xq(%tSjem7Q}F1qx}GU3=JF;W~Gi9@NEeAFAd`|iez6iPl)#U zJoB@+4%NX0>e=$o0(+~ZZ6wG!W7w=AR7uXjkE}1u%)P!h+#VfKb1p{(kESB8ifvUaZcFu3bta*X}buZsu&%Plk*7pa{gM%K{rjzON|L4s>D^8 z8uA7w<=u~}A0b04AB4cQI>x}kYJ|{6LZ+=Pfyp57pX&>=GdA@`Eg$Pl^uD6arRYAG z{8y7WB1xQ(Tu{V(g7zIx0#PCOKa>xKuzYlue#4RB7;tH$bOyI1LsC`ey_yG_C$p?t zXCCGLm(7V4PfK&PY1+kHADx;J=z4m#0q- zpby{Qx%7MNEv~!4h<<#(Z7Fd%^;E`SbH3*pWN<}^=`%5~#+9j*N3kKgQi-e_?3|4n zlG#?zQe#ON{v4+#r$KOR^y}&IrxyFqzhMfovcI*|TjRqk_+@Q2u&g>4hY8lq(s^tkOnaDL-f z4*r-7CfC4Go`0SpsnxLA?=)jLzL?Qu>K{C2$_jPL;6#@r z3~e(=DbsaSm<$=jmM;nULPSr+xs4=B01pm&JkR{TQ`g~*P%cSE$4j}t(BSQSuk#RO zBiCEFKo0*Ka(^ikuJF&{Js>_|!te6O!-eS;hB9!8`w&mT@|~lWm;FI67e3E!a%eBv zw626KHCiRdEsiwM~l9k9STjKe<3A3s;5|rw%|(FXaxBJ|PX~FGqM! zr6uDmF4uuR6>As;N%)IqC1tDTJ|%_)EethUwe%08Ag#gQG)6l^^3Z1e?gs?0XFexo z0t~O*oB-EJ94pD^36mnGUS)eE50zeKvz_djNAzC}fh|8hv9l~<_p3}ZF?umeSU$&w zxQ!cD(XJRh@a})zBs4vp1~k?4S$M{*l5YK-##{VCW^}PpS@lCSRHX;Y@1rX@cv(Ls zEG^xMzVO3hSH|kVP_|%mhc9f?Z=ExkZhhyLIOac@hhsSx*}FPwh%FQwi{h0JrQ>)9 zJ?q59smTXk8bJd6_=@o=xDbIy;O%qydf&p^3k_OECF{{C* z;bqta_wIc)tW+Te@+7Lva6Tsn zD3eGzN3alSBQ)wtn+${?>Nc@%ApxfoIlHtx5jl#de?Qa})+I+phnvuPHn`P6qa;2; zawulcI_neX-em|D07l?j7=5x0Br}@Kcdh|WPl%iUO^=}b<``j9PK?{qDxP!#)+Usr^dwgvm1t9li4RBX0)rEt>6kXoMX)gW@ z_H(-2txFkP^^oT<&;2(uu8cmy$1i#uB&7O`%JAY4smO4_XrO8Tb&$q=`=M$B<;6(x zFa0E(oT}*;txp}Zg^2?|DU?q^W`F`P7c7DnKgaQ}ipj;hho&nQv`3wxlo<&C&atQJ|7 z=GNZ0Np6HjZ<`Fu)DqqqX45b) zJyREdv+916p_(eul^{Ky$w-)d2iFmvX$a*)?B&|zGUc0GEB$MyC)W_S!7rPe=#uIy zXqK+z_?p|kqrpNvQZd8PeYt$v%|cUgVJ_XUFW)L}fM^bmz5zs|q@l^X+^Ggeeq zsPv#JeT~BqWRbHhG$h8@?P_MDLnmC_y{;KG(ICsNK99BSA#(eIq^nC%TD>~(l#X%8 zW4#uh1dnjX&z>R#TistCHC?Gf4=v<-j(Cv{w1OzAT6n+Ok-T33X>wbB?X`>4>u&HiX&hs^^SL5ODxlSQnW zyC$sZsE;e~wQuA?lq9H^g1N4jL*X_>2ys$2CCvS3&P=>r9E~caWYcKr@7e3zBHZvC z$-MxeSLhqoh2hvnuv`*|jv+elv<_CZ)BX9MZ-fr!?RE;Qn~V5Qq&( z3=w0IZI{bJmm)lM6isFsh$gCDsK8^Vh272(#1J~bH{h%ryCp@=#d+DVS0{ftM~Y4o zS~4}zMwpxJz4;!Wsfg;g6QI)>mqY5lmYI>A6=e$EAyrJYIbjqQiQb6+$fF+LftKG3 z)BxHS6l*ZE!VG1b)69EZOnHBL--r;+K}u*d5X7jYh;wzVy%3tz<$L?^vjii6H@wlx zIA?VCj*<2LA_X{q`d~&)usvoKPp7D{v6;{Omv5D6ubNRc7lM8M3pidyGEp|yNnz{c z*@ONf(1~m;VK`^J7(`xu9kQKP0~2 z;aB~)>qGzVVA$qO23z3Le`;(6Kcoyj9aodKy6Ru<>mM1GiA~mLe+P5?EOY`r-t%jg zW8*BGHTS@xcUJ58R~tJjXS+IPU!6Z8Kx_W!3FPWB*P35ZkQDcodN#k6cZzGbUc6q= z(0S(d@5^g+E8l?z?%)?;kZsneV=gP-o5@YfUc5~3L>f^fu%LHpz{Dh768Y+h9@x7$PLT7XJ`g?c9a=j4)JO9Lh=ctd8ah< z)t};yv-@BIX31%~9JCA`Q9tm1;e^AXVe!0jmgc%r8}CQvQJaVK?TY6$!^rTTqlb_}h)ej*mB>+3ur{XP=TEX@Fh+uv?f-9~IbSy$QNX2KJOX+#lw;xnFZ-H3Q@ zg_Zv8C3O(w^6?EPl#s0D%-Y!)9qu|U5T0b2S+OI)1=q_wnkO_xGj<~X(_JaBq|L=C z^qzEA6V-UI>;Z-O!nMEH#2MH$9%d{i57deLvsV4J+X)kZzMr(*qoHlJ)doz5#M@CE zmJV)vF%>{D)0RnZoQ~Mu@3vPSF=Tj%wsbttd%twBz_u1GT z8D~y!U@~;x?6ggIn`}bmP;~>3u?09`-`qn}f_GeXpNtw`B3r+|In>Ej_3=%M|JNFb z=}!V%QoiKL)|3c;KoFns%pp&DkwSAw(kLeL_kD@`8zks@i9G45sl)tmX6$Ng!cHhX z;xow9X};w5DBYX&lq%Y~Xb2N364V%J3faq`BnuBwP<)=gCgIs(5!v>~+}m5TZ4{zJ zH|#dtj#|-s-O`&AV@i^u2_5~v7XachhZo=~KnvTyLTHVk$k(#Yb5F~sdN*CL<+ z1s9+eY5q~nj2rXRz$U&4Pb+LQK;8qk7NgFno&=?wa%I$;{4323nm4P-*(GDc$(q|u zej{~FymUK0m2Kak*O8D$$P~0{u8WD^{?p!Z%1SvCbDG6Txa$4{H)MUfZo{jCzDCsC z7%h+m6#q`omeMbmgon{)`zhV31u;Q)v(gDbv{oX)z5|R?NJ3aD$0}6c9F4Ki?9ES( z>VOffoHa4wd6;IxSpSN`d)y)UR)erR|44^$HylLY;6;hnytfwPsrlqzQ!UJ-a~>YL z-26YD23AIPhJs&ngYvN&75JDN?(rgRRF!G!I7Hs&QZ|rU`x})8%25iOC5Wdk@@V@o z3*8yE`MivS_j=O~y3PWr#9Iiv`KU}UCeqmt_(!8;r2dlG`u3dn&>YS%3ApQeu!oBD zk8$dxzc=j_l%dl0kg(omR~yGu)zID^AURb_NNv$6L^u!e9@Uemt7<0K5=_-|>jL%@ zY^>S?^2~Qi`Q}`LDtT&X4i1?map{s#64yW98A&Tz5#fjjqwH{f@!g8lV#p)&K zwQfauhetR5?0k(NHyt|)Iu+37qf8Qtdebe)%!R0Gc}E=+MWjZpdPlL2PA}VZZQ$i0HXWRWvV0CB%mTug!Fz`R9^4>&d0BJ*Y0o(H z;!wy1?XPGbqZWj-QJs_9ZTo$bvR94wRShRxCUEDgiA7p8^oBLw5(FRDZLi}>@Y(T; zUKgG~>B^hzN+JRiTG%b0OjEzSNE3euo7%D7{3f$8Z&oW&wLhXj+aH=ZqHDrKZ8$fQ zGd4B+v1cr4e|!J;=nsMT0AAohtc6MA5!N;K^vl=6ovUikDN9nBWaggkuU0OCP0J$h z@)~gyciGJY6X0R;id-?@M#FN2iHVB!sABqG+0$li&^pN<3WvPgrc;b5h{v|C`(CSv zZ%$j}p;38YLxaraB2~V(F-E^MQT-$9<-tTBqm9yx9YZN#JzIBC$O_iJtHUC1l+K&X zRH<;s!-$}UIV{L(k`O(Ud&v#Tf=YH+)p+1arDXe707Cj4p2$ORPN>4;a_3UKYeM{y_{X4IpWn#Sa5SRID^w%LcwBq!TiO&IGcGg zM}FfeH_kQ#U8785npzBAc<*_Q9D3LJs%`4 z7J<}ZK{sj4v4d9n0C!AXc*Yn&v|9lWw$@aqW{TSyvt+3*@-$!K9G=`S722cx)uI95 z7UF^KE@`KF6aA1{15!7-RuO}IwXnMHEF<3Mq@<~y}RXmn5*;-kAMf$9jI~?3BiJ1dFSW+Vt@QT*GoSCC&h%HvTp=6y^`<+ zr<4eYyOns$^R*!|*cc^~OA(G&pvhraM-AS}I<^VkpLryF4}Rg6 z11%c)lpzM9C66fUw+V!LRicv@RhY_5qp80AdA2c1pE!$@h|e&{+O2SAY1n-3@FQzE z?7Kwt8iq2s=jg7}^b|rl){EqR8Mb=J+TABK;6yFeV1}@WcCo(#6=0@x1qC4o;!iio zcK(RwStX2-KsF-UzNqZi9b22Kc&(wQqz+&L5dGA(GEhm=lo(ZAG6Wf(VDO&PbNcD( zX5%v2>*cnE*$=BYHz~ef3<)tvyN?K}BriJW1YIFo8yT9wwwuc$9Y`pjt9b~+x73?l zS6Q!nMxWJV%HPbfyWnCdOYDP}tE)LisLPWq-b(H$ z=x<_wZ|&T~)f4Y!mXtUO=6ZrQ9EY8sCCg+^=}-5wfV!~8pUGYcDrLd^S?t&LgS2ws zDxQODGzt4eQU=QVOxzFV<<3l-GiUNZ&DHjet*GZo3&hIr650=29=i2nQtRmt%DD+!$*T=TLcXB zM$#pcn5Xp$xN0=XL;8ze6@?eiHeG+k8W z>wj{EW*Zx?J)R%Wl1lKVwBqt^z~cr9n>J*FPr&2b|D)+V`jf> zqgIVldlpr*R%}X*+7)|;7F8s~9x>XYMq*PGp+;hhs-m>jlm9uN^D23p{GQ+aJkNb! z*Y~nNtzRtT>V~t0sgS?(^LvXatP~+@8WTu}PSeXV%X8oY?PH?ThlXjZ-yD$GsQj1; zX=|}gc4>Y1iZdx4p#B#!+!lCe^uvovmW-Djyr@Q>B?icxN4oKat zmJA}1R-7YoCpjsRa{Uk}`xfc5X!;Cw2Y3{ z)a~)*lV1WEQ0NTdObx%_CC?=bqign(W30YJE!5-?%{AYaGO zQb$-7wA-TKn|no6_VxU+f(4{Z*${tl*OV7eJ5Dj`l=Yi(+zv$Gox1j*Bb44}NXtm( zZv&n2ym<=`$eIzmm9H8Ui6^;il#e9F>{`00Q_*|%zQ-e9@cldC|6*$l{lq438jY=! zeq3CJ# z3oOICKx3og0(vl06Av5>n3~!Eu;TJpzZa|O9oQ$OY4OMUUPZ=Ju?1odCEPzsYmYB~ zAC3cT$Nf9cPGz4BfglKBc3Eue{DoGmnRe-C3#ecoG8*zzD$C7HbJ za8mk-+LQ-n$jpv`L+H%hJumxB(BC0)TveDm?0`@|2+WFKpReuQsFGN5kF9W&(?Kc| z7UnA}kDm&p>v?iffrCrDIo_klj7#R3LB9a%fY^~-;AmV&Ze>U^Ru7&t0Mk;xhdNJQ zjBxo&mT|@J2?v;RY(=Tw&5!=6UFvwWzx+&g_cZ@h+#KHyMWj15Y;Py5z3-m!zjw~8 za}0_psv^Tg71D+A@R*93-a|J&T%b?M?U5Cm%c6_?*`1W~{1b3`#V!|nwLw!N{{3pl z$j-0LI9YJ9GuttxpMD2l1m2?qL4uR2hPP7M*y}t@CKRq4W z_$Ypzkq$7xKReBSl;DH#9-djJiS0aP@N5i=V+|h}ziTGh)lYlXU3ON#8t)5!O%mJT zPiB%s6^31zgg6G@yktgtbgw|C32!L}_s!7yvSO{DhdBo5ePGv1PR%~Uiz3nG1)4hp zJxD!9zWuW}4xa9x&WH=SY(l71lL7KL>VlXqcY{wrLd~R?HnZT7cNe0JT#p>&H`CO^ zgZ|L_2Mw{HW-V$swn98fyutE0j;;@o3kUB(KhgMRRpMZE^+g#Gu&`7NabbZ?DPRlh zX1>igSa0c3nm@+*kceE(BYpG0&MltH(A1wb>5S9jd$Yzm0=>-SZ31D%b@#-JAo6oy z!7b^~v^#<(5L?L233*|nv<-{u4avmatBJm@9;n&@-s;|&9hV#!7h)Ek!(sV*#)_Ef z+W@};ibN~8m;JaYE<=97H$Lvq7b8Y|@0P)a!A4W{-8^Z0%yEbcZck7?Tqc zDgn^-f8N8@^KJ|m*;Eu=GGXIwho{oP6b--l^sduO`Bnt1r}H zXVl(F2H}h?nv*2=kM!d+V8Jkh z!dig8-wU6=Rn*vPnO|6Va>`T3Wb-=}2zu&J&Z!GwpZdk|8NM>X7a0-xOZg-U`7NVr zRu;`NDlxLr{f%XehLym)*j0F6*YwYsYK*kzMvsUAFD$J;z;8K2x+Lm1R$xIpHg3G+ zGcrk=$^}aEvdtBt?FuSwrCd1uyf6StP}%8G^0){FFwqpR zO4;o&Q93rh3{uw1pEqIR!v9E5+Fo2dc1gf`F_&BbivwCfQ%?l-J&yPAe(RLvglKrDu(N_f}Yl34YGPW#+wC3Q0ERk;i zDC;6XQM>!R=$3vq`5%4^Z!}3dK(AphbOYt{kra9H;;}A%_37%-Oa(#qx3E;bU?g3x zFc+W5Nhf9$%t#%+|A?!5UVJIsgjPXk>fIMon%Coi^fq7$JL7oJODh{qLT0&xs`KP{ zb`f@6JXdCn0nNfgIv(Wd6~wGmi}(cM!WE{yu0>eT=BdPL=F91kC4%w!=X=ae%1Q7l zv^*p~!xRJ87|g+XHb5By7sRBfd`D z;CMm&Xf@RrCV$pn#R!;}LpymFPTEd>UOPL-j$gZnjB&1q@uN&kF2+FFsvFgX+e%d3 zQ`5|RWV(3w{|3 zou4e@NA0U2GZwI4-<1Ba2DB#L-5$)0{CsD~s!ZsJ);xnVR}68`a}j-LxAu+J_B`Z# z;yu~p^~Z9qCLNMRg;5|$AvM}`$IrLJa~j6E?x7`)yKSC$;eWfj;@N6b!@*fG=F8uo zD43;2bbW|=y_Sbdm7u!p{+;bbQ}$|f5t&3{yUt`??j=@w#p@g5VW z>Fvv3h!q?+&j%}&((uma0-^{iW9_y6S}~zPq2U0^J!a9+`qwOXtXJQ_a7u$p24>wK zp6}MSBf@4TH~K#5amJ{-#V7G8&I1*RQIowQHK=}-_!u+b{;+2$Ha7&xbdNDWMy=&q z={~5>Y>KabpGuIMil3xH`^&QFgRyo6R#YTJEXhSL*Fn5u$aCMmVCv4F1IBWSCwEn^ zsww_RnwMAXIFLiqeLhapllMhDwAkN8b8c!WSf>iYe^F3dr^I=}&0~Ou5JC9C_OmG~ zc)O`9QM~-=itHL>hbFlPUTSut!tZ35=l`|i} zsY9I=$SWe?yYh3ijhy3f7?-vIrP$ahp{eqx;4D5EdtncmFLm@|#W^k|5(oA1?sBWy zs5$5&tN}JWcKN+i?ZFZFk2#JL1iKxC+*BC9&Y!M=Ux2(z%9iZnm&n|2VmhSq`=bwv z;xRrGdI685F@zL-m$q3*w7PGdEvlPas$C=rM9zBIRWpjmXfG^gtmSa_+2&SXxnyY{ z3s)4srsGDMu)GuqsUBzUl-|4-feCBjY6B>$PJDS5!JgISTDbI`IpnLl(Qqqwh;A%p z)!XF>YMYd~FC7i*T-E240vvUbN-+h4i1tN$cjG4?x!iDluX%H>jRkD|L6r-d-S_4` z8@82cc&c||7ng+fF}Av(D4U!D{RLVG&=b~`{J8(%D-Sn!Mc(?}?i=73Za++Br_}12 zolOPWs@{Xd@0j$U_*eEfgu!2PbQ*P}CF%+NS%4Jk?y9JgKT|0Xw34GUE80NY$hTDS zGJ)@MJ&J4P>{1L&6cqjf9?#w2jQHsNfp_#aFg;Q* zOdrCI=hFLXJ9^6kAmuLn81{nlQT1n6k%KuL_0u(I4cWVc^|XY_3XBSG;TiLTsC51k zZ2OW{xb|zq%vGP){E#vlx)kD=bWM;?%rh+n+b;_((ETSl?gHtUa0ACL8@J5yv)(#S z&tPvt{my+>s=;^67ZzRCxCM?Gj<4$<-5bydrT2{G*OwWDDv=cRw5a@vo8Hu~JLHn3wn^Hy*Cm{Y%yND&GUNXH z`j1W5^mF$$Vy*H@M^Ue_$U(#u)_Fv-NFM08JM+uqWl(HLK(^z1bHwcTTNUuE0`Cg2 z6I`(job|6t9)zA37!=7CK5Vz5>c+W!ezh8?pWmjq z@qW>szme_9TR;Q6Ll+6qv5-L3c)ay7MQD(IW)cfg$#^@e7zZA&t{%5qOw=mHklpX1 z6RW2fmbU~w&HY+7seJk3^99dnl5g_xbC$Fqm0>@YRvjRvq~M`wykoge_S02Z@dLv? zd$%SC+drGAT?pr>LH2m_q+VG-g~qcp9|BS69jDC`L{!h6Vkh-HVX`K%LR_7AylUGY z3ZQ-VywCce8|JnTpc3=ZlaM9JS}RQxF=rQ4FU}?fOuPSNmiDfhf2us_0wEabPK@(< zM&4tbPu`qiHOj_VtFkeaho85$Jz zo_xXWY+y^VUZO3}Jq0_F4)9l}{t$8VO4FYax5*m*-o0S6crO3V(8S@RnBRZz1>}d6 zeEgzn?e|3)>Wh3h>yy^HkROh{w$EPu?rueoCu36qW@En|&4_}JugHYK5@Q{^CpK80 z>am3ZwZnt{t2EyAVLxN}A`h9v#@fc)L0WPTrpUn!WBci;u^QwTj&^}u)X!~A`PZJF z?qZGSSR-$te@b9-fhiKmca0=JDUU%gEyL?5h|SCp)=6n@hP{vawb zpd@)j0y9?oX&gS9K!6yw_&P1*rr6KN>%PpBBxBj8?B&t_qZdo_!VzGb4TlPk7Py#Z z=baM585Q<|7H?IC(jdvgrOFwBdz)mA*hS8sho?S|JR029r&+UUQoD zL77ACK>i*ww6{{kXly8Od!97$U~=`!H>v6AnQOUEX-?$+(B5|v;F99Y_4NWr(C)bB zE3FJ7MBifzn5asHEK4#)E$1%0C8T-HA>%&!X=@Z;Y9-l|f~TKLmX-pj&~OS_ef1s<_Ph?)}jBaKtyeRQt9`Xe&X);o45{{g#h+UlZ#D z@xz3Vc{HSpjh`WW$Qqcqg&EN_xxlw_cZPGM>~q%Z&$pyt#g6OUtyl zyGyZbgDP|thTQ)!YjE5JJDe3<)_7x=v+cF9EXo1Ad}fiyKQAVLKF?x|Pw8BiPzha9 zEt3QV(cM{$&A;<*d3MniNv^2S1L59E8T-Vd+jm7}e&CrpY}~(1jc`gv4Y!%s}0XvITb^C>_!b*W~-^o`1PKMmW5md9w@`I9xlYyq8z6=$HjMwTmn3|OF(VDhN3n?MGul}S>6pHH@Wj5Ql* zw(r+if1gM|Sw*q}iA8LRqdqLKRbeC|fpb7E+PT|kYlxy$l`vJ<|c}h z%?lpJ2ivz(wSEe8+%fT5){Qd(;ej373(w70bU_>u6^lK>WMYGqKsF0Yid7X}p9>`` z|EGaj;@nzcQd;Ae!ADCbIbxp8VFm(??TQ9{uheuP{I1z5X@i~w86RF{OU8ZX zVePZ}B~n-ODKRg#tTLvBLXief0{oNUZAl?J_Qe&ZeC0=SrhrYF6LqEk-Bz{#)a}EL z7kUbyG?p>^TTwT9yBYgay0n=Qt^3W1C{1N@UzB0$hH}UGR25Llz1Sbx!u`OcEd%_8 zNl=8}I!R1c7qqy2aJ?b<8eDiFKFoCy&4aU5>Qg!h*$1;RY)T#`Q;&uVEgYn4)L~FjP-&^thtt?ouEHi^n|!O{AHyqtUDG=a8?Db?GMUq&ztS_87}cwa zDz7ZaX(Ki6;xxhcopsL+@*-<&^7&g~dS}36sjD|mx^^f(Zv+1Urg+H=-rHfNWPo)l zw3@XJjp@L;L+hpr@OFtKXt3$0if`AW&tTvDu7}=7ZUbCQZ3_*CV65F=>ArtjsHyvo zjlxTk;}a&u-^B}tyI+61Xpy!d#yq!SlX0TyY||sV;Wzp3fljQE<631(xgKW{ckc7g zb#TONI;YT>N$wL=OObiJO9%GHrs1(od^V9$j;pzjW8;B{rg4~$r)yW+i|0)~=bF;( zb8Dc!1Z0bb(*hT0KFLy6)x(fxzB?`civdhmp>mreu_V^Z?>sK=wJVHVS;ytYr){= zzw9k5mg9%E4~7Q5L5Qbjzg_0jzxb*c3fe_wn<&0laxUG@>Y>@K;r?A!VPiDnIa&pv z@ammA9yg~UA{{vXLenyJk32}Yl=hd0xC0XP*6KZVELP=tO{NzzLmAL)xyVDOQ;K-J z#OClw#O0}Mxr+%c1+Wlj{kR*)(um04@`$DX{>TL?Ir{gpmFX+cdK59+hbNK&Sux84 z-!!-9i|Jn5yb(x#@Bk!^F6gh#6N~)nZx|p4+%Y+$ZyhRsY-HSF zyikqS7AoGzW5G+>g9FPf{O=Zf4#EW ziEZnDTP2F+%}sbhM%iob0Oz)G$cM9byaha`Zy39qFE+BxCr~Qp687mKMyA6GPM#BN z0(T-xu4rB*1OpmabI z@%%5Z-$0;ebzDHHj`h{y{I@%t)H9CUB6zlQT61?1|3s>%jzpOf^QGcPD6OnSzDt2; zvA?gi^LkT(MZ1}zq(w73ee+&ZKh?Mu7$RYej0T6F$TO;Gx zJw1O3Jo$~k<7Xjz(!}i_bcT;IT*ArgTH@dJuhujnu3*q)^yK|Wnl~AL6iz9*0yWNI zQHcvr#HWMaLVq@c+bQ;4KZ7-q!mXrCdk5Ef+t>(me{b&fx}(Sp@G6sc9zoC89U0pB z8dhv6U7jUN*)$%(d2y2;6F zkDono^yi&~*a~$9oUiq2BwzOC#iN~^3xA6u+;+NWdRFuY16(~ms5Uj|DK_o1sSXv( z=WXQ7h=8fOgo-MCItV6P84q25==<$OH!=zm!FjS$>)u%(f=MkM^KH$ggHT~}&LrTC zoeSSF5TlF82@j9w zEn3Z@kxKM{W19k@e;Q=F77&`qa@OGEnGZc-lF8=^-&71G?Ux0R!cPUf*DM@JTKA|~ z!TW5wbpj3jCN^E8TDi|snJZ)D>mEDm`bf@Tf1(L>>%`TKZC_A*m;!Awv+W`>brAF` zU(>XgN3~=+2lLpKaT5up`6DERWWNyCMTr17hz3N9w^$T=Y`EMYLau4fY?W@j;C~49Kc1c(`ucrAG(I7fn|XOT;0Y3+FUh@_Pb`mKA0-?2p`OV z#WrAk;8DEBF>pkw%iq@GvVtM}#z7SzOxoN?iGCIhsN;-Wkj>L|;G6s%RL@GRT*mu&M9%AZi z2#3v; zjOM@V>(SOY2z|xwaSW5HXxsc9hv&Lb8Rxy?Xom75n`|P#boTbPiG!vuHnJQvGP}xB zbgNm{wk&rpHIX6Z1dM>Fr;Ma$_+Am3QmBz*X+k4I=n^M>Mo*;{yHQS zwo0j^<#SIC?}Lm2{62x>C-1S>whj$619Tj#owd5puIg-LFE|pEouVNB%B>hkNJ?AK4V$z>2KW7vJ)W`>}dfoM+@i1X}tvcc*33 zIG8A^kKaa5fX)VW8Ccb*Tt*6|A0dPzNiwX8hG8EHjj9!j6b*4oHZq&A8y<0QkLMEdkhJx3iY zs88C8Mg_E^+1WgZgU6cMnkf4^SaENCpwi|nYLKL^hjwK!n*GMo~U zGkxN%Wm}~7p<7YwuSX?bn#cu46w*DayIJC0aqE-MA6~ zjWnR)znu3)IJckFY6KH43pu!gL%-DF%ZiJO;k`7hi31@#R@(!usE*Jd2iql*chh8;OkVrY}45mMkxbb)59Y%@nC)fTx1Wi0bV&xKknRrs&7V@L ze-P+DvWzU;L`1Wb_3m`=@OT>wjB^$}!?1eU7DO))#7goWgt72-Y{-P=^WvRYkq&*?j327TLfVFAJC{`OdKXmT6m zsn|`@sFT5m?``l;FQa-sgv(+|Q(CUCy+}cw8swz8!5wE&2=?tT#NAC669laQNF-_| z9|$Zm5QTaL9HX+!-*E0q4O`8PJbT{qJgI;H8-KCK_1oJkKJeFmw7->SpxN@W&sy0e z{uJ<~6?f-_9J5e5w4-sPl|Ni3?NjOY*OO1oqX8yuiH!Na<`DTeVmCFVQado56Ec^o zE#g+1RZoe~bR;LZ^PW08oLd}aXNBiY$MBG`b6xvD1&~VfxAM=3d*o5i$@oz%FIgav z2I$hXzrd{waO}A##S4A*h?BiUC_fRISh$;bJ!)&~7m~No$v{*3fJagu-<(#+eSOOJ zUOB`2cjjXQVNbtqqp?afPN^! zg;aA$3Y-uedg{Peib17J>7q<0Yth*8qBX%UF zcj)c^?O@jLziv|RRk;jj>LUO7z^-?v7P|(q4T3g~_g=oMTDVp*wcaxVo947VxExpeKB`YedZS%HoDKy2cb2eQQ zil_SaN=nakh-tnG=-Jd*fch{g&@+{$%ArM;R914-5;(E+pie*-ptLm{nXGsnKs`A||M_fd35Uz?e2N%e(= zNb4JS<~*uUNV}-LXIYDIc#MK=K_N^Il1G3R@zOq_ReVD0uVgfDFV{@a#QTC7g*-Ei zpY>d;R6_-k_jTW5g5RRdxenUz14qrp&z&umnDqEi5@%s{E++WL;xu0t&8A&*X0oCm z8%&eFQF1Uvu?BgDuir-xpp@53CrPwGzzYWR9ZMslr;7x0i}`XM)}AK3kt#cQ|I;I} z&x5+Agzd!U$8-7kZ};K@3c|3Aff&P=Hx#G*0;^ov8iW2RN4B=3qQAK)BOX#7gmH#p zlg}7fkpJytJWXT$vxoGgCH+#J1+M2yxsKQb>~p)Ng13%v(Url2No(RI*vr|a-twE> z4=}=D-_`lby>xeNw#!(FlRenx(84KCjxSWai?!7u_!Y%2k;S&C4rXN1N-=lRx_p%^ zA>YZ!0#?n2yW%GKYASi6cq%g8FdBJGlX;TV0T1e=ojC41j}7-#KNd$Ptuey_X6x=! zbD>Y2zNkK1`}B!Y00o@ofUYjFFoSj~@+HU>g&{)Oa0lQPKI+eVUes&~wqKVfefy8& zZzM@1^FyNMfyEWix?tnr5hj=FfW&=KF|Zc1bmunj!qxAfxURc4T4Tv?B5bz5Qr)`( z2Z{il6{M@;kDq)!{&nU5YEbg&-?u7d+2-*wrvE(a`z%4ttOXEflPX*;qwUUl*EOda z8zL1Ce|K^M43~eHnLz;}U?_}A#56ZZZC+$IF>=ztQ@(p8(SX0ss_72L*)FVY zznStKsJ=u%Z3;)+JHrqi*3Pepn-%S9Y$d)gX^=ZFY{O7bRT9K5QBx&C9MI7Wy;&Hn z3vWMv)N~m}4^NXUc~k`Q!avq)lw-F)Hj@W5YUlLQ3Qzfsa$V;HkFi(S^$MFoeA|pQ zn-rZwO945U*2a^H{;&-RBE4K$F(uC8`$!5azgdVqMLx_oPgl0eM+)tLiadGw*i^)t zmcYg0#&2c(MyRumBRvK^vA0(Zk5jASyZ!`cX9FZq0>=+_+8Su9tQU>AT9)RX-C}Aj z`Kx4X6Ca#oNabNTr3t79lZ1X{+c0(s#4rV8Skk#IxLQB&IuS%Vo7-T+RU&MPxnNPFK*jazFtUI_jzCPY ztUn3aAz0ct_1geReNyc%H~Ck; zr8mxt$pr=l@F-w-?C0zi+gM-G44?bVgFAw*fDEM;l24My4*ZnIU2B^_TGCLYl19&+8&*PQ0> zR#MA=c)bwn*?Q7hfNryiAoP)Jo;jX#pP!tBmWz&zf(uE35M=m@x$B!gk-;b=G_>$d zC%3mBmrEA#$lqAEu1|Q>Iqk06T_e7?-j+M&X<@ELV1t5;La1oCoiTXbXVrq;ux$0( z{=sh_zE|5?52u@b#?GBM-O+ws9ww$Q8@xrJ?7OL_M;cjgnhIlspR8V2ZhnV>-5mFU z$W$wZcejgvF&XE+JC)o6dQ;qyM>lq3;z3iQ;0NH-7NtA6P(5Tq9`=r|zY-5Ec0`Bw zd!YJjzDtMY+zX(<%ZKxF)-LGfbpUYFYUmRaw(_PO1uXxoX6Ie6p?=jE_=J9)mftSh~$vMOm11#rCNAY9{{9o=q zH@K63Nk4sW%CI7F4avZwIZ@#;sYlj`x@$;Vy$x{(?DZIgpAqC}d1ys_9 zW;cVeAGew)NzMkh6WO+dE3O8q(w`qmy_(@oY1+G0WkB>bmD3I8xD$ECM!#|pnFB}L za9n9WWitSqMYF;UJLYhbY_Qn3d*3XXEl+PvKP7FE&c!A>cGQ4OyOU^*18>U*xA?Ij zGzsTF-98@u^N)2Cy39IT55Z=glmurDgwPH520zR>EaSQko=%5Kpw1BsH-GNv(tc2S z(}PulFR!<%{-GeUqqRY%jDl*CSS92GKa@O9$uGt$M9tFrFtPEA$nQkjB8%5yt-oyrhMWde zqGZ({S83eL?m?Od4<^*~RN&B*nG(w9YTb|5j@m7%5wPUVfmg)g=)9oFy87yj1Ny>; zxegNFT5o+gtljzy5Rx&CeM6S}G+L)IeCxS9Z5gj+if}U&7Ri-uo3e#55_O$AyN&zu zV!;d`HD%s0^zk(=K5Tmiw~_FTI;Fk=HA%f%2~C0(;=$#{f;=pvu20xX9cTM|>cMQq zC3*>E7HbjHd<*`<9rYBuTiadk$brSu~r^Y7d1k~fI2BEao5p^Opl>AW0#b>#HZ8NUtQU*t#uGqttGoIb&$c1@5 zp$PpHwDi;ZY^jT`OD4bbPAwj}E{!PknS$YKzbh5)U~B$jx4wFS%3H&Qjcjrp=3sYo zja=)47+e8AKkL66E7^ysCzfKnZ&O(pWhR3rcnk0AOOxGC5m)4p6_vN0n!`f$FJPVF z+dl(#Hbu4abiur6iJ@JAqR(|VqRU`ZXBbrpu=Y2HoA6=}LJ$vL;or_J*eK%*S1Bv9?Q(TBoG4AcY^BmZv5d@HK?H=$a-t z5->!Kk`BX>qU%50<=qV>_X+8hm?pj@MU|ibApp9>$-{maMC;&Li~ri>Vzd`jJ`wT@ zldzq`Hmk><2o^99J7Vy%^CGZg_4NBM@&&V6W-4kR*xQ^|n3fdjK91tALz!o>A%>6b z@*EDR8JT3dh6Oj>9pj(4o54R2Tz?9k_b=W>9>ef`R(EI1S$A7Y z+lH2e@4_+qV*&VlHLKV@F43US{i7RsLx@gpDB96P1q}14n0WW)e)@!-jmxb%uHj`^ zW>9@n5OK|j`6Y9QsZ%kIe%Gv21z=XPx^Nb0>0bRkQSw>GI5z~-rCjL*iVSWW_r1`y zX{_2ExCc^C$MVMhlA_Hoqeo2w@tJ)gZ8t;q`9px*djCkx%U2IT6s_G@!IwHt@o+Zr z2KL|9`b3lxHxu`)Xv-u6!wy)M>4&E(StN^eZaLiUWN2_rdd14qZd%cXw&{x_MfT_F z?+@pQvkw+R`vq%{kE_hIp;suPCD8Z`CIpJ|~Qwga=z2$p~|3$VeskP;p!*L=cl zBl(fsPWA?Z&pKSO(W4Unn2RzqxWj)n{=;!w@JM<3Fak#hMaR4<5coFh=cN4C5$~n2 z$i|dUod$e6W>w!fc52NY4;T*;0wRf+k(wuC%jp;@A4B3)rONsPd!ED~@h?tsyR;Dp zPRf}t>QaS>4_`M@DU6#aar}y4+7hO>ZA4YZ>hZh+)FxxC(Y;Yn&Cc)GrmUAH-4QGb zMDqhR_t2XWECn+5R#bWJn-p3gaIs!O3z+O7c_D^Ow~=2M@gwGev%z8+@wFS7UR7ma zhogi>3jen=ax80Zsa^?>!Htf4vWEPN)ux|v)u(MQ6bRPni--ayEamlUD@LgK7XAL% zUYs@AYvMb}Mhk)RTO(FgA8y%TLv9Qb{K*`1qPIywHK zIThyQTRmSW|^@KKcO}W?CZ>3`e zDH!IExG*;p@6%%Rf!{6>)uV2Sn+9t%b^P?}_<}0LnEh-~PvAJC4K2sJ8Xu;CnH6M!E5Y-XcrBDe~=g=xz8K@|v_9HoADU zFkuxsdw{kpIOGLc^`$2O90fhh{hgoW3wK!;rXby68Xdx2#=x~7U)l#BF??43p$=#U z4ozcyOEUFmnhr?o#{1u*?9UmVHDzN=qriZz5%qjFmFac0LR@IzvjplM`zxGkUzFppYQ%M{w%Bb{T>=aTz zJNk&D@gkA1{Qt2aAy|ekpYx%Z2ZjHy1t`mf{wkpX@&B!70ny`%x5qA;d4v3AVn=^P z%wX+vF^Pv!&4#8Q&h=jyJgU9=QRt)=<;i~b@ zVV`Y|9Dy?|7f7-1#y?pgDD$h=-nP-Ry71dZPn+mCufAmyUqO(~)g)Vmi2K!H^ZGSd*=qx(!_U zBy_4C9DEy3>gSr|mgc${{oN;>?~yGQy`Nsd{JW%|=+~>0vrGDwPYoVqnL)P?gBDX+ zQsCsC+8xRpAuRv&GS_Z*VLx?om=$CA9Qr(dAPoywcPLh^gBq?!WC$flQa}Ijqs!$k zL9LPUp$e|?@ktI7*U&=v1#kN+H^WDUp#jd5TahO}*=N4L{jq=iUNVpF zsMwZg>CHhtE?(FzftYc;ZZ`fotwU*(sEJaTIjI zz9b_CW)TOM2p|P?Yx@Q6vNYrc$rDZUHv~nRe?f$6X6*>>Z0_54m^R*BC*NoY*2>K= z&&x}dW8ubEsWn2Due{zAZ@}^QFE4f zfBwlnpMRYAXW+dJ@U%6)GSMbB);&`FBGKFLA5~(3&L-(iMEuy@vmGyL>9_9(YP+{v zZkU_+(ToxMSl%(|$@jN)a3!gbE}e=TAe;Ra|8qye2nP|i_tE)sSDghp8mo`cxO_L( z(JsrnWvl30S@O%O3L4hfx_R5c-&F)``}Y&i+bf3c%HnFoGN)G z%?{aml@FzLSUdbQ%a3lNbi=SBN;h+DBK{Grd`MUd4kYRwvMRW%1oWijL0k7h#a?&x z-zhkLJrn%+e9`JRt9Vtg0itYuVx@E&ajdNI{$7|g^vqd42=I3^RN`a#YNypZUUD>x z_h%I_L*_aV9f`GLp+#3NgEbXW#yw(!F1G296+%w7by>_?N?6SBy0PTNO@i%jFTaGS zy%^el`~8^0*SaH|WeqN7f8h(UaVQ1sWCxDxuvSJ|g{p4IY34`}n?RbSjc0D|n)&!M zyz8JX82V?z{>3HtyGRC*2l9f>fOc-D@5rP+;XA$c%W?hK&BV`XIiWvh_eYVtpzlXx z=g&NPD0885j`Hb%HckOZb3lRA52=%eF05$|12zs9VQ6Yr49EfafZvU}>Mym)+u(p8 zaO1@(KcR5x;#PYZ4Fvn-RODTX0;w(@9YAjsDgnsi+i+Hc_vf0W9utnB_dwu+8 z2NOM2PmN+2_S1Nb{caWB`+Jh1V?t~GF+8Z4+v>u}+3rB~e6 zR&54`S4x1gu)?1^j2Y<&s$<}du^f4Y@B3b4v~CbO4IOKFQ*Cl@O2jYi+k@GuAT7QM zQ%gf_GH0<=ufuDld{SAI_G!w2lI1PnC*fu45iAZN7jHVA~#o%hoGs&sUfW{=nJ-Q zXJNuO^3$nk+;W|Ph57uJ(qtj&A`doFfoFlD7HwsyE6^GJT}!<6_U-9Fk@fR@E&uNz;_|jJ=*}(zW2CxMBq(#KVw(#0ivWm&n1dzlo>e9KBZ#)+s9GDr*QvLa zqTEaX>#wp@??O~GvjI)0dm}Zf=Al+_Roh_!YJp0OIKU+I|Sr^NCiGl2iV#~YEeZ4<^rZkf?Dw&&b)SzMQnr=fljVu zk`xJ}2he&QGFew@x0gLf$tS~2%8jU8X*Wyn#D^9B7HeA;voE>vy4F_L1O?#jqlysC zCM|U*;JPo(9V-puV+4F@s;#vBn(gYrLuSx(`|@NUSvmj}q_Ui$^DXfe+K&_B@m`IZ z&(+*NhlasZuGx>jnXVuki^d=87HhzjL=hZ3tj#ckcEgY7=bAtlvy!lO%9paAKU4x0+l2L9!5rHL8D)7Up{BPyv+-}4ksR_!hB~mAtm-Ek z3xij|cljI0oKJ(zd{xL^8E@@qxs|KV+zF&z?pdz zX2W-i=`K(wJ1OsJ@!L9T#Bba5@soKNaWu|B9ACGxmU2OPQ;fj;8*y>lf%^WB^vK@J zImg4p?mUNa@l^z3I;EPZ{Ylfnk=`Aa$vk!{(a%xesg5R>iuqsXqoH zTIyO}7P#Tksb4pGi;f4*0X=>TfO(#JJ)yd}A>_^?L_5=$>HTbc|yY>Tf`) zV@&7>ED!tLW1*X;k3VJl&#gnzo7?%=&P)N&aL^l~-GlObNW!4fo1lfCg#lpTR50&k zP*9?(ra2%G(BARkx=lh5yaJjZeW1=n%j*L9Bf`FiWF zWvRA|-=}(*bFg5sowMuvh}NB=8^5r>Fh$-<6DJzsqWR`jpFU&!{xQjnpD*-l)1#Z2 zJvHa|Z07BG2XRSRFP_^cCUxvJ{v>w}_4)lch6VP9--zrdG;N@8H%y*R0xd9v}mSe+>=3kc4-Sg zT->%CS5lP)9yx2-Ewsb;X{dq{c`cBTft8!xE8EQRtpz>vY)(k?1eYEm`bWIsAn>(m zk278=9FVsd-xmS<=ZXywdOm#pHepL`lk%*kG~l!$MFBG%3=iFC3|iFAu*zQ8lC z>7*#daF$uh0|M95IEJWoXE1L&89J!b-1EiNtc zh2Y`A#Ye0JEq1=vE$Yfl5Td;NwSxgw%5opDoz#28en&E^`3aO*XH?2R5fHrLEU8rC z3*IcViHY{w>FG3j&>>@KeJa~>LZ+KoWg^*p7R%Bf#9C1`*QOu^V#~zO?K`-jx2zMA zTvx9H{MM@aAp2!v)=qRmZQ?F@4uDJWU2ILaC9_7v3iH0R)RVA3_}9<$0Ux z4{nT8=W(S7hVofP+%s(P7)2%(ayPiYS5go7bJ|pWlc1i8wm6f1@$!qAL-mU zDB$h(cOu-4@^|$&J!#Yva$RuT>hot|5(T$3tu0FZD96Ot9eh@ggZF(ve?Z(;seL4= z%e2D=--1dyU1+W#Bz$>8sMnX{1t3>X+<}9cHtkRu`OQ*n0?jjjwown3i}fo{R(xR7 z4TuQ)#+?AQ>NX!Io@lnsp`<*eYRv$oK}!A8nP1f(F~)CCBk&D;rO_2WlXwNasHO@7H24e?qE#kWNjcM%@$wBC!lk}r)C&5x_wzv>Ph06+W@ z(D$*XrCU?s0>li#ZP9I_?HI9VJj<;5!4zKtlZed=Z#>QXmxwyFH?9)0zvT&zzGabq z^sHO-3byT-E&Bog^d_hLDHtLM5iOS1`BAfRx8jW&uPAq)Ht<#Q+^<9BF_ugZsK6F8 zY66{R5)3xwcD8sE<<)k)A5sC?fOG+G%L8 zpVyFR zQ^Jl*t__5CWgnVg3k0;tf`bHXw&;gC+A0^*7Z+d{v0RtJ=mrl%b=lCM2+JT@6>x*l z{bds;99l!N){ZXJ-Ttk6aZA%~&s4buUWYDjzUfgtY{#1qifp__^{_?&4r}Y50;Ev; z=p$6HdB=j6+NTk#KjplTn}ooON|BLmiMqEtR_}VeWuxdIzKRc@m?b%G8-2N~}p&WYF|=AfHA!VEAEb(Ue;(^@TxcQUN#`JbT%GFd-od{O3V{v`d-R z0D|GjUnuDA(24DmG2T2eZ+dB;v%_@epIdIrN0z~fW2?_A z1qzZ=nKmIy$f@e>U}|)W=mnF1&p>w~ZZ}r1)zpwgBiX50GeI0)t&@CDNpBtWp@h4^58@y+3QrqHp19SiS~%_Axe4Hpa=_hvW|F?T^66 zSX!C&ISv}4l==eCJ<#@hcpNQl*Ri|&D+hFUBgJH*-Nlf_I#q`vd zWL(x?nq*u=uTJnxiB8fj4vI8(|Aa=4`szn-ik9=19Z&w;VPLSQ?0XGP~UdX^)8$_@Bb`k@=Y;M3jD@~;fGQ5)lGgZFJ-GusWJE_q&oKeiaH zJ#YE*{2vhX!Oz`CYtMeAw`%b6`a3#mR94oXKl@9zPI2EqfWko+HyA&QP@%`VRaJ`* zqb8Zp(OMQpVWhyn_9hybu4O4FEB72ck z2b&L5Bk9UnL;y;H=uJWic=)Vk(y^In=me{s4i`kQN;o-&4vGC$yBEGJ1zgJ%!t(px&3}!=D}k4^Ll1l;O79` zu>!O~2A7taU?iOMJP(fpRuY9*S_RLEg1pBdo)XH|>K1N!wvU>Yb>EYtCq-8I3YW`3K{}d3(*Vl z_4?&=`>Sx^83Tr*(;I5oXRBUlcdj$X#Y7!Ca?7Nn6KN54^+p&NWdcBAz>nUB_ei%0 zg@xorW3|~J7gqeDmJ!(UWLni|qUHzb1GyxVQ zBN>$<5R4MK7wmF0`L7~rw}_+K`gDgs1^0@T@LSZB-Z=4O^~-w7Ao`f;By6TGk`(i5 zI$TU9WbeF23@)`HZO8R8hqBoAWkvSAzxL-7jq(YCF}*;9__6~Vr^n!pn&Dd;k8a+o z`8rpf{_h{UY4@A0%Dt7nFe{53O8bagL-ZQTs<2H^47b&)_)kI%g1)PRX9xg^0#X5S z&&(g1kUr5mqkH1HlAr)?&SsMQJ|NS7TQgHfWtn$mhG)2=4UD0+MZayXi~vU~0e&Wj zEyZ!8_F^vn4l49Yt^dt|{>AYHEVU75cF0&%07TopXzl^bA?+G;y{uduLx^&gpA)OPp|+uLSoQS!O&jY;33 zz)cxGXnvhg)@IMknQe1I?T@5}zqzfi<^K8UgylNr3z}d2AeWVZAs<%l5iD?0kax$LeUAe+h~Phj1&60jEqSEYOsi~!B})2VGL&@W%A zr)s9#d>g2|O%M#zrB7R%>+=3gXS=7};gjM~^^G)Z4N($9BaVszx`IsT5e&BkAwTJg zuI0ebd|9T~?(#qi)ECl~%qb+^^cG!D!;?R4P8AIxCHrw+_w0BKjD{?|$o8%~^IIo}28h%)ij10(pEADlFUlqIRs2{*@ zV{vcO8anP5lh7(V_Sne;FJ67w{f|v8QQsnjc=YU|KxC(TquOT4Fp;*T2D@cL)m3)U za4l2 z=56Z0Tx{WzJ63m?SrpRO|1#NgXJlbwsr`v^nM1b|%hN%AUS5u>A2;mESf{Tv8EK=@ zq_Z*EY&;((k{4egX$iPVBICw$FcwjKGu$KvjcsnlV|Q+zDNv_6wYf2>rkc^$+{E|S z>|A@P77lSMd*PQ03|Oycb%QoqOfp0>Aj)q*%{=ioxJqB8h~&JH`@E?(mY~x(qT_AW zWQVBmW)A$FFqQpx$|3Yj1cl1cD|4vCh1%3+b2~*rY4%gl+*3{M#m@H*DyIt; zAl7ug3L2QNVln%_Joslnu68`r;`EXj?&yHjlcj+Y=rlTI-s3YF`I>!$am-{ocb~o5 zyuae0mI&VjjRkzSkBkCq>w>F641WXlwKGQBmQ$uIl}xseeP z6m)VrKcivgBm{a0=zaiMaciCV{!0l-T!&&*jH~;n=UY)m!D1#Br*eo@QF&gw{N|D~)D1D_V{VM6 zUbW1K+ZHVcnSc7Q=(txzbYi)nWTT2I%CTvkYltOsjqf;4_qF~v(~Q?Z&W)tBZBwBy zA(~Jmx4F`N9K&488>ykes!|WM;MP{`lJA)b1=$}iNM40%9ct#yQlZBV5rZn*tw7Jm zK1a1cHwn7K_&w}!g2L2UCO<&yN|1I*or3fcgsI#`E=7elz0KWCw+JE3XC{s`sF z@z_Ql>$e;DjxCEaU%&ywZ{S2%v|rK}%o)XKMkQV`?EG~~pdQA}Dfta*@cH+K0W-uh zNi$y4U?Q2P*+}hSN?N;3PDQye$4MvNmQDVd_(=F{+VRuB`X6wSS`g-y&h`q+bj?yx zHxyIyfM?ugVC$nwmWY5BC81Uh8*cTCT=hIqFt>CRIOI~@z;GX1%xRgvt^)aqvqzVE zr{eN73Ed-Z;CS*^BR{S=5qRJSm_#0JR=x-s82w{{er<9>_p(M5Xr3GQ2Is~!!*wNCDk$c$iY$DGtm4+EJ*X&0et;K?#Vv8$=>2e>8 z71*St?MUX;Y-CPXot|(=6M}u}YvF<9-;eqjRq68q>A!JBf@Sa6SZ}K|>=*u)>uSEe z6JQ-}wledo)yc-+xw-y>?-Mp*z;$=`QYjy*boEeS;xUN$7z->~WbidBR=o3M$tO6f z(YtXGVejAfV%9%JjP9bW1UUg`?kE46L<|pJyhsX7zXKlW=q<5DTV>wVK=PPbD!r5Ux;dvN!1c~8#K-6v1{r} z_D8PCXoott^HY_L6e6YVip=xj=hw!N`!y3J1aBMU6BGJ}kXPTFZMpC?`ET51?<-Au zoNYTcek!N_DnE(0B;v^WVdt>M_2zSDI1&Autgf0@w!D-GN=6Kh0!JHM9B}sve-d|c zPPmA~fj0m1R{{8%xk4(;RUX$copsU7f35$2HqZluo{Z}@`;pI?N(W_~ba(h;5qH&C z==R|F`(r6!stDYAQ9z~Yqiffn0m?R>cX0*d!2TD>v4hs$6UoO_?!i73vts{nhjw&^ z8t?j=Cd__|M%-myd2lA?MWD)ZUC)vrR7i|9l2-k(_@`m?if)+pZ_^9M3eV=+I#6^3 z?)I9tenM)VkCH=x1}Taq>iy5ca(B0vc<+yHb?kQG^OEXu^&r-G*i@ah9Mwt?*?Q}N z%-;=3@pF=uu}r^LS|ssX-KwxSLwgH*)_`o82!A8SC~>1Xv@^sM-)lq&V2*~FgbuLVw|cZofn&XkAkabPiSK)ex-R`yC)-TRJ7I675F6*7O3^pV z;Xk zkV*B@S{pD}zc(}5spwi|r|0M*+_RFrv!Sh9<;#{8P+-Ff`SrNsu8Is)!loDD6lGmb zr$Fb>Q|Y{A>G=Y-)6uoAAo<+8k>QI|6k9X%qG%fE>*&7|4ZwSx))Dju)eSt2>V)yg z>61xX#jm@H@s5eS(9G?JyktDtQXQe;uCca$PMOL7F8S7MOX%)xsUj0|<;Y(?%9IbU zQ5d1}e1j>7q}D2=2{J->la(+jL@L1$Qi(MQmPv-2rvzl2<3+Dzv@XY-&ud(y`{!;x z%4jRFglNJT`1JrRn-f97BU`KEX7iWWJG{_?xJxaa)b)&(?3BtnX&02_6%$L_wTA{OUFD7o{qdMjb)m(~) zx3lf|KQogK2&`JN*v}f~pjGMw%AG>O>Xv%mT5N{%MXS&orbLPvAe=jYGhD4om}$KP z?81~%HE#a4kiu!aqo#7P{~{tyA&y)Hm@{)mhj|Fy4cU2Dr0V z;9e)t*+uKwd_a7Eg-HappFDf>ZX$aT3Bs~d0R8%CvIPrA-NX)h_GC~uCvvFpp*BzS zO%BsM6liE4EyOdi>=~Kd2F+~KL77SBN)DZ!F7PdKHOfA>T_WwN)IP7{W-&2frm~0^ zX?}*elAPHq)|q$uRum38Iut{<%&NarvH)B znFs}Y-4^p*&CMSxact|@RInA80%0<3N9;Cr&idb+r76ZF++NQn<_cD?B?7Le+MIf@ zh<iT|E~ooFPJCYh~b8Br97|Tkyscd%!BFz`l++6{&QtYL_a5Pvb)K->q zM3(P{t|q!gZLLNTRIWg8GO>r!rk9!6gT#I8U#Ox*^q!9<72(PRTGB z>i}WNsgSjT+?vui1ohI3#ABc+IX5)nu-gEPWoa?pWQJ(=!CHPlrD~s#pWjRVdNkxu z;aB+>ES*pG+d@noQ~qD(lE;GiFGF|vFx+uG!vIf!d^zc6-V`iv+-y>m*7(Yc^*hQl zIkS6L)-8h^PMHrMLQ@0(CUc1Ee(h6JvY@b7AKvm`oE-uW7%ZuTo>t`9m;7`H>_00w z(V<>Ck&K@XMzp!}N^t(-X$>iq38ZtWcCH`frL+6;13c*`iEGq+6ZtK=atlSQ6pnsW zYNKg^T@DYl6H2MZDC4z!BrENt`s*9Mt?W@nCRjK4wQ=LoI)nJMhNl<#CE{wPv3#}S zRIRv{FiG)_N`A0H%cS~@zQ)(!j+UQ+mx)0gD+xd4LpHxpH`PIpwZ=0N$-~JX*|pYI zzmBojq}P>6P2)NH^P*hokIcQ0LI17G&HL~Zg-JQWlsfuv>$#n~3Y$%&KJQdg+1yPL zi9AD>$Y{sb*m3li_F$XJTn}IR+rLa{>85bbFpSgv`hQtHX&P({=_sxpg9OK(oFMHS z{3FXN_mbSRovW*`D5q7rVse*b^Au4bs*1lPpL*7qh%2?R*XauOZOJ$zIgdfzIM9L1 za8WaP!v3pJG*1UYOhbyLt$KT}o_wS4m2TIfE^ z4XELmnWG^Yo6CV~FmW~BTkH8cbzp!ATRX4H_jkKkD!Z6%BIj|-FB|ofnyAspYYbaU zW9yK422{_X7Pd|Q+T#_BqG;l)BtAP;^F@=(Z z3kyck2Z|1u$n^o}(6Vh3hPt&d?PP&GkhN7wl^G%{77LLT2nfRDg zQS*Vurj>CXu_Vgs>lyttdKJ;kCr@vS?(_CjctM1T8^^mpyGQ@xeAN@H+Z=i0&3NaU zs#dEbMt=F#IxHpwqh-l;4N7z(D;QqQ!HqowjyUrXaB?t}aMtFP#~EK^0-47twAE1e zAWj^EtH~o%gtXHbOJ?<%(--Wr^h8iAhDA)Au?Pds=rUfq?>xz;%GS3y?5GBdLwT}d zC1Ym&f0f%NDLn_>Wps8JS|TLz3=4SanzIP66bNP&dd(;$Z27(1BbF7epN10J7F6(c z{3TiO5#h?tp$?ZjH1Yuw>!qbXT{(uP+1Tg@6nKWF*yT>{kL)wO($|ZScZ6Qj=^kXa zbgxjPAl62@hucQhVWL5w%mrBq`ZUlEk8iO46u@{+)*g~R{m+nrPEMI|#8bZ<6sCvj zF7NRza(IGRg4w);JeQtxPB{%MRIf|M`HfVd$jILWB6 z@5WN|?oh`^;9?Nyiebk_vWBp|ADhZK4;`#iIM=kJd@5sc4*qNt!~;p-D((HODx6n- zY(Y?z!>4QelA{vm($Ox=y8z{ixn7FdRVHqXK>B&}UeM~h{Ga0It~v+CT?<+vUWw;t zh{o66X>x*C zi__)XTlNMLBb5i?sf@`77Q1C(5B1a`4@UF9)wTwHw4QhQzN;k2!~`n$K8)Cobu$bG z6@I66K@aG&FsnsG;B?IuYi3B}xExw;v_xwF=2Orn*t&1Qwy4lGhW~=Tl24wUxU=OW z5R15F=LxN{ZRZ#>A?=?WED!Wde1Q!RiKRQZQ`w3YeQN=4;2hEgGS?mOkHVZ8x>HnF`m{@@x9hy4Ntj>@}(J+bEe%#dps@^Si#VcB%G2k&PX@#oT35?H$&6>RKG zqG(m-%^@|urI(jy;>?)my%R8>o=r=R`~kBjL>*gJ+*r4dmDG$%x`J{}zk-@kqOKux zbuhS@F$d%^f}+*ES;i*LaNb4ttKXRnjyoagus?k(G!mo9{SEhVgmly-l)^*kf$HM^ zv0$qhGkNNhY_lQJ!p2I~96PJ}^r3Q4K7`Iftfa+u;1q^Si8Nnf5xj;rd+w&HFIeMh zEs#;gt3l5U;ep&&auAfx^o1;oI)Xet(-qCE{>>+@@i_P?{A=OcoE#64eD=ze^^;2_ zMs(Z){#YzAr)kE`S+qIwq$*Q%Q)gl@X{`9a{wEp}NAbQ$P<~yfQd4atw0Ibs?~hv& z#Gsm|9B+yOY3Cmh+bIa{a=>}{Jwj?=>bY!IsGT!>P)CVPG8^;T&~lc=VkCGrEd5mY zfYna=R4x(5xX!rY@Nq*7=tdO`R|eK`{Go;0#P?lMK1!*d=jRH>9f|%I;V zA>O-b`$fn_X5ujp5*>E^(gn*r7$2B}BQsfw@C3<4^>bJ|Yl~5hps;;OR3I!R5q5O) zat56(+`O{wCU7OT{w3Tb8LgYFH{a8Gr^gBHsA*FF#ULHW-F3(7AZ~m5L}0X}JT}p* zH;f3Uz7S8;f(XhM4Z-&OyDK3U1mlWn@zU=y;dpXBcfAy)LO%Io5aaWpWU?$fSXbn9$o9ch<2@3>%pZTFVJNzO%Ms+_8B&|btT z&{NY}9q>m*7*Il#YzAa2B1RykTB$y4@M&l!%x$yormf-)T6FJg+@L}|AABuY?laL& z_$M;|;6jVo%{=d3VrpQgO1SeobfU!O!s7y;7cfJa(gKC(0k{=seeQ3as?XA%i}K!N?)*F!vr9x{X2cXQYSPs^KH6TC9b zYu9VNGvd&mL*%f1QH4kfN2y2MLUr5vRaD-MVLSuR7l&gsEHM7(m5<{8K;ux=RHZ|; zd>6-4c_q)x@l~d&_?u72?^&PS#rGpvo@Y;f&H&Jns0vD^h%{t$b9btQMN(tHL7Iv6p|#h`pQ!shO?}i!r36S=rij&eoOKjRVA6y}G-C6j{8;k! zWAnmzq4eKFsA6&SjS8uFh0u>||J~5VJo4PF7SX4hED-JyYKf{^sgewvf;`|G`BMb} zdEA@t*~@Z7+<=9eZ#LJ0gl*mX(OA?|*NFx{$A>Xizg62a3)c(1N;ve*g_^Q*eF>I1f?5V2*yb!76y4l}pBjCIQ-r%^Y^+GDDAm*sNHj!(nK z&t#oT-4E6kl%E+W%eKNVI97g8RBJs%DOjq+DLY;!M5s+|6*GOGp-S2qGX?c0uL!=Q zz*PQF{);z&)C*J1ciXVcZjumQKCTb6#<3r|T?5N62JQz3DoIB@_=Kn@O|2J8H~v)| zyR#7((*7EXIb$}z8w&ps73!44kd&0P?4_ZD_sAG93Kp)((q06_M_l*nZrD0*(<@X7 z$MXgBHZX}{r=G!zxb!UsGC}%I%hGcW#R7>_O$+}JoneK!*mUo_+Vq<76Ei8#gJ1IP# z`o5)s^U%&uG@dD^;&DRcFgJUfFk}*cE<(cRji{8m)YNTygD`D-?WKF6R(hF^W9PU7~?+$^wJ;GLVlv!~ojng8Y>PfOZ{w5Cn%%^GRbn$pG>4qm zq=x&|{|b~f`uxrW;Ie}mrRK&<71<3vlg-ka;kla4uQq%_9m5KJOx$=$AC-Dw`rtK*hZD_So46NUIGzXOX0a-N|yQe%E-@cx!fPd`efttTuN*2oZ#J` z5nP>CA=QnkerRY0zJ-sS4vv^8k7K8wT`$*rhv=c;}HvtJHYK^EFj6@6ETci5~(Hd{p-=_TDW!X+-d9OtcLB9ZTXN zuE_-=GLBx4MYKxp+X(>ckFD?uS0fYzyRU(;n}nBm!71uH6^+U3A$s9J?l^0MGHv{3 zw(#t+ly_Hppu<&dw!S!FDZ@tRX$ViEn7bW*aqL^yzpKmh+xwLYHqdyV8~iNh9-5hG z)c4=<_hwJn_vr;b#=cyO0u2qqHijmd8V*E#No7+o(OxIAWg824#%d_5gQMhKwTG@)$ z@~RO@)!XlZ!I)W;X)|cbt>XIqaoronw9F8JVGLIE20(*+@;H&~eYl~4F@AW51az@; zSza-0@*;Yb1@chI&i5Y5v_6&zlnQF(+DfU=L;l(hSj#VEk8*{UZ{ww*&m$z(C$GdT{d2gdaysoFGonaJ=kAudP{|la-p2Lv zDS)_=VtwMjh51$(*Qb3x@Kyz_1DNi37b0XO#!>NzVhel(6@_862A8xGMeMG$H@ykN zvjcRBpKRFSb*%%#R#+saHCH`7?WhG}!@Yv07@bj;~*N@THPv zUZSHVn)#D)8>7b|`!6&?4sA2+5yU)cGRmGstD0n_HhbD!CrmgsJKvbaJ2bU9g~ zdGX;>oZ2ufWXuVQ)RSuZ{47x68MI3K`b05ln)6I)lDO-)&Vs*84>2z7{D@R1Xw@Jc z21P7zy5fo50r=3Vlo(K5C!j3`j217ar1iMvt5+2?kuJNn3zi-kR2{ROKO&E5;X+iC z2@TawX((}b&d&4Zc*C%YaKiE}$Ldr%c*kPu{Hz5;*L%@9pXrZxp!R_PWcj=rEE&KtkN)RZ0@*#%Tt6A|4YDe*G6C(VgQB532&)sVi~}W)M8cH^%7_ty(V)yetWgWYA}fH!M+Nr`b=%MUbb9r3x(cf9Q-uym)o*Amk@t471S zAEiw5Su@Su{&F2~)2pHmfoXo$90N$PF&|l0lS=e<1;g#b{{CF$BZ$k) z5H*?fo9L~dBo}U;UV7qLUbd1o_OEKB4nLiQOV5RkE)0DO6AN-m?2NjGyT$CLocsCP z$_ruFFNzgtY8|8v8UcBVktn_vxkSnz-qX~oc$TNeR|T6~Ut!3xFi8=cYKpZY`VIf3 zm$rS4PjTU>{C3xd>t7G|XQ_hW1OOL!60XqEYj-1>l9 z`;CD4`37l4T9sdG(QiroK7`@E{b`u}mK9qyhWm>y7`su$+h039)sksuTT!RMeT+I*H;9hl$L5RV#^j^WzHsV+~=V5_|#4GBnI_@RxC90N)@hQuFiZT zusfviLgSQEU4VIQ`Tj8I!?2&5wxI}+HnBfUgxML00VzF}Dge0coyyShdrmdGn-GM) zVs>p^m)}Sa|M?7D6V;u0P%~oA4Eez`=}T;kbA4eNHVFeInDJ5uMK6Yna?BaPU+^0o zFwj^qYOYB%4Q?j;qPYXz`9FXpS;_ykK`l;{5;Mr+*Ucfu1O>`NkFKIm!>cZ;kv|o( zpKNIV&a)fdmQIRBw+mh)9U#e#<0vJl@&NvY{PZX_hD{5wyH^!b7M3eB)fuJ+POjmmJFi&ne~=g z=||@Wy=RGwEfZ{K-*l%mQC0e}-+d?TAEYRu_n02a-}rQ^W)LD9WFhuyp#JyURPCd^ zW)2|=`J4j@tfL|hQAGTR&0}?Yr6-V|VsZW;R{ig=@9AU)NLBl4UXH-W`Z%GeIDjFu zB@yKIm^b$PW?g*FUfJ&-q+wpDk_FYZ!wYvKULVPmw*XNPp6e-Rzhb7m(YBN*ZAe*u zzCi0zjl18Zx-r*noE984)zJVJLPp=*`y`Z#wC_eeH(ZN$9QPwASdfhtzSu*t<_8rfiMvUoUgtiaJ8oi+a9rpmjJZFQ@67>E<cq7L%W;s%62U}mL)N?{5Tk~%Yq^9ie~PYccaD~!@oVeL1z{L8rvQzafBYo zzEWuVbi1kmz58*yu$9EaWW)Z6zjSa-Z2i;&9U`Sd{b|v>8`Ce5zfbX)H7*DH@8`3cBC zDI8L!!%sI`!zPHr`oB!WQSO=DC~%KSChod3L~7V%ekWA`@^_U-m;Nt3q|3X5{*0Id zZk~oC5RI`_GpH8D_Y5#RIHdeA@`-3yP(5|ggQ#l=EqCN|*;|S>Kj(MWTw*~suzMXe z0Zi*ZPoiS;9_@9p-|%rwZ*ws1Kzu9Kd}81yBHsKZ7cgV7m)Wv4a6-UzS9A)6CkiuT zUe$}5;$uaniv&ly9>*S@*SQd-4-FTB zsSd68E;8}rOrGh2rF;?c>D`&9k2$~0B2_%>LVsyUUvO%ZZT_khsE(=D-+k|G;0-KSwsmA%XrD}G_uOrm5E-u5MBJd^QJ&!8^_4>lR?vz}sQ)v|C^BP6{;cMqe z4k-N*e%MQV(B$`G=I^%TA!CkJTXNf_~U}x+B^|)-`YEv`CQ1`u@(?ev(do6x8a{0ez%I4k z=xg*-)Q2BTb15NbR^3Uaf4Ief459$zpg|aT*e4J36oFQC^O?2>qmo++XquXIMy&Rd#vN*Lt{jv61~Vq53xkJ zhgYx{p~+{tsCsMzx6`8$8@FJ18=CA`w@@LiGf_``tgDDur3LBnz2wvP&7Ym6EeH0P zKK4ERdl9UhZ=b@cfmFUzI2;3=ak*wjg8edtb5?9zwimfSTYmv5mdCNbxicYCt7LdzBjm`DNE9kB z8}0e2F#EfKA#i%?dtbc8EQnf}hf&ak{u-gbU2#SLV|-Fm&{V}h6!2l-WY|JcsybpW z<|{SFOWrJ%^l>V2vc~7ZiQZaK^9t}if84DvAqeNI|1ZC*kL6Y8m{BerOZP#khtH7` z@bKM<-rZrQuG&M=G@aqSm!USF8sFL2r4|`UEBPX*s(syQ8K{!+&vc2UKJ%)-@zKi3 z%X`BFB5469-DYw63kf}7dAy>V5i-*RD+`eBoB3*A{$|h`VZvc6`TJy456I)4l{e~$ z?S72@`v0{6KH2=UG7kyb=xes9$lv3|7|tR~vEhU#vUXq$4Hn26eSJ^SH$03hxZrOI zV!yRD`}<=@Ls7188Cl=ryDi>Yz~WGG;E)#oo+Ai?OTP{R=}>7&MX?}T4`Y>Ngby*wu>Zk(q)NJbsCt&Xj!%sI7uV0}2d zJijW^x=$9`T5^Bz3~qiEbMGsdzWIq9(FyC)%kNVbU^~cD_3C_ycucq3gm`*6UKsL0 zY~D|>>hNolYusy`$c5SlA+eyJS@N|xQD@3X9Z$K(B8Q2ImWxzBveiY8b|POSG!IF` z1+qcYM@>q+w|}~_7$XIK<8BBaOeVW$c%oer?*wfstQ-u5o6njaAH*+k5o?5(oii-^ z*xJveV+;=igR~{{L&z`>lSg9_s>?;gm>C5aUY`;>)?zVgRmaCliH4dCvc~zzN28HY z!yQnt>jA`sV4RZMfplNjX-}c~!yu*E#tWYnv`uh8hB#L6kM_NBaPYLAwSA8W6?pZ8 zO95G__1dqzA_yueLMRs>fpXD@_V}bQH`9glf8SlnT5pG+Wf@v1#fL--*PdcN5*I2Q zbR>m=qi@SQYHF$Y#2Y^5jgPv1)3^arL#$>Eit&oArtDRR6|PW23W(S34I9 z4>WP#L{TeSDK$uz+GASSh<@cP(&q4O;<$pO3n*SGg>^yT}SBZ+ue@iULs`{leBO45U`B_KD_ z7Ymvw6&K4?$ePQzsg~$1Cy6f5jY=e=e#_Pk6i!z+t~~EE-x-4A{fCJsdQmovk-*^g zl0Ort96ZD9vJ;O0q;{21=*KNb1yzyBr9^Vc85$czWQ)tsK&|+YL|Mp=b*OAC&ils; z2iz=isx(~7H=Cj#jSTc-@{?ra4)(`uA$2G2S5-Md5^WiX77bs(5Pwaupt+0tn_%-L zYsBQqmj}@#-nZAv8&YUw4&E@&UhemTW;H-|CMP-pTa~R(n)`0)0%AZV_vFxA$L{(y zcuhs>Y+>(J@QNTKLDV{@o;gc=P@pe^w4`_MbPzZdv$M}u(xI_s3#!YZ92_> z3XKW(E3>PQ5|EDyH8Iyri!jVo=qD-E>N+le*(?tBsvEk)qJ_d+v|727Tj?uXEEXZM zN@Fqx$S^+W!4m+_Bg~;D7tC{&rCej$kTXvI3)je(rH%ge9L;w@!-Cx>2hYP#t&}ZDWPM@Kae8T$NT$UK0u*x37OHXZdh~mEKF>B8lBqc| z6gF=6aVddwkeiyjGGhM6fDcIUxw$se<)_ZkCHIdfBJQs~U>yg@vf)PiZf6Y$tu1~| zuTga%rTbhs%aS?7JoSs$I_FSD#@j}@)OA7K*-JA`P-!sY`rA7#cU^w8$S0-zvlyOTzFt?1G>a-9AqHLez+eTLgPQjf(E^BMhfd~9Z)>yf=~Bn5*KkHYV< z|9hC9@sF7BBX|3U&qRRF5dcsO zh8OU`G5bGOhyUE}><8@MRgNfiSqW%HgmiQhK7;@;^Wz#rQSO~x1KSR!9#PUt^m}Q@ z5X${>Lm}>CEcc%E)4V{gRM3j(&c=>v1ox0XtTXR(^v$7irBosZmR#`j29+eXXNBP@ zx^lzmS!Ewhj=9p)-^{_P5u%&d-I=Z6>zvUsAuu~-gTI;?bchO%1Qjg}KrYUZjtQjR zn?x}Ud&AoU#kj@-Yy8lmUI6oh*+pY~S)x1lM_3QbH;Jv_cU#`{Yl1g`7Y}yoQt;M+ zgR6q#aNE60FZc8Hyoygr2I}RBR5vF%YAZkR1Pt;(_O^0-ddOP2Cf2M~()hHIR57Ve zlclXvpqjfw&QQtxKV%pa3;YR&21@UV))lOg#CBX{e3(!kSW<_i5Rg(>tmc(4&3u9w zUr1lQZCacl`Y4U(MgJq<`{YkA2$x6le^t8a+A||s5W}KgXqj^>2V0etq2!G_+tCWk zO@tjzL{~>8Jb@Xahx9Yb!DZBz*D8C+YEKx!6Q;xI&_32FWR8hHT9zEm_RN#`O=1_< zYaiB29yGT?G75$XBz59^y|onK#&w)NNK8`ue}ISX%Qhlpi`Oa$*_CLS zHfYj=DKF1ox5nr{jjR%0vJt7Wi=YzRrbE;2VA6p}1VTRSV{mjvIf||{$+%wgI!dS? zwMkXB)hhs*OCi%R{D%MZy|7Q=z($~%jOa-Av~Eo&O->B>g(E!k%MKtODkpTJ1-|_# zy~Qk#&jo*P=}p@Rkis{sW=WScUp=fsGd573N1n_)ImIG@{WYMV0NDYol(X%Auz0ANuo<-|2Z zPCmS4Qf@w~HP#;nR2;}Df$}Q%a@eBELX}O_DK}#06(Elils?R^`dsSv!@A5ZhZ$Xg zKJLZxIL05stp1FzKOIAEq#`I@SNVAaP+yNYN#z+dsqr32j84Q`#J#>wWdeF^kZ3r} z@HU6kEy*Z?-N+@+>|p$X=#z_`B0BEt%c@iJJNClZ@$S}zLL6;cppyPI2-3B*Jk40Y z@MNX`x71J47`$=9ZdI*+Mytg;K5a6XU8*LHdq@s{&#EsAC3@})#l?KfG|3a>*M=Mx z%<}^VeAIkn&SzU;z#?gydZoW&$LYaS(-o3}bAEMP(vv39+U{b{?be&BrjOp_!SNB; z9*4Z#>JNOIZCt^5arSk}@ts;gD<7*P?lz}Z$|f`6K|$Vb&=EVhqYAcb+emTIdC=L) zM2+}$lww)ygD7=H3I3UV3%b@1<0eFmuVx7jllH!Ay*Rq}2Nu9JC`t&uir5W*V1LA`$lgkEZkRr}~fg zxIMz5vf_|UR){!6gsg1m2uC4%pJP*m%sBQwLdZBABkK^^&aqNS& z_h0y~&*%Gjzh2KL=z}QNasAsx%J$=hdc&k%>QRNhb#k5I4z98gNr%Px&pO~k3#8|V zKp%s(eLp~@IhpL3HutWFHvT35EoMhKiTJU4ATR(K)mF2avC8FBVDQ$lp4y_CCwCNGpWQu=UrXtCq7c}8{+ z9#MYWF;YD#SX%x`yFkUjmqP_0=R1;&*CObdWiZ*n@t-Tn5i4BIOuON(kDQL~m=|MO zjy>u({;#`|0{PfZw&bT3(UqTIQUi3`s*OW+u(IVnfeBj6|$x`>B5xE_*C&p>f}1heg1b;zwxq%|Zmk#R%Q+ znh;F^rH?#Hpc$=^P)^;fki_B6I2e6WUY_cSG#VQtij?XR-~aw&pnd9>q1M0ckuN%b zo?zIyR_^^8@u9-%fs`Qk%<$R%B&%8<*z1Qs`Ra`uyVc@xg;75uiYEXe4_S#s#;J7i zSB06lVb$}!uWqQ6sl4l?SA*s(Zj)l2==p^6LOps-n|4*C#@D%nLvOra?kkDI49uwX zEkj=e5SL_tG1WcS!9-j9RbkkUU6SanlsnBnM*Lq9%j?^Lvr?N^I57Pl^S|UjWg=~N z6n=1qs0^MGXPjr3v!=fb1MfL$`UWV(&eD)NjyGW}&NrelX+0#Agu^7CLU zW{lk&)KTgHf^K*~Sbwy!A|`}-Z*z6rpTiMA?$c5o#s&svh=eFk0CI$JeIwjn&L9Vo z20?%vI&Irt310^@M#JjwZb?bOS+Gi5uO;Bat7~O=ur9)UPs<1%T<3YRDa&X96zR4} z>>5Ni-ZX%lUgjd5K*>m6CowrMIIKPPx&&9n2#5)?=_OQ;GRzbnmwyAsBT$0mh`%R1 zE~&#^EzgLfGXz`J(341fOU2z@p?QaP<0@Xp!|vc`hza5+}&cI)n6%87{++Nlnl)|LE^F@yz$dcGcNC zwn-UC>qm#f`d8QHEN*Xp$8FnC=_fxx0$ie1`I!RLbTHSbN&5-M%>fw%OFou|X{@ zd2^2v;^(SG@&MTbt!~JxhnOcVOio7FYRy7CMPa8v=#91SX0dq-!0MTuC#2Vnc(GN^;;9I%C#FMPMxz(CN? z?JtxpK=+_p6r`}N-S1?BKtztC3RO{nZHCmjF^FV3J2~&g57tXR%%5zud#6DD6=^f! z+{ejcua3>Kk&{<)_PQMUUuzh+xJf!$YW_>A;rxF}aT&W5AsdsDC3#PKKJkDT3;Yp_ z`h)&gkdK{Mxkb;Nav2(L_-zcuqnZWh;ZHwiK16j$wEuXZxbJQ97TFv__SXEdoQ{rG z*m2pdiTXSMR(mhHCI7|>t(rUc=HW<0Ma!Q9zj+B*z{K=Vo|`DTXZ+Vv_dpUn7yH;0>vc{ zPu@Q>yDH3yg@?!NnBa2qQ~i^C#>zn)CaleqpKA*}{`gI&0qP67+ZKdux8twSSzKj= zeoVORG;yE3n~fmrZFR9z|w>jG6 zHDHGXCcl$UBfy(hUM^adu|pjK;K7@du8YULS7~8iPuIk$eg^F)zEyG4M!)NrUQfS& zGm}~qxWG4e@3E+s$+k8l$t+9Q0HK1m%fe?G$O?0oa~aPFvWkh1=WWrvzevI=HxvH%Xb=0fQ#|6=0|5ICRgg5K#{}{)6f_5DHG!&_Z}9 z9rcapOe`x)qYTq4O8Rb0 z&AFp-1%d@W{q;C#U5$kC`tRyW zNx~x$P-^(Z?}05mgtE8f=KS`4DH8Bu;a#Z79vey4RnPal$%P|tn;*^1e=nw-wH?L8 z&+?0?Q^okI!^}GXv^UHu@^^60VQz%RZKc4qS|!pH*NY};9Tn#Y0Zg;TW&)L%3S05= zp7}If+Ms8n(m&){6U8aIiUF=Ha_=*dSJIa{C!qIi)SXTe<<*D|ww2PDEgTc+P353` zhsAw2UkY@A$OE{ALUSD((RRVdGy+D|AIVaS%Bw-dTm1TFIJs9TCfkWExzaB4g~;~H zb`b9NG$TOn>UI4Ev>~fjGEhadja?$aQ7T|5al6oZBGXQ_5hgvEiSJDk_|76!&pLeN zbAT6j_(l+0rnUhq2vRc-V4toqh1TmGee5V5l75u zQ7zP51v;-!>^VY@tgf~AsLuzMLa`@?Q#uM1F7va5Zneud_95DKF zsmZX1v#V%lAER8TmInQ;Ab~1sL%3cx$=wTmspk1a1~T~;sT;Es1NBy$tkG7QYD-qW zr!NL`jF3pKrgH1^;dRE+-Vjj$&!z$(X(&W6+BT}Lq{O4mc2!oOHANith3EFt)BRhI zvrt;)@Xm++ridj-*~le+leJ3StCAb=_i@H@|oQLyd`HJzC`z`-36sT&7skJ&dHoT7EPp!rD$^gpjzUnt?hXPdT!&*-N3ox z^tNcXB~1!WN333@oO16b=c|S~{>t@ay-p z%{KY-!S!Cq&8=48En^(zM21k_Sy=D05TiYzO2BA~=i6_Q+G&=L#GitrB8~?jb+~1n zYcGqFJXLI1DE9|C!9{eBjNm_W3Ew(C_r~QCKjg~hk(&GKXPe*9MM>B?3$D=;w_MVo z8H5iiYxRW4L@D^m%>7@#^rhf+!?SLWq~JT+znC-0I;#D?@LR88G$D5a(GcDw+IS^Q z?Z$eo<=~oplff&&SHdrgOkkQzaeCjajbtVlvkvqg7KJJV`y_$q%!x<-IbNM9A_|a@Ba_(~ZB6aR1C&6BgdH-qeKoR<%c}*|GxPKh z58%;px!NtU&FM|C;?>~2m(6k-BJ0UA{=*OO`*d9ElI6H!29l(=of0r18A^VB#rPmZ z{-`+-`UYYflpl2>Akia!2-!kt<7K9o4!_MD9bRg z<$5J3whOQOy?zZ(FXrOB`%M>=ME_>OCd2ak$Ijj{Mc1%QsOK;`7L^PvoA*{Is1x^- z7#T9e1bQRs^ixBf5ND?0OO(Aaoqu&IKvM)bnSoiOI#4EA95ZnSP4N&@2@~@y{Uz=jeDVhOk(!E_$Iu5GIRBsJ5FLsj#jyGbMPd-pg9+ukR4 z2P|Ygi11?-uShc=`*`->O9DB!cPm%D&Zzu(A8a$EfNM%9m5Kf@RcGJKUXP<9drsoR zc?E1~0GW6`eYm}CMl9?&*lsUv`ao>`a_+wiPu_bJ4Yz(pHoV3DF7SorU*B}nxbpzG z+-MN(T6Z@@#L;iiMdia_LhG~T2_>tv+G|8|D3Ox{oF4FhW-u;o#iJy&LQXL~#MEIT%m-c8pe3)p47OABlr zC{{Mx@Z6_9j8rxbiuN8c--~xNc zhvATd4_{n47qk73)Kna#grkjcXJ~D2+>d(gFC|cgHMkX!QJ%s^9Rftrp)y73`&Y-9 z;wV0jdg8k;-5OG0kKp^I`+G;5;ihTqn4i^H7G-*#tOr%pbMJhof|=vNp0?_IH%Qy} zwIvv_u$hX^C(?7px^4&M+T~y~q9yRtg$)lo+-)U9s{iJ?i`FtS${fh?humZ&-*yipuII3D|IeF}VV zE!ppl(EQ1?!Pk{XC*>5G>vMefF8MX{f^|0Yr_V))j#g+Far zAKp+sDnBNVn>EefvJ+QFqni!3<&Ra_y@$hfeaRuE-E5I|waN~$Eq#+e9sS0j^FYnz zS$6)xJ8n@OwmP6FJ@h;|?vb2{f1N`V*rEmPnQcPA3dJLEwE4tcts}DxyJv53iT=I= zlyGkK2kNLqzw_k+TFgY^#nsLFhIZNi*y|kgXIb6VR6^;%kb)z|;0kQ9pYoOLX?y!i=h@u)KbP^D z^(q?e3WZX~nuAZ$@qUk|AGP4f+%)j)n+1?qDQGI<2FUVInvcqtN znt8O_)lVPh7r(K>O^{0+d=c+%jEKW5r1mXsJnlBs<9djj%@ImC7lT}xVYK`;LjF_Y zk=PwzWn5q1W}`9O_mNet9yOrdnF^3O+6#ji+?FyY0)pwhXzx}$e9)x*sRRY+#z@}Z z8d6eMDLP0uwDIcxn&#Rfm}oc6LQNFVprgYhRwrX%-1n&9WIP2HWQ2%nM>och~xH8@qqUpP8=9f0sNOw zLgr&WW2BwGu6Ld+!6_aSM`G=)1x9t3C8*TNy$lH!3gbN%eKNvkxv`QA6q6n@N5zg_ zQ2*&sWdvhG#ovH=4fQC+6JfUm#nXYGa$esOs=)O%@aQ924ejcALhTbAj}ki|e?uNb zbKn-`>#|nDBMCI>u`QjkOZApDA+mXAKW)il4-rs>hs3|H9mgFZhJ5C(^y!4VrHy@$ za#SYMp*lb=SPCBfWGf0@u?8LLzznI@YNAzHYp`JS?Dq3^p(@FpU5c5=JiF3E?FVG) zC40wJ514a^|1-$Gnpskw;mtB@-0|e{;GO!f*4@+Fr3*5F4W7a@=MOr=+R~O(SK6mA zB)_TFZhOrAU91vRq_GN{A+q(Oh;wu8eia$Wk+58{5d$5%bb^NY|J+S0pY!i9e1YO& zvJ8?!SQl%}k|_kPK|fv6Bz(IU3=>}G5HvHi4fZ6AQK7aJvW;tLya59}MtRgr+k>P2 z@X7w5u^+FVnKvp;Nzd*tIc*njws`2vMyJ?hhYbt6@9Q8Us8gPC<9GcNle_%o!<;}b zY0ME8JJ|wyL_R`1`JBY8LoWFJUY%KoFxbR?(@lgY-<$bzYDUxIAN4$O{GUJKN+*7ub#GN&mBhK2q#lNijRqtWv-@Udm(r{%AsYLZ(H?D{MSRb}zKV=ylil8q z9ko|FuQ0)rw?e13MKC##r9hg-yXuPPBZ^<6tcV|c>CeZ8PgL=~Zv?i?06tfY{lJC9s_~q7%JQc{rvEH6IwcRs-ZN{-1M*XafirYCvS zu4-OS(u7l}8wPfEcu}yf>&o{UIhFOYiYat9R=k59V& z?3;zv<=%mN4pY0rUrHDE4J`GmM6x|at?^UoSS6c63>@vq>h88c>?z1c?wbS{a z?(ZU?u;{DL5$^-yJ{Ke*)EZMV+0d&XA+Foclvsz~dm;fn?Po z8ea>Y`tD#E@mig^ba44O(y0Dk-ijOM?fh(xio3DwF-av}Wwl9_Ro~pz9a(~gi&)V2=rl5i^=52`{{B1=%j)s5#*G3Iot4pWe8l@ieb|PT-JU59aB%^HmcPa=VznAHwpDGLjJOb>e&U9co z0%vzN15%@!1q^-tE`9u8iG!1&LHw-52MyYlSn!serb&kF{LNRMF=Kj{)S@!ZYleG6 z@1}Cju8L>?G7g^vXQoLHUd58;bk~a@QRG1CeJJ0VwDP_!znEh_bj|K~x6YBqfDlrM z+zwt7!DM?v)`Q>MBI7}NaOImMNRJE0Uobd4an1Vq;csJ?o<6BRGN(1-xaBd#p#|Xq z;xN%ygY~T*azd*K=?{DaR&L=B!Ef}v12bn6o=oI2YaZ~Q{?*DaUqLrG?@E!;_+l-N zIXaA?d{wlFSnEBu;Twp73`yFwsbFMb?ObIHQ<;y62z?v9TSzY(NZkhfbAEP+awJ=@ zN)dypMd*halRM6wmaP)=)4zo@;ifGTdP2f?KPQKVFq{zdlLkI<-{$&N>1kbQxZ{x1 z+7*L5{c4hQC+%?d9wSH)Qb*3#zqm56@ZSRmLf4voAaykt&P?P17aImg*5I+^MQ+TP0gjP$&OJoz>^9>c}gN6Xq zVP$9@^rkNXVQ!)Yj7wuzh&FN}ewa{M-R+ggV|6g{o%LN!N|bV@Z6A1xUd;m1rwi!! zB_plhOHzbj$c$I>$(*1e$$ufF5kxlD-DAz)Y+aycZsE)RLCEqoU+u}E5!`-u-ulAY znh{*t<+1wDysejnW~L%wBaZUz%k~i&WwpBYouORamd%!DNoXZu$}6Wt*Qe9YEKR~& zQ(JOcHvnpL*Ef_8k2nXvnY02&%7j0=s=rAQ45G&ojBB_ZOY3Rv(dn%M-~*8A8a>{a4Y{fWf?9L zI(@|F?jJEyAUO$^8KfL8zDjTaA^voHQ;;BYS#%iT@x)8{sJ8K{lUG3cWGGcK)apey zda^tkDjcZx(yNsRO=g5?nlLj{;ug!?8z0Vd{0czNqRTsFS42!-X-9XJZ}30yrQT^- z6(n|)$VL*Y{GfcHMesLEl*6d=Zm#p_~CC} z3q<28-{K7PqKoP}FXNi)oT;KC_KsC(xWy2zCfWZgkoqEX>YJ!s!;11Ga-Sw%A z*~U2Sa|ZSVTl_HeS?0#ejj4^s^C6&~5@2p~Ek@7%>Eyfg!Df;6Om>H!_l~`1l4?Bl z;hFf!+i7fvp04`7h6UL0531SfAlvMK2)L8ez8N5__I^uhYsI+W$hy4#R`W{s;5&9q zCJm^_SWhA(^cJ}fCy{B}zzUrAd`NIBRepyF@qs_SGFJS_CK!hxd)uHQ3s{BuVqvv zPpi}okrgu1kg_YD-hl3*BC~)A|0_B1t`JonSvDfoYHjm_g+))q1whL0qTW21=?rb2 zd&_#RdLu6kvIjb=6mNCfzwoA4h zLy=#!LC%ZCh>`-RAR^{s* z+uJ5xN#xz|1v0>qyPMB|O-R(5D$P6E`z9*>{mnul{y(bx5@FquAD>42*=e|0FBS?( zBCON{#lw-59imRabLK*zziy@qKzv)}NlwehrWw^4@{I5D)5_vqQMix!;~4{E4&kYu zmqbp56rXmMWl0^ghx#4={+TYnfBH$I%I?tI4_rcL6(e$|AirvE#Y={K(}G%UyY54; zXaD-6TQoKMrhyLLB0P_PEFEG5MjpnduMZ#O5xQlYzbn}HZxqCz{dt?9quQyTpCxil zYJ4~K_T1jGC_9;$__J7kjzxraxk=DoI+vjWAmwaAfHYLq9K$JAzZ*L8NeL(<#7dShXgjXC*PGU?slSp^HLWOg~ z_2cr@m9BijVaH^~-LGXl^crA%%2JH!@fG7*wu^|Zoeo7c#5way@Y`CTL4e4-{NS$Q z_NV)k@*2K9gYAdOc#AgTkI%oiRZ9$U1GH6V;SZ;KWKp=~%%Iu$3#Xcbh-H}#X-_g` zio=~%L*F4$cFbmON7a)!zLgFq|&hsg7Wv6U~rW_=NH;oqW zkiy*Gwj||kX%5dRH#8Fuv#f|*A+gwN2{3zT@-yzzma9%GwO|(iT515j?5a~rSKc*n zsgjz@5N+oq)S^f$x}2-G>J%v0{$~1dkjEVHi>Mn;S6W;m&yNWqcmoD1NXsTf-^zsE z-r;%nN@g|Y$k~j5AVc7m-wK`nIr_Ds50ITB#*Eg-o7Y};zfj$;6a)#~S92C^*f!_l z`nrD_7C~zue2H*E){T6A95g0IfAe%+G(~%0pr2BuU6mq?;C_6hmb@%y6W2LAadIP; zXse4>e`=bc=B0<){r!VLQdxQQI-&eQKy>DC^No;No>v4vL{Et}=|uatNvwaC8L6CW z-%b${$nq@Gs~VcK?%BK=nyJR35M^3^B|*#_ZGd57>X~WX<^Z8ab}`L{$|Q)ly>9E+ zSHsvC@WTd4{Vgzc&GPH_np`r|;G2rIbH&xQALI5p$061VkLx=owe%-VAx+biZYZ;Q z!*cMWOgn)EndXFXM<|Fpn<2pFZ|vZ096+ z>RDkb4TR*wM8;e+WE@Q=eR~(Do(f>doqs;uf#x#THHi^j0Gq%gu-nM~`u7tY48QYQ zjSAi=9`e1YLsn+A%<)09q3rHho!@LEVE$$=Odaal)f4>j(=^HlK|>Fdw;)m^19|!0 zc|&B(5Ci=zUkGb+St#-#!KCW&;%|W=T&hKFEz%x^ZQU}GguD5?*N)KOC0_epV=4rb z5dg71O*(yBE0kAlr?jSG(^I}FqttbUdv7H2i4=n2P!&v!)a{uq`)PlKemDHn&ow4ecz!O5eemzB1w8Mkp}B(=TtuexIG~?E{X&ty+>~AKI2m>5}`HlVc_nu#pZv<)Y$o>|5KH_c>%MIv5{W zYR3=2B%vSp#BabBI$S<=pYgEGixd$fSDvdj(j;`jtbR6{7Ho^ySVr@RtB`?r_$_V1_2<;5B0bZ*J2;g zL(|pT?{OstlHrwSKTFnR?Y966DuS+8PH#m;v$YTP+`T>GlK8HB4c@LB@;T@qXQg`% z2Watr+~RgPY2}@F7kO<6;=sIb^J-Ops-3~~s+D51QEs;7&SOijqxx+da6a#z(pJc$ zA^WqkT%XLusgaf0()GSlXf~s_@}?)2J`-7oo8?^PiHSCSA!3j&H}CD_V&IET#v4kb z90KI>G}1|eUx*a}WhQX!6X4zc6ww0#Z#!@YN=2gMkAC9x%++UZ4BzS%YJ~ZJF%KUY zpVvatBi=*k+fXr%$2Wc+F%M%oNF}BD_FD+jsD{-YcAJ~ttZ`Kx*J@S#e1#GR0;Gw* zV%s+U$W_N7GZ;N#)NBOoEL$SXU)6}emd@bg=L`c$-HYH&wPzm7Nn-8g4{smTzH<&< zvvOF-BYc*mqndw=*zQauK5w1F08ByVzI4;zIpU+AlI1J%^$cHxpHuyXHH5B*DGbc= zjHbRE0b*bLrThNkTp=uHZ&tpyDP26)#)|mItT&xN>0drlGkA%Ea>$zqyfIKK@*)ENGtNLx14aV@TNFJSA=)2w$DJVQi9YLH$X4;@8XDLh1l$d3&k;TZt`= zXvN$T)AIQ$>-CPOw?94=ctvc;V9g{%#v9#oQBhUh3yx5}pG|D}Ca7O>sW~ZNx#4%kSxigEurpJxWw0E%)xox!~b;{9M{hF4cob`zjyhgJAXC)D|&6moq{(Be)jKNLeInvB{|%EYxF8E%ottk z61yN46Anwzp++VTQ3=T7jvQIq2MDMHmV@a z28lWGO4pHTh!T&occLXiQ1T+e0Dy)oxv0wwep4o-rzZlUZTa{-23wf|PV2e&Myckq zTyT}--Ym&R?*ZEzIyu+!0rYM>&MK20=?8xEmmV>;NgI<36cPS4`RB#+3QxfHx6w{@ z2=NgD=!dK95N$7r5wULjZ)2pyfw>!5pmeR$J{CltUwY1$ z0S@g0T2(1AcOStzW%cG}!7e(O-)cmXVDeDA|F!VOI?})c!9{J$<(*d-IXczv!Ra4Cmy3^-PyeD5g`@ZxAyoi05vS9y0gY? zzItlGM^p;;#uo_`(QsFT$*+*uN_E8s0QNw@v*>9IL5PeOeUv>WQcu(V{Ut%xESDzl zCnHT;;Ct!67k|Hh=P=m2uL6!d90ipE^MC$;xd7$*3n;l!xf*29sk!a?twzdzh&iHkQZbiI|XJQcK0_xdlMBaERP4lz-!cw73U+!~Vr>nL*{^ zem#7OT7{Orz7J3M)SPT&ml)FPWe028&#jI9s}UQ0k~Vw-e@<=KF|?NW!x*{$rmV1l zulm=91`3vc$#73K=SEBREs9|U5@RLbLI$mFt^PAw{;>C^fZw3vq=Cu0GMY^v2-KFm zoZX51nc=1sCqSPvAb*eEUbZ-g2wTfaZSI5br}VA!{k5d0eh|%4zhs3c<;*Y z&gJUOp%l&&>Cq&K1bdaK+0Z+UIZn_9)iX*wRqm!sMxj&xouQSv^OAOt70?-8ek28uTO;IH7A^zPv6fy>o5E(ng-uBVA^QOIIqIWkBlDv&Qm~9x` zt-BVoTbK6bur~(~XOtQXOmKI&(a#y&5`L6Rt~OKeJ#PuJXXg;lK5>rd$R_oD;2e)Q zqC6j)F^=bT&tAF^Q!DxC)DwQmy90kZabZ2=8ih%J`T(=8ud=s(=`*tO`n?`#Q$^^m ziUsp)meMqns%$~}F-d7rQBSU91=B-C^>w#eqELzyEkOW#6`7WMw`K7|0)gQLbV;{m z?FP!4C`Mk{$Zs}e+OptB*51FJz4MzA@M7S6@zZi_>lOIdcGWb`E?DYRW{PZJRmL+R zYjLd2z<}tZYOiFt%zH4${cBHQb$8##vS5F!fP~%;BU@Z%zBWuhQAg|O#1@ka`3scB zDD=0rE*DU@*ocT*fc8B!ZAGP-iI!dEctuV~GuoytAnS4c;coCKdfOW{Uk^wa$mx@e zMfP<_j<7B=9`VBQlcaaGH~ytNuNe=Mv!yL>OPk1?Rz-}EF^iFRbKkG=s~_>_a<+iG zUp92=S+YgX-Ir_bnRml~_%(}-?8OTIW3fMp4COtVd_&&M zI|3mO&F6oAe;)ZFlJrJ)e$s`Yr*ZN7yYB}Ixjw$|f175L82-`^%YxGA(-pOzPmrwN zR8gP5`+a0F7%kGu7(2{#Kr2>&x#uLAxFMDN)^f7cqOrMG6plA438&qf4?_0bQ0gv zkv~Ti;^pLO4ZuTbIoiAUJPUduElh!+s>O*cBLrJ!yFjdtmyeIOmHJB-Cc*7wU^F7D zDp1@S3r7%~J4fqLw(!Gi3!NNQwXv2PwYHkruOUId8#{)vZQY?p*8Z)RwgTAVItlAa z$rm&+KwG{xhMV$k-^qqj6^J0Ve$snO>hHs?gmUyRc$7ICmmJ=^RsgGX2}o1aCqWWSxMghsLE$T+ybq}Oa-`}k!C#~m1q9TtW1O7h?(Dw8p z=5YQHg)zHbpG9OJxiFcW?!#(+9qAUuwBMi8#jM_YEpf`YV)gllhDPwF-{s@Ik;VNm z6<~^kP4Q<<4tDGOykSW=s9&!ahU2gC3q11~e@G@Lj3zE_K08_$>c8QqSOX^rL=tyn z^;VrlH$*Td89S2`WKSLW`*t|Sfl*2HI^1#!d!0YwH>P_G1VQ80kV1KmqZMDos*Fp=d`WesfTRRuU{DcvyAg?++{Cs${y5PTtr-0BII9{&*Q+PeOgj{_V(>-N?@)k@wFk z3+2fzzAnryQl%waU_yN&!IdG>e$iaU0iuROUxv4k!_=r#Cx}TKGLq@KSiJY&q~F7U z>^rOLBOf^1!=V}P9U-OQ-rYgIZaQn#SA?uQr9+9^lLkc)^DSlgqY5hfK&4N5ot8Fo zxLtAq`$`9}zwcOpdH$^8C?%O-VGN%n*B;+T?*``RPlj8U>^oZCZQ+S8m&lbL`YwnO z9Ze*S+t{-FtjT5Y=D;wDps79kr4~kqAK^W?E8ycS{HTZay}2;gt$@KFp;jLezlslsi6zm&?xb9+} zu#XLytNiZ1rnT`aDu_wvBt|M0`ux`Is@VF_Z}%0EwPjRQulcsqyjttXrPffUDi@^z z7?>oFeuuqrtrl8{guj8*YM=zi`QWVfIh~}i+D9Jqf}^d+s^`LdvgdW|V^7FIZ5-lQYn4E@S)<&uC+ z#LLnrDA~xqX!+c0$x}Sqj8tr(OMtNi2+@Pu9{snD6n?W7^V`Y!7v)UEnPyg<@p|3YWdD) z&U7%l0PKulfj10%fymlt-nfYxOBUrN+Ex2U`Wbf`pbaC}{cSU~G1T%KAO8O9R8y|O z29?k5;rrcN!RfCnpna3zoX;)8aCsy60~k!q4z`%HtX4SthYv&xW3(q@eXi+4$7)0F zRgd%u6+hQGd7FU38R(lB`G>F9uh!YJoU9jek0kZ(6ce$x)b}EWwgNrra4$m0BO4U` z=joYDsNLcNlEmcmT8fPy)cqX;Wv)g0D0srKJGixqPNJ%w6|By@dgKY1RY#Za`V5XYd$fDBG$EVGop%|Hc|VnYnN4X&W<*LwYIUFy@=Jy0C8 z+oe)8;o29{FN?y8-hgqlnl0r?*_uVsQhCRNv0sAGP^~#|wUr*Nrv`oKL_9cR+KQC? zDbDizxnkpTR_w~jp9)WYZqhsNF#ia+vs*Von)B<;!IL%Tj|z=;xz|@=C*I|ew}{p< zIP%&v?Jg(<@A>T1uEv@6_rNt&8F-$~*GZo_xOQXNS=jT7tu%QCN`xoVUeyIC|A5Gx z{!LWHIGB_br~p}J1~!#IH!4O8UTd_k^`iprE%@$%C;PKr?hM7G*ig)sTHhh!s z3_lrU8=Zw{Ju6L(8Pklto}yMMm_vHktgpWrD}S+yz$_>Z>x~J2#;i;&%|b_VH=R7+W>|?I z%KrffU?(;6=TR(vS5FXgyYx6p|I<#^>pnr6v46gZS}rcKB=W1ydxrRGW-#qnm0>*+ zyY_NL6R{qd*CkaQdJA{VR=o%l$p^-JXJ8BkX)aoT zi`#MDI8FOK+}3`K%R5xiYN9Wq%!-VF087Zb%?m}h@2v|mEGK;$T% zniL*ST)6IQa}kkOuv)xiN$mVgz8&5zwk6RI+oA>AEWth@`F}-0{Pl(mxTr<7)i;B! zGATF3iNsCBm7MG*5na7#KwD^4vG#SV%*cPHL8pJZ=2v9igxvYyu4V4bp7G7^P3xO2 z!APl3qt8Fw*4tRQWyh_BxMbhrks!13x+xqin|Y{iO@bK-EAB>s&d#q05lo~No`|32 z+z-ECr6ZnvMnJdxjc72Z!7qspAHJH~a20ocnx8oj&GKEMu?AF}*}gk;6pknI@XgX+dcnJ)btG69*dqq zQqx9(YMMXm$kwH7N1I);R9IOQl;6<2yzX};a|ycqd~kyE_HFCq%}C*z4@XDAX+!b@ z!z{mqUjpY71xETso$yUUPj(xIkA@lIY);BDi+>lKM z9_h8PmXjSndF0GD4OQA(eCYX;bUWmhN)mONOUQZt+=4|D`V{s9PQQKoxUW`>5q+T z+}~i_BJ-opIc=9K7s<#4ph#rJU@jT01;p|#z7J>1F3)(D@owY_!7-%c7H!*1EK)gA z1}!GISG_XhkXtBvAucuw=Rp24bSLM9s+r!RPyILgBvgR<9!@FOuhV+K6`xf0K3)BJ z1qQda_`zmsEi)otl*YqST^D7bB`MuMS^9&uQcP?hz0iJz})(~ ze+KgTDy8#mSmb>Z-cR4MhMT+M0fd(Zan$nYT4y`J8o+!n(sG`k=pL?d*~6d4M2#^Z zBi(`s2WQJ8dbu(hpx&*Q4ZYpr+iBMCdw;wv6W;6pvSj)5PGOy6vw5Or4jn35XiM0H zbF0&e>qYJ}E%b9K^%23pqE!N%9V4!S!v#COe~N;xFK7I{`U$e?lLF<<4eTyr?XTyJ z1KpI2k%HN`G!CoG+T?qsNVos2#|807xv5N+L!Z%C(b4jD@o#;6X92ZTw8wAvN+gtn zTU4{}*}k}@5uk zyDskT?nPT%7WYMp!{Wu=7q=EK*1PZTfA2ltCdtXbjZH%E;|TU$1{LE#{{A7Dr(P@`-?&GBOh~}m{yr9Wi>|*{b;A52>k8=r zclXlVB;2vTCaK7Y;HBUtLh2FQ(I-B!qjA8-fUO4hq-UdZ90*N{!d(*6-Llg+X zw8TP2^0yT`B5xhGAvSNRS`h)G(!5lHphe|e3W=EUY?!+Wdpv3&)-K@5$B3e%RTSzJq7I0w^uFP!jAa@!YPipt_7Ec|M=L-{7q_1&@6~1ZzJm)a~BK zu0qoK_2I+yR5!ID95Y)NJg`Y9C(R0q{6{8ii;bCLRkdMsR<(Te%Uw_I?m`9p-dAUQ zi3#W7Hlqe7nP%hzs0cmKXjEGaH9lCX#ieHKjy?OmA79e)9dVT?5 z-%)2LthedNi3IA2@7^lvDx`Mij(cY~MPw}jXrijqIn)#Ntr8p zMU5Jpnie9CrDe=RYxF1{az_UiG^m|iRnrOfSX|aW0l;S<45GyZCgL&2s)>9V$WNL! zYK7XgFWWKu%}kbbXD&y~?jgZ)_R@uGA;aK+*f+|!KP%(HYXb-(2AOATgelxTm7V;V z7o$ShfEO`G$_b~RbHiTs!M{;6ulf#x%YJ;7%h>=kD>9FDGZ5|N#nunPUiwY>A zAoZB6@w6!0{Z7N9<&T*`A>kqP<0#3DC-O^=@7YlvJ=3Um2aE38p|KD`IZ;$WzMG1E z62=?=p{Jzg(uZY_fl-zWQD}hy#h9y6il%m=3@n0gPx!#4;jv@G zY@RaOwVhf{CyI>;v|KPI@oJ;_zB_(Nxi3FCXVcp+?b-!t9^` zS#CT0$#up=TNgGKB%S0(n92Gf9t9Pskn-jf@;RARLjv;j^wh7f_kORUDdY$dz3M9} z3A)QLW9x9<4D8)L;OzXWtI?M39V_vz@81wp^Yw3IY~OxM!m%N$?QGMNr)d+>6HsdX zW(HthN0(!e%kK&oE7727d~D^F-m0+xc(fFIPR}_kuSqL9s3fsyj?UK4pnuE(U`aGg zwoya15SSf3@BtT7_MZmKXlAzUaJ4w&nbh*dY2dux> z{OIO#&(-I{;^{-5xa-*_4MG9&I2pbqlkyWnTK6tb|Fm-^lY7B0+H*_P%7M`K1`Wrm z*5Qb@Uc%BhIyg;4*iJkIVxdynIxq(mOv|O)3)tN5x|TKy5J6BKrgO3X{xf^X)Iv9D zE!wHmhYpp{Hgu!|tyE2!THB)Gs;1byt#o_o44&4gcL#SluZ2Znu6dvDCT`dgvU`_wgWxY-#=p{`JxA zmUcjk;NsT1qasEt2zh#F_(LrjXk4 zAZ*7k^evzdFjpE(dDpeZj~g2@@vP-VJ8-90@mdUXxb#v&+M(ha7S=oV%}RFab4K_6$16rSCy&SUJuzgWRJH~2YY`++_%7< z$(q&-;M0&*H1R@5heicPbM5vlGwldn6@t%s!Rv6?xg;`lWh@F_er;-~BzPd1#+rW; z9+J&ItSW2oYQ2wyG5%d1-Z<&W{q$HqWSzd9K5Gx*7aa<5U(A)`ALTmfl<@=_bjF;q z+S2-#WDfy+n4RrO)xaM+6OSYKhNN@45+xk%S={fw>H}~yy%SCH;_1X!TlK?6F-hhDZTVB_9A#tOn4J9cP!1E?1Bx9Dm68Rhno7%j=Wi6zhtm6X?o25{%* zBZ>2Hj`#T@g@v-WvBNh)aC-$$j{*n%`ve#7I+aM65ah|Tk=(3^YP z4>yXYwS4Mx3aR1ei}S^K)`GNSwjw#1?xMd;mikiJ$6^?W{n3{@ePwofk=*-1h{KqZ z?>m@uKlA?PDFzr$pnpze0JF-|y7t1M%op%4$b7L`<{@8Fo|x%IDtkYHt`AT3{ z_e~mCo8?@nEYfNF+06=CHU}Q5n*hNE^mc%n_8JqmxsW)~JFS#$txN)? z&`2bn&QUQ9&JmVw8aM=DIZro^O_(VC;?Z`Jrdo;;o$Lcoq>@=%8236>De&EXswNHy zzkKxTq$B=fwd$v;HxuvDjuyoi|6$95JNWJ>2N8R|qrKp0b*}no(NZ|{w0)&LapdD! zEMpw?7;f!YEW+>r*ZOtih`w{^^3nduvPxdBQT@4`MbRyPUWi2IBEt*@_q=W4EUl@T znc2%%s4e=Ov?v(1sHlWtlR-p9V*T*1=j7tD;X7t)YdPO~lTPR->JP#zqej)2w~~3V zDTfI3Ea}9L;I_o!1SioXdo8Dj=6YUsc`^Y_A^}W3pbA_6TQ#AH624VaowwE&ZvejJ zmBqH)lT-okA0j5{i2a}`B?54BNo1cF?x4@S+0opq&mYXEy^ka-fP+jqTnio8FRT|V z1WA5^coi}*h60u@xKU!8+6ehma<5b7ZfI$s0UoLAJDvXwNFL?bQkE0&qJ&(QL-E;i z-b|g!lKPIw#TEY!FtKH2|X6@3zbIq3)`e-sbmEd6$i9gv(5@) zU+;^vk_@R`B>ZsVEkHsjIcOJZwyZ3{{eUMk6&Ov}eyqg{VfGnqpp%PT|DBCYIY#7X zYp0+BIMlnEvUNqb0xA3JR1W=-IjtI(!pAZeXND1)Re}*kzomLv0 z(X?S`CQbxQR6S8lJ^5tTZ==8hh8Y~5t+ZGLY63NP4a)M^y!+(qz^6hwfh0)YzR#v}eC4{!osBuA zY#Ucv8b01ZLWIzmAzvuvuq%72tNg(ufr=E3!9~Ai`gI>zdLL(~L($;E!5QM`$w2>$ zf#=klK^-jcvvpugGM^o*K(K3Blu6!2IB5RL!o4+SB)i!EGl><`=%(tElv~Migt|Xz z5*-011UC8j>F?1~=1Fr~=d^M>Cb=~-5&KAU-SpseFo0P+kh2}q)8o_b!|B+uoJ%Pv zqgqS>cX!;y*H|ICxBme@P0mxok;d_UL*pglLZ>>$_V!HE$LH+S?R^N1Zgcu^4rse- z0Vam#xtN6AX}5FRZf)u`jhEJhh-*5#(_%1n?)e2J^o_eKPAbonBtL1O*C`QES}7qz5WH8ai~7An`L+i>TwG1*GD@em$}|kU0hyLZHkM0 zi!ud`cfW+tG0xOkFhcae+cWB6H0bW}&|AG?9a96;SEdsh=;hAJdapXr9u1o$k0U%s zFiXvx-J^@alEcw&o26Q;JW~5T%uE2XN4IOLg15B0tZkLAO7HGbWszuPK!y90%k^!x zK^~zuW0{L^1BcdV z>X`Kkb(IBD?L)E7`n5aaIT}Usw%roi^Z$CbVp>Kq&dznIe|O^h^pf@W8tVIF&lEJ_ z_^@a+rD`Jng83ofO;i>1uUQqrDV6osj4?UEc^bj#hw=uTp^sJVLam@YEthwlC(Ep$ zkfe3Uu&o}0T;^&&cI5UZl~F$TY2QJ_)bd zIvJ(WKTY`zEV3?vvT?~@7%kiL)H90pd*Ijb)Hpw0fU`G6Nqjr# zuqu2GRn_v-^0Htq185x;(DUAAtS+|5h|E&mSDkh)Q&WECIchuMJUNNta_y&5wS_0=Kbp z5e47DtRk)}2yr_?q+3+`VYCsGV*RQh2gVjIFfYfh4f@P}UR2(6ps?mZRRlMXyirnX z$~v7#*{LLgl14%G6VOb7oyLtZoy`046RdsU%_$?XBB*v^fOML8>>)F|9YB7y*TG-0(Xr7aeujr7z@Hafk8EGt5wuKS21G^ZE%~5%piQy31J96HM z>CbYQ&DshV%^aBfk(mSejp7s$G6q3iI%M|}B8l1SOFhggo5phi`>p{TquM8QUZ^rS zN0cdRAxVJWcW`uk)o9~(#SG=+`Km{Qu5hMel!ZP8b=J}d%8373PdV~%f>+(aWf zXw@P1qv+M4dC5Q@<g*_bNCTf?t0yDo1iak3T{?Aq=ClJ=uV^)RefJyq*2BksUV_N zWwO@XHH^T+-DAqgD+hf#RGq>VEHnrnzmF;ygT#YiX$-OJrLqt#C&7t6BE5jE{ynW! z+8$mvqmOg*`~ROWK=|Tjb__OHgFBAJVMgSp`6Nv#!mGa)bY;RICk9diovm$dt}zP9 zHoP-4q0m#5)7!F6)H2-M;$TZKr?fWFYworuKx(2H*}?HJRG7q+igq196Do(6#=zdS zU_JZL=&E}M8FrId%7AO-oETnpvv{*QG`_x&jg2`Km8=OnH@w}VZ$6JltsAjD^Fj8> zj%s@SqdA_Jy9m3GA!peXnkLe=B+|WUYkuP~y>IBKwj%vryzVSVXob~mr7N5kbKDYcT&mkQ-xG|8FI#~QU!WubMm7ivuN4Ds|?i+ z>Yeg|FZbz<@KMIUbU$$Bw4Ikb^rS=gx>#4Y?@x6?*h$r0R)6L* zxa9qNaTwI?blsP2JL$kS?UlT_-wUQ^-Sne+zhX@6>TBg}qAihY+}R3FPiyL4-h#VI z`rVI}Ntq>YW^B5)7PconHFd+4Tg9MM{WYfY0Yk7m`ASjnS3k@sYo?=*cSv%x{y)s6 zYtdzJyzP(PSsrSjPgSL-K-D8waU3+va<^L6pmxF#N#5YUu0_S6PQR|A_1X?0^1Zqu zwtJGB35P;J8m-}*au$z4cd4Moz{9LeK4Nt9pn}gSLP^8{&hib_YLSZ;CTzLIj#rq4 z3RVlL;s&MqWgAI}h8Zqhzg1q{wNHq3|LT9OczeuA5vn)%!gdyM7wslKv0k|t^tIrn z@t@1Vqg@i!&Yk^zM8?hc_BnNqD*Y*4B6o$LKjGx9 zYZt36<%*v|?Z45kc#u-?cN5I_y-4TMM|~Ara8oJ@aBnM6Tq$vC9XXV{=Ug7u<;O#K z&7)b0){9_5f8Ob9amZfB?(`JDZ(3#Fo#D6SrcS>3>Y z70<3m&UuZhQz4X>!}JekZ_>U;ef8!#U766J(Ww(X=_4I8dZa-(`au)5Mc%6)13JA} z_(&wkHxz?u4=cI6-PVi5?*3q1J&;br1Pw5JAKBqktahg=4PdnXrP)bOfn{f)YIy16 zEMs|O9dScEyDIGjc3Ub2nF4M$ab2S7X*)(8Z3YBA$GjmvUwxyX&!&1(>c|(ZMr=1A zi#_?-pB7!`M+V!eXhQ!t1-b7L6~tJ;ky(sH{{~1od_=1FS~iM5B%*l0_g9?*dF&BS z-dJ)CZBY{{QEucYSm6N5mp5Zbh1(gjFSlH~Fss8pc=y z4jK@NKLP>*fAXK^)bxJ@n@=Dq#O*C5SmS&a=Ou9!65R3N|I6H91SN=o;Gi7;BZF&yw?AuVQ1rt7FSnzA&*&X&l@NH9iv0hk z1b=)gpvih1<$C#lQ#OfwGP`wB{=fXB%nI%QD++Hj0J#Y8Kce>l4`PI-j&t-DbYGq( zyfC`q=h}1KwrRQ%;eE-pTUPeFzPJ_z`!HZ+nQJE>K5o$o9P)NHClN<5*L1 zL5DwucS7ShI^`V-g_ma-z7KaTi#)keSNGKSey@LMAQjUg74F8IZl_3I5`O0c06szy zgEV7yF5CV52ZsLccEj4YY5Lj(SzG($nLVS!t=YHkFKAl)te&niR`xk;3I7P^sxObz z?|n_l%3v9G#Nl|hFk*j&u3>S^l(sQ4Hu#8eUiXhH6FZ2dSkjiYJj_rY*2a}@l0e0v z4Vv!-4+DCj76+Qyh>~0vP1DqlcPV4Ff?lg5a>BoH!s6(*cA$n}(8LMDiY`j9LHeP8 zoC)`^m+{%p=g9@Re^UNsD?a?mXL^z{I1s1e>^_6TJbAfqof1EU4=+C!L1QS->Tx)h z%ph9VLrcWp0~r4jAZ@@F3JN_Q)i%2YpM}O!r!hNJ9piEH+;`^JsIdG)MG|0JM-i-` zB6#=p4#k9BN?OQF2`3t;f#Cv8xAVJJJE*NnIS8KH-YixC3)fC@y93YK!D)rhe!9~n zXA+|DfkB;5M+|5x3tJy1KbQD#>`>QGdsWaJo*8MshmhxB!xI*$84qID4?Dy~y5G)2zg1SE7A=r|F zmhLv6pOd;k?LBf08)CrkhSboFxoU()Tu`AHD0ja=8!mM1)x@NmH^O5^uMaedsK7mi zpf{*M77)Tum1KgEL|R6Y7Od^if^yg`b=XRS%DU$c%R3nS+8dlt%oiD_fF?mH;!Yhz zgJrmNlO`@g+3CYknVUm}ESVS!2(Avx^YUfqx=&eiu|h{sNTG*B?L5`(JT>814ZZHy zPzu;Ng5?T5_i!1mv#Fwty%uphXqLoYt7^`7Uqe#h4aEY{_yd3xdxFmx!S3k{8Kcgn ztMP`X>@FSkcW&)P8q25i*;AOH>AfUw^pnaBQRnlM&HPQwCs|EoC<7EVsuqnE#7i1H z?yC)Vt=s`I*0t`*N0uM<57v7syN6J>wS=zgph3zj|E&+Cqhtu@kV#lcP9?arUUGu$ z=2?Vw5e+nI5`}0uSbVfI<~&(^UkG(%oV-M!*|F==o6nvF1~U4{&=1g<2j&h787CDP z90|q1Zxy9jphoVt8b9@H!x}H^GrbMCuhwiF*jm)zgQKpkn@sbMGQ52spg#Gq@HM$a zYIJJ)8X)_6`jXaVE3si}E(=IpwH9hP4sQAR>h`UEb*Mu)(18F!o&g#$bZ!^a2`?2=P!EgfYv=+vV5EYQm0Xy{K+ou~AZgp4Y# z*G7V*6XnZqc{q2tMZ0Z-uK9mGV++Yg%kVTe1{#JwNz14*^wxfxI=toe@A@^1(1-yl z96*eM%M@H5v+g;+Cz;kl9mRE1{PI0(E=m@D57lcUte`-8zo946qEoB%9PpH=_Em4e zPk!v)S{-V^S~Zi?a%ERZB={v&QIco`v|&V@Ix7uW+q2cN>rQ9mcR%E6Hj{#40dh{( zp_>Z^DVp!Q6^*x4(9zg|Ey%$lp$7E;YZj0_TqaZBg392258_VFKTr3@VlK+hU_=-o z(9&s=YV&j>Z62^`z_Ae5_R1uY)mnA`Q9=qC$_!=O0|dYjO2}c#GOA~-Q^3}a{Yo+- z$%`4XOfsRS0gvr1MC!lPjH=>I$p3ZtV%>-M?AW{`qwf>)nxcufo@1tP$dD5{f!8Q< z*gWOxuE&@UKo&=WQc~4>L9oviUiGP|{rSTgmHP!*+D12)omZQiLQPxP`hueFrA`^m zeKVUb3;YVOmhla&w$8>H!3PC0aHzLGfrFqickd~l^jh`t)W=%VILqU5eYpFtwsvdx zv!VEFW!)HfGbhjOJpu>|1poi)DagrY^}=xY^EBk(x1o7n^4rVV|0$wm`0~@u(@khp zMz*FAUL1is1FrOv)>qFN<^HDw;ep(#{?lL|L-T&433J;0SLB?U(dHx73x?heJTFyA*vlc&8%---P9nAL_h*Uv9yIv(rc>NXZ8`(zN|~ zgf^J}S6MbSF;I&5e+m=6@Opo!Qx&!zDfXYW!Hf?1b+NFF7_tKS?^VTQfPvauEEz^s#MP;{`ZOLaDS3j$w3y-*%!DLmgj_G2Gt{v{7*j%LSv39 z7RaamS3M{hj(8nDCzt5vatbnDJl>OsmzLT;W~VR8Jt*o@+M5yF6GX4!bZ{i|KN6 z+bRv3KAGxF`+n~GZIhGHQB!-bCu=VJ?v8`ywvcMW$9T>p`tegGw3olIG)M3sz6xL?!zMF5`XP!_u#*C;ZLa3#zQ1`A#9+ zH+lSfD*e}*Z}ks+sa6vw*u1Bj>=ub2Vk4OirkPVlpF7NKnwHJhn$JU`Du~w?bBgT( zqf7JhJ5HzkqGue#dm^)+>{tSFd#gPh+Zz;{#LzOgd<}f6#}o8XT8*9_(pSSHJ#|kIIxESJkb( z{+iB0ClBADdgb($VW2EO&t_d$!Xl_Bj)A;Yfq^0kcfR0QwUjFx`03xzwnO(oLi1$u z@)Q3rHC5ubHJxQ&r>gVK#3}b#?t{Qz^m)&F2IjbG!JBc3Io-c|`0Y}11x{|;VeKkF zHjRUp3a2WWCzZIgoPsB{TeH72YRYRUnPk_^W7N7|2pX~u_MJn&pMw@$s20p_Z^Vd` zdU7|zWHz&xv8_>nr znf5gC4L;wUKVKR9jW*+SO>?bq@{bN*0R()GrM@Ej~I|R4-;&|Cp)m+@zi4Q>@?Bw{ZXWLI-x^UPHhBwe8&5 z(6y9Ou}gzj^kZk>AET4HfRbUYp}KCrpk(I3bWFRa_tOsZ3qJbcAmGYI*h1(R3fCJ z64y|r+Rj&KMj){f3+x>ivD*0Fk=MQ0U~*&~!`(NK$bfCAx2+{dJo9| z8A6#~o|R`FHA4J}MGE(A)AC!*!MlPcD)Bfv33s66uX~Ys+A>pYifhh51{Eafn+cTq zeHIxhl?~;k+n;fV%FOYV7sSU->(FLq?;@s`WS8Zo-xE^t>ng|W&K)M{Jp!A(oabLE z-X)W(6fUKP_(sRQ>-RnKMuC!QNwd}{AB~@&fy`kzOgY13r!UdDcVgJDjDf(DjdX7K|8dOAc4p`Lr8*~3E`lkKeC=VF;=?T z#?qD!Fu$!CxUYoUezf_M8Z=uKO%yzR(wsv?dlvdTg6&5`NPfXJPDQ+d>LKSx!>9M( z4b`lLa{}_w_833YMdE*Vb{lL4BjYccTV8!=VC(YoWSLueKJk|6mYr5crhk8`60&YX zQr$8Tha2t^j`RJIERgCSMu0|mtg)AT*S=(-Fgjrt^qZo7>9FEgRF?Pdtb*fA6&LaV zR!_HTb7ooroJ|knZ}?bt;8PFo_sy%#CT?pTsHmIqBO%V*OgJ>%H4WJZF&6DQgTWZ%Q#fL_Ib#tU*}mWmR>pF1PX+j&iR2 zWG~8FM9;7-emA3z(r?A!#d2^qF8q_BKbwEe#|~!s%oek8`R^_5J&399r--lJ?KMf_ zMFA5s^7k*V5YZmKB$Uh%(#%IV0`f-%$4R#E<(p5?B8aEu_AfaM+?5|n&R=EZ;tg)V z$|OX@Gktm0z4ON$-(Nx;PCZ$BXodOm+M7K!N-n zov>Ln5g!o6<1|MCNi5{zvB8`aGB1O0R>bEy+KEG&I8@!w4CTDdU(Heq)(-A&TO>AT zJ=)(OBT$#lv?Ezey3-sD$!pAi6#C*Rd6F_5HAU~$pSv~us4Vh^-@preoz{PQ)|G;vlq; zCq?ehFOKU7#(6+^PKHqX7<2;}r$apG_r+iMmM6HpR6Bn}uE$69UQe908@+|x)BWMl zr&)P(1w{yb0h*grJdlarAnM9c4n02$oyZ9OtbSC9;@)jQBovK0dUlLHj2jV`e#GKl z;roi+)y;#Kq4qM`*>m#mBFu(STQ*S%{40vEGDbTF{gFwOyH z;Az_~lsubu0H4Ub;#Lj#fwB)CKB`~UUv5otZ5vXpQo-hqN3K~%BA%r!Ww z!tZGB_y69A3ojpi-`zJV(5b|1mR}?|p&WSj`6(I~d(HbdEqR)+Ja0sh#+5P<2#3K% z;EzNA)(Y~se~-T$TM~6EUHFQXwWa6)l*HXQHx%ToQLDXY33%7!NOf46=u_u>A{&>Q zC}Q8|Vth*udoDz4Sq#x!{M9@67s+(DM(zSIScdK`KV2yjd0_F=Iesr*8ecVL*Dc5A zwr0mmWsy_RrBjobx|&l}CTmNlNFHxEQUe1R7;#LZ>mmxGo>`$+OmYEzh(Zz|C$6tv z6=Z2`ywIPC_~bkFm*Pi3^j*7xQnpqN8ff{*UvD%nhG_xQ`^R3v;g%^JoTfDT&g>xziT1PO@uOh-2?qaoImT zy(AWdxEu*bb=)g3h-s+PeA&P2cFb&d-K#7O=0;{QhZRHq^`cxNda+c+7&g!g3Ow)I z*Pvf)5@s%WNmR4d2LxGqK%w2rq>!G?7h~}KrFhF&#=?PWH~0<6g>rZLdNm=GQVXxi zNNT;SWmo9$FT}GWR4iK?E9-T{NpxEJFF^~`*a!ZbRNZ!Vti2o6)D}CFjM`3IFE-_A zl-7-@9^R58eeW*zQ%UaK>8DF3B31D*XFhoW2dg^T5LO=qUr1uShze*LGR008y?AxV zM_B(xvo|D5v3qNvI-t|DTfTb{xeUD;pGA=O5oVqt78Q$gfnHM3wy~P$tRf-;dAO3M z@!lGQa+bVglsRn`O~r4X4U;!wC!oEMNTzac=ovyL{Tua}^CTd)G-W9$CGevloh+|O zI7$l_JWS2M3$ab@1zIau9{G=mA6W_X*@GXqwg&}{CBIDSb@x+CUz^VfpHF{mmW?>g zWUFX$h_Mzjg)IxC#V56{Ju5XI!DHKG_EOYZo(wY;7AwyT%9LjC80TcCq$zyJ(itbq z`;7}b7Dqbd)(tFuLBKwI6HqF98vgLchyoyUh!LyHe}i4p58e3QQ^$P%TtA@nV0+i2 z19y5{H>`aN>!0N+fi6%Lc_IqRJ*hzcSmb{53iU@y0ZjpUe^e(=WpUc2?MFkY8nja1G{!f;7<< z!-blNLy~Z3iE0-~WhmCPI+g~=?mgA-+T$kD8(Ppde%+8X;;o7ZV_);)ZzmNt^#^@L zRFuf~GqzK>ScrQ~7BGf}Y}S8vlom8JT5YuGvKI`c+KbYJN2u(jgBYTFqHFncR@o^C zLYNZ{^8u-2t>HiDnk6A@Jz$BNr{5Yku&VLe_!Qv~73^%yFz%`V*7W5NgOH{IWRs}~ zU6VLi>FBH7crQ?(C5fr*pex6hx>aD4p^V?Dlp9oUm<4Go76FH4Nsxed%Sjj2fW-?U zmL5NB`A+f+1=?z`qL0l#UD*~4ct%7<$2jFyIahVwo5kk|T2RBX+y2d4GXUdEHxgqf zhBUOwhPE;)8(ymK$#M*zkrWQ3DJIl7X}uugRC+KN86}`V#1e+{F`E;#(c?i)eJ^4G z6Puw~G8&RdvtY-A2>hyFF@~X$it+F1ZCR_H+ARjh}3DTC;zYbLqM2(jm-}Ev|n|Xi**(?fiJx zxR(Vzy6OLZjlf`wa~X{L^S@|8jU- zKT`8cWKS$X>%Ag*m-@a@%Flc?z0#}B<|fI$_OF`O#Qi2k)B_;0O`J);2CtREsV@h=Wpb@4M&TyBRISWq-6ANBr~wNIne7Q zAxb+%j6W{7(Arw~0pKSCb}^Z_vPDek~K#FpbpC zAMjF@Q!&{(>&VU!I_C#iuY(d3MgkwxtQQmBn~D*Rck`L%a(-_1Df&1j_&P#-!L550 zo7297L-eAMMNZu9%;F%uNE}-{y!mmk>X0EV64uOx$If6LPR0ja4v|*NO8HVXiX(hl z=O{-aTy{`2-%u$>FI$`e8)k8Yr1iIea9Aedax9Y%Y5UcS@XCtjo9O0q0h+hOj7#*? zXePBf3$ob;Z!@R0ERc!)_(2|+AxnFUbt5mQ6?|W_urzG7|1}Kk8r4Wyo}_3Z0Y0tL zl~iyfJeCQ#_`EggArwfYYGcYpStR~|MbDh@VjTwv$wGGT-~lRGQY9eGk>zrN&>j69 zaWhhQjEiGFu+Sc6ETDYVdtf12OzcEyk8Id@X7DUA zOUKWXNub-M<*tFJ&3TSu^t5%%V0v>ViD&`mjz=CT7&`!?!@{obM;l)*be|rE_PUFixkCDLF<+POuS4M}exy3O)JawP4r986^r^t(`GHRhiapra_&oERTPp2f3mA7$@g4CzSbFGT;wZ5*bt080GB1YHp9_ zl?%Zrqd9&U;sx1#TqmdT#71S+P$PRJL$0nLAdL-yFQ~AmR|TcEI5@TXB9;h;;1`X6 z{Ne1)5rd4STb-8XXeD_1+y`8Q?eSMMYJ<6%Z+eTd|J!wNitP3492sP(poR&BB=um4 zzW;5f{6O=i((NtYooYmd@TRMS!}QNIOx=Q4r1e|)x^8M9^?jO3o++X`sf~ll@1e9! zBR_#}#w-EPqK^!1CS66@6VhIl2if+4Nd#zkz+!Jh$aB zf($~nbx#ISlD&8`qP_R?(f(@|MLgj8JorGr@|*PTmHDYD^AO?7yGAK2Bjl4C1_3C(-$i$kDn(#5w-goeZ zr7i1CmjT{x6u~wx6DNz8bdkje0_-s!m0j+QXmyJPWC*I0Y*jsvC=AE=>%FH>9fP=^ zl>(Vh-H?9_Dj*%dl^9Mnz!AgiXk(x+ZP8fOzs%E0%}>c~ADt2U&7~PT$xw53=Y5Kl zqi48FRcS0&$!X7r`6_YD6#6ZIf{cL!?t@8h#3qxa=3A^3a6BujwVQf{E6T*T`PgTL zA^cgTb-?QQ=BMkhyNK1^{K)d@Ff@dQrjXCw?)<#QYY_+3kQbY_Pem=4s2Wa%uwpyY0v*X>RPPL9~ZOH^Akh(M}LXS z=1h*d*Z1@3Xb4(UcjWuL$I_`L=KXvk1lsy}_1-XPtKgXW6xyAwfaBI)`p{SiyR*I! z|4mMBUmm?XsT3CZqYcr>KOLxBQ%45LI}s0K0M)lr!EzL@Dpv(udwF8Ja0_9)Khq*f zu(>Zk5*rF8H!J}y6A%075|5mcXgJ&*FvB2+UR%zN65O@hUjth(M7h#-Bob99neS3d zaJi}@Tm)oQqq&;g26}n#;xv9!yWaY1G&LF`Qye8yllav?f&;scT2OKcYc&2>wiMrnAcDytT*INP@U z*Q|UohB)MvJ66)aSnxb|aIX~JZ?2)zqMy&~AWUXUw4Hdd)A^d-vC5UFCeCRZ7EzUO zbD|nLC8ReHJ&X~0J1lzFlKw3Hq3-rs#mq@h$v-RnYRs4HfW324+WgyYcmsL_33?(@ zVeeu{?#AbD-}@?=g(?SCOZVdbjMTIQO+H=kg~@7ph8eKg6wB%$?8F0Yx|JI1*!?*znZny^l3G`6FW=6QSm82V@hvkYfhj@>>KyoCt@6; zb^_lj{wC8;Pw{K0ZRGe;kELpx#OqFPQ@*-bP43z70o5X|_A14JD2lI{S__3l_7fVG zJxW;Cj86C{$losB03P|nzX?aPLLY;A<86ait6`JW-wN#A)ZM14vH6X`6hFh%%i?n| zVLzrF2@t-BdWL1{z0=1zw+Q2UXKq;Iq*8q=>uX*PxU{HzOGTaF@IEDnc9D#~dUZFx zwpT<2%R7wpBg!>2~9DW&G-%^U5d9466a;;N3E z>Q#~{_OJ!`-a$4Y)!FMzj1Z|G-}p*OC;ByjZrbh}5AGBu2G)Jx^NSG3c6cBt(8ynA z=__rU5pJ&0A2o9Q)CC6N&-h4t90=bY{?6T@m#C0q1mv!i-35A~3(imH?j+aQq?6+9 z>ZJWbTqV_s>lCq#|I1l_Kc zhH;fL)Wvkr7;L1}C|X15*>H?loNF8p!0Ts5adYeLc#ow(SV)Fg>Limu^s4+-VXT!t z+eT0NZ_f_ebaAt24Bj7uva?T?{3k)<;qh!8F0hI}5oQO!?Vsd*4}S3{4WuJbU$P&A z{?$?byK&h}_tBO9R05Kb{~!&+Y&E8oYgyU*l8tQ*ev~x+*5cbj{d)}j`n)RyO5$(; zVBGwf)$c@N%aVworF$B50C4uHF2dxCd3xE77l22 zd0#vWwt+*B6N3L77Zhg*x)RxYiyQ^!XhQ@gSeR=B5#;ANO&9*syy*$?Q?$YmkcEt+ zR1ZNN>5BeY_ZYR9Uq|L+ffKiovcf%Dgdl<2Sgh;Dn=HSw)^<`lfST;o=_vR3(3+4P z*-FOWbF73fSgw8Mf1a=A>jb8s8H{Z(ej^u5dH`=ue%Cb$;b<4{V%hat%q`m?CyLpQ zF?tx{wii+MYgP)<8b)TLHVe=U5_J-xOulJZ`4RsZ4@C7;Z8c9k`uF-SkT7%c zB7LDyVGCoZqP!n}Y{)oYOUIFJ%=_}3&q~A7D5x{a-S(u0jd_|3O2Kas4$`RQrRLOW z7jcDZSysfyxE2t9k>!lC6->kfq-BY}M5Wm9*_pmk>Q&{;uiaaJ5gxgWG7jbvE5>x0 z4a(Aq|9qU9qIormU%T~#j9m~SJ^7-Nu#WqDy@yGAzkDF%;IlC@m+<3)Usg5SxzQMR zfTr<7($u?8&!$hu+oMdE#s^Pjr-+Q7*qJa*VMf{qWRIzXFcd=3QhgL{XgPgT77Elt z7H0BEEa6|&;_p=%Pva?hIc8cfDjUPLE^CNE-8n%(hWSC4^6134Q+llB_HCYJPgw>Q zt#tzJZ_ixQcUz!NQm(J|3Y7NJnXJVH53Qk=BiKm4ux525vgt5GG9+WsbV-(k-R`Z%n{qUCL=xY~D0S8>q5pX=OMQQD6%TNH zc`tRd8$)oGtYKVBPb!14?{FkA+L^)wYJ32ALdgI8wQ+De#vD%N0^RG4cxv<^T9kkuY7qx5pgOq|R9v6lIDeU^1W=jUXNF2}*dn5`LL$BpH0QVdw z&aA%~o|TcqNbwYc!_WEy{#y+8-1r1IAY$ZJFpPO>oG{0A0M<*v+eV){I)>d8{J_vK zOaKa!O>Y(rM*qaO89(6tN(Xb@uzSW!_H$P_mRn#q*ftr+2d=Vi>O;I`5PVBo8g;`i zS_8m%EVbjA4>H4@IdK4*R<62&S`pbfsm;0q%yBK*l?%>=q%8pU=N!7Ky3SP2nF|b6 zwI7;`@t>jaA|k=HS_%{+hlR>h3pE8WgupP)Npcdkr;_WaBBt0wxj7m}PMd{+41k9H z2R}lRK1JrNu|o?ozeEI1v(vqdfhJ|^v?eMV@|qG^HbM|lNliVZ=zmHFN2^n|!uo&(IzN2Z>=h8H^#`}&t%2uT#vX(6t=2yknST{g-)nQ zg(t#ldImey#nC{*5+y(_)A)G)1&Wai>*O)m#yYm=@uRRdx&{i+>#{Muo9QlQ4qu~T zYX|5}B^h&Q3MwX%s8O6)o3|cJ*Y`Q#vWV>T;eq4jIvfE_=9->1Fg6lPy`YK-uj|_A z;e?GpskI=j=Xd-@mcto|nXM%mhm~#1)!9yaPz!KAA(Px1=V((hGFB6O}U~zIP z=q0XA=(n!Nf27_iD%lZ&%^dr_U|hHFE%d5UClb+St4gu$-w3HOH`fwk@9+MWPuG!q zJx0!>$J=04yPJ=VGwfWQwHm2g5gJ9Yy`C0pv{LY2Ki^*#L+A9tR#r4nZ9f1vaAEjF zG-M`np+@yku7`2Yr=iIhko-srL@xz0=WzE@Z(FEdE9X^9xN8v?sqE!WT*!M#SStD`Tm$e5^wrf% zeT5RtA#Pt$7|@#HFGsXJxNhE;|7@00L9M9$EK92EqDxr-jZICl$nG=K*33&HdSm1 z7-Z%nCUTn`bxF9109Z|9*{DlLm&C@gA}|0(4sKo$6tO*FN^VZFt*7|r##csPgEYN) zMJ<-}xJ4#hXp%(C)?VxzCJ7~nY_K-$CP`y32QhM?YvV*fZeAr53seu~YGPg~jm5OB zw-(spDIu(}(4-`!A64&nJQT$q(`bFbPBGikJZZC&xtKWKIC*peMi>_k=xofU9jjE4 zzi!DW))19G+++KsmwbcEjmZqvWZroR^Hg}hny!{CpP4+G3Ih-@;1qi6;dC+$_>O0; zAMgrC+{V~JMk^D}cvxqNL;9!N&10g@Etv1V#3}>z0 zMjMB{-^S~rn4w-^HKQYq$>>t^eZr&^o;XpF{o&;>1boNqBY z`(lQVTuZR8;yBxtdjFYdGmXooY+ztiR14jy;; zb}mdv;HqW*0STUQa^knPNi1uYE_MZSgm#*GPf%-D zfN=|R4FYGgM0B5v7KuuAZp(EUooq^8MmJ$CT+}D3M+NraI+?a+Plef=gD`Tf$Z-!i zHbM*lrlN>UK0c#7vxiMQ*|Kx;(Z~)sLPJMUB3OGf0=X_faYR2K=t-wEy{QjwKu-Jg zp=Gv3l%iHF)kGj|W`L4~mH{My%Llgx6IYTuhsxvYJes#ZxY1TJk?Vi;7T_os^Zt7@zwAD|+f(>=i}0lCzV zZU}pYy&SgFw2D9Y(@m?e zqr5sA%+I%*IqiVl_ai(ZPUC+ui$#nacQC;hVt2kOvxGRmTIcc6nHc29L(mQ`nJqY2 zHeN?AjT4HUPi7#uCkIBl<*=$huLM5sMRcmf*$KYki=SXs_@wzN7xDddnnF#kMkmv^ z6aM{hj9eJl7h9;L8>HSjTv4!Gmf~2BNzqB_e~73_YS3DfM8@q^vLC>#&@*OUicvwA zoRYHPH>oFAN2R&A$hnK0zOa{#K6^+QYEvsWlBby%xz7YHngk2Qw`KBUwT7xVVd=Nk zGjao4j6rnF$Wewi${%n{D-Nxu7ogg2UDuoQ6kF)p-`?zmSO4QU#&$*d1ZtO2p& z0XETX>uPB#q$e{mavz?N^Ju!t$c*qq?h#Ii8M)GH^Kl(fjNE?nf=!XdK5W7+5(AdP zsQ=#dAtEz!Y;Kl~lg1=>WcX1SB@Oa}L4+_23HezVGa*uj{4_m~_(%u_MlvxkI%&)C za7C3%TIHm8X--8}5wSEQ7H+YOTu2Q9q^N{Vj0Ma6M!4}_RHe`L;{q>IdSgJrO3-^T z7Q$U(|M(hw;ItJtSow!a_0;w8&#&*!#xM2byKdcpk$ZEPi2rUjB+Y@kH=S&7d&tQB z)r8COI&wch+t~q;+8bfVW|X%NjC(VaR$S=dDm~#^c@RD-rCV6bGEVI(<*1bt#mMb88IH*b?6MovgWs{<#RtE0_Eg<7!L`_T>QP0Nt1SQmkivclVM8H!ho zX1TP5`hKu?_%UGQZW1TQlU9Z8B3OkN@KU_Dqjlt(I60oR`qs}{?It@Q;r2FWl0(ij(3_+R$|fAA&?xF!DYz$ir{qR+@`3T}m9SfRf) zseHI>!jQ_!#etQto1^=zu!c z>}^WO5p<}iiy6761ulZu*js*4)C)uevnCkb^{6Ql%@deyh#h8(4noAq4*$9t$E}2) zk|LVD1PifDq`}ngwKCuhrh0z#9RQ+&;yN*`$&8Efdmkeg8X&jB^NFjSL^p3#kJG`p z<0tlkm}SWXwP|L`o;Qbi0rF!ff)d=aFmk9f0XP9&#Vd0IIVN^nA@SBGjE!h zb&%VCX5xr&@g?s!W~|rKC9aABGx2f@+zmj^#YyS>DhPh3awIBQ3bG!64RCBC$+Zgj zmNp(}HckhLpS@v7>@qjkw$LuEuUK_}jCb<*m|`t!79J8xoIaHuocPK);xy_<9nvbN z)8$`xHMBxpd|su9nc1@Th{P$QXWlC;_LLm8J&Z+2i0%TU z4EG=9=SgP;8-XP+hnrY4kVk1hljjMvPok@8}4YM?RovcjT z>jWLbZekP2RJeI8?w~(T&SHEMai2J8V&oJy-3-^J;OX{mc{-)Up4e-(+u7k~H?;ab zijngRjx?(jzuo-S54RY9jUF@jNBimy{K@gr-M ze8R;wW`-p`o!R|o+#KD1A_F-FacmxWG!$2%Pq?H-YZ+&6ALkkrN(5id*_36H4!oIE z_WR~z6tb5boat=$?DKC>od z-BEa)7N|~CW-S##0B7kOUaCE(H*}@I(j(JTQ7;^d)^r z{{Np^u^wc-Bs-hg$!@!o*p5Vz#d>`8@umF$dV-PCfz@F&=FZ5$HzPKI>Q`ap*!YyV zj8kykyzwy%%#P}MAxvC&XtgA=mHMfUDKeXq6h-9`qwGp1*f)!__v1gp$kFmn^TT#Z zE09v%w*u4pp?k3RLZ4ny7va+vW52sDS0qncvwAfSXi(i}93cU@=H=8lPv}&%@xPK= zBbE1d`x(Hs9XJZ-GRi~1>q3~fE@x(Ee-5rF8Gbk`?&$h79OhTL#zFcr(m){h@!^(- ze)c=Iy(pe8%$hq~wVDj9s8c|Aq=PF*Q{61@@vK7NsEx1~ z2D@@#nv9$=gISIYNlF<)3hO{P898rl)+VEMdd%f4Bm^qjp{s0axE&c&BMMLSR_X{I zl?I{Yc!2e~3cJQb@{DU0=war)e)E1{8QM0OQiyHef!xWC~jpk=gb^CVJaI<^6b{lBZb@V2bKi@ILJMu*q?Uun2pVO9@ zic$?Ri!(Bu=G)oj^1X4IBW494Kn`6grAOemO6Gp3#y!$U}l-x zRG>JduTj-xS#B1|6^CQJ@`5Zr?MAQ$(F!9+^WiqpL%I{k9lzhA_3+Pqkz)@OG*^vj zJV!2nXxF*2(Kc+w<~I-^y8MO9FAT%(phi`5(wr0>W64Uok#Lq!KPizmnnb$GGoCnp z+2^m~W-d4kiGOqn6(^#!mgj0Ny8~w-W3DCLe9{ykoPr@FBln><-*w!Z8e_Fvxg|jE%h?>cKNCjIty=w(m|n&hii9NVv8#iB&ksT%&^{Hlq3eI~ORR;BU1=xS5XN^<* z@XD&;-}uaO7^gjqmMa&At7lq0Y}i7ioeXb5()aT%_xm1wTVHYNut!f#Rvb(oLy5UE zdLWm{S~GG_n($HOBb9BDI7}_L$--Ih$YsN-wrRECekJXF(aFr+F!l?OLBl~P_ihm>&abz6R83^$HaiBO z@1KlZ0s_TbZX}~xEb*q{HUNZZJ&CnjHCfIQo?ynefvm47MlNaCE`J%_s8(@k8_TWK ztVK90uebaA^iN(eFx8T^SKLV*hvo2R@48_eDWlmq2uaFu@H zSOE4dIi&`N;RLt%Z`)?_%8(5mTkF6(ImsB@Pbj4NN*m8MkW&+01?qA=V6HH>mYdAm znkrF=IZ$c+8siNz8SlocpW^S~iK{?0b1Ihsyb!5V>w$Ybgynhww-?^J{<&laQF32n z+z$y2B3czA7bdrvLS%};u^k{%DZWk57;yPXJLScytOOgccxdHu865-nHQ9f)lZFUT z-fZM(>;x36uZlASm*^nYwS?R~nC=+gR_)e|T#m!hSCnF! zHoXl3xuiw>#I_|Q(vc=ULMjmiRhE+T7f)H$v*z{K_P~EIoaV$ve+SGQ^teAwT{r1h%);p7tMd2?Hkd>SoMtMJ1S!M(zdFs9;sz6}QNUPw&=;2Wqi>niH#}aFS&2Z)C1#P?1#;Xm6zd#_Koca2a%{);2~+b=72a z!!puJTmZbT%?S(9V_zK1SMp6FlMABTt}wL0Wp`0VjYREyS-^YJ<@)O!FQIuir$jNB*BxkX0qv;N=YaD~Tbt*Q-yU!FK? z)f}N}j#AZ=^PZ>U##FhfPTAY!LjfJRhqi(JujGcJOZ2z?w(>0sNl=QmeEKb8;ppXh zS+DEm>R!Aep9#67BE^+lz(3tcUsZ>q6OthKsQ&OhC%nus(1A*4w4e3cc#xe11^gN-;`5SlcHo3?psDjk$5^>Zb-H{<+qnyq#b5#OcnyNw}hM5Iww z7Es7EI*MT7^;>)E*U>LqUxiYNYWGyUzHMxSA^tn{EPtl4RoZ*j3eE~jYYleF*R3o| z*9~${oin;j?1cvoD{NR&-!u)JDLM9b*i6ZcsK@)3zFT91D&8j-2K&pEWVGHHzO5J0 zJlcYU^`tt}*MT}z6sinw6B--+HeMvive5{?X&eo$5(&>TCxK0%xs3V7)jpkeQr|H+ zJ@K;gEv));u0t_q?n93A86}Ngfp^gM>_D!2h6{_u1-6pJ$znAuFc696mBgytEhU@yq;1mTxgg%Y2PqaJ8 zYg>F1eU<3pykdSheFY`iPv1&)bXf$3(yl@q76>#T=XXIEgx;37w!kG{6*7>Y#(_CJ z?57+KNd6TnyBKmWEbw zGyDMzUwg}`-%*j~GCzQ5lAKg*oK#353__?-8Cnf(F2*LJ-Uoqc?!u)LysTv7gC<6j z!+^!9i{-?sqILR?Zj=xadb_NgCLyOY<{+9LM!ISfDN5s|Tl#&qPqOdKW(8LTU?A7I zqzk7VSjsD>Qhh?35XB+EE0MyfV+oh~QljEx8{gO;E*l0_B43vHX*yRN@pyB4n(X|N>L zIGe)55n|+szvpi5b-VBjlfK3~0EC+KB~xUO^qAM40`2W%A<@1~f8B_YV?FcY_LQ9R zczi)Uh#MsWG#@5oI+-&ZG13`Z3+a_l(0xvoK)vG9FV~;$KS~l^EUL{wWsuQiM0=yhwPlUw!=j6AbEVm z{{2Jcml$~AxYRMUx`(*kH%SbWMYym>SfSxJ^0X1kCXv|CUko^BoZHtGbs7qZso819+-R(=-=~k5_iab1|D1M9I zo>pb6I1KC+T7-&LM}RdfjK>nt1)fl|7~=$zL<&jRO9o_EL9Me{#UL>28Id)HlCWc6 z#(d*g)(V@?WTjG~FNzgZ#|OT#C| zFEN*wOSiA8laYj$%JAq1WvF??76x*ywEJ;?!F5pF#wre|$VUlsy!C=E?t+xC-cTZ* z$2}mykQlkh16oizQGoKr+q(#|T{c=QNe6hux;VWRQ^ zD;QrW&9{moUyarz*GhK_h1QSm*``vqx`dhEw2`}3uvu_^!^C!R^teOF^~nAM4)3I) z>zRTRphUxFb7tiFFs%en{ja0V4$mict!^-K+eq$13*sJck0*Y-K0ZD?Y$Lgo;O(sT zJ>YG2TKb#YZ=!0 z7dZ$h2?5PMF|0^qG$@ai7{<%8*w88`S<#taAXg#}go(~3ibuiH4lv&rEkh1jI?ndA zGrmapN_k2GmIg)+^!heY3^Xcqx+D0BOG=FK7lB>iA6I4~4I{VZ;~^`L%g9M1xT}?K zZAzh4Y>*u9QZpMU&$r>fAQ^7do4^|{*quTq;QlHcHND_ZA2eS9Km&b|wwC!KE7}`4 zoW>w+^o{tE^{6y1Z^-OfPG#gU0dNRu0tUb?=f)ZJbPq?5^#g@gXG9Ak-Nu!b6ho#- zL#rp9by9b?v2oGnkffQ$98*|d8M#&o-?Yn&GICJ}TMZ#A6O5g!%iN=@wpJPEdTQjB z7CA48{A8H;hHMjG-5MQBE7=8cl1K#b?`^CkoiMa6rkn&r(7MiAB|K>jyINW(!Wpy%*ydj&!zOk$2*PL&c!+9 z1k4O>0ZIgU9Saz_{Yw}(5Mf1HJOPapCOhB?ZS+a|ri$ib;#ng%Q2 z$|x>IikQ7!y#JYtuc4quK5E6(=m!MjGQKks;kKqMDC?xe8lwSW77;%57>}`m!wD3v zNzMdXM_on{N$>O45D<`Ke~@UnD>Xx`Ys7Ac#cWJC=g~UHCx)v9 zn=FJWKr&O6>phL!Ub}2zHv7OK@bn@uPn;c6ILFwONt*&yqG)JV^l4_p!WR5)m&Mzlj#YrI&wn)cHFe4Z4=?|5{QsoLOBrt~Z z%22Q~Z1kv0_y^@Xa?Ph79s$i}zvR1UqAh@Oy2~!YbPPN`S4P8n zco`XGuImLPd2sKptEsh&K^;mBhrLgpLEtWdE{##ej!%=^XXF|PlImQ6k;^Tq2(0N$ z&Skf~%*e$O3Mx6_ma~l9kK;O9&ll9-03)8}OLngAkFlI19M-7uwJ7ih)#Kzn;W&cjU-D*P9)F1|wJI$34^_?$yA#r`LyfB=>J1ISH-88;ca%VtYy+ z9oP&FsDxvUbXSy-a^#>G2Qk0-kxGg!zimfOde;Upbzdf^)fH06f{L_ysn`UKVh4|q@XN%C6XFOIvGYBKOWxIzd2Y5fAl-csK zQ^BKr#ZYsYkQlky{|D8zSMee`&QQrw>Hzs=ryE?T1c_EeEoM$GuLEM_7T@48Tzm!= z8)OX*8O$*wHyV&npIX41=2XH8Kuab|{hRBbUm7D)f%L ztaP(76$H*|sAd}V!xK+Dk|S|t0;fQ7;ZCPjGCcqUy@7b|kJF6Y+t;rNgj7#MsB-d^M8&FGVKqzW?PgE(~ub-p%_nsLT2Yv5CXYf>o1O&1vfU6Ml{ z0nr4v_q%2Y!N}=~tI$p2l2Toc`IP$i6}4oK2Cl2d;7*xj**KT0JBI$09k7;2JR7<3C?M{qpgbhfgn$ zuLjrE@l}-t*P0;xE?@LSseVKMf_yZ;Gd_XJ6g0P@2Z zp1G;e{5*`+Iik;y+}pFhoX$gA?Oibd&fW+8DcCR@7!7NKBrKyuU+_?dK{`@_jiPV2 zzXk`+#GGQzXAOzXxxGiQv6<>h(ede5xWzFb7i^Y+)jJ6Jy+|@U@) zRqD<-Ud%Tj=O(>SrA{B~yGh4xXqt9TF?cC^R9t<@PH}TrQ%t*7 zIVKybMZm~@{KD9g=bH&V`14?dVFnn2xk|&iLV-Gla^}q7w~J(|Y75S4iNdy&>&9)b zp32abcG4Xf#r-CGhSTjf~ooQ%0afCJGF$QPV_MV*c1ER8k9 zBSMa$+&s@FwrbF1uL(#?NQa>>g1U^o7wa6TnnJ?5&5*QW#tfnNmXRBZkxCFmSeC97 zIc0Lgx)v5WepaOEyfSjGG0LtLAJ_B9I*Y;SpvnnZQwh6uA@TuG-utl{)7%gRr6oda zA-qCDI&0Mwl2Ew;^cZzw1U$(MO;lt}gsqTl`uOF8Fmg0*S(^-U_t;QkB(*y#rb{;< zClq0YY(#)l;#YG&t{k5%h5!|bkt@(TOW}b0K`%LSuJB*bM`GkAJE*pwI%!;Wc`0b+ z#!4HN;5j)UYr@YBjHBJ7tS>_8J2=jfOFqEoo=bimIJ!}-Ntt@;b(qY&e-_6vsxrn+ z`ch3et1+@er%oSl#Gc^D zuxYKmPX4q2xr%`6Y+S7h0w3>MEi>ev_jBZa?Nf3MMM!Z~yV2oA65?K8J`Ue!d3;De zzW@I4qA;&Qauv`w2EVWZmC0?;!M}LBy52@^9hyZi0<^v85NQMq1`FtEG%(=W2$1f} z_TlFL|EW9TAt~x(Y-ewK<3%>MXEget$ipL28eiFb(|z^%@(=GCe|}s&I-GL2U zj1TsdBGXOiT=q#*St)6)pbWJu#iti22digS?{jX#;aXDuM zQ-GL%b`2BoU$iA4xns8EkG0TpA$DfI)>|C4udGO}4@Nr=eagQjLz4wA_Nu*gvssAe z{|JyXIl{opTTZ&0YuwV5i^Ll`pRJQc9QR4Vr7|Pudy0(4Y04Ua`%$!{tpPF7GxCm?@9*w-OUe1Db>k z#*t`A%?+#GssP&z>JS_axvG};3S;|x%T9LJ(jnlP(f<2a+-7{PtmYyH^K+{f=4K-VC-*5#!h=nUQ- z19W=u)jjI5@|`^2D?QYg4jyo?_Vs(L)kLv@lPEM*YY9ehl@Pf|y|o%vQS=lYwplK) z7&&|L{_m3YBi`hL1@kshbnAg`RgfqI)k#t&tJ(zBv;(@N4l^H#sKL93-Q_hB8!_h5 z^4(E6l$CYky#Xw1U} z9a2@04triPTMe^^&URp2z)X|$PbmrYo50BB!5+~9cZa_o*WQ8!MeK`17MK+RUOkUA>G`XwI-B>oub&y#@j}#JcJsx z|A5WBKTj$A4X=mQ!DCPKdbcdCjv-q`$>|pzTXy@b)ryrnIN4#CwmN>T)vhDJaW4x{ zT=;l;dU<*I{R!+`hI6l9CF`L=a!apijz{hOXwql&^$(Q)phYiXE;5s5*(rw=F~h5Fd@9iyNgV=>b? zh5_zrzt4s^keY3S1_tL6J0aXRwy|q5Zsr(Wh16q^G5PxiyzhuKY}a}2S2U5!6KRqu zgVqbukzN$)m8i$E4CJUln~QZn^oX1$5*|=WQYy#DWqdwaU1UhIFpDFC7`cbEs_rk9 z1uXyoAOJ~3K~%DrcjYmhRMk{~obMf{#dx0%raPyTbxQj}<%E>ugR|C6=9ZHgo#jy@ zPFD$^m{Qe)m0x}0kihH(#_hIckj%(&u0vA&d~(Kv89CN*@o@gt zkFr&=RTgZ;1g6$?=G?v2_P7lF@)(uSeO?XV3mG0JPW@YijJn$D>I1kPWyO5FdlH^v zhhnxXJmU8b6O7+fz0B( zy;RMFjGw?RfsqS$=)niRJ0Od8Q3?c0p8QC;z5((NTb(S7MQ+4dX~Jqs1FsA(20xBi z)aipPoHc%5M9|8FEW!qtF1F4bfZUD~$OBM6uFA;qrnR@n)PVsG4_J(#R02);uRIBv zkvlNmbsZ%R5VDswL6HyX^DNF$!X=10Kam8;aU9xI>q>NzmO16(Bt5hQY=8s!Tt3P)e0za~k++jGL z&vbZt255WD^xKz@r`P9d?~&)1pFT1rxBmJ%$X#6;|HuA~{u+IAbj9HM`l?&y-z({n zYTo|hUP;tm&D6)t-e6J-(kM4l^=A5%AM z)WZm{$^j=(u9v|}6F#|Vn+xzNkq&YMgI%#-9@XDP8dqK`fCs7Ey zTfCCx)!A(aC(4lNJM1kbd|VO(U502W1VW<{BwBC|>|__CmE1sQYjc(rk5%LSqU;<{ zvOFkQBf)%;a;Qn%?1)n+JeI3uqyER{hzdeb3Qf#lVdO&7fz&Lq=u8T-w7OUyF?*A& z@Qm8$Zh@v+%I3bp8g}U*Ls0wA_gNUZB8KBxKa|cI^bBS&8)90flfiYR1FN+=U9#ih z*lbMfPdPv;ITV}x$WNekwvJaMvAnym0XwG27a_e^rA*cnzA$o?3IV(k*XgPOuMS-e zG?g)6tAGm`3=C}%;Y`^h?5+}yUPC)VJg3pfvc8`PQfZTF-C7oeY6~9 zZ$(G&)MgTJ+f;|vdok)xj0hCYV{byoDA7%Jfx;_bYlG!@>&qds!)RD_}yHikII| z7%@hIZ~_+Jo?2yS<}|{PH=pBFrE`T63WtN{B+A9KMHg(>W0|4m=$xQq`*`QOp%EY3 z=7)=V#JC^6adK9Q(_tDja`%v31Ll4pM(*~>4nN=6M6O^l!EG;j74_q{m#?}Lux$tY z_4nWSyXh62+)JD9(DdqE%rn%v_mR>=_^!Y5rda%_MBbK`PIcP+o1u4IOkxm~q6>J1np$M?(q;AaRksJ9sDk z&1a5k))k->mQSOceq(i;WWRkbV%4pkT5HqOfgq3qr(3~MDlZ)=iFp>%=oa1NYHtyi=(Xk#u0jwX?ps~qyihb>@@f0Nz$r<2M3sgaw!7#{9JnMEt-f$gjKO)4WMP{m)Ax!x1 zVw2~rjGWU#;mG^eCNhxo9pu30`FqeNRu)wRhwF0|##2>R-N(sy_8B1<`_TTmg2|do z*guAC6VFJ7P0N@PGmjTjS`yF-N2&!fSbp1Pgzu#hlmjETi&#WgkYCj#DS8)+_2tXG{de!a4)&27v2suC!s>vLyY;9-$Vo=(^OUjLPtWaEz+ayw zRPJL9zrF(6Rg~ON)z-i3KkILfub`fna%kqD{7Uz?(C46LM5CKR`}{GCYj19EQo+f~ zViFou>7rs=PqJIV97laJig6hDGwm&S13C~6TLD~`q?Tji11@27Di?m-3pRFQZ)mAB z<0aKF72HpbVtIRGD5p7OvLhS-%rzfT{fFS8)c&x3jJmI!Aq8~F5|&yj497W8by2Xq z@sqBzLb(|qZHD`r;gJ?ZqZ3;xu%+u|S<21a`injoh3v|e_Y-|XAae}u3p+u*VPR}B zTxhm>f`VUh$sEGivC)s1G9`|CN~JOe;?I&y8>072ozS{Z6otVCH3MWgJ`%hO>WD<@?a;h?G^2PVp0_(v9)H`$?! zg;-npr5d&@%1d$DT6dY0(e))YQz6fR|FUAwX3&z+S$zA1?p@Po3tC9KJ|)+6G-L&T<_$u_cNe&OCf(ID@&9lVyy5u)4#L zl%;zioy>rewB~AziD)|$MHoMPod63dh#Oms$-+pePgELv4q z`VcIb`(@+5d?Ki-HDjJiXSvN)gjeZ(*OeK$w;Z>NjNI)?9=R`P^T@5&boj`4jpE~8 zAADs8O&quX_`11&b;QVBzkZf{!7(LwW@w>G7wEYz&fccnP!8^F_pd=jNSly+6RHJ+ zQ9?1dDph!s*~FGZv{F&&QFc zL0Ol81~F1j-D6Y?5pf(>5^Md6Ht-w)TvU=Ewlx1~mz^a5`+SVWAUY{cMB`ky5_H97 z8C&r$Kb^GlLEZ^$r&}(?qy12xA7XTrk&7E7%nvhiPy$^=`2y;-YW%Bsd)QBHU6A1D z95n|jjlGo^3wOu*>mLdl%1gfTAK<()*C4%xi5Slc9510oC@;_x%I_1(&I?B)E!g2n zJ)D&Sxmd4B-H0~K#^kcIl)R{Ky|A>cJB*RD7qd69(ajFE>YW95hDSs=@1F@jp3_|71yZJ`3(|?AT@E3wA!3Ug!5bn z{&o?X0B|+4G3l!S;pcIGme|N5#^4}H1i70vZ6QG^;w%PRbqC+qa&KfZjP6PXP6W6P ztI)Oa%WU+5_a~MkD50Z8X@jx_F7WrOSIez_?vzV00<0rObgg#R*Vn7=)3+0H#agRz zjNHG{U8|oibFAJz1;;A;P_JgB<{l1FeXhgJ1MOPO1KHCzIldvSKbSww(l~<9M-XDF2 zBU31trB5i0DdwU^iDS{Dw)L|R$h3sLzEOO0d8x~eMKI~y?8AjIqNTnR(FvPRxv!m^ z1mv20P*|S9ak6>OFmhEbeBGy1-x!VaA6BGx)gWOr@S0~X4ffXw`+DI=}oh~Dokd1{|=@~}uf=D?epwrNl=_~|8 zd8Ww)I>6HRUJ8eMQPDLsjnn6Xq&*!y;KYuy51}3{|ajW06z!0mB!^*P-3+U1=qwS+w* zH|4+rv*iZgUizpzbgeD|(1;4W@Ii?Go9l-%N4Xg`_>oB196s^I$2CMgcmRPwe!r^i zpp0A-jqxNwr%cN)3T|y!uT;#+Gpi4CJ9<==6l^I%xOBWXOg=8aU?=g$5^h{rh-}jC zhj^vwm8L8u3UJa#KbRW=-qEke3vUY3TEQ#Wbf8VgASD8SxoP=lJluY_+hZ?bjNJF{ z@4(0v+^V<2$bC5*BX@qQ1E&H;$7=Wa5bsvKqx^B*Mz=zIMo#XYG2XsA3*_?D>c5MN zi#BkJF8xs{hR4HU3qQfgq4{9F)+iyT6`+0Q+@BT7GmIRs-kS(bNCfKRQCx2XKC+1tcds9dHXCmDhGy6Z@}0 z^=_kX7^PY22*&X>4u?ZCMEBy_?vLlr;JD5F8PiJ~_=1}uC6mA~Sk+1wjtR>7D=(oJ zPMmipYKq=7_d%khDIvu3^SZsJy?2QBJjz!-?h*p5HdoNs>rzKBFs+5T=qG-Ntq^eKE+1ZDbS0^Wj1X=QpVu-373Thpo{e z554G}kzjFH%KNv#3EN!KS3ye+m5(>}eMP-x<`Jd^!PG*?siwCwHOW$67r?Uom3`CD zayc0b|FkO_uQbf?bzS}2%<$g`vXv%+yP4Jb;l|Bkhxtd|kCD4ggXM&gJF{zb=~7Q| ziPggcV9H+~8b`?OzT>#Kdk%}c@9q)F3GzF@dEY7=AC4dB`1pC_0N|aM0A*LqeA&C> z_GY*J;CwdxyWR1JSMxKF+rx^G_-DaeP;>e$kK{;+563+o`#+DzW@w8+axOZmGgpV? z@=h;q7`aKc5Knj7GXJ%1=4HwD*f>Ai7jGuHFEDP~X1jazmW@@5>Ntu~Q~!r7mRpX> z8zqUm8YKBf(2n{J)2uQhXYVhxlA_M$6H~YTIUo3(yZ0DuC9CU^QlNjUxP;eWt}zIZ zn}4_89X0l=QC zTs*vQP}f0tUEw}BS*=33#&;2-4d0Z>_rK(c6{0jTyuG~@S-Vig7U*PlDT~dFoV{xu z7W^TMTw5L(WaMBpYNR(~%7K^|Bi9zYWMQReeDHkV(TL!D!HOKwoZ~@-qS#1vdSc`Z zPM3DFpipQ*1T0MR(El!A--=k%XTYg3bEDDS9?YQ<@@B>=Ai~CWSu@2lC{e6+SLbmX zD#KJ`x5Bbx(eQ-wn5)f1t;HHfGm94dlL`ajiz&+|`$ILf|<22%pz8bN&f&O@|xg+8%Zf zA7uyY{JN6@U0vstk%KGZ?Ra17eb-q^&SlS8SP%BG+W_e751QQ>ioObeNuW#i@%T%@ zMhKL%ji?@d6Sjg--2DDC6cAE!*60Fq5okOkSNNb^tGYyVfKs{9N-owr+o+rRlU>Ud zg*>!2SUHRE(#zAuPa(crnFwYN$Pmrws6A>MZXS8z=KRg9;Ygtue8kT@CvFTZQk67$ ztu#_P5hn*d2C8(_=X`+vXhMha;u4HB#r6p;$o!)}#E)HMfLS{t%|fr91EW?7keh$^ zsMK7~JJF20Bn5Ir^FYhHA@Kx{{(@6b&7NJLY$AhN8b?oRPGocRp!@eHU~4f_A_QwM z3b1=NIxr3vEm+hb6~_Te7Auo~HuxM~Hd!NPn~D%bmuzNs1i@uSE}92ogBl@V`|%|J zxp;UJ9kKS*X=p)*LHk@Mb?C*e2k6pRYj3S-Z@k@^jOGl{Pz5OF3UGM-n==S!Qa+D4 zNo1?Q+TE!2SiXJ?EloHoBD+r9fv((%nW(gsIeHijWQx$yhDvs*q-c*qta_|=(4Co! z)GanrL*ybwDYSaWL1Y$udHT`Fa{4~r z^!syIUE%Vj3m*`5}7!g*e*7bDRT?&8U{Y?4bB z`C`-Ul0I5H$}L>`bS9bRm*FEfVkA(ddLU=9S@v8+aTiy1xQ$}uzMQMen_uC|g z+(XrM_g8nX@OpQ{q}-19I4;h0bvXQccZandFx4Dv3FvLX`c_>g5;zwVQ@XF9z;3!! zo-W4K+2iyF+J07W?ord^seOXYL!ojt=hg>9r2@Ikdx7KGivwCQnbx;w8ZDVoMeROn30P_E_;_Oq~c#j z!V%^Q139*%jls54gm!i4rf9?xAQ3(*gUq;Nq?oc2H|h6`jDZO>0FtQEs@C1VvAv@g zz#3!xl2mI+Vs9}&7B4xtvMBnbCq~Xj#j4AO z3|G#qF8|-%oR4cHS8Z-}Ym@7Wrs?)xV0Wo{HFUVVGG(h{AlEP>7XZ@@*tYgrvyppU zb9VT%Fp?|xT750BBE9D?xv9ef%f6nzh8@yx!;W;VZ$!u;DQ90giU_000zt+e#7z{1M$aNHSb{e<1EU zvPvv4z4xW{jY3w;&iG(RqmTzli@1TfVs;sBWjM7I)Ds3%2KCp{z$Pkaq!M(7XD2Gl zIXLknArW6>Cj@d**VI!y72J@UfZSEhFWx7OwvdHV9eW=xX+ka`+kj`$_cocH>Yfv& zaX9dlpXR%(kHb9M$XQz~26AHDCAt$#b6lFkXnu^voXvj^iDgl}m-|peN7#1QTApx6UvtY@{QIYJIMmrc-)VQ`Cvka>yDOz4RZpDMU zPZ-4HX?(5)AQw8i({n@Cjk2jc|6V1%%KlcpvBU{#fT%oUR1{>J_O_>AMIsf(qipuB zR34gbQmy`T8@bmqi4_UC_R9>s*Xmc>;O-9_ z+NsMV-KujnB_%R)Q`}et;K8OeJ1A+VHTq}mxrE-AHyBM&0PMm%AeXQQkYpYTK2jt8 zoMPm1l~JbPbZP((s#Rv>#FQ{j0OT%U?0|t@M+Cg9)-9_daY3Dgg)8ieP_^n%fyqE_ zl%Q#vmy=D;p?Z;!vPpY#Q_D+w5CC$~5iu%guF=s!DM9p#Kf<`{C_#(7kq5Z28G*Hj zQcF+cE&FOLCB>Sj_#+|qh*!q#KF)**ON~sDMvdw;MSV*Q(^0pPbB6W`2OeRbIe{?m z^H8tN6Qib7=0^x)yhhqo3nTbCC>-Zptr1&}I~!jhM}LY4ObX$`sG&Md^9~gAJPOnj zr$o<;TyITnP>;-IWTqwj5&4>X266?YtlMAYD&Sg4a9}eQW?mNO8gPF(96jKsVbcc1_KNJo*B6) zgll54M%c0=GICm=g*8lA)c_->sjvh&ShX5en0Zx!vjaO{WMUR&9(|>*R8vw9`b^y3 zC#wwl<5;aaNfJcKIj}zs zUaPC0Ti5V&H~ffjdHD86Ws9!YA1j1h2IU5ABDX{D)TghPZwqF7Z@zzT>=${g4$Gg- z`3v`8eK{V%lXWoU?(mL}ux_;?I%4G77KR*x8xNIr3T+7FptAY8&XKlp#UdYqgKIL2>Ha10y$u zT?as$SGtHh6}2o*t0tKvg*k!?q+i}2g4gPVn9cK2mwWp(0nF~nn7K#L-9*{jBzl*N zCEEM|kUMa!@`)Y)v_CyhGD&$;@Np5kME?dF_JeAK7R)L5RBasK@ybmt0=cObz8zOz z)8l$y#;Hm`j!MH(IwbwYs@2TF7vpolZjMQ{>IKObHOiv^c3MXgh(~pr^Ovsi=32@V zI|@K{Eo9`R|E!wgI9lkzm^;IBJkt{+H%SUe&78=W_EmcT{;#(mY$M_ug zvrVeiJCiCga^#t?nx;8q;984UoeAL{iIJN2hJ8LadF*;@0JaX)R&B?XZx~pFl z;~?eRnt~%zSsQp;+O_1{|1pr$B$dmXAZ>YX+A)WtszE$hsP#K={9^L+M&EY#(b&rR z?iN&ASvW{uq`SQ@t4zH1s`|~a% zSL7y-B1a~2Zx%4y3y?A|;Ffya4eYV{v;aC#_HFn3J!)a$%5y}2g9dV{We_7brpdmI z2nE|z+XiKgX*ZEa;JPQBp8+09Xmgg+~*R z(ph4qWK#zgk$IxE_D=_f+mvZAh>P#De)~)V>Xke zl6@2bAtQ$#r)yJ5WaRSUK-fU=z7?wzVadq3yU6Uf!5#XFSR|1vK%ovF){m1eftxWX zt!19H;By4J;NyA}#5Nb!K%+N6W$hmWzW);Yp z+ixu1bhp*gBIybD=*k!{WujK$#T+f$D>!ALVI?7@bJ=dsoD;+;&&T77-JpH{{uu_9 z3#Pc=@QX227-aR>bWX;R3!aNI@2N>Nq(sIXyo2!=9_&5aMF@f2E--Sz(d}c{6ZSj< zmv~;1+7Y(;hS|WZF*1B>jt#j3#~>rHu1Fa&1Z~e$z!}{6lM8Q?=$R!)aN{SiAOujC zC*JvcyMwnh`pz(sPxZ!?h_q2^dJ*!SZw<Za8@goVPF1pN0IYgHFI$zO@2{=3I12RswI zTr&X6aa_nJg5(*OgQse8)4YgkS+-|D+GVXc_@DtRycr)Q-HH-iE9E&UTn}Ld52`KY z*hdS$#BTRiPX*L_fF-X2yzF^mc)If7JaM1Zw+H zT>h=_BN%<;kAji=u@VtjetA{C4&RRs2)PY?Z-=*LHv|(o0CdClnBvQ!Io&aQ17`?g z9Rl-=0Rvll=v_V^LN*Z$)ZcQ?e8{N=*b<%?P6v>_w}LHgZNb!GLsd`&dGPVpxUOiy9+E zCo~kF0?)AeH@3(vEE=XUh>A$XJ$4*e%clSVTiNNl-p!cYl^v5~LU+?OL|X>ByE z4UuSSYMD(t)g}*wAjA;nFfcB&QJGsZa&eNM`_F#`9HJq@|7kn7-o|Y#j?c6U&1T27 z2#o|8gh7cAtU!Q(r0AkA%}c)jms*}1c}P)7Ue@j8qSzL1*7@mwE<6Lb<6mkAi|+>A z;AY#_bMrnIO*{T|u1O%Y40N`m{=zw(rYcv>qR0)31Z|-jXhm)=+JVwO2I$#c8L2wS z@e}q53l6H0$Z?emk=+J!pycYpi7|5fdN#CLk*m%Pr*xjc7m3;HDc{r(Yd#@ge8208 zY@gkP6x~dU9PG=yt|#|0F2>01rcmTcPB9dySpe(D>+2IFoy*lo0lo}!QIQj#vBmN@ z($3lEtwf^irm6Z-v>#t%4s2;_irkNQbu_hAUAb2|UHKL5E?hAG)a6I2X{i~+y&b)< zPoEbAJ}Pp5e4&n<5(DWx1;~N!_I^cmF8qA$zC9kXiX0S@YktI1!LS7cAzx359BOje zs+W177`f#3!=zG*l|#D);u2udy>qMY63O*^sEOGT_>v_Y>hUeuuhrapPcH<8to07w z%e%`}DcQ!|W00JR?vnIX&-T)xuoAvBi*w7J&w{`QVw}UX+-;%A2uQHO0iW~;XK0lrtKrSpiOe)oHyp2HU?a%QZi=T|x@+(rv?@9CPF6*V^I(gWE z)Tz)Wy9PoFCm5IIRmEO_WYaxfUWUoqERzEHxc@~bZsGv+&~b;;;ltQE5AWZA2@cmm zp^puVnKYw+9a#VrkXz-P<0{f!Xwf|O_sDhva`1NsIg|~Xg+QmVh32F49WcC#1i?*J zA0RFZjS5Y|WwWKz|FyjGHDlARRRlRyt*~vpDsfS7ta7=y1Y=6#4gKRTcbTjXgw0pa z!$$eNFg^GF)i0RTy$bAx_gj{~xN6EKL$%6kahPiAu|*p`zvtx!Z__VsA;83Km0oZj zUcKioEBipMRoY1;yQCj3#nAwmn<#P~I^{E?;ThyW5;eI$NhT_oHfa2WJDlj(>7P-N zOa9&{rm~Rw0>+J=g)2DtfV5!aaJOIX`wil(zI(X^v%?L50V~) zYS9o_C4JFU1n7F1Y&LRwHqf>DOto?{&7nG4fN@yv11m?f%0$gj6NAOkD9pA{TFZrl z0-x-OOu4nkr7{D^QQ($2@RjQYIhPzw5lE&q z8x3=~OO8$IrH^CfMUVwW&XnrqVVqR<5QuWso0`;KUw+)?<1cfZH+eQz2qk~9tpmN9 z$#RY8={>z|s!`x)cUotM3XrH*BvC(|)8pZN^=H3wy^z?PsK~w5#Wsa;g_l)v-&gip zec~_G7`e*M4sXh_TUX?Qfq%STuEQ_fUNwN(uWL+HC7k<~_ItSh##=!AXe?EkLy*hI z%jT|C4y$rhcnhhlSt-k)#r#Nkc#f|J4(KV0t`o1MLp_WSjRVKqfrLgcL@FB&S*uaE z>aQkC?i)A^Z6F&c?+lQSvEvOZYUVB&h}o}8UPsQBZI7}LNK_<68b>xB=?Cgc-QYyz zU7Y3ayQdgA2Vp3;hhg4Dd+zLn1Jz>{zVKKz%33`8B8LtQA`z88u2{vBgDu-#mUEQ(jW&MvQfMmV9G|m zO)?B4^DFefarnGZbh1q;as+Z)i;a8<2I{uc1f7WZh6<@7$fXUHNP8n6COj57706w8 zkH~x_|Ajel!WYd0)-Nc^bJwrM-7VgF2z~`ZM z*g@7UGcOJsa6XLlPO}X`ajb3|bB*g2CuxJax8SPp;w(@Gu;>4HYlmb^<8AucMSB`z ze4A(6<=K+bZ>Y$D)!5T}r60m!j*;6T4BqE2m;blnh28x6!eTS)QoVxfOLzXY{B@7e zuZ6MHpxle6C+aFLbHP&*MZ2(Q7)bpLb*%E0y#wol0!y1H1uM| z1myH*&yWMQSz48h8l^%XE6-ucjfU5WqcSCUHmrTemeFR4T+w!8;>twtW7HC*S1W9< zH%$l$uAnH%T77;zBPdLCLO(?9ug7~u#I}*e#E}jG<^7BeqSn%Bu>(C9ZeOs-NgHn0 z`xw6^kb#FDa2ILC_>jHnWth!m^`KG1Qsq7Zxf|}p2?GSXZ{vt!K;Rakt#qyOu{&)| zia3K1m|Ux*$U%wr9TRJzLJCfh$#0ZZ2r>EpaEUCqI~P2nBG+xyq+Vn(VyTr+pSf0% zePB1%+Xw?X=~dYlOAu|`P6Y#>Z&-4Ai_`=U+4gHooCqMd(79JR#>0Wf8ftDFzLo04 ztT4{J4hOX+OrM%Wa2aflV^xo4p-WBju4}Tbh))->#-PXnhnT!2CU0M@jkacRN=j9iDfFdT@oZ&aG$-?)EbFW-E%kqn z^v8sO90!C_!#FF79E=j{nm#|ZhqND3%s}Dch#ZgoFTa}bP#klMyqIT-? znTLCdY&$j5wDKhGX zImm$`*WJItcB>%7y&KAOAVChkeE$}A?rK1hlgK*R`r+Li*MQ^{NP&h6IF@#%9xno! z6bvD)sWYNx5w-bcX$`AdR0|MnmX`n}E-EtWkTzrTo1c_q5Liy!Us{o4M6}*NMeSK#A5`gmL8^!!IE0o3wga&HaKn(ibtsZ58Xgm7GegN8 z3zeQ2+_J2(K}43+Abj%1yZYcE#HB_uD*2k`@Q`~B*1_!AC#a1jlxdv1O2a5f zIo9Yl&b3H8iZQokF>-Kjtim5xrJ0sx5s)(`TY@pBU?7l_at?gK^>J&khI_dXWH~JY z_GvgUZ)97Q7dl*)A@&Uh!Q$@ThG)AMm3C9>xdn3wkhv45QZ9!}_GfKvROC*s?)tuY zCj`OxHf_VSL4(4vXg2oB`|Zkb1rwZJAE@C%Z!rT50>}-)y_u%mbz4O2b9M zsuvQ{EVv~1zvk~3**@C2a)Nw0W%(cV5lC0Xaxsi?yP7pyAO4q#T&u;|m^WR!V~pHx z_M;|U_La6vfirWdmAtL9YW{pFS7H3dzj)mYDvO8rUX#AFD#qHJ6Px)8bbZ2RXY6Kd zjg<58ijLGF_p0)?4#UTd`}BrSKdXzIPjMZ&qav5PQQzvJbNufEkb5e(==#?&M((Z1 zb$BYNk_E#;k!#+e3@~iwz+i@iCJ}J(1N6tu;tXKjENYQjq;ic;(>ms#H9Go%$z)qIP zsj*oahgZC7dH*O<%+Pr50GAN`AKjK-ZcPc~fHMu-o}?^x61Xm7t{axr(3NW~2Q0uo zL!FZt@V|1lD!Eoy(jlTE7ae}$dH6zT~*L9!y&L0wm|?P99r|7~K|>i_@2`z-9Xy%K9yMSdI68)LmO|+sqM-k%G1>R=ZF{NLUCf5rh~J;0GrtkeB+Q{{MffJJ+4% zMN*11Xy}{b$mHJ0IeTX2jOe+HYc`I`t*UFaHJztXbR%bU`XvW7x>kpn+jnWpMhqiX z4Y&tMEO4R{AV_XWN846=2w2CTVNPHIZ;?4D?83g)A5gqPd!?gAjqVZfuI(WJi6$W0 z)BR)M3=dH1~RI_H8M8$>eeTlsN65v5bj-v}M#oDcT zuzDCOVdU;&3D(F)`QuG?Z0DQGu14vd&iEzM#^q9yx-Cs}<97T%Ka$bez!5imMERaR z-LLGGWQ~Ck_4g-DESMxS6gX;uk>kjXmoTW(1 zp=0$)fLi)Gh-X+ANX-Wk~kslJ@00uA&V1~)=YaRnIaVn|-=7--E z$f?GrE67O>o_Vk-kmLKrv*ZLpwGzm2OayXf5+7lFx&s?VD=gbNMjP))E!|+w08Xlyx+C=WG!$Y_0@T#Ai(cG4LdUFhGV}^A zdj~JRUcWZz5U<+a3^$`ENmD-P{KF6;jKZql*^`L26AWjGMsKJwsR-wM+UX zCjcYpgm7qxQ$j{g#GgaINmJNSQ<_dwwlk3H2|Ck3qbe2;7`c%(=N`59Xz-F1BLLR6 zLZqn`1q^`%z_`eP1$Jk$A#9QV;aj2Q17qZ_jSv3!7>gq+JOUc9eKBa}!auc%JcJj; zp<-iWy7x#@;`SwpZX5J5K&QSa*hz@JF?7|`wR-%XP!2b=)@Jg_fRPL5E7X&F@JRE5 zj2yUDwTDE@af<-#AR~95+!*B$bI<4YO34ZEq-hcAT{24?=P`b>x2Gg(^yitvE(*Nh+?0 zlDk>(VL5B{rjFd-?z&cA-e*qSLPzcyb>x~)n2}1#aZIymjNH=)Y5<>@y#pONRFr$t zFuHX{?nHT$`$O9^-9^TqB5rn*xp7E!u!>wQF0;v-Dvo65?J5VPDUe&(E)tg8sm4iD z0y%mMMVbY}$cbx}I@7bY6wl(k?RNLZ0e6%tioGJZc4z}WF7s__RViSYq>gl(t#UiL z6cviyaoQv&2G1H4Ob0R}$4X=vdm@huY(jU1!VX116l$la%NU>|_*sdOqj&J25!Phg z@Gciksk0y*7+YcFRMy_BF#`em38`UBD(u1xF9?m=&F{I8@ zd07!@Y6&zJkdfT3gd-VLa@MLFumUYT;|Ec?6NT4a!MiR&H39^qz&Qlk^qh~Dy86#N zJDuvoMRl;Zy@;)_BUY4LpsnK&#_^1<(xKsXQ581@dwBCM%F%2TM;D`AdmJP8sJ#dC z?6H7{K|J~jzZ*D4?tgkf^9J++Vl-L^ZYwv1ZISfyVra(< z4y?r`XVxU>aE*hZtktdJ4)h+HQ5;!^&fkoYn}SOO0h9=E%$Z9MA#}(R4SkF&(~7Ru zD=~8SPdgIi#~8VGell8nX*J(qtPwH>@vfG@${ZK_0I&!I_pL1mge$P51*B?z?aYb)2gQwyk z_9}=bTt|X8Qz*`ioS3XmHGr2HIn542JuRP^wu1HYdudk5$T{(bNK6!izh>6o&XK7nExl~IqOFhOx1x_Y|NgbsP?l5EIvIRh- za0Et<9jiQKc}()Znj4H9LMQ-oC{jVPAqZ1SM((1nRTDPXit}^d3r~g_UPm5V{WbPO3dmyWYVQDc=?GnFq{_X9zF>-KoFwN+4w=Q$b zxp;`53s@qIv=Uu}iS>5{KH%auLtN-Rjlh^S))YYGKTo%+7aUyAhHuk526B&MT1r6}GRRskHp0*MNgxZ|eP)9a*r026%gfH*hfXyGYCp>pL}FKcVBEg9WB zT~51oK9{kYe;yy+`H`ph_fmmm8Ut52TVE#fZZD6zR$m|2 zk$agUMtaehTB|3-WI>ZsnP}q>Ifiu`$#wvVxi3^}wNXZ{S!d+>nI8Y zj)t!HT#Z2BR3V_l5n?{WoK;4yxG)uix0M~T0bXU~glLmXV%!*q`ju@jqDFhnML6i+ zL)ca`k{;bY+O0p*VU&}I!s6#CkPCQ8dnqSCYoHU7+}^xFxdZ9yKoU}&S7PMM6M=}Z zuW#40FGG2Bs&qPi(Xcrq7YN8*ucW1xI#n}*vW#5YW*`>@T(tsS3LUwDlN=C0pj7dm zYAN`s`@BqZ!O7-`X+1mAUFGG6N?~ng?msQ0-g z9CwI0V>V_+uAMM)F}G0}xihLk9h*J7)*&5x*Gus`1ah6^T!dg5xgB_4zjZBrMq^Yl zqKiCuPOOVtFs$;sF>rE#i_0bjAPA*H%pM1W<~yKx8%Thyp`+n^{jNB~nXg47_|S9O zqA53NmgusE&@Z*=Qg-yRh)ZBFAtuSsXfzi}80Yc@U7VnRjB>(R1r|b{89tZ4rd!pm z4Ij`kfy$3PPERT$7uU`SWxt^KUD2R>jGSL$tk$x_MjAFuI6CZgqzJ-9(`cs2*|CBRSh-fzOJ&eu9(XrP!1JmLh5vkw^rc| zbO+Ckn#1F`P9H*Rw}2wu&)-MC9mwrg{Ho9Yoom$YZN4MowX^#K?7Yu10}e$Lmq~ zY2)F|tTRme-m5HfUzqAhYW8e$jCEPKo9UMx;51sXWhx0FNRvIQZo%dg2MCN@J8@r5 z8M)jT^V5|t9{ZR-!i$EfYb%G2^6~8fPL6M6WYLZ#ji%QrT0Cdurv6-xz6Uzj4gt5` zr(4wzn-T@q>{qLSX2LC@C-i)GYz9p(=;Jc5teKH(#QQiw#BPG>968}BYqedZ9Uq5hh?+v#_GfU^aN(;8;W{7CCD*3SQYvnN}+U}ixG0044N?HYr%x3ZROMn0RBH9hiAz8zZRd+^ zvwWc~+1j<_1Z1~{YSJqA7RLpVc5_t2plyokjYNk8>sqxyE??|mbU~=#$055+tpR3o z$pX1x89DXfDkHbhcC*WYw?n9W>rIyV6-qKw4#38gRUk%g3!0nR5LmoKS*w0pM^2y( z6-HfXkns&S4aUd?o3(0cZX$g6{?_=6L(*U{cs0J|AV7|LB{ZfmasuS=kwhqR0O`6| zxK>+Dc2LEUn0cv#a8@JdIHHf#!c$a;_RHLiWAX>HN=dP73|y)!Gji-r?kPO*AeWC+ z*2`g{1W;gO&W@HeQCXFl6wZ5zz_viiXe@nB(Kj$cBNgx%*m2B2jzAmzE=MqO*6MB? zM?61>^Z~~wiNXx%LT-xeH3~)!XYU9e8YElbilf`ERUBgZkrgh@kO^+VAWfHq3#%}W$(K>O1>C7f${~pB zETEfXx^EgCA<=PXq?n9tD1hgGSi9EN#*rnun^`;wHfo_*I5a{=2rCE#&VJtcGXMWi zUDY{N{gRx?FxQX7acrqy>OOs{>QpEQ;}j*P`M94iYFia#4<#* zp+B?>cpsq9^7by7vV@bP0=0|!9c4FZ_kBb{?>Lz}N7~RXhdOQ#=SUi-x7z2Kl+#OK z-H5c=MkF574(W30Ter_GHv*imq%TfkBz`=lZ4fFFU-p9v$2k(3t?KHaH(Z31`A8}u z`QAFd|DVq;x6hux{zQ%;>hf79X&K!og?0}Z$g~X-OlzGk{-=NEk*dk<`A12`J!k*Z z+ZRl$FTWeL`r{?#{PeHC3n#hP_SSYr$$dxo#zC^LHz6{W{}J(#8`XiE)?!-WBDc4P zCnJ|lX9XiysaIP9Pfq8v`S`ble6oz4El0Y7g@TbA>3?TFa`9wivf2`?4SP|mib?hu zId3OE=yxp$VN>>O(v%WPs#G0E!&)nBxYjGRp$+ZWuh2~*%pkepge&u4`CH}(NbypL zw+#XD?tDJ03a&b>?KI|wk-N$iArU$~eefsl-&W)zZHz?a7TD1R9XUe=myD9kXiSoZ zb+ie?s)%S)nN1eoTWT(KcojH_44HS`F6OW8|_u%%p;DLb9&KK(j5> zJvPv`VdP?SK&@ARoLK7wq0#8Bj9eVU(j1inIqR<4M@H@jE3p>=61fx0RoF=!sa=~a zraP2Zx&}G*CzEJd88|Y2Fo@T~>78RZ0U(>D5e}QQt*(WTFY^JNnqHtyI= zq3Y2BbsPF6udGu>uJxEf`YO2#npl5B-1hBe2J`HzCBtM7@eOJx&W7%Bn;W_j&u%SbJ^gij3k;*bKx32fb-7NOYH)h}pEp3=(RPr8-9IX9NA6}cE zN+j&OkzFMBC+o(n9h8xiH}qu{{&%}=8c1g=Fmn0$AtQH67@d%% zvVW>I0@2KdB*}oQ27}_G9MKp#w{Kcapj^l@ZyK&u62xE&u**%WK4s)AM?K2rX^w4b zMTJS(eF<34D;N%zRit_n(-^g7R~&^s7kBakpvf-Eh#HA?xddy6ahYS(4mIq+^8yg@tEcmg(Zy?RqmC zU;XQ8HW&qg{KWh-=?IpMKscfr^_HzwRA0{yj2zCXU(x5J$DBmH;a_#Ujr7H1G`I6t z%A`EPfH`mg@{qk&t?7~!tBv~WDK453-i_*L2m_tvvn-&%9_$1mcLQ+ZMd)HH#8#y5 z;?7besuHaa&1E<1j2YHH0dn($hT4`%fE=uP&iX=U2bM{=E5U|s5{IlCN)27keroAqE%%vpL2fKR_lETmlt)#izs z!-*w)et>Z@fZ|v*YI=lADH*}?6!Dk)Jz@DWJh6x6bk16otG!_?$&ygfNzfR%Fe0-b zL3DJIUTYA2U2fN3r#Pzy8CfG@nH^>?|Fi0}@ zkxPiHboxZV=S4?@g!!GL*(vvJG9c#))2g2MsBT$mTHP&sUiq=p>Z7Jos}>;u6WF9> zT~TH3Sf?R4q={ibw#9FO9~n}=tAn}N!x>HErS%;!Y{sAEjTud=FbSUNw$J5$o&VNp zW|m1;WkwUYsK~j3FS_s3IyFfX#qrBz1koauWMzG1LoFHcda*}0sUG;A7SfH0F=*UGzPIIj~ zCUa$!i&%y0cNLz-h>D}q5WW4&B}34;WDjFN4hc{1ckBwl4USzFwc2M7Nq9jh z)?D6i_kX24!&NnZl?1(@lS1?=b~06HqCpjL*2<&FgKF~%=p6gqF=SN@OJ6~9!Mh9U zA?xVH@WHR}NhaX(pY4Oq6Li74IO~<*^eF4CRz_}*zWAN{<3D`%4%&j+WwM0I#fhY& zxsmQET{u-SgnYL6*dccuOj(hXDtLha1<;DLeL8l=Y%R&c%#cw_7`c@9pd(LPQ^V4; z7r^U4($e8_e$&HewSU-9GfYZvE%A)A63yBvX8DU9TOKaM#gUN%v@!uqr~YCrCU&iP z74!MCrNjr|ioq5_nQ^2ejbdlThD+D7~k|qRl!Tc~n{`Yvi$f9*rZU^rmI*~5zP}VpP$8RF*dvN+8 z#YhQ|6GU(sPMP=Z1?pepX?Q&&nHoqVwfUwdF}QmrvB*G>)QcF8Cn!g#l{5rCZ_1v` zwZt7=sOLmMS;jq*<)aJO5+Vy075HX>=*;dlUjf$d@pMEbMjRfmPStAz0g|*pCkUM! zmAB)H0w8w?Qo~)-j~dX#Ohwn04Kdg^9cr{)W* zuBRD=OF#-P`0p_Tu4Fa?+LTCBeh}`4?*rdbS!?)mVtiemOw@+JyTLh5`ngF`v)yOP z$4%C}ROesB;%(W1^4a{+ROlj-3mRFAs@E@ehw~TQ?A`7X;amWNdJWV}!iu9{Jc>7# zcp()Q#XndNoZA6awxXsWRWp!*P*m#Z7(z>*@EBxWJ<-W(a#%j$r}ajcBv$|(xAT`$ za@Tr3EWl$7f_r!$q8@U5`{qwutnNj zoDL;Wg13Twn8pv#Wpasmwy}i+xM*bGjIv_P09}~lE3X0$W0j0!ZdJiz*Br^010m_y zbeveZ+O{?kI&p|dTwJw6np6;#a%=-ljMj?&PrV_9GXS~4;_eU7+5ZEvJ&H}(My*~j zz4pHLe~LNNw<;4N4L)+IOx#PFldFJkfrYbAea6VWZ0)OmJ#U=kcB58BHDi`d0i=!Fh^O>&Jp<&uUl%u=!2USU)e zL~D$Z8k58a=3Hkhxvrw?t+FqrQ|6FmO$ew12=mDn;PrO4!m4Rip-2#2J-Z0xl*G%+ zp3P`#Hm;2|PirL}WSWohD#kygAiJt2L2DcUoj_v0o>hxYS;eo9xrQN%R+j}j^ych0 zp=7WtpNXn!R;j&;>sBoeT$uQWvYk+iQ+!js?OyXn8@v&SggAykaq@+AL^e>Q{JRFJ z?nZp%=or1kstn>6w|=mlgV=3v7`jfxZ3pjnRuZ2KzNwr6)|$^M5^QWNSAp5u_Ke_N zX(G*tL1#f9fO9%3cZOg*d8vJf6m#JSy}298_h_O)+OEEa+fJx@gS2qh?7M=q`+%{v zw`@Ff-x6BQF~Y{5ljh~vy9T3g3|V!~ZRYM2@)+9T0(hk~ump7ISmvM6RO?&`4+Ep5 zL?FTzQ5+oWs@t zl{r}jmn3y9cdl5kLk$ul#Ot+wRi|{eAzFi}B;!nwHesaXT8mHDez-Euf)h&MS=|O! z7N9G>RA)}@#cSwQsTmVE*D6!vBBb0LF6HJ_W2OEddDq(8wvI%T?ZT}$y`tb+h%pE( z1cnt55YT?#e$oH`Q)|wHoFOS$PMnL2u97&mY)gC&56`@~Ts=i=>$tVLURAN2!x(;q zVzmW6?t~A&!f$wiK(6i2sDDI45rF$ZJli?yMkLJ;WVK`LuoMBnS4X?4Xb!`vt$6IW z(s!}#V)N@kmo7Z%wlh!)ZRJK)jXu_f^t7H#BM`ZP)Mzwy>RW+v^*R(&pfWbHiDW0& z^(hB-*h4vi*IW)U^Dc&tLp|W-4@rcJ&}*R0gj4Mqg75n?5=8rUej%i%oY7r7AWcYGE+ z(?Trx<&qRUEwZSmh?S+$BDablQ;_aR#NNme{5DkW!$2iG_LRnq0!|%wOjDilQz2z6 zmuBbNn6lwg7KXwO0A^sEY!ONzhtWhf=sJ8^Q`odJZ01|+n#~FQDuQ;qms<|X7>`Hg zj^o*2vRiKVG>(M0DnmG5MC@@xfh>c)TnJW-ZYn+bwxADCfLWL7_js%Q@h2zA2=v)W zrbGmCElHov32horY@A1f{UVS87G?Lyj%UF0$fNAg9pbYLE)*-g6@wDZHjQ9;Cf5~J zZ6-7ACI{De`Su|eh+g1f2<~E$$asv!bp>3G|CB&4;0MPdAtfssya7LINk>S-sg^t(bjMgc?V^L@;b6Yqr5~Z1psZ|lg^uV% zT`23@PSHGen1E{4c-{Ppv25v=!Fn;~h_*#v>PxGi!{m#pKL^l!b4 zqP`PwJ&xnZIdv~{D|Q*>!c|KB$`~_sib{CiYaFZ?PtDb3Dr4RAc4MI%4)m5na-8uI zV&yRhD6Dnx?+D_ekMpLFp)^^`ThZsbx!qB1qXab;acy%2dH@n>>M+X}2>@pTP^A*5TXDTYlZ>enRM(;LHZq6SiSZ3v%pze6f~v&O#;s~y zXK!3IfWG(8xN68&(iy+SmAdz1uS63roNu8>hqv?Ffh~}cni^d6y^1#r)zgbqNgKsc zWVW^#)eTEQD=0~N%IoQ1 z$pf=zcG0pM=WLw@(Ll~0EnTv<41xiJi&p?EQVRLvO0ZP^&20V`)@suH_5?^NA_*z# zLjEqna06-c+Ac1jBN@H29@DNW7T0M`E*`!4r#hw}&{QX^XhGZX*@IooR$fvOxAUC? z>k65|-sFSLqy91^5IF`Q_lx1%FM)JFf{zKtwUbQU_?NPpieq zUP0yUnF&~OUFEfB--Ft1b4Cs|3}2azQ~D4>UEibW!J4weOl^g_!C)PRk<%`!Vi0E{ zx^2}@)UJN}JsU^PCh5{Pa%&m63^86Fr$ot-Mm3np!H<_0F_8XOluz zkrFUpb}OybLK0&fv|VeDUY`NI-ho|0Z9&R2S%C!GdRaOQsws*ACN;v9`#PvLeHMZV zwE?`nWF;C!91jwR{p|T9rjxbP}$f#T^GcT8Gvis_qlnF2@Trc|PmQ9~PaD5-PJTXxs97DFKRko9qBXkejF1 z$jAwlqyNE1ju^Sq$`?OLO{|W|i zQ7}Z+Dl&49nY(K4=U|@~ADU(4whN5hB9PNa^0!#((V6p<#ghBFbLXjR_7YF-OBX1* z{bo0vr~U3JX6)LNM{9Ih?P`#|FcERqPQ-RUM;XvF$)J-&dz9J%yI4SF@Pffa;Odq$ z`FIw$TbG*<*`0nY`||P;L0?;BIUMatSMGV!y6rT2b_IsvwslZ)<8Ejk?t+mnu-WE9lTt;O;Wd!8{$vbVqtaD0^t;&i)=0wN# zKx|0Amsr)NnG-EE9e92+w|%X2Mdsa7K)M@DiELdw%h-^B!jl?}ouxnR-97YM{v^=-=o<+h4lLH8A?aAJo|Nb7)!9o&14+RhLbg+ji#z`{pow>&UQC0CRn%IR});{c0e ze`)#f@t;rYz~Xd(TS$k+&1JeNhXZi+mYUf)E>#QE#!^?%yR>U=*+q~|Suj5i#i8(~ zZRSi$t{+}MiM7Q)PO!=R*zsjQl0F0@dH~Gf8K?|2SU=FcDvE?IOC(*|Qttu+Lw=Op zWn5Apm3?Ci({SKL@=PAUo6mWUD-nC#FM_R)9xyxCu79a` z6VRE%4w`p1_GcdOpP_I4Y& ze_v+#AMyKJI)6or>wDt(_ zDMBoJ?Gs^|f3S+i1yc_})@Tw8xMc~1-qhrPE0>J#q9^2Cb{D>|cbA20FDSPrD8AC9m8 zy5P3(%bHbsL5y5btyV708x%XcIOZ>ZYPjD}8T9|*!{c^N9)p))RmR^oZ4UpR4z`i| z8p9Xd@zPyKjNCV)Gu`IUZd)KYZN0V-N6w~P-PYsC{im9tYb*X1R>7($xoOAx)Xf)8 zts1c0X0!h?O_-pIAJ9k+_K5ld<_qWk@bN;bt@|HCDNTmIrBZ`}azonped2~Y38;bP zR7DfvKeP_rxPo95WEZs-Dpt`6{)Qc^Pg{DWH(-4az_3?AWJb7Yz@{)gs92q4Z$7l* zH*=$;xpD9`dRZMlYv{edo1m~9>k1pRyG&faC>X8}YyaVrG+9S#xU&f3rua}r=!M`} zSHmIN$T1%mexDOBcM6Og+Q<#_GStc$LfSqSV7P~L)m}b5y-#lWil%xL)$rfE zg8V}k=BQb{D}4y<`R6%0JCvy%G>qH+)?N;);>cBEkW@1}6ke+ZC#McY$xV9+9=Ca7 zQ#d)0iF=%$F0k%lnjRlHrX1y3y}bP=j~7SLJMMlovs3Rgw^qZ<{Y1K!H*fBDI8K*9sY;DSZi*{&gP3YW!Zpt-)Xpm8a4Ub- z=u?f{x|u_Cm8+=djp^u+SW0O#mviho(S3F2DnZYsxolJC>7YZGU=G zVjr1bYm(`uW<#}0ER5udnNqHww~Fc z2tP8TTHRJyz)Mjk&B;khhnI)%fonqoZW7(3Cc} zBpNk`o7Ho6V4})bq|1k)%m3KBy56>NCEDB;*#=6_1a=JZ+5E=01WVcg!ey?+IdI!CYQe5Rf&QJBC3( zn)BN>p(NW|8fS~?+wQJ4=M>-Vwisr%qDPqZUxjHSq}$%f<>~v=%QT)8Mub`4CMfrU z^Hij`bL1rs{aCTW$Yh6HQ#@8f0K>C0BAd&WNOuJ)rPy1_&_=5Sz@!Y*#L}v6pq2@% zD3s)QPxy67p*|s~dPDta!6OG_5R0~951Sfb001BWNkl20_rfq6@Q*OF3L>XXI1D4 zCF3<=S#c;Q_Ah)vbU5w)H|&wS-wxxT%u#2g1CV=u&KNn0pfsHFHh5FH^a$>zW$mgDyT|F750AIU+y0ipb$8vW810Ai{Q9@B0lbji zU--Z1L$Q-!z{a}9%sV`KYHpxh=D*;4U?IqZtMRHa8~KrQ!K0e~AJhR*lRyM1BdP`q zsCDeJk3&gFZ5PTBvem(IidD${ZKwK5vs{G6sfX&xkQMCKqY+0d7A8%+j2(}6Q(yr@ zIi%Vin@E)=N*T~rexTOh1~M0#V1b)OXiQ4N4Af~E_|FRKUbg<|jG{s%2E5e9K|SaU zG9+6THoa*0qoK`&JzkVvI+0ss1&=pV_Ax{$7M#Gs3)9NFlA$5r0?JNXW+K)@!JIGx=nIuORIH_xYAEuK=P2sYNj)14!#WZ^+~e@aY~l(28AMR zi+meQydlO$z(!|UKExX4A!vevDWdd;l|d`CkTg`C2INq!G6-20Hz#p49AfLRo@@HL^S?lW%R5LbFFMAw8-$|rmNNmSchas)%Y5Mb-+29Gh|oDw|$ z2^*`D#OWgcuzTr)iZVM!@skv|b?rnPAAU#?WK42^pHwsmVNiK|>pW|BKXpn%ca5d z&cOmCgS6`^elW`MTH80p4K?Ld;@^?)Ga*T5QM6Gn>B`1~+ftd5MlQzJ|CRCZ)hN#jL@!32H(ID(d@O1;854!Im;p zF1r>kPG(>MvPW})7#VP0;zzR6w$s6FdvM7G1BNUiOHh$c8@k815&<3vnJY! zI0s5!NL1Xybni+_a#_oe9<>&(ncrZIXo4_yLI+vQjVzBbq4SW=oQgIcl6=P2W$m zNj0o|bKI3#eEM(JNI9-UM<zE z5#(!Xrl7O2jgrojtG2Y-K5BJ;WUn)jduoB)gAL{INjyX%)B%lqGGcGZ$y17&`+gLT z4xMHOKG+teoFQf;@zS7aW?cIF3P0g!5m|3>fh7mM^}Aq-KEITja7;b|xo-tVZtbhU z$la~oBgcWRP&`ENn zsutF)GHGpMAFw!)vZh-Jy0K`Eayqn4@smfh%p2Q5OWv1Qgcc;?x}n!CP%~K<{ugoX za@@&B$X4HAR?pRNA0PP$Q-pC#4uR#4&LF{%a2w0XG7X`==B`a2Q zL|a;I8M)Jm0=fO^gmcV2)MBPn^!PJzpho054k=!8`*#h zjBc5XS&>Jqipf2YTjw8&$_Hm1-QLXLs?`NfY*T4f-$$<7A@^m=9y#_>7d*6&QoX+= z#ns3DR>AfCZl>%WVMLRA<}4$hKQoGh9!<|F?tHEv-4%?%HVJAx^01gwRS<97GCME0p3E+7fHYvW=e`i{k()HzIWa zRs$(OR?UkN6lU~J^jvP#a7=hr%wQ48=cO*M4HVY+xk7KENQ%-Fr&xia(2PxqT~J6m zndN99n}Lh*NYlo87{e{3yEYY>_7@C{+^J>c+GlOHKdQExq%Ez+#4X7o3bYvP0p5W- zRS_E(gsrIk+EBx0Sot0&|7*(Fh1&k$J(iNEzZ4bogxEe zJHn*BTKbI`xw}_hwYmw(^-oW|-{oNL@$2rseYQjYY}G@9{_=;%d%Al1U968(?O52i zP6wVXQRjz8^*)|j(;(*s9D>v*C$lrafrp@cKuUdGRaLaQdS7l6V~K(tLqWo@h_Dkn zuo(D#=P!f?%Zw6oV3dR<(_!$I;IYcyt{Vp3kGt~UCyl)+`(0&BnY+{T52TN{Z?VtoTg zY@&h@hjN@WaY3*2Zb}<^d|)9@5SC3et4+hafT<{QM(+6yORJ8R`|zdTB==>@Bf8db za?j6)rfyLEXMfu7KUPvV58W-}x;x9=oPT*Z|M9rH7v_(PjGS@UQKIZqQNqDdMh*cv zgrE@_O~}ZFexG0+HV3g@mHSf@OazDy5Gr{O{v`I~1TrpkRDeBn(L5dkKtm}DEDZAr z5xfsL2CRkPK^XsQ)9ofWo{QCB;b@XU&o;{^HYMC50$q_{*vUgwLVk;aCVQ&RO4*aB)At@SJFgs2~vVPx?k>d~OTKi;& zpBHg*{j(j;h^?K~{CtP$Z_iC#_L5hA$u%0v8~6QNrX2uNS-@gpWRzvN_}bMGlt_Vv zpjhfzShy;C%aXSb2f8p5P|p~iWV!cpXMV5(o{rB=Q_vumrff1YvlC^7y3k$*UaFI}o{e3?x_XS6)BF z>#0}THtdz0)Bm4!O2H!KP2<}IO=Xda-gw69mBS9my@gYxw#L;yZ{@Ua@!M|Ky-#Rv z*D`Yb9=UgxS+7k3-ql$Dye6r=B_nsoE_c{?)#?H#_pCU%9?5n8Zbn8<6LNpFWb>=~ zO$O<&GWmBo0Qu#8$$JulypQpy$X?NeRygx0*P?rVgSjrDp==)2HUn1@I3LRouil9y zoDizTk;>8@jU@s7I6VAlORL9$huaN+u19spy(z8!qF35%F0YY$b!kBP6Q3`2a|4jO z`Gt&JyF>1i-Xr(ZTk9i&=S*A+mkq0&}RkzT9cC5CFH z=culWCuT-&#&5@eCPMCb>=?O+5|Fz{L#x%tRd1@_LBOcE#w`x{{TbN**t@pfwv{9Z zE`o)PQd&WBf&hNt!Z2*$0O!rGe#!s;)Jmj8PIpz$3~47DU`5HYE)?h1U0q!>r2Y>T zIj_cDm&?6hk#n`Zd-f+h2u1Ef>3$w>MD9al6;^1(mC*eLcy0tAycYuCNmWK&LkZ{z zE9md)%Kq2}s+MUc*wO;Y-|&0P4_!>6BaFfF4%tif@h5pISuA>;YUi+EH3gI}$dor& zeMh;aVQ)%(+_wxLp5}}bk^AQbPfvvociLW8MGk*YYvj;t^}2y@oC$Tv$S75ZUF@WC zX??dG@W$d)?@6njh}^F^YxQ1U4){#u;!mw=A~)#2Vc~KE|6bRszb%ArIR`>?h(%NY zC6mP;LJ)`gwk!oIjKCEFSw#3)R7&oe)=sx3-bBT60!JPyF{eNoY!?EsC@Ij#MN+9AkezrZPfTZsf@N#l#1MmrH%i3`W9K->&)by=F5+mn3hJYS7@_? zw*UY)Yl*vEISk?7!$8W8EZlASUvb7;9aiugjd|#KzJ+J4lK0k+9RoNTh_~ucAP>a6j zKFB_#-5B1u2&yhu)$f{EORY6rafQ2J8V3#_WiR-T!vhq9B#)mCiRoD2h)|_XL|0_o zBTfOq3*lA+`Pd|8LlH*A%Fa=x28bgT=lXNH7bI+%Geof)NPGxAhs^$6n`$* z*P0<|W~%XJq&X%PqHoG!xqLn%D50vq-Dr+xkkm+!5r`Q@n9lPm56YRV6=3U)J-xbip_ygUBgfe1*xE@TbuC#Q$yvN*FiWVg^WETjgPatB8XX1`gNrjwceziC8pB8 zStC?JgJ+4sIdZK+Dn`%bH#$ zMD9Maxpj@)r;cBC7_Ox4T4X^a%UWIjoygmDF7;;=<6H{f6UTbtq;I#*V|4FalXj|L zu%RdlcV3JLrGff4Rb)`*zPcs|PmP&fp#gOjD)FAT08#UMTr-?De`WUiklXvct>x?P+3h z*W2=BR^+}%D})@$leZLJ(n!CYv-hT1%gfj}Ho#tc!5eQ0lvAa%bqa>?Bj13{->xiF%NF?PJ zMQM^K8{XYgON(75lh-m31}SMzkY|7d5<2TC=~Dv(Q7CdkUThAxBd@&U$R=1)-eR{! zW~;}pwV9*&dDg_9!XPN>-zu;#1>564X%+%xb?c#cC4Q!s7&(W?_W0||cTi(_sdXT; z4gva5^pn%OY6w-fxgKFG6uF7Iy`COkr~5?czFri$2S25+=K4dA0&OSG_@)&2!AW;Q z%u8CCl?&&IA@!x4G@@#SCw^FbtB1b!clXEO?H}icCp{c~jhxotgd!I{m5SW`UF)}2 zKex_W9SU+;P`QDrTrmwhZO_kN=HGBwj0Lhg;xvyAAS%c(@gaoLu}SP3j^oP#O1hK; zH~}#hy(jm53WToowHiW(b5A2UgIXMqY8}K9RAhw?r1Wj zihu#5Ci-WoE}>URRgEzIQD0Tn6&Py@<*W|`Muzec+Niv+tlAhPKQYc%7FXekv7;_u zTEqTjX4Vgeh6Ha5W{R~~;;wDpmK(4Imr8h<7h2$r2$1z`NczNzs3&Qm0K0MIbv2A4 zM<{U75@H2XgfnfBK+y4dPf{fC7mN&;iQIU;jNFO2&G!qXyC`yxS0aa!$MWG#7&_&d zu1Bm3fXWf@nWF)%v|czmJo*BRgpl@{gMKBr@mQ+y)ypkan%)ZZQoXS1!BZ2fv`OW; zDdAxATZr7?1h(bDlc9`YFWEC5oJY7oJ|9Dl7ezwv@d6)Wz9Zfb zn;L18F2fBIotaG8D;$f8dw2%u(eVkNuu%iQ0wP9P1gU`Gls~2^u8x3>m^w|dv;9Kg zc_jNUS4HkJoqE2XINbSuelaU@)70uX&*Y2PRbtH^(N)r?v>&L$ zm@G96K_k3Mj!2=Fw2k0lN#y0Qq2ZRils(v_dnzl}4$rl;6ywQfLi<-${7mEqC&?+I z7GAxr3)Y7AZ>`?#xQ^UV(#T<5BR2>|E-=tDlY4%CIGPER6m#_3$agPZ-tSvG6<#XQ7?%Ito|vYNRcXz zH<;8Sp`(^isVtKdVKjtVZh$F@r6|2-!a7MYW`PW#iqHx%HbRr)I7Z?#g!CqYT#R`O zA=4;JA{$%mQs@XkO3FsP8Ktfm2SI9Sha@M3X_c&p<_YQ&6m2qfsiCPH2Wo0gO|N-5 zTj}S_ul1rZ&1^X35HMldHnr52u^vTUj8e$)d^&P9=e)Z$eWs49ZHq0 zEORK?+Yt1_iz4^1C~_?tmym1<>Bh;j*ff6@4#pqV4-6tzChOl*NwH6?u1G^H`?5jf zBh|qKlGmylJea59)DbcnL^a2f-SoV2$c{A)%5pH-=FY(pM>PnsPB!0U>xD#OY3U|Q zlKp2{y=6a0)!1^UQk+<5%NY&N{6#Ykqnt~7hwMNitCb$vVF)!ZwwfQaXk$$%g9<0I za%6bS?9aBqo?dT&vdEP{n)k6&bN@i}P4xbhpFv-k{qUWfN_*DvHcR?s@Rn z_88n*qMlHd`q=Wn=a(JI%a15U?v50>Vm{ZENf*2;t25meMJ{u7>*GHbZ8Wo21)3Eq zU>UH=xZ4P@nv&WsQkQ8p{V0>z8Cpa^>uEhjSq}YMy4AYuq2Y5XpqmQvs4+?F8!xLj z!1mGx>-cWX{;k8X-idZy-?WaNv<*F5X@TuNH`19?0vcr$BC5M~mR%ar2I1{;JRL2aJ*=E~dGn_vdIw&3* zlY!fu)4G!vtElzXGP0_BTZ4t~^Va>GQCpwo8DgXGQdl)OMK0VOYoa&Hk6IT5zNeEN zKDBx^fHi0U#~)uGsCuFGMT63IrxT%UyslYFFW*_igkqeY-wHwyUcq4`&;?%DRlG8ercsI6HvwU43s2k^LjAyTKDux75pP zx27E*+;7%7JiDo$)iMIxQ_VhJZM$sJYUn&-T_g9G+D=T46gh0ExwV*EZXz8%)yTnG z17aJ2;sc@9AXc%qeNYXu$(1&0VT?FetXU&r+?Lg9gNrXjj(OZ0ktHwD6;qts*2sP0 zvsUl;g1|xgi)XG5QKVZdG>{_qhi-?ieGZlV{`@xHw%hhU+QwTK+_v8Y;p2H#=E>kL zmmhfyirk{hofWy4LXqPzaD(*QwmHdK6*i^CZxZba_3-L~6y+y0;=dor;}FyJ>4%43z565kvo)B z@P_ZVZKLf4B4_ce)j^yTn!R4$-=@fY_ABJ(vsUkvB1iMMmxpjc5?{5F$l*W?DQ9B; zW$$Wt8`p8@&DHFnQ*x4GyG4QEB0x}Vfdcmt`e)z&r8ai_A(Drb^X}v3eUs{6E-x3=OSfgTx{sAopM1X+*|-J z-gz73pG(b|y$dFZb;#fothvr2+^AH(o_cO&s2XRv(3#>RSVyU`8GPcB_(NUx=CQ(; zRiZo*B6T%Y7G&+&H!BM;c#4p{%4`=DFM`4}W;p zFdZ}O0&6r8#vj`-wXuszl35i<8mE2(09c|3>TX2+^tAb}!9#$2v#ZwTXX%$6ek{3< zoXg2=21d?1WLP67J&>J;0Al&@$_;&SBx|Im4&@B5>1s441B@Kg#Kk`| z^av$@jY{2pxC$XE`^7aq_PSOsCE`mnNljS|3M3mD65KJJ?;^(s?$^j2Qpd=BAK=>v z;{H0lpMYFCuaRSRLB^G`66|&sgkN)#ZpgND<-95ZlJ8$7x4`iyF#rH#wr6UAa+JXZ zcGgwNG(Ww~jNJRC=HYzZ#K`?LHqo|Chhd$kcyR| zOaa~)3>E72qz$9QvVK6U=D{jBW0^l}dF)bqx)8Q0N9+kmA}ya&J3$QTw>>J2{X%_S zc>%STlwzMSo?&WXVBbIqjAIrx!vDk^o!wgNx=Udv`7+J5-p10dVK1<4n1? zDrqciI%oXLznk>JMgUWiP^(3#^68UQqy*Zp_o z7U-F_RwK$>rXK~$vRb=1lu*&RSJ}4c|AjG(vmpJj<9r0X)K369bZ|@Z7_-(ODQNEf zp6N|Ou(nm2lKlcl&ab0f+Xe<)DD2U&_eUN=N>k)@L?F$19h>Q?jRHciV&r-tC+rhpD&IB~!5cnuhfrIv9s8Ltr~nyS}PzVS~opglEzq@ z%h5p2u!B))#X$4aPB63TqS5)w)f0NLFPNj;uxK0E*jXZlU_TB$yBL2JDF}uTuvVat z9Ca8-=o!I{XfMlEXBKY~M0`37|8|Vr{_y7?=ZhUi5I4ThYvj(CyQ=wAwo@^M+=!_G zUvwBRekO+HcwuYbnpTL!9_Gm$=XAHP!}|7}HbPY`XH~YgeO`HcX5`?71NJu^HjRv& zvqtV`)h|0ZC^ABpBa|DaR+*WD;Up%iG(g8ph2HOsExE=A^hE85xCK|o^@x!TX$U`g zJY7s%7Pw4Cs4h};2tHAk^A8>a^`-(=(kpbC2+yIz3i&heu>=BYDMjP zQ!-$m1#6QYGmYkZrj3|mgqPt#XBsnO-euu}$7Xk;DQ`j49yJZ*>=S3piNCzDP7g7) zz}cgeNhQ-cf7pCz4j``))P|<12$lgV2gjRJ;6NY~Lk<{#+JwZe<$UKbMIdR&S8iC7 z`Ex2GM^$iYSu_qBd>O&cV#=I!TZiHE23?JGQ&-_9HzbH$pjeA32^Fxm;nA zV6_ow1@xwvaU;k{rJ^~)-=m(=Nlo$c8plX(-XP#VAi7xhK%q7~R1|6mq)Oi-rGs-A z^^sKqQ!5ORF>)<9Zlj*pSR+?=)#~Q`zDBkV$o=m;wF)gvT>Er7ID=nu+$2^VShGt! zhK4z6DTx72qU=N1TO038@_fkw}?HBc?N@Fqpyc zMdWO6xS+jX3N~AygK?+7*WLbMzdQZ&uRk6iAD_GD%gf92%kyb_d4Bx!$fqt>Gjgz< z;h>P*WauxJbQ3>9-Bj!;bxNWjkg1TtopBWb%EVSiF!TAtJB~HyCP8ur7b?1zD)PkGReXRA?75R||95Nj1v!e37D}$@SDKf1p~i$}OP48dTvIL6v^H7R5!> zerk#A%OoNg8B{8lP#V5WirSctO-5RI!x!7#zT0+NI`HxI`Pg3s(YMr<+wPSV8qDh5mhAY8a;Bf^VU0P|XBN%a zkKoLrMTvN5O%b1mX?|q8+db?b9v(U{_qKa` zJH77TcH?8e|NFG>>1n^;k{ZB=BlHDNE`5nLxxfW*mZjP?9zZhOFHz(San>v;C; zjO?madjUa&rsSJBoZmOB+v;3xhxLqHwnk1vH3!C7 zEVqP_i|-=`uTO;w? z+CAU;4{!ahZrxAc15mN2ShsbnK>KoyTzHd@@j?eZyV<{8d>^?xIJK%kC0-|I`NQ*7 zs{wBAO#@m= zpQi7`8IGF}T8`lg(j|om^>f8~>$Yy|wr-yU-DC#u;92*BU38%SLe=iI|9^Ptu3hby z-=s7mIknDaom^cvgaT5ICXAO5kBpqX^fS0()EwM+AGz|>>QuVExB?=(`E@g2>_9Yu zof-0^4_1E;*b0yu+?*uYf0KN@L7UQzkN?GoM%PwN`Xt%EYSCX<#`H<2r{6NV(x(cO zoHTtr=koDp^oRb6))B=`SGNw34?wqH3&*A3E2Z41J<0U@*892}Q4frqL`ySxGH^;$ zcFt9+?k_u-YaRNlR`1L&J8U*+GF8+o-obt3vU$xJ%3by_yqMs}bU@~spY)$*@J9K4 z1;*P-3LMUP9Wx~FN%)i(eXYmsPxzG{x7W<=M8Bn4{^_Rsj7IZU^N_C{T%Rkz(NVG6r8diysxC(ki{!!! z8ibNlsw@dMB+^J~;+=e3#^Tmks_0ez$*Jg?u{CO(S~WMTJSDlo+M zvHR{kshXU*SvwEYs^Pjwt0#yq=}a2>r4)8Eaw$=38YqWCtYkk!U{6aG*(Ft`P-YJs z3*T`WIm>xX6PJP0{a(z6by93P!u;5{NaKujNzR-diN9-w%mr|O3cE(6SNbj_Qk^Wl+w|FzTh8R;7+#G+xOC`Y+Cq-WYoAOWCbcuUS_H-W|>|%?mBCR5Ml6 z14*hbu5;`zuAxa|x}`+u*QuhfsDm`*r9xyC1>I7U;<~+^aSo>{>P9fNnZ;o_B+8)k zA(ChVRx~6(ptZY^w$*}y2KSwh3WW>7^tRm^uJiUb;Z!;W57Z)byG5R3b)GRr=i|cR;LX3Nlk;kw|orhbzpBNjQtnce}Mix~n8&8hZQV_XbM)D$( zQD=yy@0E8MT{C1scwM@HVYFV~bhhM5?vXOBxwOLO|QU<;M zk`=6OVcU2#s=MnvRZ>S?cXdI;4Di+v^=Lp)SK#FoA6Po$oTBrn{2XH#*`jH0!2ag3#p`CHf`gbyNO+&y9reu}t=BhZm;Ng4weoCuWrDY9OG-2eHCL_1E z=g8Slc96ZN5^!5+-aU}}?tz@cZc$$0+->TFu1MsjrNMjzaURAU;P9S_xXObXm!;pn zeR>oZ9=dn(&ul3VaPb>~zkD9!smHwM(3!E~7-(|iuDFCnl^2TIrzC>S7Z^}ABeITn z*dcPB0SUW0-=P`0y25t2np6wIpc0W=5gT>+5S(&5Q48P>yJ$Jw46&030?-gwrp7j^ zZp@J|GlEVPve82CVwt$ZTUSU>nhop>NH|(okERsKtwHas_snt~NO_l}K>EdP2~%61 zUWY5q%&ubXs<}!Pip#jI@|d0>8S!)W!217Blbed)ZSAO4n`f(<@!7Pn&4G|55|$BA zV5;2>$sL4vNr!Nm=0z(S7cm<>n26d;Ub9TLajQ!mAgS4QroFmjHUThc$7msd7@mY(&$Wm&#>+D<@oX$j`H^sf4@XB zF2cCe>Ggy{0CVB_%4r{PkL&Vc))mCD4Ax~SJRPPM9iLO>oMa%$ED2Xvqa&4CCn>z+ z%;IqcAxsg&$nOUv-{Kuv3Oq5CyZRUTD&#``!fMvBIwQORDLk2=M2pIdF{w=8!!_q5 zvPDjq=0O~;3qNRk@RqW~4ura32{N(3%&<^cE-S2J46dD&faX)QA0RY0lVQeebN!H$ z1yS^c7!Z_AK37pN{0??&NLmJ+Ew7al6qBK90+mL`n~F&R%^t0KHM>G~0OS0^y8xST zstgWY#Bq*Md`@XX(Y&kXQPdk|HU!P2=TX*Ev|mDobX5eRP_)58mj{O#vZiq9a>gY| z$&GCBfMrbUUS$~v*=osVTdvm%$#fRiWRmjK#CLJvdff*f5nf#f5n6&Q`y%q~zn}jx{=c8?7}U=L@|PIFUK#6O)-}iymy@79i)4&bX#0$&MfC zE*cfXy~KidQZFaX19PkBl$MIJmF^8geAhIb;$xw3-cck+wPmCz`; zo|ZTBeitR@wEXLn0qCTE-fdbaQgW;!J}o7Ari)MF3Wyr9O~PP?4b^plXi{<<;*07o zI;MEjwmAMFO3n$^24r>A{6-zZr3sd%5FGP@wA73FpIIj$cZ%JV92@x6T_qYNrJbdZ zFQ-#^)@p%h^ZKz=U!-LR)*QLL!N}n`a^E;37w?(h(rd{%t721BA>>xqsz{F*u_oz( zfgAv;#{lD2u8oA#kJ^12VqRZAE+3c6#lL^#;J*hj7r43j3Jl$6^ssUg2=r131q7$@ zMy)HmVt~hjR_zLtp`K*%UHV-*%LPIjAeRqh4ybW+=sK&B7Ng1RVuMT>_1_(2=CZr6 z&F1aQ3_K>O(JG+Q{FSzY(YC&?(co@10FkngNtZ9T;BTk`CI2woULf1Cj_X0B-$7$| zWkU)NmJ4Uf1z3g`jB-9wXup~Q{8kH~D;D$>2p&){!^E$T2;q!e1W4thfVo|MXjaBo zF+y>z?!S%AkrNm>OvWuWf}8o~#puZnzcM2yd-4qLAu!ZmQE*N|atX%;7zHM8i{sC314;~oA z_tG^DD)OG{gN8(OS3h)cj+UK-J4*&iGaEfJj1xpKLIT`Jeu7q)&=3buTM#r9_Z6mV zlojbianJ+OfMZY?R@A{-;8SLyg?GRhBK;?Mt3DZr{*=JNDB!FKa-*FJ*oLLuH#f$X zcPKWDP?BKD0<;*^JUH`?h;|#yqmAPfbI%gcSC>~${oY5 zatKa}Lmy~b(cef$_jS}`{Pd``{(`lHN7++QfyCW*8@g``UoDD7y50pJJ9}UC40yEo z!l*REqeKrLtcuWEeeJ?R7YJ%-3yknQ-9BtP;q-;$nw9m-NAw zGCUjE`RyK|f^mt7Td6keGo9xu?q@tBL`A^nk=yN@8;Pd>7`cPra53!Fb1yOXT&|s_l2Tkoeyh9VIxp@NxVXr&1*8@i zE<~5wDI+UY9T;k(AwELMc8w>j-qd5N&DLK!` z?QVaUYo05YwmOd4dA=P_;r&@ga?^(9{#Iey3crOd{4=F~lmE@E+*iP-^`KBLlS>Em zWCwAf=psx`o6FWCmTPt2|73@6)*LzV_*d%toe@7*T&q*&(K4OZK2kk}YI?3=TukE} z&p5lt$3>5-U%=p(D(rUI8=Cny&%Ryj>25!h_chfLf^qc`oU0KNu199&!d}PI^gKPg z`j|NPIJrVePTTRfIJUxX$9DYB3-WU^vCrje?k!gOV0Dv}&Sk5)&8+kmsV*3$n4U-{ z4{$(?9Oc0nYFf(9!0CP7b!r@IT;)cMYaM=G=Bl`bn9CS0f7Br( zxv+vYBDpYU?>U;3XM>WPNC_t=zFPmUs*P9L#FOA>$T3pWOv0Vee`!-rQq0skTPgjd zoZqTDJ$B;1^(;;8|H;K}HidRhuQ*Ij{jR4%J2c~Bt2Ic|v?OStorMalvs^ca-l9xD z97)+u-KuzJ3&Z4^>B#qE<5q^kNl~vv*~^jpInzDK3Fnxf)mmF!B(WB6b{kzT6Yv}$}smfDCq}y286R~oK3=Q*& zxcqq&86B<$!GM<2nsx2L1ucn+C!@ar(q=%xSFRm`uP9-l9{D_`G#!3ZK?YR^`XPlb z4PeElu0`i4rqf$&>1w6vm4+p_a zlGByNw@_<@?E7cS%Uk#jbbByNK@p|u{y|n`Q`G5FJ^!N9=!N_P)-_uY_HVk8v#Je0 zt~XF6iF~Du*ZO*^W6^qOqoUvdf?hvoY4$aM)vOiV1O-D}_E_8|%dvoH zSU1@1Gt{IrR`Y4-5a`*O(hk-Nh1zS!X7qO!kt6e~1lO_ni>ZC2HT23ed$0+3xS1^rdcK^n%nLCRF||V=wuT}O%2K2J&_!_ve(E- zO`ALMMXjg7?MDcZdstSiJ`6_WS_a$+qe-#_iI@mJJU^`~0$>HNzJ|B|Z5p%aOlAJO zhksw{+TYzh<$2Y@g>)>@xD%N##W*en6W*|&r?M#nld|f8 zO|7z3s~AAhRikwG4;Gy>f!tQjk$ccqt=<|ra_r?{H~KU%ZBovW+rWayA`2md_B~IY zw(w;FMzJz$za+<{)BgVc@%`yX!g0quqq=P2v;^4}YEy=Xv^ED6Sap zVZV8lG zD6?eHCB?}eiZ|=04PN2@WE=g7u zDw`GN^%`s{g{@(R3{`Ehm|``_(S%?td~g^QI<|swXjcPV87Sno?}n*5mg}9= zJHhl+wnE$Adepj)3a(?Ts~sYayG0R`DE>+4cpld3f7`)cS|C2vz%N_rv&6~j(Kn3mM53x z$#dk)%px`0$oZ|?hlFm8MgzQOn~)4}pw)lA>JfBoHHL^fU=Te*H%jU6x*dLBLS1|^ zc5MXy84hR2Cj|$u57KM$^_t>_@(t;Pt0$da7Cdvb$u?LU`j*!*eOo0=5e+ztV4C_U z*bQGP;H#f0rLQ%k2I5dg+^ptJ5=vcu)RUdJiuD|IuWw;GJ zH()y!m+H>w_P4TQnBb*b-@pps)+{-c1P*#cPQFKBQZm&h4Ee5_T1^qTu?>MKJUb1& zovZF6cY!$(0Bs%O0RMKeC9y`h{MBW0`z0tB_V=&rI)~l5Ts6Iip`p+f&`lPS`o!exuWjfxwTd06`_w^BR)3qbAUIK_f;o z@{GR8dBgDzbA*<=E=qE?A5OG{;S4wG7IMpsA*?WNQzJNe)oRU=yV2(^wKO^M`_$Qf zL@ajrm$o7Bt+Q(N`lChU%CSb+@Hzj#@-YvhHhKFvxZt?BBEe-+HLX`oZ&yw4R(*MX zPB<>*5-tI`Q-*PQ1*#d5OVg{DBL(HoQ%aQk`Ev=%UH&alZep9uF>rS(d2;h%mv#nz zy}#dA4MHI~q6e`Ohbb4=@)>;~A8TkcvrMbDerpdX_e7%svSdBCg7{wi3`Md+&XL?u z1|mxsT(@qHQFTwOzD5_( zQ_ZG?Rf^|EZtz9{Y>R>?h9il@rz&nl6+*8j&hpdGX+F>A-Fcl|O;GJ^TVb4>TjfNhy$ii zh#TmfKLq?y+6O8g=(omEaZixvC>m4%>Dr02dois+P@#SUVi_$uB}pcC26=OkpFwFm z>a+yg@h!-&^Ck!UgrL$`JO{5-N{HN8dKS#vEaQl{jeSW(I#eaYgayDHV3VwnMvEZJ zLsdr#wWO+mqDn!iova*v!t9QkD5H1g7NL^XRa5zRR$tHx1$nR0z95;Yv7K2;q=7dO zLp!qy^6bpyNLwAbjy7|#NePtaV~_fvy>z`6PJb9zfi?qiu-y)6qK zws^H`*<@}B&Ye7-Y{>OHwOA_r^fG6Drw2stCw(>J5>0*O+9%2WYR#XgB8vmdG~Z2e7y~ zaUz)QL6Q)FHCcc&pi~7F6_$&LO_(TPGbdvH5fld)31^@U>0)lK*g5oR17@^gwn+ek&mVV&QY^eg}?kR}=263Ljfq+4mVbW4d zNsk+ZK?eo##h@vqQ3aj}EW+Wf4x%nR$g#W==M=K7NYo<$p;t4bptU0grx6sxX-E#( zN5HS%0pYIsNLJVkV-S)MGfvXZji&hu_Y}ViQU&uvqB`kF8W<^>LpI{OYu!j0GkAuJ z<`{Vg5p*?^2G2XIKpc!v5!Pe4KCILfrEs-wj17IMvXyuoj>rYFkK9-Q>@*&c^K#@m zt5(hTI@}m5R>eMYOGGXL0c6D?0a#<^8X~7i?t*z=?;h8etL}F5eA9B{ZYh$h)2lj^ z`%GDKy95Q#dGYEJlG_#}hwsDh>{=^4otCAm$75N$`g*?yJemz6ev!#Q7dMm-k$j9I zyg+Vb{EUpNk+C_HtEA?Q%KD8Zs+eo?MHfjGQ8p!6aNd zf~S+V!kWZuR4T&d<)eO?tAMx~qSF}pTh#R`L4+W}(Bz1EbX-$@<{3QPGy@Ypq_Ja-a5=nhT~vE23k2HH$Hu7lyHEYh|B3Yazj(Ar_p9E z5xKCSF;7nwftGk&NsvpqaerLS%iA2@UtXSuz#? z?he0pzvg+KKHsLd6q39BsI{OpIrQe$eEpREPTLZbdwF_Kv#Wo!ZRG7~opBy~t^8kE z%kQr0?>zpY&HfuGir*smKK?JoJyJvJOk-TnaeS=shb8JIkEl2LbeY3+Ca3zVzJ*8Ev8@Lk3)g6Kgj0+9% zKBkweJ}p4pS-bjvw-0SA+GZr*X7YV}AK%CK@mD~ZnCG|hxxFT_E^xq09sbMSwe2*rE78I| zC6P{MgM>zkcsLOfj7CQrp?TqjJn;Wtb>e$n-5p@qdyXaq$feuuw#(&JtEy~9X8w8n zd7KU80wd#2KY>S)l&sZ<6>w?jUiH?I+pJti?%ZUDC0v(dHG8`afIS{{u4c_pUeo?rngd zc#HUJt|A<(fucC9?o^yu#_wm+arnRqQ^dkpHkl2V5R$K8b!-c6fwecQ)HfagrdH6Yi5yl83eg@JPR;`w5X!aY&V27Wa!2W!yzo}7^Xo}=TCFj1p~D#i{F)Kxg%Pi-0q38)UGb}?%~g+O(YU;^ zYN_~Tjh2%Q!7~@q2d_`hCnUE&?9;-)_nVI6>iKn#uSXs&*8=Y%icH&e?f2KW-?v+W z@9y_UC5=D^{-){;DeB`$YFw zwa;R2{=P&3e&P+_yBZA7QB&`f1tiX{O33ATnox2dKh99e+Jct^KYENWxwddkSK_CP z3fc$wjz+;x6MBCjv=F(F1+Kg-dBlm5+ikCGM(+5bS*u2j+}9;W?)VP(>cef^*&!nt zv`h-qFd|54e_nge^**R?IX{|6##ehTe1CKND66F+|Bs8#72cP*m z&#-f>N@hq}_kdRBZSc7zZd)lr5`DW|Tx4uydaX9PsSv^{{%SxrdTobtuE7BnLFb~n zv9U7~nIjj=Deb=_x@8d8;am^T7acaYoH-X5O+CF{xAfK-cdRspJf?_KiB&3L=Tru){A|9Ii^J0^S$FMUB#vC2 zFe$wsA*>^b$K9({co=p9YW_}Q!FSPeu8)HW5N{^4&I31xsmzD-=Nf|07WzSACUjSR z2#ubjS*w$Xky`>#M|%^9x2z-gz8Jar!rH}4XRS74si^R7K4rnGb4d9-#m7x8? zF6OHyJ}xdEH(yj3ca$)Wdsk-`?bd-OwU_$NbD6d65eXNH!SI|;}BK^LWtIt07udU`t z7t$)xN@xwp^`t)sjjB7U*kIT(Ic4>y;?gr5qED5)$=@e!=47pYV2s?xj*;U*a&Fe@ z+<)7%LAL>xi#t2)b_hjnLomad^w`KSuC2n2arKeR$HiT_ezs&)%EtAS)l0JF>XD_I z(rkqoB)30YUthmmKNm{w2j2ywA-TtRa3kgT-Vw)5<>XFC?yv2%tLY8}#X&={^;R2) z0qV}JDKwylTRMCMgN6#!osB9m!j82uW=%tT*%!qS?0Gk+cQP)IpC62CIMosXbrh;( z1&=bef;M#sVX5M@5ciN3twt|s$b3?C{V=CtG+05WC5-|EmB7B73c9Pb98v;}&(N9p zD5P3m*C91g{6KahHYTnU?EM;(A*!`0s^!C$@6T7S*Q0Guc?hVvRjSE?E0a<>ETJ3- zfjLOrW6_k?r9&A@D_Z%ypTKp58fi=vmoK5>$9f_C?1@YFs#0~ia!f^DB+jaRQLn3Ujx9ajE7Y~ZhBRu2R10MctLFV>YoEFlE%5Zzzv?g5*KSa9$~}oH8-n zuAK?NIGU`mh?YZ@5C!`ynNn35Jl2UqI` zXJt9DJfj77QC&{BGG z*;cc>qSQ7O^R_Sms#ZfOwI1lTTh(~y8#%m-mr`}i6bXGOEX-i$>G~$=ptMGsp%eUK z&4VFd1pOlr%~Tvu8+fWC_ja053nPa{{Y@h=jG+`t|A~}Nsytw9%K9h+$1RFDk{n!N z@GV*(q`!yR0Zf^@0|f^PNe>QhJS+-;SH-dR@iaY(Mo@`#Rdr`7E@HTvUjtCFa1Q4` zlacd))0r`Hav?c;XNPt5uw&#ZBZt94G-U*U#uu5AD|qN8@o{b4k+=$Q!D~mdd>mVS z%E&b&*Bu(UyC+D`ypJps9;yb*v=nfaD#vxk{~D7EdJXJvh8IN?v%Xh% z@L$oh#7%;nYCyML02>z>H=wSfCDNIvR6|(4MtV08yl>E*FO2ubmqR%Ki`A(rc>*kk zb$VIW{0T)o%RFam$;#ek=DeS)lp$YizdYM0NP|Er{5DVapuM&{c&Q)Sd~4LL$R}CO zLx>m7e^c;y1xYQ{e{NEd;lw)H5bE|hSTfhWfl}wZMQJYSF2cRrg=qzyl+_0xa8&Mg}hb4YeH}oza=}= zic>ZzuF*$I6@ptTwCDk=OZo=+vTk}<)G9T9<9EWoG zMW@qp7+YUAgypfm?q9B7PEhW!e~lZi(il04evM7OHZ5E(af4-9x)diD6CT2GPu7It68dgN^9GJOKi4B|5E>T66ru$B5`+S!1(H z*zIxaTpIjM8fzc`cEULH1@aNeFFA=l#KeLfeX$4qG?Qzj_lwONp;9|`>Sw~lu1DJv zb;Ii#Nzh~dx17}|dXNn0@=8e+SdcCt7i~UXKw>5;0(9_`!OUdPFf`bd2@E|5#eiaj z@X-r~HGxXWkWr0ji7VA7)*b8P=}EkCr-tEx&L159EZ|^E4Wgc@&QhY_jN_G!)$nQeY`odtkvyq z3VC`kO+KlM`lv31zzGiB+_XH0ho_lT(tvT71;-svKk?6oMajiSXYSX!X%TZNO0IcVcXuT#s_=5{Rh*kT`N6!dA+TYhO(~8D zOcM*1*e_VNbtS5SB}NW{RF%Ljc+hWn4S^YVpeG@4j44|^TV^ITg<;S%sAoq|#eoF4 za&GjfNAv#@L#Xc5=tlny&0b(Rba~67y5x42$_}z7q+1*{wdfwoP9hfg|2Z^>p(FGo}hqA{s0jadV z%NAR5;ZdhJa%1TGl_55kKc;Jz>QxObNUq19Q%3G#h4*qui=7ALz8W!dm#eZ?XL%&`oroM!XiEB}VQ# z<*h!wK0e;xGfwUc3zV~vTy?M>Hz`VP&I<#7-=2`%O1PBiC ztU#QK)euve(zt>@GwdjCy`eO7z+vRr&`05Dvgm6~R4Jxg(RGNH@5->Y=)9mTOr_d{ ze$uk&7UybbMJRIPQ+I>HE?QNBG$jp7+#?-XZYa-E?SvP{aQ#hS8&?u8EResNj;l-R zV})&#AmOION<&9+BG9uaOj4vF1RNJ&m;$I*qH z>FG=LsZ*z_GbC=+jPMk#r-s>)Bmj?5v@v%4FM?FDlVjxmk?8l)nuJI*feWLACK( zQ~)k0ZgX82x#{?>iA~$ol+!=QKaZQo?f&@m@}CjO-5n1j)i;(Pv0b+5LAlqGx4In< z>l!Gzn{T&ymxKaxm?LfYiQM*A=W^`?4ttE;7vlRBy}WW5@TKbD6jY9X9*(WLEVchr z=Pm>;-@6-X3-ups?WOS}z2O?1&T7xh1oiJn?lT&>7^RDuHe_aI6c~+Ts|me5J5H^U zYAo`b3bQ4Z>rtnWSU%#T0%hsnx`11W{kilF*0M{kG23$Y0vD%f^!R7|h9-fYp8|B= z{BZN#t_bu^8Td*O+S#*y0Z?F>6X6vLpN`xrPqf}*(VA7K=vTWo%-zzthAyBZ*VD{b35?v^IJQusKUr8Gb3ys z)X1HcSg`E?xlL4lWMbq#cQtZvdkq@7A+$=f0Eduri;TFUS>MygcDsqM918)DM`@`F zAP&X}I&Q8$@+uT<+cD8$hH~5O;dpmHF>){8_s9L?e*C4nkSa!^&uTSCw?3b)HvqYb zlKVZ0QgWlAPjg`1n89&_-JSjrWZQAP-^p+svlR3*BmIF>%a9l2p^GvaKmRqsXr-s_ zptgjN4383Q77H~7VU~d7eu$dhQxkH~Zsz_y1czWHO1{s`H~{jFp$}g!snd)ELy<$X zl`BzJqpVHPhA~>>-fFs12KUIom`Z+xl6QG>&%kQ&b^T<~*tKlg!pLbHCw|D8W7XWW z8`NQ=R(@dmJ3i6$1vx3IQ||OQ*m=mzTNXt~l3*xeWaeNIcITx3D4S*lx-!qUSi=+u z-ulZBE($A9BxXa!a9gAzA6t;gUQ_ABkM3q-WIAS*y|Orv;jMV$`B@06aL1=ijE2oh z^WY5RzR`{+uHSfgo#CW-Rx*csfQ>N0RTDi%u<0$eQbpyfbeA+KGo`K82{tlvzy7RM z8(cj*Yjpv}&5YcbNOm6noozkQ3CKO%-cAQP9JX7{8J5fji&8fujyu7)*H0r^W(tS= zIZ<-^?f&rcaz8{@@9&OJ$L)Umxc#w_Re@{f#MSs+0dNJ!J*#h@56_3E`GAMr0M3$l z4*ANYROM5Bm0emz(EPgBzo;pd1xa*a4}H+X%(;udavajRzO~QVYbCe)FC9tE6l5zb z&~@2FM?GR}aBAL|>uceD*-~=SwWvt0{kB2V_SeF>EQq_&!5Y`55Qj{IPRf=~%I92M zwYQG4pHpYeF_%+yL37{@6RlZJ)N9x~ua=6h1kkd5n9Q6Mpn;Ja&M%t^$Q{Jt42qDmuQ}1-)g~!Cjz_9a;nmHM?Qp!ipBTBj)7Jx% z+x(EHJIwV*gi=l%@#T_Ox06cluM?8X59uMb6!}ULkdLkw9B1ejm=MN2I*GaCT?R>N z&`rU*1LknJdXD8no3T6skQUCKG8Up?s*zzkVB%KLcEp;o_m+{H4Q{a_br?F&m3Kgc zgWIlMOF_u-GMFpO+*!a_3N|yx=r22yIgtwuh*1dNa%BLM7AFWp%k0t?@h0vSe+9q|!TxX<-}tb)X=F?=|PA=l?t0?T5rb5GRO zEq8Nng~r%xu)!636gS3ml*y` zMOstM%k1^71d@TAHe=;q08R1U8xWQ>b>4YvG)V5m!a4NGp zTTX5X$t~Q(AUwsJNv3O^=PdTRN&IfYBl8!TeL1(>lzrJ3^*gP~X}f2k591nGCC{~I z3Krdp$xF3BotD0xOVtZDYSqN1mE>81x-dGcVQ&&hxu3+(7jtznqF)lQmO>bpDXiYW z$A^#kZ!*__6uX#kq&16PiXAX_YOhT3y2JBFj(3vb)zo}85nBDwBf2)%n3Wqea-WSx z?n4B4&RWo*`L}k;+o|??A1i8KTqCRF--l{H?mRt+=vn6u zQHv<8H}YjIEk~~AgrO+d`r`$Rx%@pXe4`97R+gr$ZR67%ZnIfBX)Zr-2{2|2HmRPt zG?82#qn^d4T*j~(+NAluq{+7=g;OZ_mIPle=AcN6rOL)-8CoUQwa0uIDI#FFD7(}c zvKV$GdO{SnTr;#p#3Rj{+|6{P#OscD!J;dbnbU~{i=U%Hk0x840UxEwKg-8;%%Hsn z`RDg*9ouXU#l#%4P0TQsP)cIr&{e2n4jL8mQBkagQORp;d5q0j+&A=e1<9x!G-Dig z1K_~E0d_Nn0z4#2Wpj#w#BM6O%ChwTuL!LIjohjux;}k+*8jNg-H)3_?tj1C-WFp| zt14};{rFd-GVqAg`pjaV>4VOF%Scr; z;WsAmDyIsYU}nU{Nzt5sXQJTM;;Ok3hRFe?RR2NG8hj&T&=St=G!a_GaYFB$#s4x8 z$@%SmVQzpG@eUj9#ZbbU|F=qF_eQMzfW4dv0~78Y8EC4RsR}4qvq`pypf4l!P=6Xyg(O zty<`00hIfF2gn6ktDoJ;4%Z*R$jJ;fR8-UfG7cuGDNorKYAtSm+Ijb%}(2uK5(9Anqt_)WxnO5er053LwM;@cZI!szY zSQeS0B0W^qPj72xzCiXd*@OyPQHqqyYc})p0V|hMFfMBpSHDW}qQk2|3GfhwM_4k7 zSuwC?wC#=6SSeU+tjhCCW*DSla>POx)Gni*xX6r7pyfakYE7fbFm(&wjz88&sccuD zx63_ctv3yla_WT-dO7?W=-NR7B5HU&=2aQ_Aqxi-)7pBm%O`fRi!ecy7lJIBlC@yb z)5umi7d)JrEo^iBlkhVWS&>|7S*!Jp`PVRVQpR7iRzEbfsx)%6mM$qpMNbI#wq`mE zDCyIt9JJ-@|6W-f*A#6Y$IXT0hS=)Q5y`#09G{0%x&}s0RgxQfu?ACXQMrvpay8vy z&Rm@+Ic`OPr)W`4TdifVYO=!)6rehfB@=!+SS8DpT;Fl0fFx8`T%_dAq~^@J4L;l+ ze391*-LwQIXO9mxo?oJKTv+P4g#n=o6-w@Xl9AKM#GZv)IkpLg<)YujTDS5avC7dj z$=K{prk272Pt0YR=TLUoR<0>yL4wMHg&;sic)L(eJ|Oy3T{ko06--~rQzX5kc+IRU_2`Uo@X=}})?Hj&EZ{&an9vrGRxf79vH0HTp!g+@UOg*y z#a5zYdi_J|tYE07L_P4P0&kI-2Q@>fqcnzI#419JcxktAE5na3X`?Ks9=SQkYRZw( z$Td@`(^eZJr|ZalShB+ggE_M0fG-7d&+$);Mvg&L-g?j^j&)4w_V!yTA$Qn*5>U*_ z5aB^1-%9W^WOJ&tp-wP-=X0HBm`;Z=X zJR>>DFJvS9QG}d7T@mQQf_iLHe`Q5EW@$m+TIdC zEg|R0t#Id*vjj?f?E8ECRk&t?wD7pP9ml#bVJ6%x4VfcPj&*s<$O397HA?1JE5ca6 z6bjue@8bzmxzs?dK;uNoXASs2UW`t(q@8}u1sw+yoLq{M=)ozdmXig?=@M2NqhL^{ z6dhCWY%mIgSB7FJtyN5(UKVM{p1m`+05Eb%GIH(o0#`@w`JbsH2eMY57jawkOZQOA1|!J`)v2$~SQWKLqHNWz?a3cZL70p%p9)zo;YjHZ2VSQUz)?FAlUvnL+OPp_@~KDQTK8Olpu2FhOp(uPpr`{sIQp zS#YRC9RilkjyICS$yfKul?6G3vO$#f4Z*>oRuum(C`OLVE*5Cy{K^ie8E7}XUrIkx zFR1L`Gjb}B;WWp^DMoHAW>e&q#R?Y7mA-p;cnY<-LUFFUK*`mUSgm$o+(4RT#9Ut5 zA^bM+HwLo?MlOov&TV^W_wBw3NKQLfrzR$hxSo`Ab-;0l?&lPd+)Ipi__Wzo)$=wv z(503p>y3&g6t~DLSCw}5a56(waShRrVBq}M37HFQBg!paQH9JLlNR>o?3>B5>h`N^ zTFOsNFlzJabduj)T8d2gJWbpJ$S9mwm^Pl(dqVQMX)ilwg{v62cTKNO9?W~q6z0&a zvY<`pJy{^=aL1%r-$g>u0xL;WXy48Qnwu~#O7dGE1WvAYv3YOOBD&G<BooVXkSFm z5m|mFW9~eS+{wpuC-D9(BUf9E+|R4*aCi6N@$bR4N_;_ehkgmD0wMSQ>FF`zxae3N z3AvR|$&FBMjCl}zTJo(1My`!1fde7;rH^)K_DLnT2S~1-{Hw{`+QY)8UMDDbOo6L^ zKD^uPc-yBH-EQ@&nRiIy}`m&Zq9dbZw zD%?-Mzb=sL#zOqiZKm8F|FB*12st@dN2s)|L=|}%xM|h$oKbSsNYQO$ zVz$a;K+&!AIYg=oC56jiU?u3kNa6dhrE_%H55zVG_D=hx*zh6yH$F~)k zd3)R*x5sZ|Fe^*QRf3UYMzvN?{{xNO9T!lzh+dsP@C&%NCkY% z{Hi#3Lxa1~1)A&Q)TQ~c5H9@(3?x9tQ=z3vX(?Pj? zklQs8$F&`fI~+fTtiZ8Q*Os^20i~hUl6!Z4@T+crt(pqA$M28gxCG>6@sUZ#xlNQ@ zr4pQ@;rpEBTA7-7?!jCo#Co}Ul$APp&~GOsxy{oY=PBUSlf=CblPP7z z3&{rd_WpkJX^eC@-UZ)kUSTyWvs!CdH&AjWJIH|JR&Bi=G;-~+Z9ktMd*AB7$?cmV z=AnDktCV@zLb+7Fwdn&V0ws6q8M#p2;W3nV=qolvECt~ zT|&k=g0G=?{D{Evkc3<<0!jDnm?<&-?1JTsE%6qfj-d2%2q}M{(bdi&`oRaAC(~bC z?lf)I+;Ks6VzT=saa+BX%>5^K#`0s+CNaSXr0C_-$ziRM! zDj3(tCxnJNDA#uXjEvm3Z^66T0lE0YFLA$pfH-EgSi3 z;GEGXO|`J>Jeu!j&v?3PO7}2$YO!ZxsoXIKH)N>hYIK~l8c~S{J^v-LAhKao0nQnW+&LP z%NaQ*YIH#!IT^M3$Lei0awktCmmBFklt@mU{tonuMz#6$@Gy8*?|RSb#K&b)IGl>4 z-mmsU5W-=7I;_{azC!?G-Ft`jV@N>qtw(a_h~!r7zD__cL^7cC!kK&Zux^_F1esj$ ztsa6zu06hdeEjnM_1$JS@NwaSFeTSN!pcM-{(9;rxdjs=nhfV8KPe-}$tExX%f3A@ zS>vyFh0JIM0^=gC6C_pYD zF?E{6b}HG|M&nGh49aD8YS@ZsMvN++va0#D?k$~`8pN z;aRSyn}D5!eXQW2Xw+Fw3CNw#b8Eh{esq@#Agfo68*?BqNk zXlYUZkuzQ(CL=W9z?Q^&>UN_K2yvh)xfj4GP8;*@OBlJ+MXI?)8o9b$YxR<-)l=#9 zm%B+LmkgyEk81qonbn@}ckdql?2B_vgq%>oWl4bnmYckv$F-`XHSuwW_Sp7}+_#C8 zYYt7j542p<)XfCt@)8kKz1GOdbx^K}pstOc)t8rle|!v-+~$54yhsj?qdYNHmGL(D zc0!mDJ4>gJDCni8wc+R#b;r^M5IQi~O^=ZvfgO%IfZapc&6AKPF`H3hz9+93wXG=% z{c-t4)iv^l=#$WfHa~Y_c_G$dDGr8=Nh0$xySFDZt>lZu?05-FP_7zbNebEFj2H{D z&QcnVtR+CJB`oMxZN(^X5TneaIO7Om2)o!J$%TFnvqM86jPxXlD0) zaLrS17;iCI6|C(Z>&U3wEa*8SclYwM5(3vYHXtx^OG|W}u7Yz8BZqd0`J_%pdlO?; zKgOaCiI7|ApYZ#alZIrBNRVV)+aa<;h<1o2y4v&k+~c^270x}3Z`g}@`4EJX(4uKS$V7my`B=A{c zdux444&y#R${8TetPt(u-Amy#nyC?K~W%BqD&2>?9=olMLOM<78c0T^)xIE~HD zQ$sy=kS(?X0+Y7@1(T2R^HZjnyz zW}INhfA~#fVeK8%kpi8PI{= z4Y6)ZG@{YJ3@JJ63^z?unTCL`UJq(KyEc?+sc0E3m+;&ItzJGPXX7yD8M*4pi>88? z-Y#yU;s61>L`V)n8axn~Hv~qn8DVHeG|<9w-2kqct(3>eA=HO3E7YhGTUbU6h$(RT zb9*{MlosMS9a4#G5@+2}n9^|x{UVsR&J7?ub`;MT&5-?s8F+;Ek-#W}mI~3_pm&@- zDY?F6(%aG*R@GW|pcTav0ZvN{=4c}2D(P9B(a4>O4ps!EmgJEegB|{5L~_^FS}j1j z7`3`V8ac1PQ^U-Lt<|J|U+|+6O!q7`Zk)3pnoB zo`Y+(gK%Htqla>z&k4yjbsHV4;XC15Z3g9<!pY@G0XaPx23}Z)VX#v$ZY#fCrMkA%IB_I&Nk`>evG~0wg77)eQCukwS zDm%hpkv()ZN68su1mxh>DFkd0l|Tcq@0a2@AD_KNFz7<;cooEagP7GZGYNFvXo`ib z9|}A9pwo-6W{KEmPuOg7*b^P;b74p=!AVM%$MX*8(9xDiGg}zXC|DOC1A>n5HWz93 z9IQ(2g!Mdxzi8jky|auBX?3qIxP=%xO;i}TQhQV@{J^st9F~$ z_h0_Y-nI6&jVsXsD9-rt+*4tKkq6KzoQ9w;R;FDy`Uh%q8DUX48#2KXArY6Z=+QZhy%!udq~M) zB?d~7 ztiwnu;p&7>5Ol*5!*e1jw1ZH*rr`1*%>FU%FM{I}5DuxsCOtrgDakCP4HL}UfFnro zo)hC3xlu;0$8nijtF5TKTO1=dYID>rgM$0-n>6i@FH3f;PTcsp{_2 z?XC8#wx{jZD|TN;jNH^rjr&cY20RvWFfh)A$aMzKSr|8DI%p90FhDtz_ON$Q&SF1H z$PF;A8!5RV46k!p4=^{zT7=UYWJDj_8&t(TrHq^ujVJioa7YmeX(u4K z5v8@IKJYX6I7Rg9*|(p8`lMK$^9ecBv56(nEo3O*j2LpwXY7^RUB zoK{h&F3h13(}=Ug8;NlzfRGa?L@|t+AP%N9gp%N*2IiT-_)?LPV+uS33hKzI3uEMd zDI<4Tt<@xJ6=u|gYa1;h*BlP-Z@!ukIiHamn7EXY+k{@?5XsebK**U#*X=DEH^8`u z2Mgtb4Avf?IV3kwa^1+uO=VV3mW?x6tJ~9Q|FnPAuGKHbwc0c~akVKRFXE_Ek~jd6 zTu*RLA>?tv(Q5L7R0{GEa)s~$N=U{aIjk=Ye<18uVHR^DQXY{YWyvrzl(2hO8t4QL zI)&aWN3s$2T@&NAErH-XM$Wy9V9ozCfb--hi~+-O8i~n93W#;0}Dnpyx$^nUH*p6HY+~%=8z6-cdsR1^Ac=0r_-10e(wbeg+QKy~}&px){0I0JS09 zZc1Er)wv8McRF?ZZvU|da)y!Hse_ZvD)2#JT};A1qJ9{UC;}4b$tRNf1x!FsmvIPj zx{E}N(I>8O(mM12lPo_s;0*`CfR=))Qwas?fa9XW-QV` z>CHi10o}IgSj)+{Q4Z(Vcujvsi?xVjZf?S@)rF}J5Ulgm6Qbn>PA)=&ijaUpY8^q5 z5up4*vK#{t7enKh(SS|oIdC4r*e8YyQ*hCsbV}+!lZGZVYjDVbz(j2NNKOTXr^d+9 zI&}${$3G2QHqk?%j_B5fpAx% z=>!(KAZK+lIvUAUoG^0jIkF!G$qr)?D~cJ`A#z@fTw|Y{M!;}V4M*4U zsdjgtZa&<9bcCG2OrauhcwPgN3n)1c%N++o&fqxR?maf{+qWLVy*;?*VYwkz?xi!n z)Pa*T5pi`;s%yJ#jm!1a|MzKc7`YzEnR=@(d81hx9K=FJubKKmLPeqAcPP0LbI7>RM#UWHIeSpR8R(kEwAqg+=Ojucbak!-1lUNpt=g+=0-mIeEv*CP* z`Fz&}4qGXGZJYq|y-Tuj#3i>F^*G!Kq_=Ugb(uYA$!0Unn5lw3$&yXtnYXiK2(fKs zut{XtINcZ*oI1_ky4;QT^>UaB4cy$N<+;m|z1E!VI-Kj#oax?NYJj=?T?`J97Z0sy z7Y#ez@w|OCNvmXwt)5+LwLQPqss%ppiW#|fvA&&+kt1rLKg3I8jTNV=!|u*_R!1B+ z;HIk@;JA(TtxizRE5cg4YF$TLN6W&vfsL~$&cL^~hqu1{cr$=*f^zp`u$=X=TF2_k z=e~4S9xov|3r~D<7Pd~he-cb`O1O*NY zo(RocE?Pv%`SJe$a$5o@mCgE>SI8H;l0zR$C1_iFpO>1u=4UT%zlO z$`0^oT1iLFQE~woZqjA7c~_%UwYz)&<#rH}8~C{Ggyf>O86V(W>nl@h%Oosl@wlf~ zPjTcyJ5)7@vrmoV-X44?_xk$UJ@qiohRJD%s)>?&*#@~34&9xskM*esa)yz+yFToc z$#!U(rRyn1tI2fYIFFDkpyW8Ej7kVOo;@>;i7X%6XGHfYcWL0RgB=tTay)ZKgcs7C z!P^JUzW8piOg`{z?0yWIM$aUaI8-y`ys9)k;&OLsNz>f64J?k397nE>3*>;=&!8ZO z<0=?1H`95>$`)X;Vr{SBuL z&XMEIz{%wetT6};Ir$NZk!u$)bIVI~ZGLX8RTv{jAtg7#xMp-Ds9p%-JM|Zd4p`zEn%b1#N_KPK@NqmV4;ZI$gErV12P@u77tA zs7b^q3oHWi*GIhvT4J&))kzAGhUC6r`zl1Xb1wo{}S#9)} zuGH#)T$5P#M9bYPyCpq?;2ma)D<4-LcyzC(l%PboAXYi|eatjV$nno)cEfX_h%gAZ5^I1l&5Z_@SR}0Aw?-pdO zwu_);JL<@Jj9e4wx(^JTHs9lv(O9BVsl)Z%&6f`!hq4Y%Kx9%NL2Z)&Q|DN{dhXlt zxrbreuj*1&J&&p-;ye)d_V8n11xdrDlQL_})iX z@5}f-DBfe_2R*NagH0vBgp^ zdh@o1s#1=cn}uz+Hy#|<#G^k5jdWBqKhC+Z+# zZ`20vw%zHZh2*~9-rjurbbY7}RuH&RGmMIK)hmyYTNWdiE!34rruaH?NdU2mua+|Y6;st=cYULC9ePOAx_b9x(&|;6t;`j{ zxPguv__&FV`w_snzsE<&%Q^q*_fa6Y?s44lxjsIJg(h4@uz`}>cUlnm>rib~84VKR zEa#A|FSE`IYdf2dvz@8}J#N5qIvGcK4<2FxMkcCqeYcXb5+*$57Gx>_k#+->)23s? z`WYPeXw`X!TDTluSA<;=vRiI%g$at3c&<+~~B)?X+p#zb4RoKzlYn;H+u&ShEH zFg@oCX5Y8Uybjj2t?iGsqZvld8O#4!Wrt09)@r*r)xiR}otNx_fv+Qj*(Im z)QTZea2OmMfGMope>IZU;`m{EFo*uZj{(%uTk+ON%uIC2a0#}|k1F`neq%55!Sk$g zT-t7JYg^l&LC*=3xAKaumeg9!mQ!fUYOVS_6}?Nc9nLDz)y`(EW*9k&s+pKI@jvWc z3va5*7Pdn@k&4QxB@%OvXcTKxTP2!(Y`b&g{r`XJ&RT1pFbHk;KFKw+26cd$fgysQ z-+Bc>G#sIYT(L7!-Yeh~hT1%?M8e%VY~;XOH8i!VRkfQvy>l30x{r zt_Q#8z$9ejjMJz?ad?U}UYypJL-9pD zF9138T4maI+VTHhKHc#`z(rv}6hT&pR2j%Q2stAum%wee0>vpL_ft-Jg+WIoihHfZ z8<8OHB%z$8T{YCJKYm~c64ccqjN62E28kXaxg8kEWl0Q_Tz?h>41Oe;>vzz!S1Kne zcIFZF;^iw3rIHrZiQtS%R|A)2cdU%X5K&b@Am4ItY+a(W7mcu#;Hx{X6$U+)ZY*cO zxTVHWv?iD3_&10elr06aos@u_HmEaAfZd6By?F8RfB&Dj?x$N4au*r7COfqDs#V*x z3>mpWOGd6}MI98;cE=*uzN-w zsmpuRe}@u5k&TrsB0M6U53IpRYUDnahz|J#Oo>pz? z%LNOJxez<}_2H{<_=PwbhGuePtViIsV?*g*Tu-;UCo-jR%>nKieF$O=kyE+ zH6!<3)#@dfng4exy;iG~oQ^4Ihi^nzhiRNXUa*j>CUY=Wj4I^N;@B%SL&tG!_Md-j zwW@-0C%I-pxiTlW+K`>xMrc$GcuCq-X(R^$Ncc|xnIEZH2lWJ=JuSfVH5Ar-x!dIVp;Z67m z_)eohYkmSa)EW;rQr)>c^YZ8L8N1VF(T$HHPF5Uqhzkveeb-`MLu*=>%34)$n6>C8 zFA(g8>GMb07^5V0wUL~@PkqowFJ7+l5h~TH%wZ$f#%r}`p;j%La;;V}I}n34D0!{+ z+Ig+EJ3qz9fgOp#$X!f~K|l^PtGm0GvW=XJkyDWF_SUGwkjh zfX;?;h~$8iTY;GzaB@V$Iql?f^jjsj)d20K&96g82jda}SS`aiGb+9RRq*mXLQd2P z#!Vd(PaEZLUa;Y|x$PETyu_;O-|*3RoY=W7Ztl3fI7o|Ac8-bXzn#YA0Y<|}_*XEU z=s~+E`P;*7T@+-4SN+Exz>za(KZT+#&P8A;AG_L6A>bijfLdICDxQ&{4oW$)rf48 zDl<2by~V{<2|17DynOS4)af$BadDEwaY6;(vIHf=O<59GifpJv?GUS6QaRz+T>eg^|_j2ByGdm$yC30N7XccRjlMBzAm7wG*P;L{7SaN9` zZ%4yfe*t0SwD+INjwJITvBn@*Uc7w!F%$rfOOo71Coah4z+bM-am`i&YMF$Hreq4r zC7DKZP4ZTQtMr%xLN-g>YOgwX$CzoFOovQHZNYoD{1EeBHZNYT@fpgL+bZig@(dCq zm$!{0SA33<3v1)Z4N8IJT6(RvKdT%vJ4Awv8#`kqcgsB8m<4?fYqK1D9bOF0>YX#q zs&H*EwWC(Zmjfk7y43(9 zb6K<03Cfww81C;AFTYR5V-Dn|;8B(5ZWNQ%L6=sNrCCxfkGxn%Fq%-|@ev;K*v^d$sfo{=4SI%M~+nWxcAV~KM?YG)A34MuKUr)-e$jvT-sBohPbAWqW99hbYaO6-78uIEb7r94%I zo!nr+aaQ>9f?f_=&Bo2EuBw+%oQ886$`O)7J2}*?DgZ}kcB{3k=(id}NZ=?~Fbl|a zC5Y=7c`dzo`JFg!3_Le@#_w_iHA%>VFaDm$D(*{VBmT|>8b4w!MVN(>Vfn#pKSUid z7%V9uIWZJKvhkI{|^2j4d**zeYMF(->@drpU-~5Vtclt9LF&&LHGOZ2)oJkdAvK zCx`ib&x@&5CH&S3#GSNyb*_=z-6}kbXmaB6md)falpNU8042v%kbGuxv`ogJ@#5uQ z0CLlqKVg2}M(!s6bgYl!dnvkXx7FrctHtNQ9Hr=@ zr`y<#+{C|Grai!dXvlwZ(sZ{gb`r-a-Ktwre5)Qx<14t1+K0!fHxG7!pDFp|q+NVnRL*n(MnoGLO^B!_$hdOyaIvsJ6bWu#R63LCk> z*W<{ww40Ne9lDNep^RBqfba|mIoGATGr+ituY;SAGYZFX=gk>YIebWGRRVAg0Y^X% z>f=x)<+R7c5Aa>33=bQX(?L>l1L?V%OCz~{5HMzeR|)1=SF2Waa&M(;W#zvFUc7wa zS%gSVs8)B$sLvQgsa`Y)6K}j};MhH<*L=R1E%|f_S%IXX|;(m zJM^V$wfgf?VxbV{FiNzVr0DFhGkqQILg^z~t6n8OZu3GZxl|^Hy&&XBNs5e|6U8Bb zI~=I?mkH*|NDi#zIADYbBzR7A;q=8uAa_ncw>ld37l7pCYz1KJFvZ6y1V^Z!Ue@=B z`Nc0^UEuq}ziQ;`u*>8A_b(M#riRUazj-!`WapW5Lu~q?rP1Wk4 zlxsEoHD0SlIoGPxpqiJ7RrHC7;{u9y1)5dBac4X!<+a+YrQ~jV1GJ9YC}-7UCFBT4 zaC=9{k%K6*_Lo7;9o!xdfaF5O$O%G@uJf(R?~p6qDpGPd>p)%v_%m;6Ru!P@lsPz0 z$$9zKA4|BemTZPDM7w+%-T#5|07Zyc`9sviVv24Ha=4!mzT&71iu^>3_76vK9Hnt2 zcRCy-=$oAGu^rq>6W#`Rx%vAmzn#`kultEUjglN5@GyHEbq>RV!R!7s0U&vQpeC?9 zs0rQE${!C6rEVi#2utv4+)u`{X?i0WISfByKgE0iIWJzWhmm6zBWJ`6Gg71*d=zu% zS}i`M)hs@1BRA-k{Z^Z8@nmK8W%-roE( zf}FtZxvt2OMuO)7TYp=T|MQzu&KU+rqfLn8}9>`m4d}37qBbhk^bbu3)$T7;Zgd%fg4R z;ByBnAHE7~v}=ZjL2w-i+M@1Wzkh@6MIiUP%YEd)v?_M%mTk2&Mb7-?OgH`S@0lVe z1i6-4kSUjc#I7yTbu`c&U2F9~Wrt3~gusWm?gsM6we5TrE?Hfbj(l30WVAA0U6oi? ziyWtGa=i|txb%USa**zEh17Atb9suJ&|QG|Mw3+N3X+`EWEw<6u1hu zRZ!$wd0EY~$zR&D%St|!l`b>Qv{Ramp$-f0{M+RS6}h?4qDpipsmY1iie`s^1?t*x zw_sexFpY4GwRjMRG2Zv%Fl5ieaLO*G1^`?$cJo&>h)sQV*N?G<@m+Wa9;dIXHP9I2 zv5B%yXTgN+kPPF1;Nk&%tXPb7_Bo8`W{7fZ$w@FNV(D4Qt>l$DmE5Ez=X#6t(QWrP zC~^ymcJMqIv1RsH(@gvSI&jvXnzM0K+Tl3UYF*4jwIb&f^T_q`meoVS4x8fl)hTmJ zk$$8E<0##ds57l@6D+ifE^629#wD|)rm$+Dz}iGQ z$nAuS+=S22QBG=dSm41CB%`Yz51=7!3P~<9vxS&FgLZ>mZr~<};<&;ZmgjP`;u@>{rpTDG09IqH`tp<$k zUSUu+H;$%wAOC`pQMeCCSyR^lIc~RQ6eyO)@xSQVOB}t%ec#`%hkU`{S}JmH*5rb+ zjp4f9{qwEUy~TvUjO8%aLF#bIQO@kLrknnEA2#U{7$^JSrCG*tfG-t_+@?IwNCi(d zOg~Z#cIccIwOUa|jQhypCh*u)s>tyT#OHHG4r3jZN~@eOt9}c}agYQ!?P3mKhH(im zt(r(ljtZ-0C>JR1aR6(=8CxoHN))SRT%D;T2bx?*iCxVUIrNePkOR|d9^~lk>hZrx z3H95OcWvdB>83Y7CgC*$Dss=H$hl`nBU~P3hQqy}xOl)2?k=7(vSMJBB3{KWM0V`m zG=7O*U*k9AwI5XMpgep#CW$lcAP!yBxMOIB63)2;WY#t|&aW$<|f-!kz1J)m4r zu*<$fn*?X7liW2Za?i`(zsW~VRphLEjwxGQtD0`Q>3?U}^Ftm4Ig3u@#i-RyGi&DN z5XhDD4^?*f^8U3}H@c6UqR4rwEN63P5^*hyB*!-ef?Su%IuOZeg;w)Fs7G-Q-R_U{ zRwj>2*pye~5arfI=QtoY?jR>#<6C+f5>c;eVgz$mJ9{9x@QrB3&>&u z8)G}ha`7rA<|}JB2NgMpLv@8B7YIi@_FW0PD69SsMu|SS;tc~$&2#B@1jp-d>R^=P zg0rBAv5Wf=DRSPBn^s#{(hL z9GO*7kW02(Rgt4;2UO$&;R7e*8_<$U07r`4WGBZIP>x6rLRaC7d!p>>qgX{$=fF$u z_UZ~0xmL?7Gp!QEd1cgZtA{-EQ zL0|(0OJa^_3EbEOZIC2ByJzpdyreG?&RxL>8bX6a^I_mibmwD65m&4Oj z#SL;x@$bPe4`a5!@7Ef~1=2Pe9C6cFE-0lta+afD2LQP_cW@Q15tc5gXM5}?*=_C9 zJ$r5AQE1x7{7+|!T)mH+XHl`$>O6Aq19DCwp`1tvoU826IWcN=Qx&xeAm?$G^Yrbc z#%hu#2PuKSUa}L;4fm1LEvtGSxhw@QrjL8*{){53$pv;*?jo1u6*)zdQxlGGMNZM< z2<>#^s>mnDIuCewNQvV*RIlq%uA$Q*+bSw@t(NWO4Xd_CdR(ObzEE)UbaWWon+0!_V(#L<(SEM+= zJDg7w+*tF+?5(>vioyY8os*IrdvJH_E#tUX65as$_%hJgN5GA6@il(!uhv61FUd7> zh`Y{jlAsVaL5kcn20OHdXj&DQXX0@7N%5pgX)8TBmI`vFnfB2rj*J;FS@nvX?V%#q zE?49>2Z3qRG-}l;M6LFYtn9F9n06%dk;_M|+WPNTQtx>jBB=B$NCsfVl>(x@7cJQc)9}Hs+%Pp+3ohepM-+qltr_T09Z`WPcK{n z2fCVNl*3q1{B?msu=%$RhCH|)H?59ZLXqQpv89Kt3a7cxl5i_aFQs&=bYO9qIr5qI z!4u+T!>oV^nm%ohT)g7`lERgOBK@QW8 z2p2g=k>oP#s>C`}#2$Xg+Nv|k1DtG8l1sD%BwIBbu+DNobHr>Dq&mTNIY~~0u5KmC zJv?xbb9gcmC(9)V2}nj*+M%T?ZzRfbj`MUe&a@*j?sPBK&xCR^u4Zw5@kHrI?%k$g z4rgNIaDCqo<7ph{O`W>Z#!wCvxtLvCMRDaI#IeMW<0!iG8Hp*evAgw_5gyuZiwKx4 z3k__%;Q*|wS}r=bf>DFRdYlG%`E5Xoob&tkskM-~gXHe3?7jN_+|a}NO(4va-mgKC~_R*W|<j>DR;sB#xMo=$F(`OOJIPAT!QMUqPuO%4UQM@Pvd zClZj%+g?lYhvWYYem$>U#hcay-Jirjjg_6PXpJk>ha>p4b9e=_(t`P|vv{moC$Mtb;6{ zka1k6rxsV`MY*JlT%uuI<|C&oa)IIuSEa}WiXfL6SGOx7ImNi@JU({xoWM6%&zBeX zU)zh;g2y&^nN@)wyRDp?v}wm!4CU#e$-UG=KhwrSO-}mA-3vvo#LRe@=s=O1L4ZNx zkIVV22y*ebdMJji#?vV7e_t$y;=rcncU8_rs_CoIBYSgB5}b zcfcSw|6u-=GX`?=`{$+OK>86+APl$jt5TduklFapsRu-rJyyT8>^EzA@8By}LYH1{ z#Vl>*%>}G!AJmXxNlCr-QrWh$sMRtbxlKc?YgVGG=p$ENYjsm@%&l|aTOL;AJaGxj z%gJL>H6XdK--IHEhE+w7D~3Gu5agURmFeSv-iYET&|#)0Akic_rMd%^R^>i&qMSnz z1gdRytHnDAO%Bt^DJ17S%6JDU$$h(kz}1#5U1|zh;LQQ8sq8J!d(9QOPqme8UZcyK zUtCH>u1Q%3Et+$V4#nQ{;{n>W(t4I+~AM@4XWOZ^|n>XmXP$L^(AB37l*e zt#cCaUq*fny;c|a~KJMgu*RhZG z#JkEUIRfPTk?)I|2kBewU!0%!>V%TJQ8-SEeD}O6Q)!C>CcO1<^}v2r9LQ0PT#L9? zf0n>-&^6F##)H9-4?T;4+$v+V3T}0^PH@~j0dj(oYfe8{m%~~k_%dd*?17f;mL}Ugvw>)ctuwpBNyh|Rh=0*|9I;hIk)E&W;8pbbL23`a~OQ+nV&zX z1*d|Mdx7C2$A;g5E>`CtaUAbg1wMy3jxF&c@gjxgSlgWGNs#Bf#E9WE{==V$c<#?^S214atQdGK9QrJR@esFB|yQ@c5D^_rjqV&t%% zBbP58%OR$s1ZEA_&OnZuRts;{?zSI37$KLOhzf7+=5r9U+3vFa+zSE;IOW(6q?gqVx2JGHgas$?$ zH!@yiHHfIz{xWh72mZXz0NFHh;a27XN7t$k7`b1?8o5uH9SlYe!F~q}WO5YI(y;WS zIvK709=~i}^bk2k$SFqdo)oMCp99MsA(J@n$Lg@w6F40Ky zh*6nZhXO`!N;GnQYf{9>3E~X%_nhln6-#N37PzMJg*{|kRqt!hEQk5>lX`VpG@S7y z*=Ro%9|x~gyS-}tw;4J9rzMM#3wHqI>^<|0k^AA|S`D{Oj zL@{z;vU)61fhmsjM}}XOPgTWO)mRJN>=1$Q5y8oEX`C!vl{41}B+04y>H=_boRS;) zEP%upj2suq9UW1XoS3=m$E~WEv6728e$q;7+QS`|3Xz?XuMBl@_L zmrY;saWZj4RCAeVPT;Uu4+Q2L4%ZYl#~3+NCI{@R(?vX`Iyqup<;GQ?Iv#vJS|tG_ z{p<6yUOhOfakGQIPlJC9s@<6@A!nL>U1IOi!C^SLHzJ=bkRz8_YES@n8l=kpYV}4E zfr}WqwG$&pMyu_IVUU0@lDOL(44;<(C$5VftE+i?^3bD%oZixvJ0so(;&Ddq-!vnK zkmrFkAxqr?Du8j80jgnXH!DryCn5bv-?!BdMUkb~0!b)m>3GmPF{)LqePQIV=wEWt z$a%=!wHg-whjM|y<(nPKGKBdWIi9hv;kcmQJ3A*5xs4ejXP`K;K)>qXc@T3(PQbXe zNy#lFl1oYCBGI@i;^TluPG{uOQn~4rPgng7w>#W(!vkaFHmwU<(^WsJ-SC=iu=6wg z4%I%*?SqDeEXczi++=;npb!o!NsfQI%&t|Nj_fBn<$;>UVoHHr360!3|3=+zdroi| zA=8LJ?)j1uat?D<;#ggipTA6g9?QvUl!}Mj0WB8+ja&vJ2iyuK*(BbBOjaSpoyK?6 zu`S<60<6Z41ys;c{^B; zBX>P67e5j@YvlY4jogpzn;jfcT`nV6(~`_7jJv@{^;2eAYR4>hP=IdArmF+0lVj6W0_E=6^F86VRYu9tq&%!; zPa!}p;c9nQl8|$!7_GRd*}*^Fp=;F<*;%?))sY&~I%yaoR|`(5*P*phF>>Z&ujI!ut#oKD0gM|Av}V;* ztpoi^WdVy?F5c-7Ei~6E-)fDkpskBQxrmT*&-1s<$>s;q?fJs=09v{xgp#8{ay5*! z@rSgWA#prj?bIC5Nx2y*0!-ea*;e^v73Roo@7_#+-0*5OD>jw7Xyn#^NIzG%J9+5c z5Jv82^W$>PdRz;NBWNYW6)~*NW^eEPi~a>!?~mQ?`}^J9><+BAe*ba#$iF6&+g@)F zOmA+cguyFG*+s0`;RG;p9KkV^0vI{ToS~F36Q$q722*SxJo8QLX(`0)2e5t%MFgTR zybO*#k!Qk7!N*am!ox_^`Dia)_wHA#T6?$WEN*n3|p>o<=l*gicoljyp+!T>qNRRs+o34xRzy;IyLJ zojHT6g}?qZx4jMAPAX zZg)B;+1={xZN}FVTjA{G?&alfoSa(YyNm_?Ln}GS%ge{f?H~x6kpp!nn;kM3Ic(F& znFk%n2I+K`P4a5|&a|uGt}#SY>TxmPzL577m$5h`@^Xw@YuHU<%ZP^?z9 z_KuLluC7&FppgrU$*<7Gwd!YT+iqU3ym z_z*V}4<50K1lU!^Z^D1`+IS`0E8m^$szEi$^HzHa8*xOtvy?q?>XIa{Y^_Wa}8wp zh#ao2Q-)Q}$St(^5y8l5V^qk%-}K7A+Oefm3pVX>i++cJZLLb*m1UnRJTxK`s`Fmi9R<>Vm1|{CMuJ zltPYgS8ub7_4-7R93|v9Uem#vBI4NhTN~|G>`F^x>+bruRxC#~f;p~Lu|GG4qn7_0 z1>dk>InM#J;lKTn1X4F47NO%*Ps~*rti#$s76pT}`z!b*)`gK3rJdsL= z2}E%W#|`2*)39pJRW*&=0uEVa$%BoNGhkfuk0QB?1j+fda+N6M7>*-Jas3Gje@oC|@R zG_8tKu7PE;YSwctV8DoQtwzw<&|$@0QDoX3OhzuA4tmc^8Yf43x;6yLjX08{Npk0> zrvdXiV0$?Ys`h3j8M#m1hrx(`!#VmJzpRu-EwH|$)DSvPV9d)L3o zX?7s4)oU9ghj%?##rgmh+YX2KgOJmuZfYmbaa@i2Kd@n{t&9%U+Gj>i<^el3J9wqK zR<{9izQM-%xvte?E07CIIvsc*u!WHm8V~MVpS^S8N?c2#a4vLQhQ9ZzL@_!x@`|)eMKBDgOz8ao zUp1*ZRp*f$l0YkRXL9g?fB_$bov&)|$`QGUhdpql+^fa3s*AWOZg&buZt{4WJb9y3 z%Kh|`V|?)G&mo%RkjM?mwd!PE-(8zItzMsB3)(x8+y7rzcdef0T&wMEGCCsck{fj5 z`MM0rRUmT9f2}+5%i`@GfLwbxd>^D+Hdx>KsX)g8k()gekkiVlA@#liiW3Nq3aEGn zkz7Ex3M8----Ne-8`+fH5%$Pk+Y#1ku3iWB8le?d%Yhs!IqH%7Bdo08X4b0ac7ed(jx)nn%V(`_*)V5!tvU+G ziC+RCxkj_eEpqyNt`Vy^Av0khy_m6js{uKT9_jToB4-71W{jM~Y;wqImdHhs9N`t& zQ-R@glq$LOPN29tUnI$Kg5Fgxfrm~>a@W^?-%*g9n~gIkufF^L7jpJxM9%#ZDfd-9 za*l1*s*S`&<&kpH`4WcOU#$nlQm$H#TpYiQQz7U3m+i~bOC!NXG$?dzw87 zAcuw3KrfMoK@tQ(G7f}#BNnGVrI!K|KXyI9He!qkAPso+kQOjc{*Anl<<8a98t?6{=t(OLo>*+j> z=4s_ht88t!F;e9s@UTXaHq#+eYEK)w%9xLlT(37jOuOM>vsjTvn!TQI` z;_a>pmet|=!{kuP29bk4xIhrOklCC7a{&T4I2Q)$OSnD&ASYN| zx`kVNj@(e>$elE8lN~-1$XSc4wo42=cK}+Ba#0A$`K01#cklD`2_tf(MsoE!R6SRP z$T^D0xjVU5XO&8;o<+nd*Xp;7kUOr}BRAVvWu0jk+g+<_mn4f3ID!<3-1YV81-8gN zr6;0sEtYXK{p#n)dumbi$fP%!u+u??$Mp(;T&_pXXqSr&QAc<#iXt-=n8HVvFlaS> zd!34@t30b~1lHB`@g}Jfl|(KTa(&JN&K!oCQRwyhbRcKY0B1jKa$oePRjyT)Bd062 zb~%!Zv=I+cbUs}UI`egji=hgUTSKnMV)1yFJ~$L|amUzdfzN?5sgmY{_j#!TDXiU-%DN@Am3- za4#^zutQz1{%`ll&B{hSR3dVo1`JJwa?qEN8k_xoR4z*x!hYs@heNiQ{NZ#g?H} z4h;|U)oqe^KSzm|fRuwCxfZxqPfohu8`L9b=7h?lQ(rqktyif&`H(`8yPqJEZ0PIW ziJWib$Za!Ggdu>BMndskB-&*&*FP=f~ph@vbp!r$X-GYGrJ6U8dun0mz|_ zW8xNy4meR(1<;02F2OgFbBy4~%L?srLh6NhGr{UW@wIa;a!ll)v^q4191msrNF?_^ zDCai7LoUSDa;{znN#x4@Ema~g_sH!&o_@O=Id-l7wQY~wmXFNhT2-}yjEsXAIYHz^ zX%&cE3uK%j<&H(VM+=<}^LvfR$uX-MkON@$T1e!wY)+STQpers8jqXfVC!&?*d6yu zNDkBFf+T_b5g>B7(w7J#ax`qUCURd6>RHIlyr*;8;b8MnfF}R%KK^MOGJr$P*oN z!r~xo5aNn)z*bkJdI03oTLt%dJ=-2u$&ss{!5c+f$$?e9>UBUs&ga5vr5-uQ->OHh zxYW5_{D_^%9ajznE*}DGb*(aM_Zt~0*T?vg(^EOu0V;~a$EqN5GI@jwsRGK;+=h^xsc_;ls*IHrCqi)vnV?0_!pkgxi$II>^xu%S}WsGSQrw z1B@HRyTJu4P%6n(!@(&Pa(9#YZ2}4o`r|;yC1`dyVIn7WoZ(ufDtv8P-6xTw=jx{? z0J~o}O4mMX^=NAr*OqGT@^#sRQCe}89=U>BA&|TJ@p#wuedn^>e=x&<%R1!1v5FmX zVG@#r3q*;PY^maHEUpPqpYbKsLKguGQ8^ud70b+{jCkaJ5?9PxLTgWp?Q4-D^`8bNI$kE~nuli`Vma3tR* zlldg3cVV0*C6}JNhYS+naUkasnCuYVrb6y}zv&CxYBtZj26A6R0klb9pB4b@=BJ78 zf4>Bs3maywwzrUSXm*IA%h%~(o*luki;zoia5cZb`x7dwsgM&yj&Hvx>yLY(i4LM7 zisjTm@U&2BvoY3G$Fd!c3aW(Zuys!Ixp6|uE<~<3e$2E8o~s-=MdW-*rF+QTrz^-k!O4hE*`J{hSF*ugXD5R&do}?dVTUP-w1yByx2HP0?8K;IX{;p zcYYLYaHbYBIkc|6UM_oQi_+36D!Ec2clOYQ7&*T^?4&|Y>yazBtin@EM30~~mAm9< zu7k{pOU9(j$PJr~E(ZcXw`N%) zM|IWYILQ@Obt1=L4)xnqm073KVQQsv)@mwCGf_%SMI0zNc$=@%(=Yr8OM`M`cvvJY zFMXWwTJxNsYt=&Ja{nK7IOe{dt1cZtP?oDS9Lf@z-stA)XXUr4E%2e6uH5(<*HPOw z{XLGlE0fZj%gKDpZbZ&Ea^#M*K#{7G9on1-3`}m&f#F-fN#xS&f6O25x=oP>Z1%{l zUn&qewycsAqbxar-@-tj=YYU1Atywj{Huv*nUgWX6hVSgaG1}Lv-HUMa@L~DLGbme zkzBq0`AAL@xst;S>XEb0TAl6Ub|{J;@hpMB*&Mn5WV{aEHl1;^iam1rh*eF;p=_pCp&CgUF9~p z*WP@wz^IVo4mfZ-6cM>aeD%2oVg7@tWl2lE-mVIYZI z7|?hJEhdg9Jm77|0@cZ(4r9zN(W2xcqesr-TID}rrL2O(t03)fHEIo4uYb-94DvW% z9n}}Un3PU-n3e0d*>3S8->MP0-RC-NbgfDir*s^)$f1zCxClYUJrR*pG7bXdenRUR zMvs7Un)HO0TN|@hd#Y`&XLQghJ@-1zMUh1LuDIn?f;bRttJSZScqch0;G8J7qLPFA zz*ykP>K3fEqOO|ixYO(VRLC`$$T@nCoJ;>O+GX{s_zL7YyOFA5A*X35*SHIKrfytK zh3Bkj&8pJqvoB^3JL?? zQS5f8MC2Cn*~5Et==*KI{r>Q#Z*o-x2alw7LLLgh`xVGeIBGRluLD}XI#74Y5`}m-pmOBGZR19E=#i6PZo3}2-E!?LIdYEbk#m%i z^Igu7;~qJ1JB++hYb2_w*dR9oBG*cu7q^rkM;gx5Y{pW;jtZ|+mUHZ2wJy90zJuzi zLclFni*&7UVPREp!F2s%CO7SInjHEZ5_oA@++M7%PrBcmeeRLdCk(o}+pXT0RX<{) zUs@ASHW=kJ-A%7frXXXD*36VxV{C%}03ZNKL_t(pHKHcbOS4%dZpqqo^W_*b`Xr56U5 zIJ41bo0quqSCAuYtM2vEYsaTIralMpVu$<6gY%o!tbb?XLljFDM(&74Zut?e)lLy3 zcXpy{b$PV1YgyE_>XioOhDnN=9Wo#X5;;T3AtRUJHyEmRCKJ=KN(#9QHr+ENhh3}i z-z=Sl*Jx(Pu&>Sv5r%Q-kucQSYPYgH9A2_6jzJv%Jj9b^T{V;(Xym5r!SHX$1HNsk ze2$zQeA&!F-GI3o`&-dbvvu@v8Q{iR2aH@4`!GAe$hACf%?a(qjsAm_%)rKfYK!EG z**k>~6nvYPvKlj>vsb&{4OGnNT-T~FJ0#U+tJdk7;kaahj2ytOw1km+FR?_V2IpPf zzKzFy-R*bZp0?Rj9`icDSQT*Gvr))l-iWoK!sR1XGz_d&70EZc%K!s_@xFU>I_w7n z?tP%@JrnQsWDl&41F>+@S6g&J;!|V`vASuF3n_>7&#uU8so!$zRtjumpo#5xe>Zbji(e&c;0RCdxBmg%zfji zxiE~w#9yG}wsNtz!7B7#CF{o-Bn#tQ-B0(x$gPLN%hmP67u3k1NG_J%##oq~oAs@GI(yrVzv`A8gk1TLT*C^58L4y ztPXz<4vFmQ5@*z5q<4bU9w z;`Yq9?J)^hSXjBrfyuimn_N+22TwP}i#z!%NQ6etx>hAF(I@ihwRd+zqkR~XJBIV{ zbi!Lw?2&JA-UL*11Z`Hc{{6+06n+yf-!M@oW02gTMs8VCEw`+fBiBK*L#?jWWqn8& z&XJ?JDzXfUk9c4N_{+tQ5GU7}z-$#{a{JEn`F?pNGC_QHFe0E<;kb*TT&txDQ$BL0(E#!0JzW$u zG&mrqm@3muw2?N>sp8Q2fLK9`$*S9f z;=YF=acO}>PUOgiJG!7}_2uW)Jxo>&kn?inih-P=>5-E&Dmip9%#oDCrd2REAnAr8 zxJMBxM>Ev{H$P0#5kX2imee7`cVJr$XyhVU1`oNIwFA*q?VAwE{U#h&LI4^uj5>sF z?jubkj6=NlD4atFDUfD0>$A*zIO12w#}Yt=>FIRWY9&UlQ&}Sy0CJ~6%Ca0e#&YP+ zYsD<;7NgZU`&Q3gg4_g4Rt=5=s{?D^W`N>gs%lK6Xi5P5h0CD1>R26-!lw2FcP`#@bbs?#RKKYc>yFYtVUBW zNQ31*n#S;&(D>7YmOG*4<2+<0GW&D!A0bLkhk;zq%i`P(H1q^UE>~3-Yv+9MC$7%q z5DD;LQClPxcs?OVjNGMT%1V$7$dq;aIj#B}+z2kXL7u!9Nax1nb2>&W&%W)^G8Lg%a4p%eB z#TnnLId2xPeY}uZ&Jc31{S3+xC1)79%kA|FbL13_R`VJ;X5A*GwwH&1WlaTkHy>}GvqeX#3dtAhb@ z^Zoq!dAT%*eSy2k2Nm&wvq@thx+2kjl+w zyV(xdI0_1RhqGnnXk~D24+PtegmQvZvq;X`AlN%WD2~mpI6U1fHVbP1a*qUFZ($lD z7NgO_YM31zh9Hr<{(kZB zc~(wNS6hO@i*xl2lBb|~Dba9|oq!$&0b7%Tidjr&T@Q*Urq1Q8VwX_jkFDr`6vnj7 z$jyJ;*3TSidw4GSx>?-cr#s8Yr9~RKBGYP`-lyMo>-A0VmVn&X@zY8$a)mf}b_!VafXab5`*IsgX8!_UROYOX1JPQmRyG9*2u_RJUkdi4so1z7+*4SjacLZ z7&-0HRgN;qGje(Pb>!1;E=&S4*t8vl<_J0#dCK&*AdKU~yajSv%N!D8f3Vb>#BmW_ zZ?$qN&JC|3-iegwh!6>LD7b_8k*Q$hDphp(oE)dm^%t+BUT+7QwvyRtf!QHN!tQ4G z^V`##?nhn23yz<@t#2}XR}ADb>^7mPs%?0fgFKE3xy;&N0i;8 zRnG14@ks9tFg$pWZ=3Cp4I|ePj9lzvB<>un$;hEVvV5C&!MUy2&-lp0J#7(LR{%M! zb9QG9uh9NnxZP~chc6^9A1o;qbpH^H^P!yGbagDVcN#%Svp&;2H6o)bg$sZJuKZIB z%ubFma?7e<0GX=1M;X8G#%#atC@!_7QvWa$=LrfoqQ`3wWjD(BXnFTi*5l zzJRYn`B?!v@`k|nJC)mURAfIZ@I4GVjB~K_NI|fdi0JD!5ijOq7je67bS2IDL<1ep zkpqZ!jE`n(L}AzJvZ_pOd5n?k900lh_zJnBqt#_~jcx$RFV)IyRsEp%$`d*?Xy4p2g&rX!u#vqiQ;*XtHmd~cmQ%4rTJaRR!C<#LKn z0a+F#^LtdBcXY=QtkB5acH3W1E9q)8CzteJNB37d23~1RjU4fHH#b+ecjE{qtL^dV z+s|Duy~igkusVRz;pLhCeg15c8j)7Z&VT+n9wI*nGPnW3GvMpcqdFi{1BQ(Zn0`aM z1AAE?2OJ69_kS(Pc!7-E#ho`<)wxhiVLfqwkjVG9dIQfqjtlz%Xp4({_Za__+%x>2 zy=(1CW7&dpo6{x)ZZNhHWGOEL>Po~1L^-nHaR2|GI@9~z1EXj@Tt7^!#NaTD$;@4N=UvJ3xJv4|+8| z*6hMiF6d(8B}Q)l9=W}c)T_x3rb~_(xxZdbcDR32nRjm=IWtq@Earrf>p*Q4fLuIY z$aJ{ceBOMC9dbEVL+cS#s{$Ptz2oNph*R%W1+6GiQ0{K7j=siCZWkj*)^G#1ibJR0 z{A;#oFYfM;okJW4IS>-w8gX3y(7qc?mdk#>|JXn5cB5#ui8wCURVYz7!MeRxx3sse zoHKF78yaBy(k?&V9YlX6B5C9BBC2}5@e`3{#<3jLIiUMz`ngzA`J zT!;GP*b8{f5v!WII!5k}{Yh}NQ*^tVkqcX{n9f3dYE&!sF4{BJm=R@#BDr0YxSGx9 zH8h;_Se<33!U)fF@gVOM=v0bZ26_cz{J;w#GWMZoZ&d<8iNY$Y_TW7Xti=j+?#0$1$2aTC|@=r#Vs^l^X)DUo5Sz zSKn5r*VG~xGsD`?)AQ3cQF5!YaIQ$m{ibJba~yXAiK{4D03i42Y=Syf3TeQv@g+yB zlCRt)hCXn@YNYY7X-+nc-(T3$>Vc|OyThckn&3ERaGaC#C@H=R2bNS9Gh0A+MOIJ0 z-y-jvoOE%o2-M6OPiuip)&z*;91&|lfgC&EWVkiptcc`@IOFH?E5$=)!SR9|H*ija zNVvpMRPmTPOi(0O#dB5TLlJW91Qv>B{iTc?&Lpoha{IN(l>@o@yM5%!4&;6hvhMrg z|F(VP0#_GgA~uZNq}5VJuFi}cYF6u1Sse`Yll$YuBV?N3w`d244+Sg-fNyOA9=ORZ zX_8w%X@CPjx%@MJ3i)Bh12n+F&bfS5(#(cuxho_ zVdJ?=Oj^B6qaCb|T+1+WUTNSWX`3ZZ8>a5A_$qjnvV=mAN5OJUSvr+LXGUrbpbQAQ zpe!2~>Ivm#LOeS}av>;^Lt#z+=z`Z*@|pwBW|m3EJ#lfAhBL?vu1jnhPv|(f(4zge z^YXS<=UUzRs_`+<9A!Y3b{_Az{f3=Aa%C{-#V228Xeg5KaXH>%#!S6?MT^Qs zSFM~H9JeSIR}Bor(aYcKT7p~I9e4pfb3)0@KSm};qc`M^b*5;wW z!pn&tt7WxfiPk#K(UGT9da$<}sn_aHwi@RH_sDg-pjx#(a!1GS8b`57ZuN*bt%P%1 zt;>4kFxTN6DytCdaF8F-(OondCQFmmu1E*dA4kvK-azJRY?JFSBNsPk-ix9b7W-et@|U(YZ{H1mPOI7{H)B?fEcyc>?qs z>_rIVlHu(VDE__Hgi&*5lf(|a8rAs!GjiMnMvLy3{ayEEXOW!UE>*5BiZE`Spg3r>o8-{(*F1h%hq;Az$q|wxAlK<1cCTB#=CI}{*MSB1 z3`&BC@G}%TSNF6%2)O_-$f2GT5D~TN1OZpP3g)x6z`J!kPFlzmjk)y!3iV3G9b6rHFtY+fBSGt zhH#&BT=YqPsv)YKOSS{Plz>&qdl-{{3AWC4IsgGLdqqYLeB{1#TF#zBT22qFS5aW( zcmTjc#1@<>EfSp3Q%3sayy-vlayCjAC9PI6UnIs{(6c{eE?^-P-j$JD1Y&qh!6i7% zL&+32&+K045aAa|_%}kLWjKzHo`GDm5l4>X?C)0P6ISEH^~i-nG~+9b9LeD**La<@(7~R}GS5EVoX$I8wgm5N?^{v;1R;oq34mc;`ULEzTm6i@Mcc z%f~+0$n|=|VeNvF9XQA#v$JycTBchy3?l~&0oG{HxdzKM$S3#^3eywUhiG~%bYGi^ zlle9(L4_<6EEbfQ3+x`k4@D$*%U*H-!#>$DL|-`kM0ySzp4`dnuOJe=*An8K};0i&JK)^ zT-TmM&PZR7?(#vQ4MVx)X%C&UnNVf{8M5FFZZm5E#&PzXX5!h~Q9D5*DIKKwy?Ias$yS7*1~Rls4AQ z!HBM(BQp$e?ZY?AB}cbnah0X3v$GiQFqt1N`_X)4(&#lw><|>j2`C}%wz9_D^Kye( z5NA7@mROD#=?9t+GoAU2?JjY2@XbE-OtWL^%4QDEYU z%HM7`S?M*BfU`ols#XH%zOr?>r9E=PKQFD$j%SPK$e*38-_RqsmOn;0kUKxW?hRwm zDg}SF+fO5Y#os#=t3^WYcm4^w)rVWLAF<72D^=$l}q{m*Wm8Tq6!PbLZx(-3;e+N${R{c!JVb&aB1S0;FU8|w?WQW5SsH&-wgf) zJGok|S!*`q1A?%?JRAWw2jI*Mc-uh5gJg?l&Fsg8^k|1vG^G&7jaYsp*Wp(ST#z*OqOS_(4ZIKJUyhrZsZF2h>0@o490gC(YevI7xd+NQr zRjbBS%M^;@nl$#vwW4Zu%%asghICz_XjNL|NNz9{=>ovJHA_*`aW~)qhAk-floVH= zwq&co$;C)lfN_r-9JlfFmi`j!y{qXc?hKP#$r1PrYO9m^@^C(x^m@IlKLq2A;A9SE5<}UL5Y+A0Ha8K@^VWqPnGkOpoH9eA zn1Yz+MsdN9Qb!UmIoo$fJyNN$YUz=j;Px=9qP1wu|ONC2vJ z3P2834`Mm8A+NX%3tEAg+nBEo1+;F)6w%eWHkD=DBiGV%$0xOHA9j`*<&+e#=6s?4 zXp5E1eKiGKIcayxbekq3D&fhT2u!ifE&eQmsz(07@T$fbjTyOGjkjp%HiF~`$KhU@ z^hX158eevBMAGyp#J7hs!z~lX(*_gDp7&!!Tk&%0( zoYjGGhhyc!bWlE?7|Jae$E~?h4x8Xg%;W&&MHm+Yz#?e-LL>i|{c@9k{J6T=VCUYN zG!q!owV0hP&cI4;-ko%42VYCyVjEr4vA*P32K%wn|=1) z$D$2<*Ua-tGgQHGoCMg8xuS)8Ljvk4f*v{IfS}Z)tpu)(#6Fk;C7Q*#vRoG(w^#MTFcKaLgBVRYm z2o zj8pfesN|r}SBcZ^P23)oR@t=*8o7)aIhMw7D)p2NeHyo--De;H`;?C#3^LR6qoE10lsz#21jA-PJFQhISvDKey|_+;BQd$Kfa(;R%^Va=Nza zNdADMP59^W+9eZxUVMY()F(%+Hk~N2{c!fOX`!?oTb&`{G?25&5>d?g#^+$W0$F}1 zj0jdvd&Z9!bEHEYR~kP^(}vh?+l4vBRuGrfi(S`Y?Q{{1;O1 zm_#@LXT?c1Rb5+s`a0cQQE~Oy&JJ5scfDTzya$O~+!IDl0lBBE>kafG*}!V@?rZs}PFo8Y$g!SomtMXFI`%>56K?DJy zIEL^A&ov5Nt!GegonTx)U$ibRS}i2yhMJT+qqy^UJM|uiR8FFi`$I-<@jCOhIKj2r ztdaZszjUqci65!u$Z46JO&-89>85TtA|RLVGIAv{aupmmtsprJBhk9K2i;p08?a6v zjKLJXkZG$#$q9_JpxhQ~tBB(sURGs!ad*S^*-I+0mh_?kUXGEH;}jCm$e~DXKAL`; z{yR$DG({Yjakp*9-w6bkPtN&-_UaJtpTTIb_TgI72^-yXe%wHXXl1zL80k`66*@VV z45-TVoA-f1mt2c%Rp<0|=hv3<>>KNyk?8*5RVN$|Ilku@XdTb&(p zaIF#{S5!rE#leW+-iNwi>=}{Vc6%^>q~THZ7gw9r^5;hYa+n6J898kGrJ&(1T5E!F zkITv9t=q8XA-)K*}H&To1VgRl72Vpc%JpP2%{x5a`>XsDa7q%fYYG%+JRC_ z4olX>dc9VQL!Nhsbm?VeNar)(dHlau7sqs6I)#xFjodK*EwjUKxK<^8O~`v zTbvYxvN*)Z8B#8`j8ZUD;bRE#FRj| z&8oX@b(CB)Be#8+z91oYN25JaI4)nUzN~IZBL^Zm*b!24b4~^RjK0y7FnPhW~PRXu(nskr~NON|6h(&O|`-m7} zu^1}V*k0W=Ta&+;6bZ`{OYkeUah@d3@spbT5$VZAna2`;Y;c@z-cAUTd#!f6z{s)L zp=c_YzRJfH`iJ?`SRuK6#Z#o@w#`5eOsm(+pWj9?cpZ8@%Rn*x_|KI>autCbQF6`dIRI(agg)Gus}GKe0pbcEkw7CvV1btkOiM#}DtVNr*!#hK1yMJL zF;nY`x`7SP$LjU)(c@tvP2QTd@WFhxQ0PiQFhG{#g+Ks?yTKVSc>(8jtGG&BZ$7K6 z0lc3K4~xuK*i*e6d}zIfwT7@<7dg3De1hlG-+83n167 zcXs&ebVlx2nOxrJS~V&BPOO;&jye*NT$PbSO77;SoRq5vtF-z=BDblwJjgxZxYep$ zmQeVF(kH_?jtXJz+mrS?)Y3=lKu#MS+En2!@6;}n73Pnu0LGDTb*sy>a{_XdKr$MQ z#@Qgw0LjH}#u7P0$e9*h+Om2+p}l&%VYO2rRvO}h1j|i7>hJ<1x2~=CsUSQw)^YzU z-y+9Q52w3>le*lO{0IvLG794aJ74SBoj8_`Aqc*7c4n)d1B?r6(^v$9Y(I0KO>N9?zgIOToWVrb$fli zy#5|!nMKHf-QoEwWdiR6#x+${$+dbpnavI|a_o8#MlK=ETwdl>U`1a8vT(q|<3h5%2xkl2wa9wVV`L$oB~{$q0)!}%M*Sy#|`$QuNDBvMNpDp z@YRAJasoW+!OYqX)Ggo~OA~b=Rt2;pD8w zkRreZac-n3Ib!5Mm3DUn61fIOj$z!Gt*g@wp)NI+C0wlE+@OjL(ARLD%nF%hOyOR+>hgN>vLLLli{klHLxN8$G3?cjHR( z7a=&RkD;KuLlW;G6r{#YDY48(Qv#j>;v_=x9PF=k=%Nl6qaTHU5s33bEkTz^d^~)p zpDYDTkfD&YSEN<9#g;Km^7VF zq8YimWF`z#&2eLg?CKPJ@5IOeFz9KrXN5$dwl* zFmk`ZwK}#^f4Qv6V*}*b22(Sn9lIa^$S25x*K%b8aAg#PLRX zS?F;XMG>O7gos9Hb(!*Xg>AY%9YS&qzrO+;_w!>XjhT@vc>6J! zKV!p)YkQfc)4p@F>~h?OfjQ!bHc5^nWyTM9XMOC{DX)<5QR@s2fe7wZK= zur4riS}Ec)kRyb~APoRm;E8H24GB3_Mjx#GzKJPuL;67HRX_-UC({%(2~Y&X@oosn z>3Fz6146SOd^wtt10O>L5Ngcm3mo)3Z}%l5*~Ui>X2`J}HNg!>($`u$^+Xu~Lgp%@ zu9_!QS#>P{cRux<$D3m0;^R6yh}eH0BX?qxt^+`>UH{4Xd&li?Olfs-y4j&x6mzP1 zSEi>CiR4i3)MvW`QgUDug%r67GNl1s>3s-WD9+C!C- z6GrX_L%Djx)iHWse_1hdg5$nX6!Em)=Zkf6z{nMYd75T}-XK#bF6C=(J2KAV+^ATEC(Bp;%LTz7yV z_*KV)$Y40qQo@1tI;u`V%;>pN^>a{o8X;>5xjxA-{qXMHiSfU6O9b#|;4&R=%Dq7D z)2DrHSQU=jTz~vFQU`=xS%q!zV?5nFZ1xdwyNuidU8~F4D~z1(^}wCFNFzsqBiihM zlDUKhb@2T^_O7)%Z6t}xt&!I}0wfB7Xgx6s=6KF#Fy;|ECw>h4|39^=x>eOJ0S29LCQLBDKv;KUCnQiD_jK``d!p>VI~O%u?_#dZSH zb!M7K)!526YOf*>EN<1DPEu}6=bv0oQuHEMAi3hNa41o7kQLOLlKOfp^PW&6mmI5+ zJ2FS^I23h|k!u`ay}`!{O3uf`c?=dXat7r_541Jmzen*;1lEbLYV|?E zpyD|6tq$()?g+>Y7*4>nnpz*%wrjQihIY)?TPkTaE*F(gc#9Voa;hMgV_8v}w=qPz zAjTO&o1%ofUhLUY6lP1>|=e4Ix@QU6R z%LUQT^zzsrR$uiyDj`oa_aV!~F34{^coUIVk}#eVU}?6(3@?uw!xDjLQSI3F#?TpbeUh@cw|!Pi}tiOOZj$W4@y(^Dz^i&m*L`p4iqgCSbH z&B&?NPJJ_uj~tmO=rDT4F#sd};HV%XyS`u3iLDPTmKKFf?i^;9dm#YBsTl|iE93^F zJ1kKg=bY?Qy2JSC#Lj2Y$x$IZP>|8qrxZJ9F>(;)X(TY4dLryA>Tf$Ly7n+~^L>vyfBk9gb*-|fBndQf8Ykh1%17I( zFme}bR>?J|b0qKXlE|T^>sbl8={1Ly0L#4-ivs`Y)#K_flgU+}oZ`5Dmnb=jky`;J zu2d8!Tpal>D%B8xa_U=M-i#^>y&jBxV3~^Y(_bGZt9G z45y4-kAPfmI`bAweM~FVXx6zfXV+5YLsEsYCZEP+V~lBlq$AwV;vh-(7ma zzyHML^5Y#CxtBf6+bcls^ZRdKemY^~nBP-8cQ^WUyZSyo63WdbM{ag-w5qNLX4{~I z6HOeLIkB@M4H&JgH^cJZj4^VPzL_2TeOUmoO(pJwu}Vu3Ps-_UOvLs>=uPgXiLBw2I1!YSC( zjrc=Xj|vtw2Ms{hm8iKc;^^ABY8%Fw2X`Q5g#x07$U1bl)(6=7dP^d?2#u@qVtu@8 z^%X{LegdxhC5_y>zbQvlx2^?nB@UnFchnnVrqp!2SWq$bATK+HOWpC##psa{dSa zwLnV0#f7XM;Y>Y&lq+!D{qMiO|MDeHxz|B4+&T6f+}(Y>UF^qk>oOsS9JvMaY{vk( z$qjPjICEre8FJLy1<4#|%?*L|ZbA@y$v`ffG#c}X2Db(B8LAhA-f`1MF7BqMu*jl3 z7|d*XDvM-%MBJ6MGB{(dXc4WWpA=o$z>~ohP?|2>u*A}Wd>oLrJ%npJ;$tFJdO z@`-}drRY@G>e=LY5^jE4vx9k8?LVS-+ZA0;6|Y0%wbAbUbk}O>vP{#Ua+1_kgwuEL5go~@eO0Wghnd#8lt)`;t6Aoq?LIU1@ekPDIAOLepwU^$h^ zm99}4#d$g|z;eh0F0S!iJ}6$U(t#+I72{j8dLl_+O6aEb*U=F&h7xPV)0&G5*2o!k z#XwFHU%Vc>tUQ8bh)gJ~7-Ghtsyw27a-Tii3K%&>PCX86g%fa0K#sQw5SVDl8R@Z+ zkJ1<_q}>?VLe3GTced2j@5u&jxhGn zGnMDuD)&qX9MncI)T&e}x;ic2^_3vSSR|i4B@k_~uE-{9)&Z4h#ih}I7WN~kg_ zJzgXCD~w!YKO^_sDQ1U#MHBPAm~OI{k&BRzB?^CRIgp*MD&G+x==qzJD1>p^-5wYp7|hiphU326aI@riaS&00ARUoxvuhPH^RW{TO}1n3CGn_Z zlF_w9ljfIY2)b9T9X;X>PoZhZb7<{4TWi=;*ivQ&dHFlMfSD+vBxFJ{Y5?RAvr12w zhHQCp?CDJq@+Dx7fLyVUGIG?G!hb{a;&YA0Q&XB9b|5wOF94vOS3%seI%g%+RlKn? zL4n-M5hxCf+~WE7Z@Hxbn???hu0V35#Zfqpn;oXw>~N5g`=TDz2}3zEt(t#Tpd9*E zCtf2Lj#jf9Zgwy@6EJcDc)A^puIZqb)H8C1iptGeT4o=BG(}EkR&E7DcR^QTY3_zg zByGnkQae5=rz1%=u^*g<&!?+_I*P#j5>$%ORxK=%XPlT&KugDD0d|1_NDdUaD^rA0 zdx3{alI<6W`l_#gX5Qn6tA4P0h?0vUDcs)eTAiP06+LORx`UD13FPMggWaK`kxO^{ z?<*&VgkW$U6ePz5_0s~tHKqlcYfhW%+4}L%+iJ4|Bf1wO#PdPN% zXf-zQB}rEdnP{%XZC%bG@np1?Q&H@g=t|kA1KyA?mpgGh_K~?6rwTJwiME3 z4Jo((j5Kn8w#$s%G5}}i%U7dF$`=U-Myuyfdnvh{EFBSYi~INAh>(kdelEds1m%8= zz7s+_4CNTdO{cTPWPQ-Jiqh2^ZCj-nImT^67$1y}8_Ivvva9l6hG^s(lb&HTe`88P zeaK051kTtDQjnZ2YboGyo{>{jr07dvQS5I*frRA{!j@OR39}b(x81irX7p=hBflnQ zmMjq>Efy%(4tL?ZU6u%KCo6&)*%${YIQ0|Z2od4931A$ea_R$YeZ3_{4)jVI$e<1| za=ds4BR4;0tU5mu$Tjw94jJA0``N(*P^wNinb#NrMv%$G)=nfk&N(T;+^^WC7yOWY>|#K;fmW&~n`Ir769-Y!Sc0?hR^5P}~6R(E*CXPY5-S(pv0$%9mKAalpBr@-vK0 zf#Xau1od0WKZ*3HxHf?vD2~w2cX=Hklcd0R$q-D zp^7fiz}@%+IT#(Z&0#o^Tsg*eSa(&zuwdkFnvF@;Vr&za<-c+4*(;BVoJ!JCLrwv_ z^7NO`TS}D0f|&53SQJ_J1CX5KH7$ORbsuM=4esLw2*aO`@e9IeR>vE;C=S-xTGK4! zJ63_)Vz%TJZ~tZQ`kT^Nmgv-M#=1tXF^pHyXHeiOWkn^3#d_m|;(h-w^>(^@db;-q zEatt6f9zl)vMT|yJ9GB*Iep{~1{EUEG{xdSU@bqPjg7WFOIj_*nc$J`Xa^L&c9UN> zJ`5%2P0SGDt`gfAIkQ_MH{YYT-2SfBPwkQ&<~t3lwJ#Hs9duDu8Z;eePRAa>)?gd1 z>%pv;q$3yi8SZUvm1}iPNNOE19bmZ^Jrar&CDA(5>NZM_4%^gS@;<=u` zeH{WJcYrTNnPEd7%JXhME~GjHqr>BDPK4ZaOZ&K6*1&~mhZwvX6CLP#jAO-!hvM!D zzbrO81V(Of*|P|)B#a9;8oex%QcyZXAcH}>#9n30ZDokQ5D~@3Y!zr_2*{Zf9Go%U z>(M_H_KHCh#T;S{>}7#BwD3g0KP38Hby(%K*pn zU{H452!tLTg#`HMgeCrv)Fl*V*%5Nx_)vJRZL$L;bO}c8c8^}b^ItYQe5!S=?wjl| zZ>^E@z&ttqNl8u)899Rzqrqkd2yTYov9<~tIYr2=nHj?$qYO@=xk#fuseU0pay9B; z+^f{d?d~zvpeMk$Tvh++*z@#mF)M$a9s76thROSNg zmArsQ!V4(hze1=iuunk%M?)0K1t13+xr3@DwMxk?c8cWsuRm_a1&}*yi{#c2(6#*M zdjaH3Uufj|Q6pF2xcp}N*rv7$jNA+)a$EYyjiy{xrCbMOpFfvm%mPIY|Xb6d{ArcKcZaP!KdlAOPX_V$t zOIODk+|S}uiGfHid^wXL|3<)#8Y&1VhnrnSKXEVfuvy|aoA}@WO`%IDu82%X@<)?e z=XWTs8y|y^BNZ6R-kfQrku%=y=USb=&+Ks6*hlWq)}__?-mgt)^#q{AEaVCK|LSi zP0PX~R473SD6LZh>?s{oT)D(+DygNiq(v`joao7VY;X+0TC9~)nDMA5HSIRN{W4}u zI1XR(@c1q;a?=9HRojnTk=a3;G#iGD>%vH_xAty_^*Atc-!8r@MlMxvL*8mW9xosF zVC0@>vq58Nb#e_IW=cA;#-NMRx1Vf~FyD}tpPY%5?^@ki_wwiM7SJZK%mJ=`e`uYp>+XY~SPE2mZF z#4wJbTm*5ElB*7WNBkDNO&E^?Z4&ro7#A52tY>v|UpGF$^1_03yawA@A_CB7(6xGb zTQNJ#_Z6pYFRe<29BSk~RWx#cyvw!P*nT8xD001BWNkl^eYOfb$Mc2J?S=`iZXPK_MYe3X0~+hIjMDoeFaL~@xW!M2iY zTe)UAmt|7H#04@dIfr_+I#D9tD0Hc8epnwfaOJ`>sERHg7HT{tYz?ps$WpLvNvke^ zWo!;1fm}dxBv`nGK609qi+vL*V{E*Nhz7 zXJ7N5>$B(G`Zz#x^T+u!m>p(=TC>CX0~J+)g~RZM&=EM2azMN>JxBKfoEwDQk&#=d z(rR$64(>yKy>qP=1qH8sTpyg2!}_#|aSe%x6R@G}5#w<|BkW;YBzs3tXSdHZ6@X@( zcww$)2gTQ^haOSF;pHg@wL+gipj~z2WggvFH@5&gOP`i$Lx(x=){;*k*8ZlUHs^E~lIc zS{zqlZ(7e|+f zjZCppjI0tx=3Oj!W-Ld?eFU;Lcs-RgPG#vgGbQ{CtX8M`7cP;c`j&1%7BQtoG`^f( zMfPr4YRi_w9>TmM-i=m4j|@kz4m3t@qDRg9s8^g*_b1HA9n?4c-EMjy5T_Wq#p1^p zMRIvN99Qi9_2uIGa5OraL`x2|r$dREzUwM^$t2k4HlG5FmfaEsC`U@_bO;c5B;l#jmuvJnyb`P^R!bL%B9+Bzd&-6iT4u5f#J*Y zb$FWleK(J_;W!d8U`cYsXhy=gC?ofg8&DR#wDiQ9mlei5*dt>>kkSZMh3KR`qPsO} zb-;0sk9d%o*X)9ev#8J|?L0Mjz`fwD8Enrbbo0XG2ua2sx^3g@866kr)L(;HC2Mt0 zVO$Bg2Nubn7FzjX&j}l0uu*YimyBFJpzm+B|97rE+N6g+ooeQX~@Kd znUIfIap(z@S5xBAgdAEJ_?hGJWQ}t*Rn>h_oTw==<>yM5-@>R?L2Q-#UOomlfuiro;CrYWgvX6$p*LmtmB0Q$bp71IdxrWlJ0BYsnu3e+p z<3|DGFl+S`Byxe0bEp`(2kZYs(HspAC{c!}6fR3>sSM@>LK7^Rixgg}2h}6O)+biEJnJMwRx>M! zGE^)=c?siuOtA4RCDHtyWkS59x#>nXejiid`67zFi9604sH_IFgKc8u=6lg|yBN8{ zifi@Lex=pu7)mJ&HH_TW+Ug!dF>rAUVQ5;*tdC^Qv znh{K!)!8A=mFimJt}j)*oH52U@G5W|Y*}x2t-fdc02sGekVI}0Y^yaLX?#6O>1MQ@ z)m2fQMG~TZq>{ z54Raa;*DS%adv}gYAiRZajgbM?$QFso+vq6p4FYEv-oruF)m5!=7g-mD^^YSXR5if z_#e&|HAn3Z4~5u9jGRx1&Zp`sG*>a)zOMW}ysMtp-RQ>et*&zW9phUxk|Rd0s*#)T z;Z@yBBX^ies|e%%d|%e;ybWQK(`p{8<OB$|IbRO@@TDoc@xr$o4Jro5^an47 zS?qcIcPVR@u2)Dy$~t)-Sgoxe6}Ro2LTFt=8iPDUBrzWI|zh_=|d56K_l0Pk#jAK+~&<8 zyjdXEAd<^6a-aY1UaQTW9h@4(qQMJ}k6>I~eZ9SWzO2yPcOc`Ck=yQ{RUmL=a@h5n z#E+mVt3HtAwULr5Gw7}CBIPD!If1qg3xILeIGR1Zb?NVDI4$kV$YtwRVH_Q`^9elS zj%Y!(Lz)z(HA?03piD6(i4v-buZ!xudA!G;bR_F3GGI-8>e>b&Crq~0hlktiHbyRc zcN}=RQ#}`K*{_fD<2@Qzd-Uf5h_>BhWpz@)xUu)Go}QhSr>{THul5iwd_3w$SXl*~<0FgK<4UF$`vky~hu93#2< zNT4yC>RjV&4f%^NRkDaw1y%TfD0P>D<Zjjw zogF^)0CJlSufwLUkqg+(8P!{qQy_zR5FG$O$w6`T9)R5Ce*b+7#??EBAK^sc9mmKe zCI$uAqQ9X{gAaS-=@^5&KO1pbnY&*yS68O!4+y!*>jZHeDC8F6e~FH?u7*$CK*{wv zX-c?&8pG8rXtN0~7Z|xn!Ken=7TZJpy^EX#FIi2IZto}_F|)*)`k=CgNO+~etF4X2 zpilxv?)G16&XG&RZc$sVGB1%E*CK(xVSiMhamlNd)nUK0FHABAqR|H1?0Ae z6VTgr;5YgASaJpUM$J^&ze*`2WKfls4(L~vlIoPKtJRZ} zI8+ZiJ1`@MJ9WVcFJ9kDO0Y!O#utnzD6CA)&huBIAbPk7Nz$_1e5s1_w37TQ!;iI7uAer_4-dAl%h4j68j zJ_I8dEY!?0ck}_~EX1A~xn8)g3CQJ0IcDU3>&3`z-lvo!jhr^$TN8)w*)RZlK?rm? z9|4kEeO(bHxBZ3FdP_i#VBC&wexxEf3GuDR`l`ebU0glJeYUz_oXlt?=%BDVDIX_~ z2;{IES9fOTK*{wba%CB~0Huhjw*z6&Q^M2%%dzm+cW#ziz6Ua(_om`N2z$~koU30NWbw{lcS z#jF!-OGoLG3WafZFLE$zB!@3`fp&8q#<8*w7jZs{Jwp~I-df=ZL%N;*T?ZAM_{4n{ zFnt@0;uIx^BczhZ4V2t4eE=}$RFI=UxpqR1rBkwG&Zko3= z>a{9I3|%aW20VXeSwI?nh2(y}|9b!R`F6kGV+IM9R-fWNjQf(ovW@_2`{v^tINyp zQ)1-CO&G2rMQ)t;Je<8kP$H`2_7(o>PLe~7+zn)p03ml8t+7IKkMonO3+&w5CXNF- z?&a=IRnbcMgTs3SZiJ=VvDwp+>{Iff2h%IzR9&dcCh{0JHK+@G)gIk}RrWmI5I zpj#s5}az!H}_cn&E zr$+Acn;5yxdkem**Q)2_tZw;Y^sp5a!gO>T%|;cJ14<5%+`d9_ppm0QU_@~{ZtD;g zRzqg*?zI<^`w^#-^q9&FA6M4rqtyW_s|ALKW|*P@#l4G=bE55L7j%xk^1nBuXc1?` z%UW0DWNW7;U#4}@*@uq>WU;4Fo#$)@^)WZiiwj*5)a0%XIb+^2`e>tq-Y`g=iU={% z;9R)C$W4in8@IG;DBA)^qD~BSTLC#}*l?VKx-Co$;NT8DI35otS9_?e0v`w9ZS3=f zab>TM^ZEJ7$>HP(_0tBk>J!F}+`RxHx5lOpEO66ZRRNbR*|NY3uw8XI<+wOz;;7C_ zmR4B?=Ps$$s`@_AwYrvGt20+Dgas=UH^Z5-pcp!wR@$ zs|u9XDGMmRL{V?Xucz>SQJ$?>I}hU+fJRVG{botj=1Z%(e9RElI?p}Qs^LRf1fi5k z?W`vXUC;?S*-_k3Rvo5~P*$xoa;^s>XB&F0Zn~r6-e7jf(Q=03fdAR6vqSDZH{IJ7 zxmLyTfZtCX-Jl9o)PuB`IpE~JT;H#5o-d#G`|p6{kdgCl2Y+)^Nx!kLp$Wxh(nqKg z`)6ZqwN$#eQdu0zdUdtr5IH2|Djdhh_@0bh%^x;QO@y2b0=ABNj3~Q31*S*_y}sm$ zMj+>-^SSV(|4UlEp1{4NCS{E(aiu-djS8TUs;=HeRB6{~{?C|nNhOZsJfG@k_zxdH za@L6Bn)`Ew7sT0bc-hULx4@&FA7dy7kLZej&Y?Zm?M(&bCJxBBWYw_8JpP=|57lxN zT1&AUO5;!-S0TBV2f}dyhY@O{cwe!qic*enp6BL(j}uLt2E)|=#u!P4py za^z;t7bqQ9SbcF*kQf0RX%nX}g-d3HIbs74^d@9h5vVuoS0BRLiU6kqpt3>*+5p{% z1>@M>P~nssQg|0S?=iCRan;w;Z`SDsT#+;oj2*Uc{#g;pd4*s|Sy9O&1C|@6k5FFq zVjVsbceQp0wsYEInX(hp^+ZNMZJ2t)00bw-3nY%2fD<2(jx$?)U^U@F=z zRAG&NB7+I7@dL0beg#jsb5Y8VkM$yS!Dfdgm>tILTwB{TPOTEJfRuz4&!1F91e&iD4M{Z}QXJ_MgK)ACyDaTz}Uw_^|!ww3b(}Uo-!x2FpTq{s_ zIG$I}Z2x**U0=@>kfTi@B!`BF2{dp0>*?QjcZ}tbjC&Cjx4GMFu&N4W)rX~ra7?02 zDGZLxs!K)9!Bb04kwg4O(zpQUmYg*wO&-?J*dgX5F-LAHj9fu}hxiLG7BD-SQL*wDOkH%0%NzVXeiKp#2KouVIsI zG=kbfhgGWc@LpfJ_uKz&eUO}Lqw4d3UlZ$TncgW= zDEA}wtnT{t=n5tW0&~R51wzi3R(%|>^l*mXw44v3DiRiQ`x} zv4>Ou4{@Mr94c|bFovSy#BoDsbCBNr|6jFwhomQ4fIHo@*{ZcU*{E47J)$c(U0Fu?t4xL3hTj zQz~C!jlVk19bgT|cA>5=Vuc7s{;XFmJ4kr?% zooG}iQ>r+Qp%*Z>omdVxu+ueB;Oq7R@Y@C9IM`l2hfP*K;Qs3B@oKYDIBrhLfZb+| zfapY3_SdHTjxdh#+;_Sv2uI9uXqbzj98ubs?3N^q<4EZ*bH!mEq{_W(5s2iSRmCNV z;jqIJY|INw4TUD;lP{NFzD!25Y0~Q^IZkO9(!}E0!5}S<89$q-;@u}6`B#%zwW4I? zTj7)_)1$D~NVOV&ccO@E5($x~BeoW9%#6h8R%JkutT(E5G^p4&Zom3k_ldtRqmE>d z>(mwbdy(8o>mO-k*i(jWWkE$C$f4XkcI^!{vf!zSde`O zh2#Lpz1gkRA6jzNyR*9XT1oXwtv>y$sm$t=1#GaTiih%u=?n**hH}6mHv`&YLmYS1 zqPW9T#A>$!_<``dS#-elqtxD{)%cmLLPfyuw2kQV6(alQPRDt|;f^lovi(Xl6cJ+! zYpDlZSeXP}XmOUu<0VL~g0*^$)(o7hp*IK8txseQEA`5Shia|g{B{5J>$!HD^NZJu zs|(L7ffhMS5aenvHDnxu%)?Fb?e6<`puZW1q&VV@D_G8fg-}VI z2+OE4mmG_vCahG1ji|DYIEH!%-Z%o8=}4U%8R}BrPR=C;hLia$Uv9g}v_EqfPUKxq zcK#bZIPVJiNXf$$?_H2PGS*jY|AS3BcM8aj?9XTGTKD-pa)N_r)M;jGwbR7b>Mw1r zcJ;=pId%71c4#cMdMG9ndgKf@ct=%*fyQ&1{9O+d-k%N8JSsn`zV1(7W**1_)#xZP z#rsa8$(x!HMifrXESQosJp&q43bGDyk`zg9C~|_{cH-Gjtq|nwCa7cTfdJTWIC+@A z+}z%uEC2O=^L2Bvx!Sy5fegemkm4SnAJu`%fF~1Vk+V3G>bhJDYh9D2f@{2&`ge(( zae(AV2XM9|yIf33GipazSiz_mS+aH!CbcopL#8^k>BV$9l42z)T#^}j9BUsjQ-C~j zQJ(a+S)7X1)0gW=E=QbvcuE83f$JwVaF+yUHeMIzf~k1$bfR1~HSI@Sw_OXAdr+yP zvW)Gz)?G3k8`u(qz8JFnsQv0|-DhvFvPmuySv_cK^@wF1Mm}4s zWfQX8Z4AcY7T7zgdsFv}B;KFgVASz=yex`Rp%B>FoJ@uaQB8&uc0&jbIcN{g zvc>~4jfO`T+4ed~!<7-J<#7RZ~yRxii>i z&Yc#oQ7jsdZKq|PSl`8_XM10w{e4uw5Nx2as=%jpt@|vBoHWs;^`-5l$c-BC$d$h) zwYrB#?vJLH9m)?82{TKPvx4SAON)7RM*_$R@xM7T$)$_U3dL4I+Ts26_5L0q+z+9E zq!~qSUEf)?CLw;ttsS9NO{lwcBpn#X!5I9U?mPbvj5;lpJ2*ulw4IKT001BWNklh7mGS`LFKd#%=W(95oM}D5?8-?Un7l7toL4(|CwMbPBVF)#-3SZ`P-SPw6 zDUbIrv-BD$a;3#^cSWiCPZYU=u-rQb6chtkr?6MX7_Trv9SPTW&IQ>EI^zfPV0Mnm zsN$8H06i@<$aFEiF1n|^Laz}s%VMJK3gdO9mz7?Ec6FH*M$2Sbd&17z&D@8Y*)^JE z-p6iBE^S-X8~2sbO)WF-Mq(GP?ggt@)&p3Y84v^G!HNZ}*KZ;xMGPeYbKEG6G-~-u zTK7N1BWLshH(`-uBHkVzx!)zVTGtEwVTxS2Uw533B3I{h8tr*uN!b=F*94N>8Ij~3 zadY);LrCtPDRM?=wF>3d70hL+bi&l?jSm8@tNMd?p*hVVM_h7NryOe^nUFf*hN2FY z4f@vYnj(0$KwnRs6u8QI==tCX<&GWSbHZ@f+qzN5wIav0I(puWZf5r)6Ky9i@gnUn(m|>|ixhodozj$VR0!?|{OOx$eGKsSHtpka zo1$AR7WaVR@)ZKM96cPu-Gb_oXa*a-*a1~|kva`i6Hr^OP#aR@Kt`3sR2juFsMBzc z-8XZ3*N04&`QI%D6j4q*UeEMU7kUED@;E7h`NYg=?JIA4{CnNDcDt?R*fuD<{q=5c z|B*o^(|*VT+m1e-*0t_4wpGo|NXR=JM$j!i#Pg54TmPf7`lvD3aG=LZ8775aRoLo3)M!^>)_gVqx& zQ-L$|I{IR|%5w@rWbSc{Is-mbp#B1dp;yFTS zi0H}^>5AoDi9yDCcSWx-jC6Q7$$0KTLB13ePzA6cCSVv#VA;FU%n0-q=OI@A9ePF` zr+P?MI*cA!g%P=GQKx(AQwP0L!y~(wP)_S zuXVJ(*1d7!6~&oTbEo|FIEx1ao`yJQ1PiKIWPr)4iPuO2y8lqPia??7{GtuRU#1Ek1ZBar(yNIQ_c!;gEHN6tZHR<=~a zu62zdcT<;kSUdc2gb%%Rxl87g(_C^)j*~2M^AQZ9(^UCLySs1@#?jtt*dI*eBrA^# z<>_pFS^bnEldniw36$NuXE>f?z;yrwr_&hR7z)Ig z@!DyD`cU-B-W?nStq`Fh6f1k^?|NlPhraCo!# zT><86d3KX@oVY4Ko&u25+&4m(LF-!g-^Oqw$Fzg6 ztawn59BUt8id@!&2v_co`j8&EKR-Z`E1SjDZLM00Q^(%RnKJVg9D&KzVD=yOu7$@< zTnjU>mfD1pQEAjDTBSjA$!Mh}DV=s_q^_#=|Np7WdD+Jg0%=D(_e$6VY-1b0NWL7O zN3%q62NqiebE^pBP6-&7rpWyn8F*k2r*+UtL4Q|O)C}`EX1~)EISXYZ^INwW@f-?v}CwqNgCtYYKtoVl(I>ju#?vqogNUNhU@{TU8h|BqHZuCE2R zF1rOHt0P0LjuPOIOYe@HlLAMTz-JYda>qqb3q1+axrp?H2B`%>*)xpb>wmg4cc@*% z2mEGsliiw+HLi*6YFQLcg@KiKo89bQa)XtbvBgaAG>V*=N|75uPGdk$)9Hyv?vH1c zS`C||Y_00o(ya>(dsCS#N=GqYufi$g>r;d!yFDkAM{Z?zm9 z``c~O4`>!eI!(m+kW)D0V0_kR`7Y-De7v-pRY1UuoWyVl*@{0DgYeAh*^ zsjuBvAf+K&o8Y}Okjm)WV#0$w0QLfoXnK9uAO!qj=Z#%-w_EQTPo6giLsOWXWG`os zHC;A1;^h<+Nvx8@LQg#N>X&M$@BOH)swGq8oG{!B<7W3_7_Qbx#2J4av+Pi3lX&EA zo{dLNQ{-O#p4957xC8OX8AXya3ch7d@1DmURx?2^Ljw;@*#kMYxBB92 z0rhHuSWPx{JNmRYZATtxSq{f7WDB|X5om*IZ+y(=lj8m@M_+EV3kb)8p()_FcpkjL zPt9I9zZYhEY(`Vj;WZL1mDS)=lIg2-kwov3@5pctJXKXmK&}p%YvwP(*}WW-92!rp z#jt}JCCDL?10K0;8w0s+nsBJiF=1=f66Js*_vV@P$oX)uO-ilS9_1~-EP~|_`Vfy? zfk+MnS8q|399UcRC~}t+kT^L9N04(HtKat_k6f&$k=^uHENDj<8 z)b%weZU%8queD#?$2i2lK))d|G&C_DBA}8MjnrZ?tpK_|q*Go$@wamF*Tzg^X$y zZxL_j)%0wx>VF~Rzdq|>wTw8ko81fSs;amVHF9Hmw;Z=GcaEwyTdvJw&G?3LJG!BSTNTyiJaT>bXp+YbVAd#esOB*;AmqNPus zQ3t|tdygQewpP_{tcT(>S6!raPSO1wK@M?TP4u`c_DW4^JYuwS^agdic5EFT~YOnFuZF1jw$)pqZ=k{VN)P~*$WE@CL70G=IJ}=H9 zSIQEs0`|^wl0q0i>Z~L#fr6?i+e+fCuK1a6cAMe$Z3V|wwA^Ij&F%{LCa-D*KrYV} zf6c5GeRlr~Bst3@XYtAfB*zrF>9$q}Np=%>a!m#eD-in6@cl={%}{-Pj1Lh4*}t`4}44AxW^4yP&*<_cBDa0($1n!PTY}` z=q}x~*^ainx+6DKX-wY808zUS)#1?hS)x-${a{bhwShdzwCSY}UP?cX_JHVtLpJ45 z9c(a2Ni8Q?WUJ&7ykg-Ejv5&0Dy&7H%n!_NcK

&LR?02s~<|i`nSv>v-fYQsst$ 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�w80MWMj9gfT4ZueG{kr4^ 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

diff --git a/data/plugins/grafana-piechart-panel/img/piechart-donut.png b/data/plugins/grafana-piechart-panel/img/piechart-donut.png deleted file mode 100644 index 8e54878b1818390e9a64a85f95ea6cf191093121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38209 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 U9(vjFSE2lp{?&^GD2KoQ1yf+SQvd(} diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png deleted file mode 100644 index 51dfcbc9f3198216c00798282e5c3fcc1b284fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37972 zcmeEt_4y{_QT!-XJ&f(cK1|QS3OTv-Eb8pX|y-QZ$KarnyieZ8VH0u3<4q1yhZ|AWVxki zffr;~aaoPmuV2H~lvja|L~c^rZt9K}Zl1<2<{(Q4M|*P?S5p^ra|c%|N4FE?E>RGO z5+p16QNt_qaLMy4?iNDqbo@eLsnfTE5B+BhWyH4^`E==D!g)CQQzcCmxB}GeCVH#G z_l$TZaB()^DMk^ueGvxv;Yj!qU)|7~`>)zMV1hzd@Byb0Z_m{rRMOLc!ZFAg1R~tD zy?lRYDcbYq&70T2%0M8OAc|w;|GeY(p)~x@yUn-jJpWogK>nv8ivRN2&f*E2qDtb~ zzi;^S_F5kwy~a}W7(x%M{16@Nu)R{Q7wIt>!_+Wx0==EwGz|BpAEIZ=Q>Q3UZc!Q$^c1&E_{lidrt z{=Rd)%$i`2d+-b5ppq+8E7jO{qJUuaA6)r#7*f@d(nDds%^0sh=z_hrU-J_vU%TV% zOILZ43T4S%U0#}TrWuQ+bGq-32b{@!-nQCy%{RF2d=vyrT#JW}PI!Lm5x&V-+1}d1 zn#d1)g7pO6^sI?yQjgNJwQQD+8!Ad7BO|96JPh^t^MjoJzB5E7&GHjnsiyFAaunlH zbUoM}Qx>_}>@xB_QX!u)*3#3{($$@uSz4;Ghpma?13M}B@196W)l5PEyXn2Doh+~Q z@qlw2Pjg$_0|b2OfE9jyN!pn&6xMmQbTT_P*LArb*>$s^i~+9&fx0J9&WKlc=l=e! zF`uII)cL%5ejZUeRn&qpE_k1bM#3u$ALWvqo`c;V#?yu#F<^8?L=4~EslKrQcG~6j zzk8c(wjzwL>Rh)W9rx1k*WW%!=4iLiN6(SR7U$IsFa0WYF0ML|$f1&*Onk3C%)~_d zad&S|r`}?0nbmnCQ#qTnuq;pQ%ID?XJzs^<%F+}sy8pc4~(bbybaFl=qUeO zDOWs|e{$WtQC4228B3og=K!l~tabJZcXhX~WFC^7UYc20SuxTy5HZ~z4YG1W++77r z^;u@QC%5Ua6K3*Tb7CDW)-G|6b;RmBMEUR1DW+?PS;tepW>FloovU&tEiP!_#(a%E z@gcCGyxeyFy04E`y+{cqM10T9XXp9|4Gpb_mynlIlG}BAG(DXdmOG}$%V)PFxNkf? zJFA#2tn;(CsK5W}q{H)zWmZZGpE>PMB@6xeH&^A<3?r4FVSQQ^`V&oa2LxpBKt@K!Vuh?c#((3sy4%{r z$TzH!y0M-C8>QXgGgFqt^f{9|P!wxsMiKM*@4AZc1iGW6yY`E5v8Um2Lo)QxdRsSx zrvszMlan>Tf~qysu&w>{*p)~@Pm$IZC;PM=5u~KLMxRy{BdEAm!}kZ z85xc(2;V#gFgKsr{V3Pmij#y#{Vjct@Y7~O_-?(H;ljcKN60fFCqOnT3~mQUD;fR| zXA3-v(a~bf7ctc z#crz$3O4W9R@k2s)d@`(l9J6kuJ^mh@0Ly$6Hi)K^CDS0H`S;j$ep;AkdrDR9Lfx>_tM zrCLY8>-Q8R6cG{G>2>5@$J}Q7w&!Mw;^}l=>`CBUg=GZ)`PuN<bFW^$+~22LJVTstiO!1Q zYier3ANS|z*|fV~lH9h4*gXHpe{kq}-0`FpCu26acJ%0fi+E%+^j-RErzpwO*vPly za`38iJpgT~bLE}U?f#so`&N z|LNhrQJ%H+^iN+-^U-$3(g$@z!{ci@l5N0SAok0v1GYxy0yoNy7Mh*&+a@VqXLeet zdSoz()e9jxEVtis<+QFd%?0iikvO__DYG#$0$S->rAW9;38MOILe}D&B;pe%gfZeV;u#SguVY< z0wp}vrWCDHFD(V#4W4e51J`F69H9++7#JelE={+$x5b%t-3E^%IZualsv~s)_p9HJ zceC2ReDpXL6Qayj*(DG|?2%MI6?atH55*Vf_+F>|zFMwXazoHV8h_db%2(QWo8-GV+32FF@)7OMNms){n;A_muv@A%%87C&C6baC_XbzRKrbv@1?OobIe z{B^&s0bB#GbsZPkE4V$bqZyHsl5#+&%hO=wsSEHaNvpSLLme9%lPG4_)7A5EWcN*O zb9z`MxXj>nAoST=&LMx?FnT%Tt~(|xOdhxvyaRVO4DFr|g@~9_LF>%rnej&)TI?3oVBp((R4xlhdXmBM z;UQ`34g>Hxd@+DheQ{IYWQ66qP~5kqBm?8Pao%S&t#m#_ zD7TE@?9-!He)nYYzAHUEpI62K#W07>fuy@s7)aj)OIOAAnTWL?ROP0;j7iM0(g$1* zs$JAN3%8vSsESjIE@7%X7#50J*R6ccr^p~Ily6Sg3p>pG?#8m# z)&T)QG_vtD=2Ochwbg|!-d24_kLf(N*Guq4F1xK_wk~1v*yvV7Nx!ID-0!eO#N)_K zgPS09j_>drBp2fZa1Y$+=f6cP8^K_7fBwG|W32MuuLfSc2tNK(gHOBnuj@{7{-NG= zluv70sDJvtmF);?N@60qZ(h{_8JTYthhm|cL!2O1c%GzhlaU19bjb;3Af?meEx~9u zS8;O*18I0z9)APB@1>{i$UTzV&d>V65eh@q`~x3pU*GGs|05YOgE_bv*??@}R903N z)3WzHaE@i8c9VEV|3;$2!9ffWMb=mIgoB-X8SJUV@jIAJcP+3 z2Sz`zGn^nIMt6VSc!8R`rH}pI);FDSUFVKi@S94ebjR6hNEKqNU)+XN%60{2D%vKN zr5?UNpbq$+A8^60243qQJPNH+onE8ns>9nL)H^?#`-{eNPNt@>|8Vit!slyTQgu+P zJz9Iz{_x;Gx=4}+&)WN&b{OZFi!A!@zyLIp6p`)qP;2a8J;0i#&`Ks|=)aYei&rbr z5=WIK=j|^_b?zgQ@8IzTA_8x>13zv^V2IrIZaApiuZf633`6R8m*t#ROtS-X=(0h_UB0FNro^$?p~T$8@^P}^v~nuDo4=ys(O->yXrrxi zTIl$Jt=!wLCdjjc{X;i4S5jVZUtiy2H-q^AH9$>Fe}4;>Ow7rlc>O$dc5)hhFRB*6 zp^Kzv0q9GeV?@lPMt64yC++oZN*x6SW)utQVKz3lA)*y!%NI5NG9qt5r0RbKo`bHp zmOQoE{@IGCx22s1%}#5LMy-zk#1K0xNLb`y(yDMG*r!)wt}YpLxDD^yF}h7F?{qq9 z)bc+j_Lu2d)spxA5a;*Sjbpb93_)eUF8f?^#JXKIh@cRzK!u z!S}->d3kwEqKG{d9J)-vBCoV;&DxExrbAmfAeHEEJ(5#};6GlV;!n@bwegLK$^hnt zt@BhI{1ToFb7(uhJ7DX)oTNb9(4!KtlIncX-vs(gvzaiQ+r{;=^!=k6V z*%t(cH)-Xfz6-^oSz$*5w5dAP9d~S=K^z|UWS)>zj{Nq#^>umH7C`OlLkFyk@OIH) z;0}R#_RX^L>dxH+0>Bnc&&>F5WUS~nJLR@Lo&+M~EuO^8kH-E%+eS1c-kiEGYv0tB zD|5K_LaGCfzD2S^r?PzRF5@a?9s-^WJXb_a`=ci7>c;i27NjT^5QPIU$F4>rfvYgR*We@R2^oCXO9TkRGmY2`iO>XFyikB9VPEmzktbDgTn z^83E0MIpBlfMPx%ssly7B72>O(?dje@*U`Z+loE~1OG3m04#jJT-mhv)cyS%<&U1V zz=w<4;%vWl&#v3CPR~YTgin*(N6i_b04D;hrH3rXt~Q^mXQVUQ0BQGV1dE=Z_82u^ z>r$!V_H`)pV;#*UCnBX@42TIoFft6_Bmtr~Bz{*jTJ%bp+B!P2l7C+LYn_f5Jv?OR<=utjnCo;thLD6T zM`ni^`keKtp5O;`UwiIeujM>>UG`@@MuxQ;o{)J4tQfR-jHS~mi}?c^hdF_AvCRS) zo3@kIgRw1NA9PmlyS)q1$FrQSrzP^(fv3~975@?(^aeYG1GB*$J zvj3ccgkE2zVdFkPDRdU9g??wJ}}7!ixAQg6BH-ejq=v z>)_Rj(bICPHZu?mf*ngd>vHh_>@G)VDIliyc@-cszilUE7=JFF6Ax$)~f zKX)0a^Jr}JPxVhuOq8U;>ZxlL5&}r6i;JCU(@8Fjr8E^*5u7koy9o;>0!ge!{TdBj>_XTRcj!p!!Mb>?S_g|Dx^ptQ@q%L4T@=c zSds!=ljFFK=WD7u`?gx=M0}zUV>b_vDE%%B1Ol;;F-OXIPu}|Q@BrXZf)rc=JbXmX zlRu5G7Y@B5#G@I;0re7$nSw&aPr7)(gEG=85^X|74 ztCgyX{So-iQVWAZ*-gwQ6BASrpFEMWflzW8lNQhwDz*Tcd%x(?Y$ z+zW|UpbbnQI^DenUq$Y6u(N4DtQ(OZ8MZn#Tmjox>$aS)i3vBD4#f2Mf88JmK?n7d z=tEzF*kckC6LASr!s1gEXwuWuCttNR4NYvSpaTpmL(;?3a{#?$gdareUzfs5_1_@4 zpZ0=RbSJPb;1c-mh4%0DC)dA)0@wd<`2X_wzn~6Ic3*l4g-kqr35{NZR(t*>K=|)C zAi^Jcx)^Cn*Kbzrl?=mB6;K$KYs&7-KVpA^eH}5}`$7T0&+pFx;OgHk0QV9Gn=d50 z6UL&%I7eYwZf^QDxvBhT#4m?5QWYY(F2_<+z8;?vCNB9`jzaz3^`{;tMbK@|kQ*5a zwy;-oGBb+Pk$Kl_8I_ zKbksPl+p;Q7fvF${m~ylZB5#{+t$U_OZXn?LRMi_p(*o+L&h~jhV!SgK`Ev8Jsht5 ztRQJ>RjhK$lyPBCwK_h$6WNf62cCfxo=({Ha-^Q(l1ZjFlH9^{-VmzIH`*Y`QHRj7 zwZLNNTaYwfuPvbw75N(KKq%dge2#A!wf#1;w9j+FatM5HFG%QVslJsup?oP|kN}&X z>GV{mZ+Kc<2TME0qS|4O_lo#E!XGOGD;O`pCwh*)HpQc$HU7p0Mf5pjG2- z=KS9&=9|0CV;P2#I4p?3xkL+lhEyh*vSkdV*l`=$G0A`JZ4<}8>959XQBjGM3W0n0 z6L3|}WuoHjp*}uvQ6kek=GWMBQ$>`{3rsiy$qtrkcYilj5u5}q_6raz3L)t}!iybW z`W)SC#Y;3nz=I(D&kLRU* zxsxDMGplWgW}8pOedvkNYOYD()tUK_mCr!L=ZwQIxz%7hynBINw zlOktCD+##mNCBJ23u2jLr}cY!0vgAZ^LeqeF%)%FfuuaePEKm7SYLo?&h#zls~6e^ zo@HXOi{?650%b{V*Y~`rTj#^JVH}}p>sGJ39tr387}3SZD3j|pf4bCJl!y&a@Sx6z zHA(JYI$()Rj+|aUP69$AFwWdj!x|=*=_XbSql$hLUeGOGP+Y!FTh3NIf3W69{8VEh zQ?^A+0WvMh9HHOv>Fr*L6Lf8K%@>6v%5MUFe7=}x%x2Zq4G6rWGT`L-n*nAYe@PL4 zm{eww0xeov!Gec~;3$<1S4S`-E*PoJU!o%D^@Sxq_iekA6*+8ah3UQs0gd&*li*7IFTYKmdezHBK58ZgTj`AwTuQ(A$)SCy5F~skr_!`>E&Fsidy)o0-JaXPBJSq(-`6yX7Xn{9m zIqQSqJduT=b+j6htG~S-dHA75>o6}5rd#qki1~5rC$XM!aj~6P%En6*9>&3V`esM* zGERbxy8t*o0o_W^uESj|thO@(^-PJt>q&H3x?JAI_Im|+$?iusABGB|#;WZd{hFe~ zz6E!xR|$9C-JG*jpWvG1nzjTI?bZ| zfkUy)L{7DY=I5?_lH&V#T<5KggUpKA*#D^ofbqIxRaR+a5lWa> z&obAG$)5DT741(m6^i+eN(fq|6gL$mjC~{g5N{oXR9(Yl!HC`EV{tl6^ehO=R09vY z%iU$Of>>Gl&mz%`{KGn*QbZ=-gtBC&s=3O;e*0-~0>XLeSV`AaE=do6Tao2w$g%!v zg&>U~4;O#6zCAI!8?5xToKZGGr<)ulkdgAa`Z`*jL(*yDqk^A0SVG5a;FWn2|Nik7 zFFU3ni6g5o;lW6V;}DAoOOf?wR|ln|Zrmg;*9Ou3w9WW~i#zkqZk)EF_P#Q#4ZEm~ z&QxFwnJ!M9V!^-LFm9Yl-2!hUP>#95@h<}&e7i}X>u_AZe%S&Vah`z4khZ?uae$g@Rqy^ zw)O(g#y}hTH$O+M%7^ALlFxU=ZiX$lm{Lg04 z;)~M;h}d&No(Gjbo0(>jfL#!=%_dP&HCZ=QywR+ekK8}ko%00SAG+{iN*<$?m1(7) z$AvFg4waP@zg1m8Jeve(x!Ik1g)#Tg^po~CcjM*Q*;rgdxV$0oSG;2a)0YtT-b96_beKay1b%Z%EL^^DU##DfXLt>S@$<0?S zh;(G$R*+M2lYcq|ylkx)SaAJ4pWTx*F3!5+B(`JY=iX0d&i<150RrW7`nNkLBgg9 z@Kp=uiOXwkkFoDq*hd|yc?n&a(`Bz0j%XGO&-(U z@V8TE5q1H=mNvQP<(_%S=^IIeXv;MrTz{UEk`hAF_F*Efqx?ALA2D09M@tM_Og=et zrU&dyH0p}e=Y0sOek@@0lm}`&wCU7{e~S1b+5YO@nOCAK#EHWnX@^gOvx|0RQ^qnM zYlp%+dCsy6>;+4`KAnf@rSMqfY;~5D>U|R)w#Tiv8=0L7Ay#=F-d4!0zqx#xI$UM9 zM7*moJ-U{={-K>->e#?SIFG)>&F(

qlhJyirL>kJChs5ZhX!k1xjcJ+zlY||!(p7ELr2;E(hsrDe?tyQC@ zBoE{&x7ka)(V$)amnh>=KGZ+fatYGnR6>+s` zXR8)ygh)!6;aqHm-=1qi=oi9xvlPq~0iauuQdXkf;8))#|Ll;Vv z^tbLmWk0zUsIUoxH5>%Ff7brt6sjDaN^1ycZ(u81kkr7!9naZxMXm&t2wE|ofXo?b zPD&Nek9RKx^DrUG2m`QjkFCi;+hqp9roXXLGvaDFIn{c8x?Ja3nh026O*Ar0QmL$4 zttelP;uMQJR}U-pR~WOYpd<~7#x88GK|k37%HnKmSekl*wOGUu-z|rf*Q+!2bq^KrQk*fDhx9)@#kMy?jj20^jko$R_8POUman*WYviB90v%&j6+ZSsqnocVlitb7;7 z^LP2LyktiuGLP#p-Dq{ham0&Af7*mMLL@$@2j`Io7l7Aqbl5LT)#2Q_6#V!l*_uE@ zS~$S_{=6u+`U{cA&UI%`(puCUbyY6qLv6sULW7f1lJ*wW+yyCRDpHhB9>xjIH-sPhssQ;D;!sU+ko?&um= z!>=OJ*5InA4BK{~iuZR}T709r9bt6+Lj&eU$5P=;DtAdoqSfSI^6@2zk_sSZp@eZp zCIcx9{?;Qk@5iYXSblD#&&)e=_Dd=ejd0ju^Iyo?xpWG@qoP%ar_G)|3NbXb2=|dI zgo`P@AIQBEzGb=)XF=XZI7){zm|74pBF4XeyJ0;WikQ|eGXZ<;@9jtB{1^Cy?JdQC|dNfPL4Dc^C1C0ak z0KMUwEVV8#o1|hP^GdrZpULaMjs|)OUr7&}B>2Nnr|(LX1L=h2>HHc$y6=-G4muXK z^lB7_&IYFIVC9UtWQ@dUt(~RhS(P5eXiRjg$AEEK!9;DL@4XOJ7cD4AB!=_+MQxuT~*Vy!breh^jd=ZA2Pq*D-bMZ#%Ls%<5? z2eaDCUD@U_Tgg&G@#na{3&1=Y3MN+Yxp<~{kB<9y?^2p(#;eo4mz|3&+_*0*0}FFK z99k*^oz67rN*xWLGQDLMxGBnP99$N#qGQFU1!E$7toLQw9F;OC43e9lD>cU7dm3S# z5rbTi&WQU7KK1f@(}-5<^N>Xpjh0FcS73X4N6wOR{VA(ynd5I$YW-5@Xq%%-hONvD zuQ(nYW&XUASmFpSN^Z0%p7W|o#sA5_m+UGROs~A9>@XYBDcSGx+0!i9PFCM5^Qk?& zlb(-$*-kdcaI3}6=fmoBc8!hr`T~xhb&ug}rjp;^=!F$K#T?a*mhGFrI2qWI-1*vP z5t;MLOd2n(i|VVSSLO?ixCJO(m$Nu6ahbRxlPsHP^-Sonj>3*x&>FP1)zylO1=`lP zt8OM%aveRRENIx*C6TCua6Gj*`iW3BUuSak6ADmSil%wfLIBz@R&%c~?1lTAngc>4 zP~@;@J;iDN$xH}cAjTf}6Y5Rf;74zX{%Jqrzxwh#pT#vJy%v#`e00))sXEe%zCg{P zq^su192!On3wNhWMtCWMRxJkhAC?#5c}pooO$s^d8IR7qW|v;{~%g zF1F-JT@Qy?G%Lz`RN0Yj+*)AY`La1IT-x;fEp9Ve8cLz?y7=%C3-rYfKtz5V_QhPr zoeSv!&c6F)X#h$1rPokFdl5L>PZ|o4xS?6eaOGyFx)my$2;x}Br~!AOaVFO6!zqRP ztD@rZkbI5>}F}RXTkS0_!>WIhTE|T1aJrwUYw5zQ@ZMWL9&ehz-gJ+ zEvZCh$%5QZ;w-A7Ls&A3L*t+awudI~%_naa*+?{978si;z+48MnR_PJiA3xPiMSHD z6~<~52I}nUNC%wlLP=qCmWkmP)G780x+aNqp5P<1mmAe1wWK|qD@`9wy1Im&?FM8> zK0$9*6+^`m6qY!zF8{haSo0IW)f%_>iyV&7&+Y

zt>@O>5mI(S~5xoOGjo6WeLK|LL>xt7s00ZdpOE5#bc)&wN2x+9hYk4(!-7MUU-EG_x6W) zET&rU*I@*A^uY*L1O}d1H3kMGDKR z1uxmEkqy+og-wqsK-twk30BeGPwr{cC5#eUtIsKj6p|24aoP>k*=LZ#JnRO*vDpp& zW~vAm#L!H3hZ|O{TX|DU*Pg+&7pU8~n;-7gkzQncP2A5mRg^u=;GUd(^wuoX*j7zK z&{rFbGt)m!=EwlcZ9eY3La=r?g>g?!jKVwe26beN^Vsi5GdB3s*LvN22M>OAO73PZ%2!;($Yz~;IZ{i6j@3TksEx>V^(7*=UNvSX}uh4XET?3;OL!=Ryw z8$ZGD`w{J;%Hr$5bW#vyF@T`aBYutID_;|MOP^51a~z?G^fL*mh2E5)i$G*HX`G89 zmuhY)>=;s_!{k(^wu9vxde)^FUJ zPqt43mlBm~)6FIwI#S477EK}p^Xt-;^0m+SHOC@>z8L+R`prmgXJTVhW?_bsa6QEp zy)?dOvhL<6b?wh#RN;0S%9$U1&>D?>f}S_<;cv`8^<+c>>Ps?OZtq1Y1;G1kr(0Sf ziXFW&2lrvnW+6&YHwP+Eh4_nba9-JwY>TQdpU{#9b(Bd>8}ChfdoLR>T6&EJF(x%5 zTuxfN;E^(lD+u))!yx$(3Ij00UUOA38mxv4=JB)P87PJp$eEnxvQx=Y<_w;9h%0If zSAD2Ll`nkuK9Bre{q!rF6;2;Rr2lM zvi=atWpLcd1v|U5t;3N#rdwtc| zw_$+7QVMJJ^*rzKuK)pp1p>w0yZqGQ>e_4WSk|9wIV)vK--H`$o`xx4^Q&Dw`;r-6 z$1t3Cn1KAEGyd+I8TSl~^KVOKakV=o*%b4VxU?AXoCX5>Lem zVV>gUEV4g#Nd5!F$m6=6=!(Gh8AKysJF0c01dZ^p5Ydso7p#op9`c~CXBYs=@GzCM zW7k%Oq--aZaz)J4ecerI`9byb`&SO^=d51M1!2oSi)-j6=LG+PTgsbi#jq5K(v9^X zacZo8UL2#m4{p2-o-w9lXUT>0!r|O-%XK0uwRV@WMHil5{1U^XR|U%rU=ch;`La|a zJO~pi6uqw%+W_XPxa87goEaQ}2zK{oIdLy|)zIVW00P|uk2AywM8#3D=kyBD_v9ry z9DI+Sl!PF0Qh+?o-cr6B}3c0|Olmx&L*XF5QKJRXE$tUgwM-0AC2lHL; zlC)k~K}{rY4FiU7pKAOTv+A8|5U7S*>%uPoY{;eZ*>bfjE@w7k5f z8C`$)SDw6%@|OI(zA+V%=)JX{h*UU8??XdJe!+5$4m_1q5SGVW@{G2cQ(sVEwz0CQ zyq0Y?ZII^bY;jQer|)kwcBWkjkpiTHYRyE0af+4cV>?JA^cpc-hAA zVzkJ3ToWND>;KW`gWlEVOJx;2&03$&X(ZKBQVePOgpB81SG!PSJZcbVg9u1>ND$_m z|wF%YM3DRs5}LUZ_60)mxr+6mFp{4LiIf zJ}EAGVYr-Dfi6#xv5I&Myz}T&q{8OUz{D5h;ySe`_mDKVmEIg>I>XN4uapsO`NLKC z0dnD_xw&iLPsq_PsRPjCv!S>;m4)d)5VDD?kZdboVVv=(@t&s!!?PhxdW&zY zS+e)$p;=m3=R4l71hExX^Juh*TsK`?dPP3+Ok}v&4RBVt1-5QBQvs&~Bjtt7cH)ut z1ayU5Y`XY4==2>Bg6ELLn!gmk-F$OZs~9dli=K+E`LYkl_=xJB_*?tt(OTR|&Srp5 z0^6P%`=@Jm@O^`EMiS>TrZ6gF04sgMIw;g4j@T)BPR)3FT2Jql5OT4(-D@mRjodAO zDpSG90AW^DVuUMXPl9K2G z=qQ;SpO$~>3N>-^{IoWlJ06E~_P-qibi?^(4{%_Fy|(-zucL_2MOJ?L`RM(r3IE60 zh1wdzZ(XcE*vM-ers;tbct70|>tbmG>S(JK62@6HmC!IOj*V4Hm0^%K%Aj`a%aqO? z^R?^Y9|Ee?;_s9cZG;Lns)U#5V@+5&3Y$cs_HJ*p2i`Nvh{tTTH@Uie`Yw8-A7h**Wt zRN+g6)+BaoNmw5a>N(>#+iaLV2T=0X`4y|rR~^lfmo|T|$3FlBq5uK*pwM!lEAOmnSV=Lk=f&j$;yS`Nen` z>vh3I&2j*11H%jNc;uThoq4mEhQ*ETm#1SD274ROo@{DZGEk$!8d8gHwhTyGJ?szP z;NF#4CT|3jf$_h_f$GB74OyPU8N&8-K)t2 zd<`zhr_YYapeVkuIj6(;7asbZZZ5$)9aW={l4GnEqiw^q9Mz-umnhzhd}O+FNji13 zE%__#b`c~>GI(J!+nXsm@}t=NLgf%!p@s&XHnWH>L1vQVjuz>_qIXHemME~wm!;_8 z^hxEYOdUMl@kZj&S6IPuly8=67=2MCXdfZz%LXKZfUDLOZ|WZ~4~&W{kfR;IQ!?QG zsJwq7+UEU>T1hfS(Z9{aQMgW!=O+-cmh648+);m$s63wC@XP1cXx7c{h&4@v{QyUu zd5qnyzC5?d!@(OsSk>0mY3fzQQI#XaQaZ0UeakJ9I3bzTwL%ymQhC6*5^iBFjGAnf zrTy+~xZQE*=%K@)UTV0X`kbq*y&SKU0ht!Rt^HFc@ptc!h{G1H7a>pv| zrgvCL&cuw1VN-qdw72t#^Yh4pdzPEN3pR4gtQInltymV-_t5%&^Fx64ymV&SI#{lk z`d91~*6%S**T5x!XQbV+RYeZ4NAR7iQ46 z#;-(IY8mh2p$DtO5h>NsKuvlc#xRlLb3fs}HVNX8yQYbxC)fr8yP}WT=Gy<1ng~{B zA88riS|OK5MQpusnn?}np8scwLOIUmA9~+h4HNxNwLn;Gb;kgyIoYLvN?G3~1IHL5 z2fQoW=+fC|7yApjQjOUIe6)tP3jW>>yCbd=b=}Jcqn8C0)ezLKg);j+9;NE*c35s# zE0^XWK{3Jb#qi7-R<$aciA_=@jH?sfBmsM$ur zaXT#S7AZfy#!jFiSH26;n4MmeIDHf_)^f^kq^Z(=u_6+X_6pZnK2}Mx$b7)9joInu zX=pv_g_*{8(hfotD){rH_@Ut6c^^J17MT0{8eM$FA1A%j#bP~`@pih?xk6-x|H}u5 z;Z{omfu>|@X9$yJl9FJd4}uBJKBLWkDjD}(7vm-hgMEfzXm%X2M%hkcMr)(JHx8Cg za%CUaa4(W9UQ4&Xu`->x8L}X#yV?Cl0@R(mnRN4qaXe`X*|D*RLYFKOt@J0p0N#yc zn!4?%TbIR7R4J7!Varkl%fOzZP{&>rRZRlZG|tG(E3Ip39vHpr08yqXb^k8=cy&wD zPv-M;KnM4DI`^bXUJBT>DApkdi_%htj(h`_2xQr=n);#|ycvpX&11C%>ZeK0F1g`z zSt@Y`j>MlG)dQ7HxuKk^^NGh<@M&{Pc&kfz>+Xi4 zLoBf43Sk{%2mlu_S|(Xw`xr`<_^T7V0qU$DfaHW}*x*8e-`T#-?<~Z&(Hwo4s>&LW zS1HhoF|x=>BTv<3c-oEb1phD>QVP;aH9DS9uypmLYr}zPYsv^a#s`{bT%SX5v51m! zW-6$1C|v+THqPWmC*9)TpZlBWmX^2WgJ`3iNa?6LKCXXVH&#WgO%zuj(@qkqjS33> zZN?nf-Tp*=fV&PuwcjE$P9l6+!%&K$nkvzty7;YnQ>(`%0M9>*)*4U#Nx!?*jN%%p z@gWA{bxQ)50UUK&!{ssD)d#!Kg`KKembNaDPDJIl>_s^X?AVrQ{+iAq8XY7J`sWIt zn|XX{Z0com*qiW zILK@jYx)W!iL|~uwn%ASvpbvx!r~d~R6D+XCOJ3f*F7p;V`0ygyvx{|G(^j1h4LlG zE?zg+-quR|d>+`F??n@s&G&O<7F^3Uo5al-nwLmLHd5i^(j&@Squ6FEZ3Ksie#AG6 zHM39<5qY4tDl^g(F`@T?&bL<7u2ov_CGOlbKLeqo|JRobNLD(#ngj{get=ZPS{^p+ zRqRctG}&a{5hz~+wG>~uA`Y%E(1r$hX|eB)1wKF+l-GFP-A+V@FJB)2iBEK3bCjL? z(Z`mBIs0}82tQ@CHAwi`M9JXkn5*b(m$H^!&HUi7_GdPU8X|vRO;vDbW|ZCJt*EE$ z+Lg^~?T4$ukDf*}viQ{NsK@(G7r8s`J032s8AaItF8=&`K%B)(E$nm4GOR@)J9d`*L(_*DmoTW0?GNJcQ z=ol~$PT7uP4roJBWqmIFQuRVI*RsP0WRO#$@qeo^f%GqX=8=lN=lcD^uWskvzbiOP zEU(|6zPT8lcBS(w#veA;#B@U2;D~iCy4#8mzs>%&KMp^H&hz|@W9R;k*>umb^FOr! zHGptMf#=7mlk_mv@UWFDFPY1(W`EGK`RMjg0_a;V?)=v}UWc*r1@wBk--@o(^bNo= zzeu#d+*3fopo38O=}O+8iuG6AtI>E>s$E0g_Ai zukgs&gW!kPP54%}E8R^I{_s0ZOw0;nHh#-8W!CJUCn#k>NRA_SkRWhsZrba45a<;O z@W@)+4*-k-dF-h&;Yb@l9%B?ffl!Qo8I4{i>krp*4$^T|NB+9v11!2A5cPOlbtD4K7IOpN3MS(W8Q=%}E9YcicK(Ewl%tmGXOb5v7q_1xP{-pZ z^Nr?*{P%BzQgM7$){*YCcF0GPz=P|^XT)FhH=@pk|NN1=dKh{fy5$tqlc;)4g@J!p zzLSW8?Wi-iJcrLUxxFUJ0Q#E$3|Rk7-;w*-f4rSe483!IdN`Rf-PsU7{lE^56ARhxlf;B_JvbZ6ALvw7KW%ZfEl{?{|L5JqNA& zoXKH;KmbD_fu1AT$ucjiz=CzH=r+6i;B)lb9+M` zKs^U5In2O7x99oT}T-{CXb509TO z>h(Cqjj5#x1GN7|(^m&n z@jmY^poEBkba!_nDUEb@cXzi+$^oRMB@T#mNSCB^cXxO9T|VF6{TF6uXD6STH;%;u zTCg3;WYi1!pT(t(1c70sH{(>H@6mxEhPLfdpf;6xW(xnXcd&v#tvD~l4rP^;Gt)-F zZE<$4p;;)d&4mL1G=sr-mPIll`UKLA`sxn4z0$uSmE+W(s0IzTI8_H73g3AN<$h6T z#I}--h)IbqvBRm3jM&g0)ZZ0I?cBtQ_KSBJ>l8*a>VGgJfpfF3+J<-{iIeh+_W z&z7}7Xe(=F<&2UoJ`lbWwdf8lrr>0A@e#cR6#&SBM}-#NbZUv`W?XJz=*MR2bbKTb zLS$OQl-Dk)~xh z!CF#Y6JC*u*xEYiEK)juRgT!}cbv*UJ4izZa%Hy`X+ zMb~?~z0R*f-DJPmdilcyp}bKH1d2j&BX`|=n@^R(CNXh#uwe713SqW*6xGPkA?kk=PW z!60=b8$a2o0L3D8lJW9yZvj)em>sUe-G=CDJRUq^44^y~boJsde38f2H8s<_=yDS< ztlhZl=_b}i*0%okzA_xu|GjZa1QV#!mMOG%?-pdT(0?Vx3ClPlSCY>)JEKn^pOQ$7 z478Pi>Dx&)oK3{eu_%HIABI^>JT`B3L_f_zb{Ctv9L6a3BR)_^r<|dKv37*b5JG_u zBP3}>K8fqNR~j`biAZt;3Jq=nc3S5(9dvd!^vz@XY~cs=bL2=q=Fg>0`Z+?;>K1?zMH>fE8_N6iKU9DC(+2F_ z^Fs@5gBUnWE$pR!=W}JJ<&2qvS=<$jb{^XN@fyDM8lPP1FTZVriqOCG*qZ#YFSP0t zea#IN`@WEfqS;1A=wC{@>ixi9gKbks=P>b+m*Sg@n~<+Yg9&nf2c{OuPPaLoBF7@0 zHTa$dt~M^DD4IP}_l#ZXzIFdU?Rrz2hs0&YPJuo6>?^ z^o4NR856Gqrd+q}Y@R4it^>a^ZRERcCJZ1O3TO7$ze|V6_W!4nos!U4JOu298gCE>tAnS>byJYQme<9J~0?;_%H%M z(OVH1BZ)XZdzsx!HhD2~#5S7|3Lkk_c5M<2z89y}2hVBLaf=kwm0nKZITIz40Yzdv z0vZILI6E)G^AmnwI01kL3aHRO+I+{-`$Tk$6KJ4K5YSVcIVR&EluU#xh`>Hl<|t6g zWIvWv{VUSxbG>cQWUkbOnW=y>&L(dj3^0W*kPD;twOdNBchN+&Icy4sUQYKpH$2xc|d9d6^x!JO(MjL&01GIR+s3;8$pA;8YjLM9* z0l!qsy`hkbz%=5H7F!x2$Q?wnD>j@ahe#DrjTo!oKC~cpO#@QF$+&70NoWr&P|o+l zf!g9^C~xZh^jkM>K#QOON`-HtF(&Sh2o$4AzXdeKAyo2va{F}1k-b1MR(7OS-?u!* z&)vyDIrEEvu`9)7zyHv9i%66z^FBqxao^PZuhSspZLi&LjhDWjOwb`*Ws7BQ_Q*pVizt*x%cjd4Uk4GOwlgSo+1+=4p1;IOC zGKy^pZ5%utSiTjGhc2jLi>FK!!vi4lgK@bj@rtXfI-yq?Og_j~q1a_n67S)yy^LXl zoI0v-+s@uoJASfKhTFwo(Lm#ip_FI98dVBF0m#BYZf~Qix_?1 zga2E7sm+l3=xOCr(?60yx?g{wv#oKVbNt2-;(!feeUUkoPD@`6RA1K!j04^v=4q%F zrMWYq;#+0v?sn*2SyR0DinSMX3t z9#mHciU12Zt%K%aEWJ?_}neB5t0d`g%ThA$=W-o zee_rdM8TX@6lNe8=l!d;_YFT2dR3`$th`a2`q9~ptt`ZG@GZ6QiGX%+UCszeUukSZ zIb($T)lYIxF)buj4z7^eIsi=p3~1S%&N%p(UBa>h0E>*%fl97p>;(5!(05T#tD+c~ z9QB3S3?v`Toubmv7sGdU1W*C85YQaqD(HXX;2X|h)ZT9E#o$YdOF0Swh;#zpFpTJ2 zUiRYQGN^Dy9poYnh1U6P2V6ifCK%S_ojH7E5l$#EZ-d^Dkq@FtPLO6WaDsk^CK?WC z86nC@iMOxtmZSgtQr8{zE89B#MEVu@KTwjN$eHYj`nLeRtd(djXSVZzKHNuKP&15Z zo#gluoN{1y@E$3j;0x#HM00=?0@?r@&6JOZ2$>sJ4U=XKAIFOl_9O4h10v$-i1r|( zi11gI;xABA6ueB$2!@U8`b+e*TTmYvIddOU;~02bUtIvG9%Np&34J&t-=JH9)T~l;5}mJT zip^k@w8cBQ$T*uOUk53Hs`w!W!E0(F=Q9|Cq5p=96I^Hus=Z_k4)}#Hp8vBhTEhq^ zk{Nt1N)miL8)V5)c)QOJ^O5#HRi(Q{t;6kJit4k?RBTo)=2ZSd%tZ zcMoJ3N}s+9NhNqZ)7AIZW4M2O6X4l3uUdFpQCLs1720&7J{Z&b&}>r7sro%LCX5^i zMhCxu5Sn1phnjaNTiD04@76WqrtjMlt(trb)uARR^;4Wy91PT6)Mq|_+&gM`uAZ!=H``(Vq1GfRU7Dw4ldYgm1{WCR!`+l0~6j471zVPqzC<1ae2cVYo3^{$u$qYk+*{r58aW0W!Os+1H)7dpNb#a zlr{tVg+~^;tG&Wpx0?@4lKeQHL)h}A6Zx-c8{ASE@5r;(>FfLs06-mFPd5@-D&WA| zw3RtID;TqJM%2Q5%bc~57ecBKsZdaV&Lq!jGdeBds|JbH!F1^(kS^4d_}jzcVobT2 zZD3>UG5KKsSs+ zGC@>MeL##H24&rQzoV<4{X^e_JP)6zaPqf${KDv{<^J7xYlmr<}{qGsO$X7eD9g9 zii)1rhy(8M$*+Wo@?965eG8D9y#&-i`M)roX>X>%5G_JV9L1rE`cI8iz2B??Bpsdo zwD7&R+284=XK%wrt3-~Cv}e*8^(ABeqLTO}8_!nJmFx?yNR9??=y{p;+qZ7uGo~9d z75YI#jK{~)a{cb&h?tSAl54W=MN~c*RMiK6XibKGwM1TZ9Gy?R#g$CHvR$tbz@Pvdn4BEvAZi5!9N`siD20!%__4hua0%+7PETlhC!4b-1If%RZ zBcYdz$gZgH@_zDC4kVbUteH{*hzuYac|CRwJ1@EY-H8DwjFoc>nGLG;)5(egEVVBd zq)NOH4DqgFrO2r_H+LclO)`;#??c7x6Z^jsLe`C|`lf2yxCbjK5s3r(W1VAOowpht zX#cNdRGjsUiGVeq$GDXDRn;^ZHI}QOx(g^VX~Ijm{31mp)V(977ZS6}W+Mqs+%C#t zdJM{zL;m06pD+Ad)e?x;-0SGpR91!FvQ3*-d272+Vkg1`vA&c%QvYEF%qA7|&FNK% zz!`8Zbx34Wp&$YQUdo8bcFY1QJ>3Sd_%;NI)~c zh@sq98##0UdHW!P`WkHY;vkK22+}jFlvE5KD$QgG!IPr@)$^e6CY90543YEiXcT8D z76?8;?Tb!lAW?B}sULu*^MVwl=aJ4n?A}{xqiJ+fIxD(_%rn+A)T~5j_?E^> zFq(@1cUrsz0;>ZM>$w(VfSoNJ;Qjd0`i5A7J!355YpGDE&UrUbt{E z=b=q{`h*Cy|HlQIU`WrmGl*mH&wOM!)gTcwjo|d)&|Md~DsAgK5^{28Op3gHRu=)TL==njv5o?% z|0ypSS+6H0se2e3-+$_iVSkEh+n*{za z($tXH1bV}`cx`PLED&jY^m?h{9sL$>D8$AMRj)$W^*VdK&W0UB&Jqr_hYR-OkN;SCE{+W(r1k$4G~7X> zkZ89QHP*i1!B98zh211?lL(9)zfj2l}O(6i9>ATjIa32@>Fi)2(wV$ zaD$7Cqzf;~qA<6%Xy9e1)bHH?PUiLwiALBcr73+#7DPNBXI}WQ&|*c#uNzbZoq+@< z>AA=5J9U|7UmL5rO#E|WO_UIp0}usY z`is}mri$`2s_|pz^k7~h7KiX+OQ7OF)k@JI3b!F~;`XROFt{tP?M!WDemou;G1}(- zLip~yzmIlf|KtQNiK%b4$!#ry6DutYEN4XDtYT<0;0#zZ9{ldcH^r26v zV1J4h;DrubN51SXgRy=!kZ{2U#RlJqL6MIs=GanB%V*;?mX(g8M>vfLtb!eklf+m> zBt|Z@BDPJ;U-}1{sSFz(-d>rQ2z_EN!dKHLIbtk9pq%)>4(% z=Ba7jvtSA+%3FMiwO;m63V99ezpQ>>p~o8j!wF?+sArrz4?&7Gk)xLj2^A~N8;ZHf z9e)qXST6L!PkyDo>$KwGMB)M!Db~f1r?9+I4pF)=-}P^Zu_HAD%c48*zotfA28*V< z(!V*NB3yI{P5B$EFVUOQ0&4KJpIX6I7SLh=ty%h)WyAHW|Ih*Fo|x#@x{Xvd!rg|u zO_|@0og^8O!yuLL3l*7D#@LLsgB7b2=o|08)lrh+eG~hwuT=UL@6_V#&5LjjFT#C| ztK<|+B&l1$LVgpKAodk=N}|liHIZxw4;I*exwerDEtU~0GPh%Bpjy;lnih>t@_m1w zTC?A$chUFj9AF0?x90!bPpe@Nl+JFa1H8QvB2tgq}xo zpHQH!0i5ualZ$U`Rnf~!uil6t`TpGDAvhB<6uKKtLo08b}E z1TNS%9}r?VEjH-&d; zrk*03>^z<5LV7;<$rCRo#0?hTZ+ z+Vg%p4Ta}kHOS1A65^i67&;ZOe_Is-DM56&(p^aU5A_PQ`Ido)LwC2L%_J}Uduh?< z1RE1>Ucad$qBA=+eYpQkja8dOg#s%A&pMT%te^Fn!f{Q*r`5BqimJXIWmg@E!=s1+ z-~<{}leIWTn2?jjsA!%JnzJOKap~H_$0)gbDWB%g&dXgBT!0-e=#WK5XSp4@_sfYb zhP$5uQ@fU9cW78e1zop`g!}Jd!GOQLTNQE?fF0=z?N3f_zNgj3+w9Mv)xo7kbhaTj zZ5{2FvQX+~ie`uBAIED^G=LrD3+>0drHjJ#+~d~Gc_^rRT=ds6bwc^F43cz7bpPW0 zk7gqc2$@8%{{LQp-fn&(U`FdDlEczcQg|O$2X-;6#x%XfUt62$RgJCB)DbFPMR|n{ z^L~AC>?jaV8@bccRegP254)b{P)#K6my{A0C(IC|r}}PV$Hxnv4iwzMB3u9$uU228 z6rUySh3!T~$4hxiii!$HC!122$)+4OxOkW0E?EHQmjnk8fEO{f{Z?kDeTx!(7)Zl2 zqq$pQXVv)u-EwC@6Dbq?(#OYw16MIESR#O%_NBSk(tJ>HUi0mi7~1!~%hd_UYL3b>A1yRm|XRVt&?h%WEz4x&!{Q*&BLSmZz8 z=e+{}ZdS1TPU6f!BgF2*mV72_4`pJ^#mG&5HMjgpFq!?r=Q6YyIEI(?mj(eSf7xAM zjO6LzbI|5HUJy+eGKEx&pU5A!651LfQ!2o}({!&~;n;buj13DA5P<4PRZ_7S%D|hu zma%pL7Zhfl!ZDmnaV?Y_(T6p~*8d{VWQ>0`7%jN~e=~vpWeQpH%EKDu4OiB(f))8< z7cq!)*GSEp#&;F4gnqR=fU{ia)lLWjZ4XL9M9!0jxBPt6x%#MOwUxA%?rfq}<9tZh z~a_ecu5keDk9$r>R2C!S{975+V9+J-+&F$oAY0`!_J$x#>XY5 z(0G3Zr2Q;#H(Yml@!K|?bJ?!mTm%Y~s5Fd1D=|}OSQQx<4Vbi;Va4^Ug)7Y%LsHud zdPuYQfYCb;1W%=NaBy906?GgpZDApUvWI>YhuO_+zxbQV?=%>*%Cbm(rtuf_LaC7Dnnn2!($di}y(dSynnCr0bfrG~wK zas8jM4(;J^*R`CnT&>zXlSk91$YY!3^ z{i>A1{lMrsvh^PdiV0T_S5874Es6nEX+d;)RhBnJpha8Bg%$w(265v@^SaxGk@+%x zuOk|0uk%1QB@A+hJz;(T6B#Hh>6X5?M3z&a@nmmXGTrBe38Qjzh3aal` z6!VD7(PNVuE^`ViZHG2xHKzpb|A=Q=xq1cEaf1OQQ)!tGZxC?Q&XVQKUIiN8Cl_~B z^>Z4gG&kp}@Uy|{A2E;8AbM&b2n$>-`NeAK(eRwOJtTZ@$`cvf{7sq;>*v)SwRBf^ z{$sKbZOff8onbo@5>T!JS~GE5P7$T);vi%@aBIu;g|~qm6vh+f0ok$D-1Iq0GQ1$9g`YpqM z-DdYdv~tEM-msbE;eHb9s;PKZtt> zuTaQTAec5~nggg4H*zQa*WZMFh+gE+f03Vv%Dl9!_B!R*7izM-p2Z!vD-%PTkU(Bo z-nsJa<}*I-d6qxTbGt8;ZXy@}76?I0+2nm8<(Zkjk8iz1z8%cEuT1%E9GvGx6fVsk z+A__sdi&dP;{LRy9r+jwncIO42ucG7<4Vm3g%QZZg6lZQX{{%dR$>&+%DdRWQM`l(=JEeRIT;sRZRY-Q7x;<#yb^L)|p>2mI{);3leDy4Q9&TAU%__^)Pz(Cwnrl$AudE|OLQ+{_E4 zLoka^0bsEGprvzt-1ZH;^E9X!dHNS`(GdD-E`m`po7aqPUfq(VVYpe>@A9KHHBD>@ zxU>h(-9G;NMfwj#kN4g)Fp=b7`JtYrXP!RyEYZJ`Q(HpnGwEmE6rsbk$%{6H+H`UW&P_1NG0aalenWDP^6)*! z5l=^E$VtJbctbePf`yY+^q^~;Dz4{KYRLGH)Clt0!}?(a;WjpsNYO9<@pM>xkDxA8 z>VlBGG#r5-K-q0xeLHLsXNjSux|KI2g#ocJB69gw&&0Oz3H8aW-Jm(i&$fC#t%+2= z{0jc?$bKsyI|@BY;g%%bKO!$3Ec@t}Ut~ zl1+_*BXQ~Oa#_Lt$oo7dK-lSke)&+|01b(0YD}lrRxzhJ9v$o?sbdI1RQYMy65_ll z?dCRl)I>2iGvHpr$@RhgLHbCv%rP0)RHm=}q-!bbkyMzkdbf~;y0O8z$yD2$K9Hhp z?iVJ*%-IMY=;T|dna<}_e_$d@K3Eb(%^eG8%#Gz|5jzPgE;e)BZ7jwqChqJFU1TO^ z>IUBHm!SHu<+eUt9i(7TR;SwYdpzN^7D(jQe-`Ridn|3_&w4oMJ$~B!$A7=&xwh%r z;n-|INW6Emv8{9DJ0lH^IPcRh*!!4{u1VnjhW)!8HO>LQ+TE&c{S(_VY7**HdR6MH z7+g$R`h+iC$UJ-avXb?M@g@Tv>ZPuNyS%k;7599vQ$5} z?$oAYM-FFHs9n7Au36X@p5_#cO~~BdbcL`na|#l(kkH}QMJEr-E;FEtMT*ytEQk(; zQw6(Q3v{(FI79>+??q7J2sr8KILC%!M{qCR8~yg3KYczP4qFb0vef~vAX|LiX`Mgo zDkFa2u^ce_eYx6GpHK8uC7klXJw5o>V#R&w^Iew1-2jf%vaf7!ND~E-@76%XSf>_P z0j5e?;99D(VxS8$6WX9L#q`X!p*X&FYMMDW(NHA8Ob(OUh*I zT!RQDJw35gt21X&7lPoaQ}{|VPTqW@kp}!t8~q+t2wVTpDZbNLgq$d@_REPCuaj%Y4gQs5tTaV=c>r}71_CGb;m zV+HvIy>B{F#%Uf@lq0)!i2WEh%E>}$QDg1!XT z3$mTa>$$g)aC+04E<{n{m8(O|^?zGNub0grpO%MF4byoqM9v>kds0&uMYCD?(g_Z- zK+Ch`fBDJF9arzfy);E9Hx4GqW0}_?)-HZ4iH6ucQjJ27Aq^RxJEu{)w4$B3qmr`I zB0no7E|tq3BR$`cq`M(sP1>05sXP?L^w?{@Q@qigyI2mOU()M%UgXdon#~a0BJt2u9Jf5Kx^m!o>hiS23Do#$ zYo}RzTEaqY>GBuV@S5|lhr`tKyrJUj7N2d39@GhtajvIM;H}+NBC2eXi036P>T!*V zv%@YY=dPnQN5FoenY`%3Er)jhPXx!>r?fJt!ewLFaJ_S6%Y_nSA{s=$@vMja7gVFk zec|A{g%}5V-0)|0XTV_>@O}nynE1u z?V*FbqiJmL&3p<~U-mjHd;StWeYD`;6L=ZcRk0dDflyyMecVvB`B^IF;kGsNZif}A z#A1F(zx6)mQN?+$Q@NDjFvkD)Q*>jD-+iE=z~@0O!Djz$`{f5B8V=vp3-`NMFam$mL%gGIh=wO1u4mv#WfsdGRD>(#1n*XU}rVnEB`D9wP{AiUsG ztTZ~4VP!cnUDvmo1CsN=OXJg!>qt|Mzg!F@P_t&SB~OEYY~88*)xr-xXW5IfB*zS9 zZz}6G((zB8&$efmjALA{j-1y6Z#53%J#`U=dAX2I>+f^*neH4P&nupkmnU{V&krv9 z&{z0Y1yp-F!0Lkg%m#0^3NUWt9j%YVKjyI!&UxRvf#s(jyXV(yetz@OzEAhh z^_ST_1wwpw`QwK%!V(aor>m?jmUoC9=}WH1Nd+{GdY{3nPa{1JF>3(rCaa1e_59e%EFT@8&vh{8I{bVxEVG_F-SiEtMp_HKL(F>C z%dYHIl$;#;{GRV)EhOF_>RZ_Bk1ru`j_>(D-P6~t?YEva+Zi6GkUXf@9P4e<2q*8% z*>z%c@=Wb-H)`Qoi`@?<~Oh)r&f<6#LFoyUM0L zb)(-~f`EI$P)7V$uJU?%9Gd}SZ)mjG~3G=52V?=t2N!q%gDoaMwEeLw!85ZMIc zEV5W~$CC-sg?}Vj9)1hC-*jDEvVW%tKl{b51Ou!n8wChWU|Ha<-N{w`Y{IFlbpI~7 z&oP`(5hdz=p0E1XC-g{18|)rtFH;T}(*e|(5pk!xoaAqM>wNFob`DI6ha9Wy=kvgKbFjiGrk8U0;i3fUdiYOwTmC>IWN4r0Tu8@gG23>hV}^a!=( zW3b#G8q{sMQFp-Yd0tyiij=(2YVx>0?5aR#$%^Fu!`fYk)q9a??R|m~F(eN?RhAs+ zHJ4fnELwn&JEgDvb6OnY=VbUTk#kxzv^!2C6Tc2&+q@4M%^tX|k`!=`vXvH39pa@6 z>=j7A5M0x1R5NI=m$qN>xh8pHLoyzgLutB+EL@i=_1^ccKNxAzWN$9eB@W2he3HtM zXY!$J`0Qhvj3Z%qTs8gK4D3WKMi_9=h7E>wAejZ!mYWX&7A~LB81dFcl~hq$0}KA- z%En05WvfoCxzpL3(HlXm@u4|Qo?h8wa~|r)<-@qPa>(GWP8Gk$)0qt2!DE4}MpnMs zl+yEje6m;m`~AIVbYHaeWiW{n!_P(wgV?t2ZK!!X13&c=8lt0b=Q(4?oXI(?KIRep z+MOlEs_))UR$)AWs>tZN{bWHO|DY=4{j^~2tZ+&9bd&i{lQ@F-(ETYZ%W@mF5F87z zg-{hAJBikX+_M(~P zKfsZ(@$+HkVSpwD@{2=+3@n=~8TQ~oxGe6sdP?<5w%Z%+mzJaHN8c_DF2YaiWY5`5z}q<_mF|+m^IJwC#3QbF{jY+0|M@OGs4HefLz^qosb< z-9zUps^xHoPOrqPuJ(;pRE}m#{G++~rrF-o5VpVC^vqv^%#kap$%q&2iFgkm(nu^GKRTP#y6>H5 z@c9`IZJC=!p{4ijF0lWq*D#B8MU5Jzdk%aYveW54c4~@1P7oCH1Eq%7Mq4@0`yGmtFZk)0Z$-aElo+^Wl;BK9bnT`i1qJFu{2lvjO zgG@eumHka&(2F9@4SiX!HUy`@QIYVuq_Z_15;*(OIcBLqv&h@EVBf?+hOoVFm(Ev1 z^QtdSkpTgO)80(>`t#~M`$@#P+I7vX0ukuAdfhUU-_bT<&5cuILoHacm>iYxNd(U< z18wqcJ)VY+FCUs6GjEEX=li$wwiEMdWY$fahy7Z?y_)FGi=;#TJvBBqWvr6jxTfrg z2XVxT<+5eZqC5ks4Iuomo`;@}YRM8zSD%eWwO6hY>9^?jp`z}cimxwTgKNq0Qm9F_ zsDw1aGs7fz;?;%bA*T%k{b14y@ZY+KNJ1dC_dSS@s8L|T*Bw5r_`tTdU&bv?uR+_p z6nWH7k_1j)@rR{#PJQcNcjB5lM=sBrDs0P?4%=XuNF`@7!26rFWTS7Z(bD}*Q7IOp zI-0YfHq}F<=EWkKsj=Hkr3V81CC23Xm+7BPZb=8~X-$2>BSl|y~ z5q$r=05_V|qD?!qH}JEzL~MC1AKbK*kfR3ia9|IX+;r8K=v5ZO_?vH0QXvU$2GHNm z7}W7B5@K^b>_Byu@V+QM?`@8qZ;axAYccs<6OH;^B~ON;iP^0)%6Gmner8z z`Q*gpVS{Q6O+9ru@^Z~N4#HZ-V#HPH!#|1AU3dQDh12=g`Rj+_?yJ@gTx30(`9K2* z?$>ibzmL5HPBvF-7q_nL$B+ZWUKe?Lh*`4<=cH>=I z!YXuhv&gSE?wsd)pOJQ07-4H5RrWni$h#QqEJ6B#bm4y7$XXB1gQa+agJIMwi8S38 zxSW>46dhGJ`&N}+W%>KwEH-bnAcuEzZ2`D;&CPx?RyAG_Q!8+z)$bo8j-Sfe->~!; z42%9L=aSP`-@w}3r91FB@4Wvyay!g_zW(nVjtPWU8~d<%@B*6J+n13B;jhI#Cay*3 zc}U`OcKA0xX)okakjV6Jz5%i**j-^zz{cdTKNd#)fOCyg>$&%QBHN3z%+hJPHttK2 zlEXLEn5Rak`+Yc237m-tKWZJcm-`+xU9TZ@*%S2!UUY2?FVWAG&W%EaojosZUSFr4 z@~I*&@##E7DN+YqBS+Lm&-B)Lop^AhB}4S@mA=?1w*=IAEi0Vs8p?s~L?YNNvvxe2u=D}-W0q={pk(T5T<9y$m9)6z26z!t?8s}mEKaEFD z`T6ATQB}x( z%zQ1^m%`5AaLzh#;2O08x0`p5GJk4S@9p7V3)Stq8m^}P;Jx`=UVOLcOYV*W*Xm=? zz-%fPDZcM{{OQ_G_&UB7=^&1^q`UDbVuFXBZd|vvR_Fpr5MNV-^`wu5h2QR!eG|(b z|EQ_JV%s5Kt*N$OgC@!wfYNm>3c5)DfVzi=gGh31KsNQk!CiZi3 zR-?@McLwsf7Q@ukAA-KWSzVNILy04i7fCCY?!MK{+OazMRRvTO*h`@ND@sWyHtNrI zJ}$|JWYVdj%?d2L_(QXnwLoxaH+Gff(RyzpWT+C|Lv8s8 z&Uz?3#josmkZbOi`fn?&pRWeHuimZaA|IuQJZ}Vf9=|(}<)`51#-mXE>uK1Rv2*@5 zgO7j8`c=h^{CwA1(xNh}zOTaW>k21Gfb+j9qNxd^j5$!qY@(!w1 z`twfm@sQ|_qLHGp5oKOg*sJ8Ed-c632*Iw8%5ihAB>i3Y+n;UY*A9O2*L<0E27v!|u(tMC`B2^9S7IuajGd?HvdnCRu!29tc3FztS*HBfR(6 zyPS|uUFR@yI5T-Z>6rTGa?I6IA!8@-cGgSQcX)ic+_FIN>CzCBraSFgXykU6MeC0{ zJ)#R7&Ryp7>_kMaBz^Pkxnj>e-@8Y{XB8i2=gghGrPKLk`nM>V5Btx_yk)KDnWe*i zbYmmZ;s#{G0V|I!IDxAc76WPx`y7Tc9`-^H$4~0@T2MckezBP5$DZd-7R=(*h9egL z660ZiJu3wZpNElvd@Y~;sgC6*)mF8JyTr|g%%vLFe(;+d?JZ@nx}^{d{fz?#T`6Mi z0@tdTPz6jVRpsbvzh?<}SgnL)C2O#91-Nfwu@PJ?OrLI8#uKGM#9cyUSA#_ZZcLt{ zNCHIz@Apx|ZZgC^XvHYrBMkGE5iw@spJ+B0hEQwqF~b&O^Mo;HWkOt7ls084O;U|g zf5zo*@kn>osn~G`5|O+|6zN4Ach6+#yVWmwwasXvGO;oHg^`8WTR-@xc*3g+Ig#u( zd~o9KOdKI;KQ9Rmu%%KpN*g?IxZsQ-u_G7aqTWjjGP~k>R+Qo^Gv@@jy_l+FgBGPu z(rfH>XgUI9ZXJW>+n#@NoL!iU!?7cLZtYeWTeteTn0aC;$yw48|88O| zd>IL22JyuR)6qKTUmI0TzxzDcq}no;PB>rza_bc}XZy>e5B#~rLURRFKTi*f(P5cS zLKtKKfKmHNTtw}T_`JD`fS02`{d8}m$K^q$hYo7Un6O>5?JUnRrYXdz0v}MZGJmzO z$=t%1e7JCZxZldmknLB-E5OSt#CP?#ad+Oq(SHY{F!NBOL9&WGTj(S<9Cw>OxQ81) z4$J-nHxVJP=`p_kftnB$|L!$rrn#c+CEqL>bR?AwR2iMq$5jfvBa-OTyaW8XT59*3e*gP3knog{g2 zNUWZ*@5UaQG>9@rcURize3wVZW<^+3kLtqg{9m_}QCpVX7%TkMs3B;%*8Jb$pklI3 z-=PaEUB8>IoTkjX_&@o1ZkCqa!hW828x?NXHQ;=vY`K|cZl<^gLl1f0^|f>Nhx3lu z(k~x3WnIkpc%AwJ_J8?%jHEG1lQ(>Jm?G#ilYE*yua^NYRa|i~_U(Ozh~?|EcM#K} zxvQ+l)B57nPT;^cyVk(A$<`6XQeE@>QC>fy{V5g1Ck+V6sjBo-82V!Ap4+Uq7h?`u zMvZEm#7c@`fS)$t>R8(uY|l_Sf8rrO&&8E(l<$#kz{;q&ZWwW-tp?>QEQ-y!{ojo5 zl)u%t&?kUE6&#O(yAXtyw&jQ5YkFp6H1FYopgjfjf)!CmSyE(^;=hEfHJDHhs^trx##IpO45&uYW6jrcE(R?%_{=FCBM-e=rr3h{v zS((c_PVAPFUC)gVyOK&vRZa7;@jU$G=~%Ice_>Xs?-KP(i;uo5zRCLQE*4tTs z=Vg#6*IzZnnSTFPpUF7)vP(yBCBUg&$m4Iu(7(9*=UPuo5f8O6n9$)5i~h+i{R^{F z{Z^*cT8KzwW@u?B-Hfmd)R>z&dJ#mLU7zR`R0>_F5@m?b5}G!8)hkpJJEIwDDoj~x z*g}nhgTH@7uKZ3#hQ!1%#)v;?WpUKvcD)-P#t)%NnK9xS_<7q}J3n4h&opWEH1Cc* zE@#sYe!`~>uApl<89cS35DrJI;U=!i<3zRL9KGeeA(XVS$Yg5WdHZSgAv@2SI1}!r zAU5)m{M9s@Ma;g{6^Y}h@hG05n-0^z180+JT!7yEKU<&`YC*kc^T+E-&3a{Er$w+Z zGo*fBTs z<-*Eukg15Q$h2DUfi09X{Ex5XaD77P%2*SH-Tl0Vqs65(eOA{Nz9klR$;K1upUO?i zP#%hl&JH1P5V-hEcVD0D24|nZsh+pHa5bq-Y)gGr{rc1^a@-y~l-%CH0%2?{RQNn0_|TsdVQ)_M5L$_5nM@Ru6;bt zpdaV_;VF-4Fe0pSVb~xthBHSux!tmSl7C)_svui^JBXB(et|X@$kPif-Je^EQ<=dgAGddh?r(tBZ%y5Pd3H3-ziJQf zP*S>NA#9fsvKT$@aE7nOuQD!U@o?Y4Z49qW zZ6HfXnQvOyH8p<7&29!$t;iJNdZ^oe(B60l2RWcZNl2JAU?(V18tg3M>@y0xnhRe? z#+4ja$W19&67raLt!Z%75lPX@4w+s1l0%bfNLq@DAn4g_#APpAYlr!yVjY?dn_b;-$%PiR&$&DQ>V8q2MJeK<91yo@|BShNu4DEqjr z_>G0|SC^^Ddf$!Zaeq3|X>)CDvEvOjrzqk3`UJm&ql-Cc#iG<+ZJDBj0mgH|^AL|8 zMQ}L3i9GZA_5GV{A`l~wbH zJ2KUtyeUaqd>FEphh{1thAs@Ylc?-<2a0hQ7eplAkmdalqKBw>Dsc^dfFb%A8Gon3X6I!LbvWDHMb+UTlUIJmx7PIc zGp*#X^xwR{O-7wgjI&MV3w*Ahk~)$(WA&~Ty?cPcpWuJT&2Oas8rU@FZmSR-$mSg#)#6cX92vf|Je@kd+;q*ZI+t(Zda5A zy1OkqK-K#DxOf6~9g`Pp58I0x^UP->%*-#^p8}u4?ryq@N~3CPYD*TK?s^@gj+V!3 zJRXw*ACeE^HdPB0rJ*XwIM)FWEwZh=yibu|t6U68R0c(`=FY2mM*m-XSN@fB)`zLL zu_hYzWXoHbW;2?WiKXV43uUWFT1c*_DH?8Ji#sl9lu@JQfS@TdmZ+GfSYR$di$Y3j zZs3ZhsknlWnEU&k_x%Ije_+nJ=iGCDxc8iU&ppq5KIcB4&oga+hMQe0i|Kd3lm)aq z)kGcK6WZuOC>Z_S=`i&Z%R#uk=}$6(jqXXWyy53DIa4%X&^g+c@mNdpUaK7p{|G+v z%gA!!ST+NZ1(`gRQ-j%>IkAE37j!t%r6l{d#g5@eDF%gu`_Kxyd@&&t*gk(tS#yI? z!f-CHM(j{aHaEz8>StIoFE5!g);D_vKQubz{uir}@-f5~)s5v@4OJC<^WL}p)&;xj z*T*fRwr;%Zn_9=O`!!9jbU9<~^Y(4h6H|lE8aq2O^v>}re>&C4QE$57h<#a7;K~~$ znFtf0s^a~+gJyPv=NlcdttpI-L%DGF_>1Un=8t#Iw7k%Lx00lvzm;OmBhV`f$R0HQ zn7vW(A5Yu2=%r<(1DNY-Y=GB14=?9q{@7A?#oOw(F%o9(mXA&JzGwtlx2&nmBTNil z;cDA4IW|fJEaPSXKl6U2iCcsTy84z8{ic?ymuoL9Cb^Lk$p|Uf!QOuUVi^Frfc~^1 z45&OhFU<848E}>Mjlf+Hsy1FRoT?FM?7eFRKu%qU;aIDU@*Bk0F}PvG>Ey`H$ET~c zg>3V2YflHuyigZ%J6E<-kw`bDBb!;02q3G8pLNQy&(*0ka`eK<@ZNaUgbWr)-)$^P z2Bbta?>Ch`Y|QR@k#pu0UK8=`fLuY8#Uy$^91h&=?0fK)Q%Ie2!Hx-h-L1ed2g>UA zBRhS;bbQWb4>vp2TxW@oHL{JwVZE{zqLnctA3u#)(S z*kUrcbWy07%7vdOCP8%iEfr0UX^fwFK9-(>N-LvQuQ@!iC5DcOd;eU5n{B1p`0VF( zFGw*|xIrFd;5-;p9mvTb+j;g3B>fgg8OSiJCw z=Unf*-BI#mg!b83TCqOQu+P_4Px~oHTo2Yy__(!bHhZp)n~-pPq$HeoSrV06ThWm? zjG@mb%(X(Ztjx5xr74v^T{EdfiK(&qB$xp)UzE>{jv?LAn&;jX*DGSu~p4TI(8lppx$kM@Xw(3EXR30{H zC_n82ix}->TleFzx2tqZ6PFuctP{2wZD9EN{UgubqAZ}$p6p$UrNWVhFjZoe}k&>;Y^**HTH5=3l`HPPK3eR|NPm#OT6*&b3%2xf7@yGwZC zq9ClN18Wg)_WCf5WUzj5*LKRxJ>3B#d@_YO=^If_v_w2)~u&QY>6EG zjs#`7051X*!LO{A;B?$$`UGlu%U`R zBMOe6-0p~}wH(+R9tvG6OR{WkQ2!$qH%xsBvv8{bjb)yN1Kx(i9nm$=0k4Fwrdc z%U4W&f5!Ea5Fajmg2TLX{WX96A9SGwTGV}(5RUBY`~8q@yh={B(?iV~{emJr50DgCuqd(uh%6RWgmRyxST=v38m=Iyn5W<&H~)zTaUuAOkEH%hRS)}t>} z^G#&hM7)YEBsIH^T)V<2a1fOLnm4!i|%aagFcGc19ih)Pgim6ue zbv5!g;aIi!Fb#J=InJXQkv__}?mE@=9igB*q-m)%E7s4;HPkCd7Rw!P9>#5yxB=nL z6!(W4fvtL(E0ZV6NpLPIt2U=#&Gfm&FF1D@KLO(5Uv^#6;cpVk&aHTjanitPP zd|=XLX7a7?P`_ouYOoxiL*>cQg~q~`06H>}p{XW|T7@u3l~hytrI`7=RuE`t?+K!K zoB9TcM=^^+iz|1_z8RkQ*<0IZ#ddQbn?06Igj92nmH^c1N61v(V~#C3oM z|M)i`I|-z@N3j>^9&U^M+XeaT1HiTy1Uh);pK1Rb$^X42%A`ZvYznmt)_}|c5Xj-2 L)7e+{*HZoi7z@?u diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png deleted file mode 100644 index 9b018c390531250defeddf0f093238f69012a6f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41450 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 -
diff --git a/data/plugins/grafana-piechart-panel/module.js b/data/plugins/grafana-piechart-panel/module.js deleted file mode 100644 index e625b5d2ec81f..0000000000000 --- a/data/plugins/grafana-piechart-panel/module.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see module.js.LICENSE.txt */ -define(["jquery","lodash","app/plugins/sdk","app/core/utils/kbn","app/core/config","app/core/time_series","angular"],(function(e,t,n,i,r,o,l){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=12)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=i},function(e,t){e.exports=r},function(e,t){e.exports=o},function(e,t){e.exports=l},function(e,t,n){var i,r;function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(l,a){"object"==o(t)&&void 0!==e?e.exports=a():void 0===(r="function"==typeof(i=a)?i.call(t,n,t,e):i)||(e.exports=r)}(0,(function(){"use strict";function e(e){return getComputedStyle(e)}function t(e,t){for(var n in t){var i=t[n];"number"==typeof i&&(i+="px"),e.style[n]=i}return e}function n(e){var t=document.createElement("div");return t.className=e,t}function i(e,t){if(!f)throw new Error("No element matching method supported");return f.call(e,t)}function r(e){e.remove?e.remove():e.parentNode&&e.parentNode.removeChild(e)}function o(e,t){return Array.prototype.filter.call(e.children,(function(e){return i(e,t)}))}function l(e,t){var n=e.element.classList,i=v.state.scrolling(t);n.contains(i)?clearTimeout(b[t]):n.add(i)}function a(e,t){b[t]=setTimeout((function(){return e.isAlive&&e.element.classList.remove(v.state.scrolling(t))}),e.settings.scrollingThreshold)}function s(e,t){l(e,t),a(e,t)}function c(e){if("function"==typeof window.CustomEvent)return new CustomEvent(e);var t=document.createEvent("CustomEvent");return t.initCustomEvent(e,!1,!1,void 0),t}function h(e){return parseInt(e,10)||0}function d(e){return i(e,"input,[contenteditable]")||i(e,"select,[contenteditable]")||i(e,"textarea,[contenteditable]")||i(e,"button,[contenteditable]")}function u(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function p(e,n){var i={width:n.railXWidth};n.isRtl?i.left=n.negativeScrollAdjustment+e.scrollLeft+n.containerWidth-n.contentWidth:i.left=e.scrollLeft,n.isScrollbarXUsingBottom?i.bottom=n.scrollbarXBottom-e.scrollTop:i.top=n.scrollbarXTop+e.scrollTop,t(n.scrollbarXRail,i);var r={top:e.scrollTop,height:n.railYHeight};n.isScrollbarYUsingRight?n.isRtl?r.right=n.contentWidth-(n.negativeScrollAdjustment+e.scrollLeft)-n.scrollbarYRight-n.scrollbarYOuterWidth:r.right=n.scrollbarYRight-e.scrollLeft:n.isRtl?r.left=n.negativeScrollAdjustment+e.scrollLeft+2*n.containerWidth-n.contentWidth-n.scrollbarYLeft-n.scrollbarYOuterWidth:r.left=n.scrollbarYLeft+e.scrollLeft,t(n.scrollbarYRail,r),t(n.scrollbarX,{left:n.scrollbarXLeft,width:n.scrollbarXWidth-n.railBorderXWidth}),t(n.scrollbarY,{top:n.scrollbarYTop,height:n.scrollbarYHeight-n.railBorderYWidth})}function g(e,t){function n(t){g[u]=f+b*(t[s]-v),l(e,p),k(e),t.stopPropagation(),t.preventDefault()}function i(){a(e,p),e.event.unbind(e.ownerDocument,"mousemove",n)}var r=t[0],o=t[1],s=t[2],c=t[3],h=t[4],d=t[5],u=t[6],p=t[7],g=e.element,f=null,v=null,b=null;e.event.bind(e[h],"mousedown",(function(t){f=g[u],v=t[s],b=(e[o]-e[r])/(e[c]-e[d]),e.event.bind(e.ownerDocument,"mousemove",n),e.event.once(e.ownerDocument,"mouseup",i),t.stopPropagation(),t.preventDefault()}))}var f=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,v={main:"ps",element:{thumb:function(e){return"ps__thumb-"+e},rail:function(e){return"ps__rail-"+e},consuming:"ps__child--consume"},state:{focus:"ps--focus",active:function(e){return"ps--active-"+e},scrolling:function(e){return"ps--scrolling-"+e}}},b={x:null,y:null},m=function(e){this.element=e,this.handlers={}},y={isEmpty:{configurable:!0}};m.prototype.bind=function(e,t){void 0===this.handlers[e]&&(this.handlers[e]=[]),this.handlers[e].push(t),this.element.addEventListener(e,t,!1)},m.prototype.unbind=function(e,t){var n=this;this.handlers[e]=this.handlers[e].filter((function(i){return!(!t||i===t)||(n.element.removeEventListener(e,i,!1),!1)}))},m.prototype.unbindAll=function(){for(var e in this.handlers)this.unbind(e)},y.isEmpty.get=function(){var e=this;return Object.keys(this.handlers).every((function(t){return 0===e.handlers[t].length}))},Object.defineProperties(m.prototype,y);var w=function(){this.eventElements=[]};w.prototype.eventElement=function(e){var t=this.eventElements.filter((function(t){return t.element===e}))[0];return t||(t=new m(e),this.eventElements.push(t)),t},w.prototype.bind=function(e,t,n){this.eventElement(e).bind(t,n)},w.prototype.unbind=function(e,t,n){var i=this.eventElement(e);i.unbind(t,n),i.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(i),1)},w.prototype.unbindAll=function(){this.eventElements.forEach((function(e){return e.unbindAll()})),this.eventElements=[]},w.prototype.once=function(e,t,n){var i=this.eventElement(e);i.bind(t,(function e(r){i.unbind(t,e),n(r)}))};var S=function(e,t,n,i,r){var o;if(void 0===i&&(i=!0),void 0===r&&(r=!1),"top"===t)o=["contentHeight","containerHeight","scrollTop","y","up","down"];else{if("left"!==t)throw new Error("A proper axis should be provided");o=["contentWidth","containerWidth","scrollLeft","x","left","right"]}!function(e,t,n,i,r){var o=n[0],l=n[1],a=n[2],h=n[3],d=n[4],u=n[5];void 0===i&&(i=!0),void 0===r&&(r=!1);var p=e.element;e.reach[h]=null,p[a]<1&&(e.reach[h]="start"),p[a]>e[o]-e[l]-1&&(e.reach[h]="end"),t&&(p.dispatchEvent(c("ps-scroll-"+h)),t<0?p.dispatchEvent(c("ps-scroll-"+d)):t>0&&p.dispatchEvent(c("ps-scroll-"+u)),i&&s(e,h)),e.reach[h]&&(t||r)&&p.dispatchEvent(c("ps-"+h+"-reach-"+e.reach[h]))}(e,n,o,i,r)},M=document&&"WebkitAppearance"in document.documentElement.style,Y=window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),T=navigator&&navigator.msMaxTouchPoints,k=function(e){var t=e.element;e.containerWidth=t.clientWidth,e.containerHeight=t.clientHeight,e.contentWidth=t.scrollWidth,e.contentHeight=t.scrollHeight,t.contains(e.scrollbarXRail)||(o(t,v.element.rail("x")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarXRail)),t.contains(e.scrollbarYRail)||(o(t,v.element.rail("y")).forEach((function(e){return r(e)})),t.appendChild(e.scrollbarYRail)),!e.settings.suppressScrollX&&e.containerWidth+e.settings.scrollXMarginOffset=e.railXWidth-e.scrollbarXWidth&&(e.scrollbarXLeft=e.railXWidth-e.scrollbarXWidth),e.scrollbarYTop>=e.railYHeight-e.scrollbarYHeight&&(e.scrollbarYTop=e.railYHeight-e.scrollbarYHeight),p(t,e),e.scrollbarXActive?t.classList.add(v.state.active("x")):(t.classList.remove(v.state.active("x")),e.scrollbarXWidth=0,e.scrollbarXLeft=0,t.scrollLeft=0),e.scrollbarYActive?t.classList.add(v.state.active("y")):(t.classList.remove(v.state.active("y")),e.scrollbarYHeight=0,e.scrollbarYTop=0,t.scrollTop=0)},X={"click-rail":function(e){e.event.bind(e.scrollbarY,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarYRail,"mousedown",(function(t){var n=t.pageY-window.pageYOffset-e.scrollbarYRail.getBoundingClientRect().top>e.scrollbarYTop?1:-1;e.element.scrollTop+=n*e.containerHeight,k(e),t.stopPropagation()})),e.event.bind(e.scrollbarX,"mousedown",(function(e){return e.stopPropagation()})),e.event.bind(e.scrollbarXRail,"mousedown",(function(t){var n=t.pageX-window.pageXOffset-e.scrollbarXRail.getBoundingClientRect().left>e.scrollbarXLeft?1:-1;e.element.scrollLeft+=n*e.containerWidth,k(e),t.stopPropagation()}))},"drag-thumb":function(e){g(e,["containerWidth","contentWidth","pageX","railXWidth","scrollbarX","scrollbarXWidth","scrollLeft","x"]),g(e,["containerHeight","contentHeight","pageY","railYHeight","scrollbarY","scrollbarYHeight","scrollTop","y"])},keyboard:function(e){var t=e.element,n=function(){return i(t,":hover")},r=function(){return i(e.scrollbarX,":focus")||i(e.scrollbarY,":focus")};e.event.bind(e.ownerDocument,"keydown",(function(i){if(!(i.isDefaultPrevented&&i.isDefaultPrevented()||i.defaultPrevented)&&(n()||r())){var o=document.activeElement?document.activeElement:e.ownerDocument.activeElement;if(o){if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var l=0,a=0;switch(i.which){case 37:l=i.metaKey?-e.contentWidth:i.altKey?-e.containerWidth:-30;break;case 38:a=i.metaKey?e.contentHeight:i.altKey?e.containerHeight:30;break;case 39:l=i.metaKey?e.contentWidth:i.altKey?e.containerWidth:30;break;case 40:a=i.metaKey?-e.contentHeight:i.altKey?-e.containerHeight:-30;break;case 32:a=i.shiftKey?e.containerHeight:-e.containerHeight;break;case 33:a=e.containerHeight;break;case 34:a=-e.containerHeight;break;case 36:a=e.contentHeight;break;case 35:a=-e.contentHeight;break;default:return}e.settings.suppressScrollX&&0!==l||e.settings.suppressScrollY&&0!==a||(t.scrollTop-=a,t.scrollLeft+=l,k(e),function(n,i){var r=t.scrollTop;if(0===n){if(!e.scrollbarYActive)return!1;if(0===r&&i>0||r>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var o=t.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===o&&n<0||o>=e.contentWidth-e.containerWidth&&n>0)return!e.settings.wheelPropagation}return!0}(l,a)&&i.preventDefault())}}))},wheel:function(t){function n(t,n,i){if(!M&&r.querySelector("select:focus"))return!0;if(!r.contains(t))return!1;for(var o=t;o&&o!==r;){if(o.classList.contains(v.element.consuming))return!0;var l=e(o);if([l.overflow,l.overflowX,l.overflowY].join("").match(/(scroll|auto)/)){var a=o.scrollHeight-o.clientHeight;if(a>0&&!(0===o.scrollTop&&i>0||o.scrollTop===a&&i<0))return!0;var s=o.scrollLeft-o.clientWidth;if(s>0&&!(0===o.scrollLeft&&n<0||o.scrollLeft===s&&n>0))return!0}o=o.parentNode}return!1}function i(e){var i=function(e){var t=e.deltaX,n=-1*e.deltaY;return void 0!==t&&void 0!==n||(t=-1*e.wheelDeltaX/6,n=e.wheelDeltaY/6),e.deltaMode&&1===e.deltaMode&&(t*=10,n*=10),t!=t&&n!=n&&(t=0,n=e.wheelDelta),e.shiftKey?[-n,-t]:[t,n]}(e),o=i[0],l=i[1];if(!n(e.target,o,l)){var a=!1;t.settings.useBothWheelAxes?t.scrollbarYActive&&!t.scrollbarXActive?(l?r.scrollTop-=l*t.settings.wheelSpeed:r.scrollTop+=o*t.settings.wheelSpeed,a=!0):t.scrollbarXActive&&!t.scrollbarYActive&&(o?r.scrollLeft+=o*t.settings.wheelSpeed:r.scrollLeft-=l*t.settings.wheelSpeed,a=!0):(r.scrollTop-=l*t.settings.wheelSpeed,r.scrollLeft+=o*t.settings.wheelSpeed),k(t),(a=a||function(e,n){var i=r.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===i&&n>0||i>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var o=r.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===o&&e<0||o>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}(o,l))&&!e.ctrlKey&&(e.stopPropagation(),e.preventDefault())}}var r=t.element;void 0!==window.onwheel?t.event.bind(r,"wheel",i):void 0!==window.onmousewheel&&t.event.bind(r,"mousewheel",i)},touch:function(e){function t(t,n){var i=h.scrollTop,r=h.scrollLeft,o=Math.abs(t),l=Math.abs(n);if(l>o){if(n<0&&i===e.contentHeight-e.containerHeight||n>0&&0===i)return{stop:!e.settings.swipePropagation,prevent:0===window.scrollY}}else if(o>l&&(t<0&&r===e.contentWidth-e.containerWidth||t>0&&0===r))return{stop:!e.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function n(t,n){h.scrollTop-=n,h.scrollLeft-=t,k(e)}function i(){f=!0}function r(){f=!1}function o(e){return e.targetTouches?e.targetTouches[0]:e}function l(e){return!(e.pointerType&&"pen"===e.pointerType&&0===e.buttons||(!e.targetTouches||1!==e.targetTouches.length)&&(!e.pointerType||"mouse"===e.pointerType||e.pointerType===e.MSPOINTER_TYPE_MOUSE))}function a(e){if(l(e)){v=!0;var t=o(e);d.pageX=t.pageX,d.pageY=t.pageY,u=(new Date).getTime(),null!==g&&clearInterval(g),e.stopPropagation()}}function s(i){if(!v&&e.settings.swipePropagation&&a(i),!f&&v&&l(i)){var r=o(i),s={pageX:r.pageX,pageY:r.pageY},c=s.pageX-d.pageX,h=s.pageY-d.pageY;n(c,h),d=s;var g=(new Date).getTime(),b=g-u;b>0&&(p.x=c/b,p.y=h/b,u=g);var m=t(c,h),y=m.stop,w=m.prevent;y&&i.stopPropagation(),w&&i.preventDefault()}}function c(){!f&&v&&(v=!1,e.settings.swipeEasing&&(clearInterval(g),g=setInterval((function(){e.isInitialized?clearInterval(g):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(g):(n(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(g)}),10)))}if(Y||T){var h=e.element,d={},u=0,p={},g=null,f=!1,v=!1;Y?(e.event.bind(window,"touchstart",i),e.event.bind(window,"touchend",r),e.event.bind(h,"touchstart",a),e.event.bind(h,"touchmove",s),e.event.bind(h,"touchend",c)):T&&(window.PointerEvent?(e.event.bind(window,"pointerdown",i),e.event.bind(window,"pointerup",r),e.event.bind(h,"pointerdown",a),e.event.bind(h,"pointermove",s),e.event.bind(h,"pointerup",c)):window.MSPointerEvent&&(e.event.bind(window,"MSPointerDown",i),e.event.bind(window,"MSPointerUp",r),e.event.bind(h,"MSPointerDown",a),e.event.bind(h,"MSPointerMove",s),e.event.bind(h,"MSPointerUp",c)))}}},W=function(i,r){var o=this;if(void 0===r&&(r={}),"string"==typeof i&&(i=document.querySelector(i)),!i||!i.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");for(var l in this.element=i,i.classList.add(v.main),this.settings={handlers:["click-rail","drag-thumb","keyboard","wheel","touch"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1},r)o.settings[l]=r[l];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var a=function(){return i.classList.add(v.state.focus)},s=function(){return i.classList.remove(v.state.focus)};this.isRtl="rtl"===e(i).direction,this.isNegativeScroll=function(){var e,t=i.scrollLeft;return i.scrollLeft=-1,e=i.scrollLeft<0,i.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?i.scrollWidth-i.clientWidth:0,this.event=new w,this.ownerDocument=i.ownerDocument||document,this.scrollbarXRail=n(v.element.rail("x")),i.appendChild(this.scrollbarXRail),this.scrollbarX=n(v.element.thumb("x")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute("tabindex",0),this.event.bind(this.scrollbarX,"focus",a),this.event.bind(this.scrollbarX,"blur",s),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=e(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=h(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=h(c.borderLeftWidth)+h(c.borderRightWidth),t(this.scrollbarXRail,{display:"block"}),this.railXMarginWidth=h(c.marginLeft)+h(c.marginRight),t(this.scrollbarXRail,{display:""}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=n(v.element.rail("y")),i.appendChild(this.scrollbarYRail),this.scrollbarY=n(v.element.thumb("y")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute("tabindex",0),this.event.bind(this.scrollbarY,"focus",a),this.event.bind(this.scrollbarY,"blur",s),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var d=e(this.scrollbarYRail);this.scrollbarYRight=parseInt(d.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=h(d.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?function(t){var n=e(t);return h(n.width)+h(n.paddingLeft)+h(n.paddingRight)+h(n.borderLeftWidth)+h(n.borderRightWidth)}(this.scrollbarY):null,this.railBorderYWidth=h(d.borderTopWidth)+h(d.borderBottomWidth),t(this.scrollbarYRail,{display:"block"}),this.railYMarginHeight=h(d.marginTop)+h(d.marginBottom),t(this.scrollbarYRail,{display:""}),this.railYHeight=null,this.railYRatio=null,this.reach={x:i.scrollLeft<=0?"start":i.scrollLeft>=this.contentWidth-this.containerWidth?"end":null,y:i.scrollTop<=0?"start":i.scrollTop>=this.contentHeight-this.containerHeight?"end":null},this.isAlive=!0,this.settings.handlers.forEach((function(e){return X[e](o)})),this.lastScrollTop=i.scrollTop,this.lastScrollLeft=i.scrollLeft,this.event.bind(this.element,"scroll",(function(e){return o.onScroll(e)})),k(this)};return W.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,t(this.scrollbarXRail,{display:"block"}),t(this.scrollbarYRail,{display:"block"}),this.railXMarginWidth=h(e(this.scrollbarXRail).marginLeft)+h(e(this.scrollbarXRail).marginRight),this.railYMarginHeight=h(e(this.scrollbarYRail).marginTop)+h(e(this.scrollbarYRail).marginBottom),t(this.scrollbarXRail,{display:"none"}),t(this.scrollbarYRail,{display:"none"}),k(this),S(this,"top",0,!1,!0),S(this,"left",0,!1,!0),t(this.scrollbarXRail,{display:""}),t(this.scrollbarYRail,{display:""}))},W.prototype.onScroll=function(e){this.isAlive&&(k(this),S(this,"top",this.element.scrollTop-this.lastScrollTop),S(this,"left",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},W.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},W.prototype.removePsClasses=function(){this.element.className=this.element.className.split(" ").filter((function(e){return!e.match(/^ps([-_].+|)$/)})).join(" ")},W}))},function(e,t){var n,i;n=jQuery,i={series:{pie:{show:!1,radius:"auto",innerRadius:0,startAngle:1.5,tilt:1,shadow:{left:5,top:15,alpha:.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(e,t){return"
"+e+"
"+Math.round(t.percent)+"%
"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:.5}}}},n.plot.plugins.push({init:function(e){var t=null,i=null,r=null,o=null,l=null,a=null,s=!1,c=null,h=[];function d(e,o,l){s||(s=!0,t=e.getCanvas(),i=n(t).parent(),r=e.getOptions(),e.setData(function(e){for(var t=0,i=0,o=0,l=r.series.pie.combine.color,a=[],s=0;sr.series.pie.combine.threshold)&&a.push(n.extend(e[s],{data:[[1,c]],color:e[s].color,label:e[s].label,angle:c*Math.PI*2/t,percent:c/(t/100)}));return o>1&&a.push({data:[[1,i]],color:l,label:r.series.pie.combine.label,angle:i*Math.PI*2/t,percent:i/(t/100)}),a}(e.getData())))}function u(e,t){if(i){var h=e.getPlaceholder().width(),d=e.getPlaceholder().height(),u=i.children().filter(".legend").children().width()||0;c=t,s=!1,o=Math.min(h,d/r.series.pie.tilt)/2,a=d/2+r.series.pie.offset.top,l=h/2,"auto"==r.series.pie.offset.left?(r.legend.position.match("w")?l+=u/2:l-=u/2,lh-o&&(l=h-o)):l+=r.series.pie.offset.left;var g=e.getData(),f=0;do{f>0&&(o*=.95),f+=1,v(),r.series.pie.tilt<=.8&&b()}while(!m()&&f<10);f>=10&&(v(),i.prepend("
Could not draw pie with labels contained inside canvas
")),e.setSeries&&e.insertLegend&&(e.setSeries(g),e.insertLegend())}function v(){c.clearRect(0,0,h,d),i.children().filter(".pieLabel, .pieLabelBackground").remove()}function b(){var e=r.series.pie.shadow.left,t=r.series.pie.shadow.top,n=r.series.pie.shadow.alpha,i=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;if(!(i>=h/2-e||i*r.series.pie.tilt>=d/2-t||i<=10)){c.save(),c.translate(e,t),c.globalAlpha=n,c.fillStyle="#000",c.translate(l,a),c.scale(1,r.series.pie.tilt);for(var s=1;s<=10;s++)c.beginPath(),c.arc(0,0,i,0,2*Math.PI,!1),c.fill(),i-=s;c.restore()}}function m(){var e=Math.PI*r.series.pie.startAngle,t=r.series.pie.radius>1?r.series.pie.radius:o*r.series.pie.radius;c.save(),c.translate(l,a),c.scale(1,r.series.pie.tilt),c.save();for(var s=e,u=0;u0){for(c.save(),c.lineWidth=r.series.pie.stroke.width,s=e,u=0;u1?r.series.pie.label.radius:o*r.series.pie.label.radius,c=0;c=100*r.series.pie.label.threshold&&!u(g[c],t,c))return!1;t+=g[c].angle}return!0;function u(e,t,o){if(0==e.data[0][1])return!0;var c,u=r.legend.labelFormatter,p=r.series.pie.label.formatter;c=u?u(e.label,e):e.label,p&&(c=p(c,e));var g=(t+e.angle+t)/2,f=l+Math.round(Math.cos(g)*s),v=a+Math.round(Math.sin(g)*s)*r.series.pie.tilt,b=""+c+"";i.append(b);var m=i.children("#pieLabel"+o),y=v-m.height()/2,w=f-m.width()/2;if(m.css("top",y),m.css("left",w),0-y>0||0-w>0||d-(y+m.height())<0||h-(w+m.width())<0)return!1;if(0!=r.series.pie.label.background.opacity){var S=r.series.pie.label.background.color;null==S&&(S=e.color);var M="top:"+y+"px;left:"+w+"px;";n("
").css("opacity",r.series.pie.label.background.opacity).insertBefore(m)}return!0}}();function f(e,n,i){e<=0||isNaN(e)||(i?c.fillStyle=n:(c.strokeStyle=n,c.lineJoin="round"),c.beginPath(),Math.abs(e-2*Math.PI)>1e-9&&c.moveTo(0,0),c.arc(0,0,t,s,s+e/2,!1),c.arc(0,0,t,s+e/2,s+e,!1),c.closePath(),s+=e,i?c.fill():c.stroke())}}}function p(e){if(r.series.pie.innerRadius>0){e.save();var t=r.series.pie.innerRadius>1?r.series.pie.innerRadius:o*r.series.pie.innerRadius;e.globalCompositeOperation="destination-out",e.beginPath(),e.fillStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.fill(),e.closePath(),e.restore(),e.save(),e.beginPath(),e.strokeStyle=r.series.pie.stroke.color,e.arc(0,0,t,0,2*Math.PI,!1),e.stroke(),e.closePath(),e.restore()}}function g(e,t){for(var n=!1,i=-1,r=e.length,o=r-1;++i1?h.series.pie.radius:o*h.series.pie.radius,u=0;u1?t.series.pie.tilt=1:t.series.pie.tilt<0&&(t.series.pie.tilt=0))})),e.hooks.bindEvents.push((function(e,t){var n=e.getOptions();n.series.pie.show&&(n.grid.hoverable&&t.unbind("mousemove").mousemove(f),n.grid.clickable&&t.unbind("click").click(v))})),e.hooks.processDatapoints.push((function(e,t,n,i){e.getOptions().series.pie.show&&d(e)})),e.hooks.drawOverlay.push((function(e,t){e.getOptions().series.pie.show&&function(e,t){var n,i=e.getOptions(),r=i.series.pie.radius>1?i.series.pie.radius:o*i.series.pie.radius;t.save(),t.translate(l,a),t.scale(1,i.series.pie.tilt);for(var s=0;s1e-9&&t.moveTo(0,0),t.arc(0,0,r,n.startAngle,n.startAngle+n.angle/2,!1),t.arc(0,0,r,n.startAngle+n.angle/2,n.startAngle+n.angle,!1),t.closePath(),t.fill());p(t),t.restore()}(e,t)})),e.hooks.draw.push((function(e,t){e.getOptions().series.pie.show&&u(e,t)}))},options:i,name:"pie",version:"1.1"})},function(e,t){!function(e){function t(e,t){return t*Math.floor(e/t)}function n(e,t,n,i){if("function"==typeof e.strftime)return e.strftime(t);var r,o=function(e,t){return t=""+(null==t?"0":t),1==(e=""+e).length?t+e:e},l=[],a=!1,s=e.getHours(),c=s<12;null==n&&(n=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),null==i&&(i=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]),r=s>12?s-12:0==s?12:s;for(var h=0;h=c);++d);var u=h[d][0],p=h[d][1];if("year"==p){if(null!=l.minTickSize&&"year"==l.minTickSize[1])u=Math.floor(l.minTickSize[0]);else{var g=Math.pow(10,Math.floor(Math.log(e.delta/o.year)/Math.LN10)),f=e.delta/o.year/g;u=f<1.5?1:f<3?2:f<7.5?5:10,u*=g}u<1&&(u=1)}e.tickSize=l.tickSize||[u,p];var v=e.tickSize[0];p=e.tickSize[1];var b=v*o[p];"second"==p?i.setSeconds(t(i.getSeconds(),v)):"minute"==p?i.setMinutes(t(i.getMinutes(),v)):"hour"==p?i.setHours(t(i.getHours(),v)):"month"==p?i.setMonth(t(i.getMonth(),v)):"quarter"==p?i.setMonth(3*t(i.getMonth()/3,v)):"year"==p&&i.setFullYear(t(i.getFullYear(),v)),i.setMilliseconds(0),b>=o.minute&&i.setSeconds(0),b>=o.hour&&i.setMinutes(0),b>=o.day&&i.setHours(0),b>=4*o.day&&i.setDate(1),b>=2*o.month&&i.setMonth(t(i.getMonth(),3)),b>=2*o.quarter&&i.setMonth(t(i.getMonth(),6)),b>=o.year&&i.setMonth(0);var m,y=0,w=Number.NaN;do{if(m=w,w=i.getTime(),n.push(w),"month"==p||"quarter"==p)if(v<1){i.setDate(1);var S=i.getTime();i.setMonth(i.getMonth()+("quarter"==p?3:1));var M=i.getTime();i.setTime(w+y*o.hour+(M-S)*v),y=i.getHours(),i.setHours(0)}else i.setMonth(i.getMonth()+v*("quarter"==p?3:1));else"year"==p?i.setFullYear(i.getFullYear()+v):i.setTime(w+b)}while(w');function s(e,t){var n=t.data[0][t.data[0].length-1],r=2,o='
'+e+"
";return i.panel.legend.percentageDecimals&&(r=i.panel.legend.percentageDecimals),i.panel.legend.values&&i.panel.legend.percentage?o+i.formatValue(n)+"
"+t.percent.toFixed(r)+"%
":i.panel.legend.values?o+i.formatValue(n)+"":i.panel.legend.percentage?o+t.percent.toFixed(r)+"%":o+""}function c(){var e=t.width(),n=i.height-function(e){if(!i.panel.legend.show||"Right side"===i.panel.legendType||"On graph"===i.panel.legendType)return 20;if("Under graph"===i.panel.legendType&&i.panel.legend.percentage||i.panel.legend.values){var t=parseInt(i.panel.breakPoint,10)/100,n=23+20*r.length;return Math.min(n,Math.floor(e*t))}return 0}(i.height),c=Math.min(e,n),h=g()("
"),d={margin:"auto",position:"relative",paddingBottom:"20px",height:c+"px"};h.css(d);var u={legend:{show:!1},series:{pie:{radius:1,innerRadius:0,show:!0,stroke:{color:g()("body").css("background-color"),width:parseFloat(i.panel.strokeWidth).toFixed(1)},label:{show:i.panel.legend.show&&"On graph"===i.panel.legendType,formatter:s},highlight:{opacity:0},combine:{threshold:i.panel.combine.threshold,label:i.panel.combine.label}}},grid:{hoverable:!0,clickable:!1}};"donut"===o.pieType&&(u.series.pie.innerRadius=.5),r=i.data;for(var p=0;p
',r+='
'+l.a.escape(n.series.label)+": "+s,r+=" ("+o+"%)
",r+="
",a.html(r).place_tt(t.pageX+20,t.pageY)}else a.detach()}))}function h(e){i.data&&(r=i.data,0===i.data.length?t.html('
No data points
'):c(),e&&i.renderingCompleted())}i.events.on("render",(function(){"Right side"===o.legendType?(h(!1),setTimeout((function(){h(!0)}),50)):h(!0)}))}var v=n(6),b=n.n(v),m=(n(9),n(7)),y=n.n(m);b.a.module("grafana.directives").directive("piechartLegend",["popoverSrv","$timeout",function(e,t){return{link:function(n,i){var r,o,a,s,c,h=g()('
'),d=!0,u=n.ctrl,p=u.panel;function f(e){return e.parents("[data-series-index]").data("series-index")}function v(e){var t=g()(e.currentTarget);if(t&&t.text()!==p.combine.label){var n=f(t),i=a[n],r=g()(h.children("tbody")).scrollTop();u.toggleSeries(i),void 0!==r&&g()(h.children("tbody")).scrollTop(r)}}function b(e){var t=g()(e.currentTarget).data("stat");if(t!==p.legend.sort&&(p.legend.sortDesc=null),!1===p.legend.sortDesc)return p.legend.sort=null,p.legend.sortDesc=null,void u.render();p.legend.sortDesc=!p.legend.sortDesc,p.legend.sort=t,u.render()}function m(n){if(!g()(n.target).parents(".popover").length){var i=g()(n.currentTarget).find(".fa-minus"),r=f(i),l=o[r];t((function(){e.show({element:i[0],position:"right center",template:'',openOn:"hover",classNames:"drop-popover drop-popover--transparent",model:{autoClose:!0,series:l,toggleAxis:function(){},colorSelected:function(e){u.changeSeriesColor(l,e)}}})}))}}function w(e,t,n,i,r){var o='
"}n.$on("$destroy",(function(){c&&c.destroy()})),u.events.on("render",(function(){if(r=u.series){for(var e in r)r[e].color=u.data[e].color;!function(){if("On graph"===p.legendType||!p.legend.show)return h.empty(),void i.find(".piechart-legend").css("padding-top",0);i.find(".piechart-legend").css("padding-top",6);d&&(i.append(h),h.on("click",".piechart-legend-icon",m),h.on("click",".piechart-legend-alias",v),h.on("click","th",b),d=!1);o=r,a=u.data,h.empty();var e="Right side"===p.legendType&&p.legend.sideWidth?p.legend.sideWidth+"px":"",t="Right side"===p.legendType&&p.legend.sideWidth?p.legend.sideWidth-1+"px":"";i.css("min-width",e),i.css("width",t);var n,f=p.legend.values||p.legend.percentage,S=("Under graph"===p.legendType||"Right side"===p.legendType)&&f;if(h.toggleClass("piechart-legend-table",S),S){var M='';p.legend.values&&(M+=function(e){var t=e;p.legend.header&&(t=p.legend.header);var n=''+l.a.escape(t);if(p.legend.sort===e){var i=p.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";n+=' '}return n+""}(u.panel.valueName)),p.legend.percentage&&(M+=function(e){var t='percentage';if(p.legend.sort===e){var n=p.legend.sortDesc?"fa fa-caret-down":"fa fa-caret-up";t+=' '}return t+""}(u.panel.valueName)),M+="",n=g()(M)}var Y=0;if(p.legend.percentage)for(s=0;s0){if(void 0===p.legend.sortDesc||null===p.legend.sortDesc||p.legend.sortDesc)if(Object.keys(u.hiddenSeries).length>0){var R=void 0,x=void 0,D=function(e){R=a.find((function(t){return t.label===e})),(void 0===x||R.legendData>x)&&(x=R.legendData,k.color=R.color)};for(var P in u.hiddenSeries)D(P)}else k.color=o[o.length-T].color;else k.color=o[0].color;X.push(g()(w(k,a.length-T,Y,f,S)))}if(S){var H=g()("");void 0!==n&&H.append(n),H.append(X),h.append(H)}else h.append(X);"Under graph"===p.legendType?c?c.update():c=new y.a(i[0],{scrollYMarginOffset:2,suppressScrollX:!0}):c&&(c.destroy(),c=null)}()}}))}}}]);var w=function(e){function t(t,n,i){var r=e.call(this,t,n)||this;r.$rootScope=i,r.hiddenSeries={};var o={pieType:"pie",legend:{show:!0,values:!0},links:[],datasource:null,interval:null,targets:[{}],cacheTimeout:null,nullPointMode:"connected",legendType:"Under graph",breakPoint:"50%",aliasColors:{},format:"short",valueName:"current",strokeWidth:1,fontSize:"80%",combine:{threshold:0,label:"Others"}};return l.a.defaults(r.panel,o),l.a.defaults(r.panel.legend,o.legend),r.events.on("render",r.onRender.bind(r)),r.events.on("data-received",r.onDataReceived.bind(r)),r.events.on("data-error",r.onDataError.bind(r)),r.events.on("data-snapshot-load",r.onDataReceived.bind(r)),r.events.on("init-edit-mode",r.onInitEditMode.bind(r)),r.setLegendWidthForLegacyBrowser(),r}return t.$inject=["$scope","$injector","$rootScope"],function(e,t){function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype.onInitEditMode=function(){this.addEditorTab("Options","public/plugins/grafana-piechart-panel/editor.html",2),this.unitFormats=s.a.getUnitFormats()},t.prototype.setUnitFormat=function(e){this.panel.format=e.value,this.render()},t.prototype.onDataError=function(){this.series=[],this.render()},t.prototype.changeSeriesColor=function(e,t){e.color=t,this.panel.aliasColors[e.alias]=e.color,this.render()},t.prototype.migrateToPanel=function(e){this.onPluginTypeChange(h.a.panels[e])},t.prototype.onRender=function(){this.data=this.parseSeries(this.series)},t.prototype.parseSeries=function(e){var t=this;return l.a.map(this.series,(function(e,n){return{label:e.alias,data:e.stats[t.panel.valueName],color:t.panel.aliasColors[e.alias]||t.$rootScope.colors[n],legendData:e.stats[t.panel.valueName]}}))},t.prototype.onDataReceived=function(e){this.series=e.map(this.seriesHandler.bind(this)),this.data=this.parseSeries(this.series),this.render(this.data)},t.prototype.seriesHandler=function(e){var t=new u.a({datapoints:e.datapoints,alias:e.target});return t.flotpairs=t.getFlotPairs(this.panel.nullPointMode),t},t.prototype.getDecimalsForValue=function(e){if(l.a.isNumber(this.panel.decimals))return{decimals:this.panel.decimals,scaledDecimals:null};var t,n=e/2,i=-Math.floor(Math.log(n)/Math.LN10),r=Math.pow(10,-i),o=n/r;o<1.5?t=1:o<3?(t=2,o>2.25&&(t=2.5,++i)):t=o<7.5?5:10,t*=r,Math.floor(e)===e&&(i=0);var a={decimals:0,scaledDecimals:0};return a.decimals=Math.max(0,i),a.scaledDecimals=a.decimals-Math.floor(Math.log(t)/Math.LN10)+2,a},t.prototype.formatValue=function(e){var t=this.getDecimalsForValue(e),n=s.a.valueFormats[this.panel.format];return n?n(e,t.decimals,t.scaledDecimals):e},t.prototype.link=function(e,t,n,i){f(0,t,0,i)},t.prototype.toggleSeries=function(e){this.hiddenSeries[e.label]?delete this.hiddenSeries[e.label]:this.hiddenSeries[e.label]=!0,this.render()},t.prototype.onLegendTypeChanged=function(){this.setLegendWidthForLegacyBrowser(),this.render()},t.prototype.setLegendWidthForLegacyBrowser=function(){!!window.MSInputMethodContext&&!!document.documentMode&&"Right side"===this.panel.legendType&&!this.panel.legend.sideWidth&&(this.panel.legend.sideWidth=150)},t.templateUrl="module.html",t}(r.MetricsPanelCtrl);n.d(t,"PanelCtrl",(function(){return w})),Object(r.loadPluginCss)({dark:"plugins/grafana-piechart-panel/styles/dark.css",light:"plugins/grafana-piechart-panel/styles/light.css"})}])})); -//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt b/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt deleted file mode 100644 index f3f36ee139d7e..0000000000000 --- a/data/plugins/grafana-piechart-panel/module.js.LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -/*! - * perfect-scrollbar v1.2.0 - * (c) 2017 Hyunje Jun - * @license MIT - */ - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ diff --git a/data/plugins/grafana-piechart-panel/module.js.map b/data/plugins/grafana-piechart-panel/module.js.map deleted file mode 100644 index 260f4022009b9..0000000000000 --- a/data/plugins/grafana-piechart-panel/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"jquery\"","webpack:///external \"lodash\"","webpack:///external \"app/plugins/sdk\"","webpack:///external \"app/core/utils/kbn\"","webpack:///external \"app/core/config\"","webpack:///external \"app/core/time_series\"","webpack:///external \"angular\"","webpack:///./lib/perfect-scrollbar.min.js","webpack:///./lib/jquery.flot.pie.js","webpack:///./lib/jquery.flot.time.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./rendering.ts","webpack:///./legend.ts","webpack:///./piechart_ctrl.ts","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","__WEBPACK_EXTERNAL_MODULE__6__","e","define","this","getComputedStyle","style","document","createElement","className","v","Error","remove","parentNode","removeChild","Array","filter","children","element","classList","state","scrolling","contains","clearTimeout","w","add","setTimeout","isAlive","settings","scrollingThreshold","a","window","CustomEvent","createEvent","initCustomEvent","u","parseInt","f","minScrollbarLength","Math","max","maxScrollbarLength","min","b","width","railXWidth","isRtl","left","negativeScrollAdjustment","scrollLeft","containerWidth","contentWidth","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollTop","top","scrollbarXTop","scrollbarXRail","height","railYHeight","isScrollbarYUsingRight","right","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarYRail","scrollbarX","scrollbarXLeft","scrollbarXWidth","railBorderXWidth","scrollbarY","scrollbarYTop","scrollbarYHeight","railBorderYWidth","g","R","stopPropagation","preventDefault","event","unbind","ownerDocument","h","once","Element","matches","webkitMatchesSelector","msMatchesSelector","main","thumb","rail","consuming","focus","active","x","y","Y","handlers","X","isEmpty","configurable","push","addEventListener","removeEventListener","unbindAll","keys","every","length","defineProperties","W","eventElements","eventElement","splice","indexOf","forEach","reach","dispatchEvent","L","documentElement","DocumentTouch","navigator","msMaxTouchPoints","clientWidth","containerHeight","clientHeight","scrollWidth","contentHeight","scrollHeight","appendChild","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXMarginWidth","railXRatio","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYMarginHeight","railYRatio","T","pageY","pageYOffset","getBoundingClientRect","pageX","pageXOffset","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","which","metaKey","altKey","shiftKey","wheelPropagation","wheel","querySelector","overflow","overflowX","overflowY","join","match","deltaX","deltaY","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","target","useBothWheelAxes","wheelSpeed","ctrlKey","onwheel","onmousewheel","touch","abs","stop","swipePropagation","prevent","scrollY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","Date","getTime","clearInterval","swipeEasing","setInterval","isInitialized","PointerEvent","MSPointerEvent","H","nodeName","direction","isNegativeScroll","setAttribute","isNaN","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","paddingLeft","paddingRight","borderTopWidth","borderBottomWidth","marginTop","marginBottom","lastScrollTop","lastScrollLeft","onScroll","update","destroy","removePsClasses","split","$","options","jQuery","series","pie","show","radius","innerRadius","startAngle","tilt","shadow","alpha","offset","stroke","color","label","formatter","slice","round","percent","background","opacity","threshold","combine","highlight","plot","plugins","init","canvas","maxRadius","centerLeft","centerTop","processed","ctx","highlights","processDatapoints","datapoints","getCanvas","parent","getOptions","setData","data","total","combined","numCombined","newdata","isArray","parseFloat","isFinite","extend","angle","PI","getData","draw","newCtx","canvasWidth","getPlaceholder","canvasHeight","legendWidth","legend","position","slices","attempts","clear","drawShadow","drawPie","prepend","setSeries","insertLegend","clearRect","shadowLeft","shadowTop","save","translate","globalAlpha","fillStyle","scale","beginPath","arc","fill","restore","currentAngle","drawSlice","lineWidth","drawDonutHole","drawLabel","index","text","lf","labelFormatter","plf","halfAngle","cos","sin","html","append","labelTop","labelLeft","css","pos","insertBefore","drawLabels","strokeStyle","lineJoin","moveTo","closePath","layer","globalCompositeOperation","isPointInPoly","poly","pt","j","onMouseMove","triggerClickHoverEvent","onClick","eventname","item","mouseX","mouseY","isPointInPath","datapoint","dataIndex","seriesIndex","findNearbySlice","grid","autoHighlight","auto","unhighlight","indexOfHighlight","triggerRedrawOverlay","trigger","hooks","processOptions","bindEvents","eventHolder","hoverable","mousemove","clickable","click","drawOverlay","octx","version","floorInBase","base","floor","formatDate","fmt","monthNames","dayNames","strftime","hours12","leftPad","pad","escape","hours","getHours","isAM","charAt","getDay","getMonth","getDate","getMinutes","getSeconds","getFullYear","makeUtcWrapper","addProxyMethod","sourceObj","sourceMethod","targetObj","targetMethod","apply","arguments","utc","date","undefined","props","dateGenerator","ts","opts","timezone","timezoneJS","setTimezone","setTime","timeUnitSize","baseSpec","specMonths","concat","specQuarters","each","getAxes","axisName","axis","tickGenerator","ticks","minSize","spec","tickSize","minTickSize","delta","size","unit","magn","pow","log","year","LN10","norm","step","setSeconds","setMinutes","setHours","setMonth","setFullYear","setMilliseconds","minute","hour","day","setDate","month","quarter","prev","carry","Number","NaN","start","end","tickFormatter","timeformat","useQuarters","span","suffix","twelveHourClock","hourCode","xaxis","extendStatics","setPrototypeOf","__proto__","scope","elem","attrs","ctrl","panel","find","$tooltip","sliceData","decimal","fontSize","percentageDecimals","values","percentage","formatValue","toFixed","addPieChart","panelHeight","legendType","breakPoint","getLegendHeight","plotCanvas","plotCss","margin","paddingBottom","strokeWidth","pieType","hiddenSeries","sort","valueName","sortDesc","legendData","body","formatted","place_tt","detach","render","incrementRenderCounter","renderingCompleted","events","on","directive","popoverSrv","$timeout","link","seriesList","dataList","legendScrollbar","$container","firstRender","getSeriesIndexForElement","el","parents","toggleSeries","currentTarget","seriesInfo","scrollPosition","sortLegend","stat","openColorSelector","template","openOn","classNames","model","autoClose","toggleAxis","colorSelected","changeSeriesColor","generateLegendItem","showValues","tableLayout","$on","empty","sideWidth","ieWidth","legendHeader","toggleClass","header","statName","cssClass","getLegendHeaderHtml","getLegendPercentageHtml","stats","combineNum","combineVal","seriesElements","seriesData","hideEmpty","allIsNull","_el","_max","_key","tbodyElem","$scope","$injector","$rootScope","panelDefaults","links","datasource","interval","targets","cacheTimeout","nullPointMode","aliasColors","format","defaults","onRender","onDataReceived","onDataError","onInitEditMode","setLegendWidthForLegacyBrowser","__","constructor","addEditorTab","unitFormats","getUnitFormats","setUnitFormat","subItem","alias","migrateToPanel","type","onPluginTypeChange","panels","parseSeries","map","serie","colors","seriesHandler","flotpairs","getFlotPairs","getDecimalsForValue","isNumber","decimals","scaledDecimals","dec","result","decimalInfo","formatFunc","valueFormats","onLegendTypeChanged","MSInputMethodContext","documentMode","templateUrl","dark","light"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","module.exports = __WEBPACK_EXTERNAL_MODULE__6__;","/*!\n * perfect-scrollbar v1.2.0\n * (c) 2017 Hyunje Jun\n * @license MIT\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()}(this,function(){\"use strict\";function t(t){return getComputedStyle(t)}function e(t,e){for(var i in e){var n=e[i];\"number\"==typeof n&&(n+=\"px\"),t.style[i]=n}return t}function i(t){var e=document.createElement(\"div\");return e.className=t,e}function n(t,e){if(!v)throw new Error(\"No element matching method supported\");return v.call(t,e)}function r(t){t.remove?t.remove():t.parentNode&&t.parentNode.removeChild(t)}function l(t,e){return Array.prototype.filter.call(t.children,function(t){return n(t,e)})}function o(t,e){var i=t.element.classList,n=m.state.scrolling(e);i.contains(n)?clearTimeout(w[e]):i.add(n)}function s(t,e){w[e]=setTimeout(function(){return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))},t.settings.scrollingThreshold)}function a(t,e){o(t,e),s(t,e)}function c(t){if(\"function\"==typeof window.CustomEvent)return new CustomEvent(t);var e=document.createEvent(\"CustomEvent\");return e.initCustomEvent(t,!1,!1,void 0),e}function h(t,e,i,n,r){var l=i[0],o=i[1],s=i[2],h=i[3],u=i[4],d=i[5];void 0===n&&(n=!0),void 0===r&&(r=!1);var p=t.element;t.reach[h]=null,p[s]<1&&(t.reach[h]=\"start\"),p[s]>t[l]-t[o]-1&&(t.reach[h]=\"end\"),e&&(p.dispatchEvent(c(\"ps-scroll-\"+h)),e<0?p.dispatchEvent(c(\"ps-scroll-\"+u)):e>0&&p.dispatchEvent(c(\"ps-scroll-\"+d)),n&&a(t,h)),t.reach[h]&&(e||r)&&p.dispatchEvent(c(\"ps-\"+h+\"-reach-\"+t.reach[h]))}function u(t){return parseInt(t,10)||0}function d(t){return n(t,\"input,[contenteditable]\")||n(t,\"select,[contenteditable]\")||n(t,\"textarea,[contenteditable]\")||n(t,\"button,[contenteditable]\")}function p(e){var i=t(e);return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)}function f(t,e){return t.settings.minScrollbarLength&&(e=Math.max(e,t.settings.minScrollbarLength)),t.settings.maxScrollbarLength&&(e=Math.min(e,t.settings.maxScrollbarLength)),e}function b(t,i){var n={width:i.railXWidth};i.isRtl?n.left=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:n.left=t.scrollLeft,i.isScrollbarXUsingBottom?n.bottom=i.scrollbarXBottom-t.scrollTop:n.top=i.scrollbarXTop+t.scrollTop,e(i.scrollbarXRail,n);var r={top:t.scrollTop,height:i.railYHeight};i.isScrollbarYUsingRight?i.isRtl?r.right=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:r.right=i.scrollbarYRight-t.scrollLeft:i.isRtl?r.left=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:r.left=i.scrollbarYLeft+t.scrollLeft,e(i.scrollbarYRail,r),e(i.scrollbarX,{left:i.scrollbarXLeft,width:i.scrollbarXWidth-i.railBorderXWidth}),e(i.scrollbarY,{top:i.scrollbarYTop,height:i.scrollbarYHeight-i.railBorderYWidth})}function g(t,e){function i(e){f[d]=b+v*(e[a]-g),o(t,p),R(t),e.stopPropagation(),e.preventDefault()}function n(){s(t,p),t.event.unbind(t.ownerDocument,\"mousemove\",i)}var r=e[0],l=e[1],a=e[2],c=e[3],h=e[4],u=e[5],d=e[6],p=e[7],f=t.element,b=null,g=null,v=null;t.event.bind(t[h],\"mousedown\",function(e){b=f[d],g=e[a],v=(t[l]-t[r])/(t[c]-t[u]),t.event.bind(t.ownerDocument,\"mousemove\",i),t.event.once(t.ownerDocument,\"mouseup\",n),e.stopPropagation(),e.preventDefault()})}var v=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector,m={main:\"ps\",element:{thumb:function(t){return\"ps__thumb-\"+t},rail:function(t){return\"ps__rail-\"+t},consuming:\"ps__child--consume\"},state:{focus:\"ps--focus\",active:function(t){return\"ps--active-\"+t},scrolling:function(t){return\"ps--scrolling-\"+t}}},w={x:null,y:null},Y=function(t){this.element=t,this.handlers={}},X={isEmpty:{configurable:!0}};Y.prototype.bind=function(t,e){void 0===this.handlers[t]&&(this.handlers[t]=[]),this.handlers[t].push(e),this.element.addEventListener(t,e,!1)},Y.prototype.unbind=function(t,e){var i=this;this.handlers[t]=this.handlers[t].filter(function(n){return!(!e||n===e)||(i.element.removeEventListener(t,n,!1),!1)})},Y.prototype.unbindAll=function(){var t=this;for(var e in t.handlers)t.unbind(e)},X.isEmpty.get=function(){var t=this;return Object.keys(this.handlers).every(function(e){return 0===t.handlers[e].length})},Object.defineProperties(Y.prototype,X);var W=function(){this.eventElements=[]};W.prototype.eventElement=function(t){var e=this.eventElements.filter(function(e){return e.element===t})[0];return e||(e=new Y(t),this.eventElements.push(e)),e},W.prototype.bind=function(t,e,i){this.eventElement(t).bind(e,i)},W.prototype.unbind=function(t,e,i){var n=this.eventElement(t);n.unbind(e,i),n.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(n),1)},W.prototype.unbindAll=function(){this.eventElements.forEach(function(t){return t.unbindAll()}),this.eventElements=[]},W.prototype.once=function(t,e,i){var n=this.eventElement(t),r=function(t){n.unbind(e,r),i(t)};n.bind(e,r)};var y=function(t,e,i,n,r){void 0===n&&(n=!0),void 0===r&&(r=!1);var l;if(\"top\"===e)l=[\"contentHeight\",\"containerHeight\",\"scrollTop\",\"y\",\"up\",\"down\"];else{if(\"left\"!==e)throw new Error(\"A proper axis should be provided\");l=[\"contentWidth\",\"containerWidth\",\"scrollLeft\",\"x\",\"left\",\"right\"]}h(t,i,l,n,r)},L={isWebKit:document&&\"WebkitAppearance\"in document.documentElement.style,supportsTouch:window&&(\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),supportsIePointer:navigator&&navigator.msMaxTouchPoints},R=function(t){var e=t.element;t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight,e.contains(t.scrollbarXRail)||(l(e,m.element.rail(\"x\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarXRail)),e.contains(t.scrollbarYRail)||(l(e,m.element.rail(\"y\")).forEach(function(t){return r(t)}),e.appendChild(t.scrollbarYRail)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),b(e,t),t.scrollbarXActive?e.classList.add(m.state.active(\"x\")):(e.classList.remove(m.state.active(\"x\")),t.scrollbarXWidth=0,t.scrollbarXLeft=0,e.scrollLeft=0),t.scrollbarYActive?e.classList.add(m.state.active(\"y\")):(e.classList.remove(m.state.active(\"y\")),t.scrollbarYHeight=0,t.scrollbarYTop=0,e.scrollTop=0)},T={\"click-rail\":function(t){t.event.bind(t.scrollbarY,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarYRail,\"mousedown\",function(e){var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1:-1;t.element.scrollTop+=i*t.containerHeight,R(t),e.stopPropagation()}),t.event.bind(t.scrollbarX,\"mousedown\",function(t){return t.stopPropagation()}),t.event.bind(t.scrollbarXRail,\"mousedown\",function(e){var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().left>t.scrollbarXLeft?1:-1;t.element.scrollLeft+=i*t.containerWidth,R(t),e.stopPropagation()})},\"drag-thumb\":function(t){g(t,[\"containerWidth\",\"contentWidth\",\"pageX\",\"railXWidth\",\"scrollbarX\",\"scrollbarXWidth\",\"scrollLeft\",\"x\"]),g(t,[\"containerHeight\",\"contentHeight\",\"pageY\",\"railYHeight\",\"scrollbarY\",\"scrollbarYHeight\",\"scrollTop\",\"y\"])},keyboard:function(t){function e(e,n){var r=i.scrollTop;if(0===e){if(!t.scrollbarYActive)return!1;if(0===r&&n>0||r>=t.contentHeight-t.containerHeight&&n<0)return!t.settings.wheelPropagation}var l=i.scrollLeft;if(0===n){if(!t.scrollbarXActive)return!1;if(0===l&&e<0||l>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation}return!0}var i=t.element,r=function(){return n(i,\":hover\")},l=function(){return n(t.scrollbarX,\":focus\")||n(t.scrollbarY,\":focus\")};t.event.bind(t.ownerDocument,\"keydown\",function(n){if(!(n.isDefaultPrevented&&n.isDefaultPrevented()||n.defaultPrevented)&&(r()||l())){var o=document.activeElement?document.activeElement:t.ownerDocument.activeElement;if(o){if(\"IFRAME\"===o.tagName)o=o.contentDocument.activeElement;else for(;o.shadowRoot;)o=o.shadowRoot.activeElement;if(d(o))return}var s=0,a=0;switch(n.which){case 37:s=n.metaKey?-t.contentWidth:n.altKey?-t.containerWidth:-30;break;case 38:a=n.metaKey?t.contentHeight:n.altKey?t.containerHeight:30;break;case 39:s=n.metaKey?t.contentWidth:n.altKey?t.containerWidth:30;break;case 40:a=n.metaKey?-t.contentHeight:n.altKey?-t.containerHeight:-30;break;case 32:a=n.shiftKey?t.containerHeight:-t.containerHeight;break;case 33:a=t.containerHeight;break;case 34:a=-t.containerHeight;break;case 36:a=t.contentHeight;break;case 35:a=-t.contentHeight;break;default:return}t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a,i.scrollLeft+=s,R(t),e(s,a)&&n.preventDefault())}})},wheel:function(e){function i(t,i){var n=o.scrollTop;if(0===t){if(!e.scrollbarYActive)return!1;if(0===n&&i>0||n>=e.contentHeight-e.containerHeight&&i<0)return!e.settings.wheelPropagation}var r=o.scrollLeft;if(0===i){if(!e.scrollbarXActive)return!1;if(0===r&&t<0||r>=e.contentWidth-e.containerWidth&&t>0)return!e.settings.wheelPropagation}return!0}function n(t){var e=t.deltaX,i=-1*t.deltaY;return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6,i=t.wheelDeltaY/6),t.deltaMode&&1===t.deltaMode&&(e*=10,i*=10),e!==e&&i!==i&&(e=0,i=t.wheelDelta),t.shiftKey?[-i,-e]:[e,i]}function r(e,i,n){if(!L.isWebKit&&o.querySelector(\"select:focus\"))return!0;if(!o.contains(e))return!1;for(var r=e;r&&r!==o;){if(r.classList.contains(m.element.consuming))return!0;var l=t(r);if([l.overflow,l.overflowX,l.overflowY].join(\"\").match(/(scroll|auto)/)){var s=r.scrollHeight-r.clientHeight;if(s>0&&!(0===r.scrollTop&&n>0||r.scrollTop===s&&n<0))return!0;var a=r.scrollLeft-r.clientWidth;if(a>0&&!(0===r.scrollLeft&&i<0||r.scrollLeft===a&&i>0))return!0}r=r.parentNode}return!1}function l(t){var l=n(t),s=l[0],a=l[1];if(!r(t.target,s,a)){var c=!1;e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed:o.scrollTop+=s*e.settings.wheelSpeed,c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed,c=!0):(o.scrollTop-=a*e.settings.wheelSpeed,o.scrollLeft+=s*e.settings.wheelSpeed),R(e),(c=c||i(s,a))&&!t.ctrlKey&&(t.stopPropagation(),t.preventDefault())}}var o=e.element;void 0!==window.onwheel?e.event.bind(o,\"wheel\",l):void 0!==window.onmousewheel&&e.event.bind(o,\"mousewheel\",l)},touch:function(t){function e(e,i){var n=h.scrollTop,r=h.scrollLeft,l=Math.abs(e),o=Math.abs(i);if(o>l){if(i<0&&n===t.contentHeight-t.containerHeight||i>0&&0===n)return{stop:!t.settings.swipePropagation,prevent:0===window.scrollY}}else if(l>o&&(e<0&&r===t.contentWidth-t.containerWidth||e>0&&0===r))return{stop:!t.settings.swipePropagation,prevent:!0};return{stop:!0,prevent:!0}}function i(e,i){h.scrollTop-=i,h.scrollLeft-=e,R(t)}function n(){b=!0}function r(){b=!1}function l(t){return t.targetTouches?t.targetTouches[0]:t}function o(t){return!(t.pointerType&&\"pen\"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||\"mouse\"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))}function s(t){if(o(t)){g=!0;var e=l(t);u.pageX=e.pageX,u.pageY=e.pageY,d=(new Date).getTime(),null!==f&&clearInterval(f),t.stopPropagation()}}function a(n){if(!g&&t.settings.swipePropagation&&s(n),!b&&g&&o(n)){var r=l(n),a={pageX:r.pageX,pageY:r.pageY},c=a.pageX-u.pageX,h=a.pageY-u.pageY;i(c,h),u=a;var f=(new Date).getTime(),v=f-d;v>0&&(p.x=c/v,p.y=h/v,d=f);var m=e(c,h),w=m.stop,Y=m.prevent;w&&n.stopPropagation(),Y&&n.preventDefault()}}function c(){!b&&g&&(g=!1,t.settings.swipeEasing&&(clearInterval(f),f=setInterval(function(){t.isInitialized?clearInterval(f):p.x||p.y?Math.abs(p.x)<.01&&Math.abs(p.y)<.01?clearInterval(f):(i(30*p.x,30*p.y),p.x*=.8,p.y*=.8):clearInterval(f)},10)))}if(L.supportsTouch||L.supportsIePointer){var h=t.element,u={},d=0,p={},f=null,b=!1,g=!1;L.supportsTouch?(t.event.bind(window,\"touchstart\",n),t.event.bind(window,\"touchend\",r),t.event.bind(h,\"touchstart\",s),t.event.bind(h,\"touchmove\",a),t.event.bind(h,\"touchend\",c)):L.supportsIePointer&&(window.PointerEvent?(t.event.bind(window,\"pointerdown\",n),t.event.bind(window,\"pointerup\",r),t.event.bind(h,\"pointerdown\",s),t.event.bind(h,\"pointermove\",a),t.event.bind(h,\"pointerup\",c)):window.MSPointerEvent&&(t.event.bind(window,\"MSPointerDown\",n),t.event.bind(window,\"MSPointerUp\",r),t.event.bind(h,\"MSPointerDown\",s),t.event.bind(h,\"MSPointerMove\",a),t.event.bind(h,\"MSPointerUp\",c)))}}},H=function(n,r){var l=this;if(void 0===r&&(r={}),\"string\"==typeof n&&(n=document.querySelector(n)),!n||!n.nodeName)throw new Error(\"no element is specified to initialize PerfectScrollbar\");this.element=n,n.classList.add(m.main),this.settings={handlers:[\"click-rail\",\"drag-thumb\",\"keyboard\",\"wheel\",\"touch\"],maxScrollbarLength:null,minScrollbarLength:null,scrollingThreshold:1e3,scrollXMarginOffset:0,scrollYMarginOffset:0,suppressScrollX:!1,suppressScrollY:!1,swipePropagation:!0,swipeEasing:!0,useBothWheelAxes:!1,wheelPropagation:!1,wheelSpeed:1};for(var o in r)l.settings[o]=r[o];this.containerWidth=null,this.containerHeight=null,this.contentWidth=null,this.contentHeight=null;var s=function(){return n.classList.add(m.state.focus)},a=function(){return n.classList.remove(m.state.focus)};this.isRtl=\"rtl\"===t(n).direction,this.isNegativeScroll=function(){var t=n.scrollLeft,e=null;return n.scrollLeft=-1,e=n.scrollLeft<0,n.scrollLeft=t,e}(),this.negativeScrollAdjustment=this.isNegativeScroll?n.scrollWidth-n.clientWidth:0,this.event=new W,this.ownerDocument=n.ownerDocument||document,this.scrollbarXRail=i(m.element.rail(\"x\")),n.appendChild(this.scrollbarXRail),this.scrollbarX=i(m.element.thumb(\"x\")),this.scrollbarXRail.appendChild(this.scrollbarX),this.scrollbarX.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarX,\"focus\",s),this.event.bind(this.scrollbarX,\"blur\",a),this.scrollbarXActive=null,this.scrollbarXWidth=null,this.scrollbarXLeft=null;var c=t(this.scrollbarXRail);this.scrollbarXBottom=parseInt(c.bottom,10),isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1,this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0,this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth),e(this.scrollbarXRail,{display:\"block\"}),this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight),e(this.scrollbarXRail,{display:\"\"}),this.railXWidth=null,this.railXRatio=null,this.scrollbarYRail=i(m.element.rail(\"y\")),n.appendChild(this.scrollbarYRail),this.scrollbarY=i(m.element.thumb(\"y\")),this.scrollbarYRail.appendChild(this.scrollbarY),this.scrollbarY.setAttribute(\"tabindex\",0),this.event.bind(this.scrollbarY,\"focus\",s),this.event.bind(this.scrollbarY,\"blur\",a),this.scrollbarYActive=null,this.scrollbarYHeight=null,this.scrollbarYTop=null;var h=t(this.scrollbarYRail);this.scrollbarYRight=parseInt(h.right,10),isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1,this.scrollbarYLeft=u(h.left)):this.isScrollbarYUsingRight=!0,this.scrollbarYOuterWidth=this.isRtl?p(this.scrollbarY):null,this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth),e(this.scrollbarYRail,{display:\"block\"}),this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom),e(this.scrollbarYRail,{display:\"\"}),this.railYHeight=null,this.railYRatio=null,this.reach={x:n.scrollLeft<=0?\"start\":n.scrollLeft>=this.contentWidth-this.containerWidth?\"end\":null,y:n.scrollTop<=0?\"start\":n.scrollTop>=this.contentHeight-this.containerHeight?\"end\":null},this.isAlive=!0,this.settings.handlers.forEach(function(t){return T[t](l)}),this.lastScrollTop=n.scrollTop,this.lastScrollLeft=n.scrollLeft,this.event.bind(this.element,\"scroll\",function(t){return l.onScroll(t)}),R(this)};return H.prototype.update=function(){this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0,e(this.scrollbarXRail,{display:\"block\"}),e(this.scrollbarYRail,{display:\"block\"}),this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight),this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom),e(this.scrollbarXRail,{display:\"none\"}),e(this.scrollbarYRail,{display:\"none\"}),R(this),y(this,\"top\",0,!1,!0),y(this,\"left\",0,!1,!0),e(this.scrollbarXRail,{display:\"\"}),e(this.scrollbarYRail,{display:\"\"}))},H.prototype.onScroll=function(t){this.isAlive&&(R(this),y(this,\"top\",this.element.scrollTop-this.lastScrollTop),y(this,\"left\",this.element.scrollLeft-this.lastScrollLeft),this.lastScrollTop=this.element.scrollTop,this.lastScrollLeft=this.element.scrollLeft)},H.prototype.destroy=function(){this.isAlive&&(this.event.unbindAll(),r(this.scrollbarX),r(this.scrollbarY),r(this.scrollbarXRail),r(this.scrollbarYRail),this.removePsClasses(),this.element=null,this.scrollbarX=null,this.scrollbarY=null,this.scrollbarXRail=null,this.scrollbarYRail=null,this.isAlive=!1)},H.prototype.removePsClasses=function(){this.element.className=this.element.className.split(\" \").filter(function(t){return!t.match(/^ps([-_].+|)$/)}).join(\" \")},H});","/* Flot plugin for rendering pie charts.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nThe plugin assumes that each series has a single data value, and that each\nvalue is a positive integer or zero. Negative numbers don't make sense for a\npie chart, and have unpredictable results. The values do NOT need to be\npassed in as percentages; the plugin will calculate the total and per-slice\npercentages internally.\n\n* Created by Brian Medendorp\n\n* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars\n\nThe plugin supports these options:\n\n\tseries: {\n\t\tpie: {\n\t\t\tshow: true/false\n\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'\n\t\t\tinnerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect\n\t\t\tstartAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result\n\t\t\ttilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)\n\t\t\toffset: {\n\t\t\t\ttop: integer value to move the pie up or down\n\t\t\t\tleft: integer value to move the pie left or right, or 'auto'\n\t\t\t},\n\t\t\tstroke: {\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')\n\t\t\t\twidth: integer pixel width of the stroke\n\t\t\t},\n\t\t\tlabel: {\n\t\t\t\tshow: true/false, or 'auto'\n\t\t\t\tformatter: a user-defined function that modifies the text/style of the label text\n\t\t\t\tradius: 0-1 for percentage of fullsize, or a specified pixel length\n\t\t\t\tbackground: {\n\t\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')\n\t\t\t\t\topacity: 0-1\n\t\t\t\t},\n\t\t\t\tthreshold: 0-1 for the percentage value at which to hide labels (if they're too small)\n\t\t\t},\n\t\t\tcombine: {\n\t\t\t\tthreshold: 0-1 for the percentage value at which to combine slices (if they're too small)\n\t\t\t\tcolor: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined\n\t\t\t\tlabel: any text value of what the combined slice should be labeled\n\t\t\t}\n\t\t\thighlight: {\n\t\t\t\topacity: 0-1\n\t\t\t}\n\t\t}\n\t}\n\nMore detail and specific examples can be found in the included HTML file.\n\n*/\n\n(function($) {\n\n\t// Maximum redraw attempts when fitting labels within the plot\n\n\tvar REDRAW_ATTEMPTS = 10;\n\n\t// Factor by which to shrink the pie when fitting labels within the plot\n\n\tvar REDRAW_SHRINK = 0.95;\n\n\tfunction init(plot) {\n\n\t\tvar canvas = null,\n\t\t\ttarget = null,\n\t\t\toptions = null,\n\t\t\tmaxRadius = null,\n\t\t\tcenterLeft = null,\n\t\t\tcenterTop = null,\n\t\t\tprocessed = false,\n\t\t\tctx = null;\n\n\t\t// interactive variables\n\n\t\tvar highlights = [];\n\n\t\t// add hook to determine if pie plugin in enabled, and then perform necessary operations\n\n\t\tplot.hooks.processOptions.push(function(plot, options) {\n\t\t\tif (options.series.pie.show) {\n\n\t\t\t\toptions.grid.show = false;\n\n\t\t\t\t// set labels.show\n\n\t\t\t\tif (options.series.pie.label.show == \"auto\") {\n\t\t\t\t\tif (options.legend.show) {\n\t\t\t\t\t\toptions.series.pie.label.show = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.label.show = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// set radius\n\n\t\t\t\tif (options.series.pie.radius == \"auto\") {\n\t\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\t\toptions.series.pie.radius = 3/4;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions.series.pie.radius = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ensure sane tilt\n\n\t\t\t\tif (options.series.pie.tilt > 1) {\n\t\t\t\t\toptions.series.pie.tilt = 1;\n\t\t\t\t} else if (options.series.pie.tilt < 0) {\n\t\t\t\t\toptions.series.pie.tilt = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.bindEvents.push(function(plot, eventHolder) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tif (options.grid.hoverable) {\n\t\t\t\t\teventHolder.unbind(\"mousemove\").mousemove(onMouseMove);\n\t\t\t\t}\n\t\t\t\tif (options.grid.clickable) {\n\t\t\t\t\teventHolder.unbind(\"click\").click(onClick);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tprocessDatapoints(plot, series, data, datapoints);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.drawOverlay.push(function(plot, octx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdrawOverlay(plot, octx);\n\t\t\t}\n\t\t});\n\n\t\tplot.hooks.draw.push(function(plot, newCtx) {\n\t\t\tvar options = plot.getOptions();\n\t\t\tif (options.series.pie.show) {\n\t\t\t\tdraw(plot, newCtx);\n\t\t\t}\n\t\t});\n\n\t\tfunction processDatapoints(plot, series, datapoints) {\n\t\t\tif (!processed)\t{\n\t\t\t\tprocessed = true;\n\t\t\t\tcanvas = plot.getCanvas();\n\t\t\t\ttarget = $(canvas).parent();\n\t\t\t\toptions = plot.getOptions();\n\t\t\t\tplot.setData(combine(plot.getData()));\n\t\t\t}\n\t\t}\n\n\t\tfunction combine(data) {\n\n\t\t\tvar total = 0,\n\t\t\t\tcombined = 0,\n\t\t\t\tnumCombined = 0,\n\t\t\t\tcolor = options.series.pie.combine.color,\n\t\t\t\tnewdata = [];\n\n\t\t\t// Fix up the raw data from Flot, ensuring the data is numeric\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\n\t\t\t\tvar value = data[i].data;\n\n\t\t\t\t// If the data is an array, we'll assume that it's a standard\n\t\t\t\t// Flot x-y pair, and are concerned only with the second value.\n\n\t\t\t\t// Note how we use the original array, rather than creating a\n\t\t\t\t// new one; this is more efficient and preserves any extra data\n\t\t\t\t// that the user may have stored in higher indexes.\n\n\t\t\t\tif ($.isArray(value) && value.length == 1) {\n \t\t\t\tvalue = value[0];\n\t\t\t\t}\n\n\t\t\t\tif ($.isArray(value)) {\n\t\t\t\t\t// Equivalent to $.isNumeric() but compatible with jQuery < 1.7\n\t\t\t\t\tif (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {\n\t\t\t\t\t\tvalue[1] = +value[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue[1] = 0;\n\t\t\t\t\t}\n\t\t\t\t} else if (!isNaN(parseFloat(value)) && isFinite(value)) {\n\t\t\t\t\tvalue = [1, +value];\n\t\t\t\t} else {\n\t\t\t\t\tvalue = [1, 0];\n\t\t\t\t}\n\n\t\t\t\tdata[i].data = [value];\n\t\t\t}\n\n\t\t\t// Sum up all the slices, so we can calculate percentages for each\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\ttotal += data[i].data[0][1];\n\t\t\t}\n\n\t\t\t// Count the number of slices with percentages below the combine\n\t\t\t// threshold; if it turns out to be just one, we won't combine.\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (value / total <= options.series.pie.combine.threshold) {\n\t\t\t\t\tcombined += value;\n\t\t\t\t\tnumCombined++;\n\t\t\t\t\tif (!color) {\n\t\t\t\t\t\tcolor = data[i].color;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < data.length; ++i) {\n\t\t\t\tvar value = data[i].data[0][1];\n\t\t\t\tif (numCombined < 2 || value / total > options.series.pie.combine.threshold) {\n\t\t\t\t\tnewdata.push(\n\t\t\t\t\t\t$.extend(data[i], { /* extend to allow keeping all other original data values\n\t\t\t\t\t\t and using them e.g. in labelFormatter. */\n\t\t\t\t\t\t\tdata: [[1, value]],\n\t\t\t\t\t\t\tcolor: data[i].color,\n\t\t\t\t\t\t\tlabel: data[i].label,\n\t\t\t\t\t\t\tangle: value * Math.PI * 2 / total,\n\t\t\t\t\t\t\tpercent: value / (total / 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (numCombined > 1) {\n\t\t\t\tnewdata.push({\n\t\t\t\t\tdata: [[1, combined]],\n\t\t\t\t\tcolor: color,\n\t\t\t\t\tlabel: options.series.pie.combine.label,\n\t\t\t\t\tangle: combined * Math.PI * 2 / total,\n\t\t\t\t\tpercent: combined / (total / 100)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn newdata;\n\t\t}\n\n\t\tfunction draw(plot, newCtx) {\n\n\t\t\tif (!target) {\n\t\t\t\treturn; // if no series were passed\n\t\t\t}\n\n\t\t\tvar canvasWidth = plot.getPlaceholder().width(),\n\t\t\t\tcanvasHeight = plot.getPlaceholder().height(),\n\t\t\t\tlegendWidth = target.children().filter(\".legend\").children().width() || 0;\n\n\t\t\tctx = newCtx;\n\n\t\t\t// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!\n\n\t\t\t// When combining smaller slices into an 'other' slice, we need to\n\t\t\t// add a new series. Since Flot gives plugins no way to modify the\n\t\t\t// list of series, the pie plugin uses a hack where the first call\n\t\t\t// to processDatapoints results in a call to setData with the new\n\t\t\t// list of series, then subsequent processDatapoints do nothing.\n\n\t\t\t// The plugin-global 'processed' flag is used to control this hack;\n\t\t\t// it starts out false, and is set to true after the first call to\n\t\t\t// processDatapoints.\n\n\t\t\t// Unfortunately this turns future setData calls into no-ops; they\n\t\t\t// call processDatapoints, the flag is true, and nothing happens.\n\n\t\t\t// To fix this we'll set the flag back to false here in draw, when\n\t\t\t// all series have been processed, so the next sequence of calls to\n\t\t\t// processDatapoints once again starts out with a slice-combine.\n\t\t\t// This is really a hack; in 0.9 we need to give plugins a proper\n\t\t\t// way to modify series before any processing begins.\n\n\t\t\tprocessed = false;\n\n\t\t\t// calculate maximum radius and center point\n\n\t\t\tmaxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;\n\t\t\tcenterTop = canvasHeight / 2 + options.series.pie.offset.top;\n\t\t\tcenterLeft = canvasWidth / 2;\n\n\t\t\tif (options.series.pie.offset.left == \"auto\") {\n\t\t\t\tif (options.legend.position.match(\"w\")) {\n\t\t\t\t\tcenterLeft += legendWidth / 2;\n\t\t\t\t} else {\n\t\t\t\t\tcenterLeft -= legendWidth / 2;\n\t\t\t\t}\n\t\t\t\tif (centerLeft < maxRadius) {\n\t\t\t\t\tcenterLeft = maxRadius;\n\t\t\t\t} else if (centerLeft > canvasWidth - maxRadius) {\n\t\t\t\t\tcenterLeft = canvasWidth - maxRadius;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcenterLeft += options.series.pie.offset.left;\n\t\t\t}\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\tattempts = 0;\n\n\t\t\t// Keep shrinking the pie's radius until drawPie returns true,\n\t\t\t// indicating that all the labels fit, or we try too many times.\n\n\t\t\tdo {\n\t\t\t\tif (attempts > 0) {\n\t\t\t\t\tmaxRadius *= REDRAW_SHRINK;\n\t\t\t\t}\n\t\t\t\tattempts += 1;\n\t\t\t\tclear();\n\t\t\t\tif (options.series.pie.tilt <= 0.8) {\n\t\t\t\t\tdrawShadow();\n\t\t\t\t}\n\t\t\t} while (!drawPie() && attempts < REDRAW_ATTEMPTS)\n\n\t\t\tif (attempts >= REDRAW_ATTEMPTS) {\n\t\t\t\tclear();\n\t\t\t\ttarget.prepend(\"
Could not draw pie with labels contained inside canvas
\");\n\t\t\t}\n\n\t\t\tif (plot.setSeries && plot.insertLegend) {\n\t\t\t\tplot.setSeries(slices);\n\t\t\t\tplot.insertLegend();\n\t\t\t}\n\n\t\t\t// we're actually done at this point, just defining internal functions at this point\n\n\t\t\tfunction clear() {\n\t\t\t\tctx.clearRect(0, 0, canvasWidth, canvasHeight);\n\t\t\t\ttarget.children().filter(\".pieLabel, .pieLabelBackground\").remove();\n\t\t\t}\n\n\t\t\tfunction drawShadow() {\n\n\t\t\t\tvar shadowLeft = options.series.pie.shadow.left;\n\t\t\t\tvar shadowTop = options.series.pie.shadow.top;\n\t\t\t\tvar edge = 10;\n\t\t\t\tvar alpha = options.series.pie.shadow.alpha;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\tif (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {\n\t\t\t\t\treturn;\t// shadow would be outside canvas, so don't draw it\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(shadowLeft,shadowTop);\n\t\t\t\tctx.globalAlpha = alpha;\n\t\t\t\tctx.fillStyle = \"#000\";\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\n\t\t\t\t//radius -= edge;\n\n\t\t\t\tfor (var i = 1; i <= edge; i++) {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2, false);\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tradius -= i;\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\n\t\t\tfunction drawPie() {\n\n\t\t\t\tvar startAngle = Math.PI * options.series.pie.startAngle;\n\t\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\t\t// center and rotate to starting position\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(centerLeft,centerTop);\n\t\t\t\tctx.scale(1, options.series.pie.tilt);\n\t\t\t\t//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera\n\n\t\t\t\t// draw slices\n\n\t\t\t\tctx.save();\n\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\tslices[i].startAngle = currentAngle;\n\t\t\t\t\tdrawSlice(slices[i].angle, slices[i].color, true);\n\t\t\t\t}\n\t\t\t\tctx.restore();\n\n\t\t\t\t// draw slice outlines\n\n\t\t\t\tif (options.series.pie.stroke.width > 0) {\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.lineWidth = options.series.pie.stroke.width;\n\t\t\t\t\tcurrentAngle = startAngle;\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tdrawSlice(slices[i].angle, options.series.pie.stroke.color, false);\n\t\t\t\t\t}\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\n\t\t\t\t// draw donut hole\n\n\t\t\t\tdrawDonutHole(ctx);\n\n\t\t\t\tctx.restore();\n\n\t\t\t\t// Draw the labels, returning true if they fit within the plot\n\n\t\t\t\tif (options.series.pie.label.show) {\n\t\t\t\t\treturn drawLabels();\n\t\t\t\t} else return true;\n\n\t\t\t\tfunction drawSlice(angle, color, fill) {\n\n\t\t\t\t\tif (angle <= 0 || isNaN(angle)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fillStyle = color;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.strokeStyle = color;\n\t\t\t\t\t\tctx.lineJoin = \"round\";\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tif (Math.abs(angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t}\n\n\t\t\t\t\t//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\t//ctx.rotate(angle); // This doesn't work properly in Opera\n\t\t\t\t\tcurrentAngle += angle;\n\n\t\t\t\t\tif (fill) {\n\t\t\t\t\t\tctx.fill();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction drawLabels() {\n\n\t\t\t\t\tvar currentAngle = startAngle;\n\t\t\t\t\tvar radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;\n\n\t\t\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\t\t\t\t\t\tif (slices[i].percent >= options.series.pie.label.threshold * 100) {\n\t\t\t\t\t\t\tif (!drawLabel(slices[i], currentAngle, i)) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentAngle += slices[i].angle;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\n\t\t\t\t\tfunction drawLabel(slice, startAngle, index) {\n\n\t\t\t\t\t\tif (slice.data[0][1] == 0) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// format label text\n\n\t\t\t\t\t\tvar lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;\n\n\t\t\t\t\t\tif (lf) {\n\t\t\t\t\t\t\ttext = lf(slice.label, slice);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttext = slice.label;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (plf) {\n\t\t\t\t\t\t\ttext = plf(text, slice);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar halfAngle = ((startAngle + slice.angle) + startAngle) / 2;\n\t\t\t\t\t\tvar x = centerLeft + Math.round(Math.cos(halfAngle) * radius);\n\t\t\t\t\t\tvar y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;\n\n\t\t\t\t\t\tvar html = \"\" + text + \"\";\n\t\t\t\t\t\ttarget.append(html);\n\n\t\t\t\t\t\tvar label = target.children(\"#pieLabel\" + index);\n\t\t\t\t\t\tvar labelTop = (y - label.height() / 2);\n\t\t\t\t\t\tvar labelLeft = (x - label.width() / 2);\n\n\t\t\t\t\t\tlabel.css(\"top\", labelTop);\n\t\t\t\t\t\tlabel.css(\"left\", labelLeft);\n\n\t\t\t\t\t\t// check to make sure that the label is not outside the canvas\n\n\t\t\t\t\t\tif (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.series.pie.label.background.opacity != 0) {\n\n\t\t\t\t\t\t\t// put in the transparent background separately to avoid blended labels and label boxes\n\n\t\t\t\t\t\t\tvar c = options.series.pie.label.background.color;\n\n\t\t\t\t\t\t\tif (c == null) {\n\t\t\t\t\t\t\t\tc = slice.color;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar pos = \"top:\" + labelTop + \"px;left:\" + labelLeft + \"px;\";\n\t\t\t\t\t\t\t$(\"
\")\n\t\t\t\t\t\t\t\t.css(\"opacity\", options.series.pie.label.background.opacity)\n\t\t\t\t\t\t\t\t.insertBefore(label);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t} // end individual label function\n\t\t\t\t} // end drawLabels function\n\t\t\t} // end drawPie function\n\t\t} // end draw function\n\n\t\t// Placed here because it needs to be accessed from multiple locations\n\n\t\tfunction drawDonutHole(layer) {\n\t\t\tif (options.series.pie.innerRadius > 0) {\n\n\t\t\t\t// subtract the center\n\n\t\t\t\tlayer.save();\n\t\t\t\tvar innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;\n\t\t\t\tlayer.globalCompositeOperation = \"destination-out\"; // this does not work with excanvas, but it will fall back to using the stroke color\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.fillStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.fill();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// add inner stroke\n\n\t\t\t\tlayer.save();\n\t\t\t\tlayer.beginPath();\n\t\t\t\tlayer.strokeStyle = options.series.pie.stroke.color;\n\t\t\t\tlayer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);\n\t\t\t\tlayer.stroke();\n\t\t\t\tlayer.closePath();\n\t\t\t\tlayer.restore();\n\n\t\t\t\t// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.\n\t\t\t}\n\t\t}\n\n\t\t//-- Additional Interactive related functions --\n\n\t\tfunction isPointInPoly(poly, pt) {\n\t\t\tfor(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)\n\t\t\t\t((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))\n\t\t\t\t&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])\n\t\t\t\t&& (c = !c);\n\t\t\treturn c;\n\t\t}\n\n\t\tfunction findNearbySlice(mouseX, mouseY) {\n\n\t\t\tvar slices = plot.getData(),\n\t\t\t\toptions = plot.getOptions(),\n\t\t\t\tradius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,\n\t\t\t\tx, y;\n\n\t\t\tfor (var i = 0; i < slices.length; ++i) {\n\n\t\t\t\tvar s = slices[i];\n\n\t\t\t\tif (s.pie.show) {\n\n\t\t\t\t\tctx.save();\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t\t//ctx.scale(1, options.series.pie.tilt);\t// this actually seems to break everything when here.\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);\n\t\t\t\t\tctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);\n\t\t\t\t\tctx.closePath();\n\t\t\t\t\tx = mouseX - centerLeft;\n\t\t\t\t\ty = mouseY - centerTop;\n\n\t\t\t\t\tif (ctx.isPointInPath) {\n\t\t\t\t\t\tif (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// excanvas for IE doesn;t support isPointInPath, this is a workaround.\n\n\t\t\t\t\t\tvar p1X = radius * Math.cos(s.startAngle),\n\t\t\t\t\t\t\tp1Y = radius * Math.sin(s.startAngle),\n\t\t\t\t\t\t\tp2X = radius * Math.cos(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp2Y = radius * Math.sin(s.startAngle + s.angle / 4),\n\t\t\t\t\t\t\tp3X = radius * Math.cos(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp3Y = radius * Math.sin(s.startAngle + s.angle / 2),\n\t\t\t\t\t\t\tp4X = radius * Math.cos(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),\n\t\t\t\t\t\t\tp5X = radius * Math.cos(s.startAngle + s.angle),\n\t\t\t\t\t\t\tp5Y = radius * Math.sin(s.startAngle + s.angle),\n\t\t\t\t\t\t\tarrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],\n\t\t\t\t\t\t\tarrPoint = [x, y];\n\n\t\t\t\t\t\t// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?\n\n\t\t\t\t\t\tif (isPointInPoly(arrPoly, arrPoint)) {\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdatapoint: [s.percent, s.data],\n\t\t\t\t\t\t\t\tdataIndex: 0,\n\t\t\t\t\t\t\t\tseries: s,\n\t\t\t\t\t\t\t\tseriesIndex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\ttriggerClickHoverEvent(\"plothover\", e);\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\ttriggerClickHoverEvent(\"plotclick\", e);\n\t\t}\n\n\t\t// trigger click or hover event (they send the same parameters so we share their code)\n\n\t\tfunction triggerClickHoverEvent(eventname, e) {\n\n\t\t\tvar offset = plot.offset();\n\t\t\tvar canvasX = parseInt(e.pageX - offset.left);\n\t\t\tvar canvasY = parseInt(e.pageY - offset.top);\n\t\t\tvar item = findNearbySlice(canvasX, canvasY);\n\n\t\t\tif (options.grid.autoHighlight) {\n\n\t\t\t\t// clear auto-highlights\n\n\t\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\t\tvar h = highlights[i];\n\t\t\t\t\tif (h.auto == eventname && !(item && h.series == item.series)) {\n\t\t\t\t\t\tunhighlight(h.series);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// highlight the slice\n\n\t\t\tif (item) {\n\t\t\t\thighlight(item.series, eventname);\n\t\t\t}\n\n\t\t\t// trigger any hover bind events\n\n\t\t\tvar pos = { pageX: e.pageX, pageY: e.pageY };\n\t\t\ttarget.trigger(eventname, [pos, item]);\n\t\t}\n\n\t\tfunction highlight(s, auto) {\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i == -1) {\n\t\t\t\thighlights.push({ series: s, auto: auto });\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t} else if (!auto) {\n\t\t\t\thighlights[i].auto = false;\n\t\t\t}\n\t\t}\n\n\t\tfunction unhighlight(s) {\n\t\t\tif (s == null) {\n\t\t\t\thighlights = [];\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\n\t\t\t//if (typeof s == \"number\") {\n\t\t\t//\ts = series[s];\n\t\t\t//}\n\n\t\t\tvar i = indexOfHighlight(s);\n\n\t\t\tif (i != -1) {\n\t\t\t\thighlights.splice(i, 1);\n\t\t\t\tplot.triggerRedrawOverlay();\n\t\t\t}\n\t\t}\n\n\t\tfunction indexOfHighlight(s) {\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tvar h = highlights[i];\n\t\t\t\tif (h.series == s)\n\t\t\t\t\treturn i;\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tfunction drawOverlay(plot, octx) {\n\n\t\t\tvar options = plot.getOptions();\n\n\t\t\tvar radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;\n\n\t\t\toctx.save();\n\t\t\toctx.translate(centerLeft, centerTop);\n\t\t\toctx.scale(1, options.series.pie.tilt);\n\n\t\t\tfor (var i = 0; i < highlights.length; ++i) {\n\t\t\t\tdrawHighlight(highlights[i].series);\n\t\t\t}\n\n\t\t\tdrawDonutHole(octx);\n\n\t\t\toctx.restore();\n\n\t\t\tfunction drawHighlight(series) {\n\n\t\t\t\tif (series.angle <= 0 || isNaN(series.angle)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();\n\t\t\t\toctx.fillStyle = \"rgba(255, 255, 255, \" + options.series.pie.highlight.opacity + \")\"; // this is temporary until we have access to parseColor\n\t\t\t\toctx.beginPath();\n\t\t\t\tif (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {\n\t\t\t\t\toctx.moveTo(0, 0); // Center of the pie\n\t\t\t\t}\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);\n\t\t\t\toctx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);\n\t\t\t\toctx.closePath();\n\t\t\t\toctx.fill();\n\t\t\t}\n\t\t}\n\t} // end init (plugin body)\n\n\t// define pie specific options and their default values\n\n\tvar options = {\n\t\tseries: {\n\t\t\tpie: {\n\t\t\t\tshow: false,\n\t\t\t\tradius: \"auto\",\t// actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\tinnerRadius: 0, /* for donut */\n\t\t\t\tstartAngle: 3/2,\n\t\t\t\ttilt: 1,\n\t\t\t\tshadow: {\n\t\t\t\t\tleft: 5,\t// shadow left offset\n\t\t\t\t\ttop: 15,\t// shadow top offset\n\t\t\t\t\talpha: 0.02\t// shadow alpha\n\t\t\t\t},\n\t\t\t\toffset: {\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: \"auto\"\n\t\t\t\t},\n\t\t\t\tstroke: {\n\t\t\t\t\tcolor: \"#fff\",\n\t\t\t\t\twidth: 1\n\t\t\t\t},\n\t\t\t\tlabel: {\n\t\t\t\t\tshow: \"auto\",\n\t\t\t\t\tformatter: function(label, slice) {\n\t\t\t\t\t\treturn \"
\" + label + \"
\" + Math.round(slice.percent) + \"%
\";\n\t\t\t\t\t},\t// formatter function\n\t\t\t\t\tradius: 1,\t// radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)\n\t\t\t\t\tbackground: {\n\t\t\t\t\t\tcolor: null,\n\t\t\t\t\t\topacity: 0\n\t\t\t\t\t},\n\t\t\t\t\tthreshold: 0\t// percentage at which to hide the label (i.e. the slice is too narrow)\n\t\t\t\t},\n\t\t\t\tcombine: {\n\t\t\t\t\tthreshold: -1,\t// percentage at which to combine little slices into one larger slice\n\t\t\t\t\tcolor: null,\t// color to give the new slice (auto-generated if null)\n\t\t\t\t\tlabel: \"Other\"\t// label to give the new slice\n\t\t\t\t},\n\t\t\t\thighlight: {\n\t\t\t\t\t//color: \"#fff\",\t\t// will add this functionality once parseColor is available\n\t\t\t\t\topacity: 0.5\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: \"pie\",\n\t\tversion: \"1.1\"\n\t});\n\n})(jQuery);\n","/* Pretty handling of time axes.\n\nCopyright (c) 2007-2014 IOLA and Ole Laursen.\nLicensed under the MIT license.\n\nSet axis.mode to \"time\" to enable. See the section \"Time series data\" in\nAPI.txt for details.\n\n*/\n\n(function($) {\n\n\tvar options = {\n\t\txaxis: {\n\t\t\ttimezone: null,\t\t// \"browser\" for local to the client or timezone for timezone-js\n\t\t\ttimeformat: null,\t// format string to use\n\t\t\ttwelveHourClock: false,\t// 12 or 24 time in time mode\n\t\t\tmonthNames: null\t// list of names of months\n\t\t}\n\t};\n\n\t// round to nearby lower multiple of base\n\n\tfunction floorInBase(n, base) {\n\t\treturn base * Math.floor(n / base);\n\t}\n\n\t// Returns a string with the date d formatted according to fmt.\n\t// A subset of the Open Group's strftime format is supported.\n\n\tfunction formatDate(d, fmt, monthNames, dayNames) {\n\n\t\tif (typeof d.strftime == \"function\") {\n\t\t\treturn d.strftime(fmt);\n\t\t}\n\n\t\tvar leftPad = function(n, pad) {\n\t\t\tn = \"\" + n;\n\t\t\tpad = \"\" + (pad == null ? \"0\" : pad);\n\t\t\treturn n.length == 1 ? pad + n : n;\n\t\t};\n\n\t\tvar r = [];\n\t\tvar escape = false;\n\t\tvar hours = d.getHours();\n\t\tvar isAM = hours < 12;\n\n\t\tif (monthNames == null) {\n\t\t\tmonthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t\t}\n\n\t\tif (dayNames == null) {\n\t\t\tdayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t\t}\n\n\t\tvar hours12;\n\n\t\tif (hours > 12) {\n\t\t\thours12 = hours - 12;\n\t\t} else if (hours == 0) {\n\t\t\thours12 = 12;\n\t\t} else {\n\t\t\thours12 = hours;\n\t\t}\n\n\t\tfor (var i = 0; i < fmt.length; ++i) {\n\n\t\t\tvar c = fmt.charAt(i);\n\n\t\t\tif (escape) {\n\t\t\t\tswitch (c) {\n\t\t\t\t\tcase 'a': c = \"\" + dayNames[d.getDay()]; break;\n\t\t\t\t\tcase 'b': c = \"\" + monthNames[d.getMonth()]; break;\n\t\t\t\t\tcase 'd': c = leftPad(d.getDate()); break;\n\t\t\t\t\tcase 'e': c = leftPad(d.getDate(), \" \"); break;\n\t\t\t\t\tcase 'h':\t// For back-compat with 0.7; remove in 1.0\n\t\t\t\t\tcase 'H': c = leftPad(hours); break;\n\t\t\t\t\tcase 'I': c = leftPad(hours12); break;\n\t\t\t\t\tcase 'l': c = leftPad(hours12, \" \"); break;\n\t\t\t\t\tcase 'm': c = leftPad(d.getMonth() + 1); break;\n\t\t\t\t\tcase 'M': c = leftPad(d.getMinutes()); break;\n\t\t\t\t\t// quarters not in Open Group's strftime specification\n\t\t\t\t\tcase 'q':\n\t\t\t\t\t\tc = \"\" + (Math.floor(d.getMonth() / 3) + 1); break;\n\t\t\t\t\tcase 'S': c = leftPad(d.getSeconds()); break;\n\t\t\t\t\tcase 'y': c = leftPad(d.getFullYear() % 100); break;\n\t\t\t\t\tcase 'Y': c = \"\" + d.getFullYear(); break;\n\t\t\t\t\tcase 'p': c = (isAM) ? (\"\" + \"am\") : (\"\" + \"pm\"); break;\n\t\t\t\t\tcase 'P': c = (isAM) ? (\"\" + \"AM\") : (\"\" + \"PM\"); break;\n\t\t\t\t\tcase 'w': c = \"\" + d.getDay(); break;\n\t\t\t\t}\n\t\t\t\tr.push(c);\n\t\t\t\tescape = false;\n\t\t\t} else {\n\t\t\t\tif (c == \"%\") {\n\t\t\t\t\tescape = true;\n\t\t\t\t} else {\n\t\t\t\t\tr.push(c);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn r.join(\"\");\n\t}\n\n\t// To have a consistent view of time-based data independent of which time\n\t// zone the client happens to be in we need a date-like object independent\n\t// of time zones. This is done through a wrapper that only calls the UTC\n\t// versions of the accessor methods.\n\n\tfunction makeUtcWrapper(d) {\n\n\t\tfunction addProxyMethod(sourceObj, sourceMethod, targetObj, targetMethod) {\n\t\t\tsourceObj[sourceMethod] = function() {\n\t\t\t\treturn targetObj[targetMethod].apply(targetObj, arguments);\n\t\t\t};\n\t\t};\n\n\t\tvar utc = {\n\t\t\tdate: d\n\t\t};\n\n\t\t// support strftime, if found\n\n\t\tif (d.strftime != undefined) {\n\t\t\taddProxyMethod(utc, \"strftime\", d, \"strftime\");\n\t\t}\n\n\t\taddProxyMethod(utc, \"getTime\", d, \"getTime\");\n\t\taddProxyMethod(utc, \"setTime\", d, \"setTime\");\n\n\t\tvar props = [\"Date\", \"Day\", \"FullYear\", \"Hours\", \"Milliseconds\", \"Minutes\", \"Month\", \"Seconds\"];\n\n\t\tfor (var p = 0; p < props.length; p++) {\n\t\t\taddProxyMethod(utc, \"get\" + props[p], d, \"getUTC\" + props[p]);\n\t\t\taddProxyMethod(utc, \"set\" + props[p], d, \"setUTC\" + props[p]);\n\t\t}\n\n\t\treturn utc;\n\t};\n\n\t// select time zone strategy. This returns a date-like object tied to the\n\t// desired timezone\n\n\tfunction dateGenerator(ts, opts) {\n\t\tif (opts.timezone == \"browser\") {\n\t\t\treturn new Date(ts);\n\t\t} else if (!opts.timezone || opts.timezone == \"utc\") {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t} else if (typeof timezoneJS != \"undefined\" && typeof timezoneJS.Date != \"undefined\") {\n\t\t\tvar d = new timezoneJS.Date();\n\t\t\t// timezone-js is fickle, so be sure to set the time zone before\n\t\t\t// setting the time.\n\t\t\td.setTimezone(opts.timezone);\n\t\t\td.setTime(ts);\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn makeUtcWrapper(new Date(ts));\n\t\t}\n\t}\n\t\n\t// map of app. size of time units in milliseconds\n\n\tvar timeUnitSize = {\n\t\t\"second\": 1000,\n\t\t\"minute\": 60 * 1000,\n\t\t\"hour\": 60 * 60 * 1000,\n\t\t\"day\": 24 * 60 * 60 * 1000,\n\t\t\"month\": 30 * 24 * 60 * 60 * 1000,\n\t\t\"quarter\": 3 * 30 * 24 * 60 * 60 * 1000,\n\t\t\"year\": 365.2425 * 24 * 60 * 60 * 1000\n\t};\n\n\t// the allowed tick sizes, after 1 year we use\n\t// an integer algorithm\n\n\tvar baseSpec = [\n\t\t[1, \"second\"], [2, \"second\"], [5, \"second\"], [10, \"second\"],\n\t\t[30, \"second\"], \n\t\t[1, \"minute\"], [2, \"minute\"], [5, \"minute\"], [10, \"minute\"],\n\t\t[30, \"minute\"], \n\t\t[1, \"hour\"], [2, \"hour\"], [4, \"hour\"],\n\t\t[8, \"hour\"], [12, \"hour\"],\n\t\t[1, \"day\"], [2, \"day\"], [3, \"day\"],\n\t\t[0.25, \"month\"], [0.5, \"month\"], [1, \"month\"],\n\t\t[2, \"month\"]\n\t];\n\n\t// we don't know which variant(s) we'll need yet, but generating both is\n\t// cheap\n\n\tvar specMonths = baseSpec.concat([[3, \"month\"], [6, \"month\"],\n\t\t[1, \"year\"]]);\n\tvar specQuarters = baseSpec.concat([[1, \"quarter\"], [2, \"quarter\"],\n\t\t[1, \"year\"]]);\n\n\tfunction init(plot) {\n\t\tplot.hooks.processOptions.push(function (plot, options) {\n\t\t\t$.each(plot.getAxes(), function(axisName, axis) {\n\n\t\t\t\tvar opts = axis.options;\n\n\t\t\t\tif (opts.mode == \"time\") {\n\t\t\t\t\taxis.tickGenerator = function(axis) {\n\n\t\t\t\t\t\tvar ticks = [];\n\t\t\t\t\t\tvar d = dateGenerator(axis.min, opts);\n\t\t\t\t\t\tvar minSize = 0;\n\n\t\t\t\t\t\t// make quarter use a possibility if quarters are\n\t\t\t\t\t\t// mentioned in either of these options\n\n\t\t\t\t\t\tvar spec = (opts.tickSize && opts.tickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ||\n\t\t\t\t\t\t\t(opts.minTickSize && opts.minTickSize[1] ===\n\t\t\t\t\t\t\t\"quarter\") ? specQuarters : specMonths;\n\n\t\t\t\t\t\tif (opts.minTickSize != null) {\n\t\t\t\t\t\t\tif (typeof opts.tickSize == \"number\") {\n\t\t\t\t\t\t\t\tminSize = opts.tickSize;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminSize = opts.minTickSize[0] * timeUnitSize[opts.minTickSize[1]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < spec.length - 1; ++i) {\n\t\t\t\t\t\t\tif (axis.delta < (spec[i][0] * timeUnitSize[spec[i][1]]\n\t\t\t\t\t\t\t\t\t\t\t + spec[i + 1][0] * timeUnitSize[spec[i + 1][1]]) / 2\n\t\t\t\t\t\t\t\t&& spec[i][0] * timeUnitSize[spec[i][1]] >= minSize) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar size = spec[i][0];\n\t\t\t\t\t\tvar unit = spec[i][1];\n\n\t\t\t\t\t\t// special-case the possibility of several years\n\n\t\t\t\t\t\tif (unit == \"year\") {\n\n\t\t\t\t\t\t\t// if given a minTickSize in years, just use it,\n\t\t\t\t\t\t\t// ensuring that it's an integer\n\n\t\t\t\t\t\t\tif (opts.minTickSize != null && opts.minTickSize[1] == \"year\") {\n\t\t\t\t\t\t\t\tsize = Math.floor(opts.minTickSize[0]);\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tvar magn = Math.pow(10, Math.floor(Math.log(axis.delta / timeUnitSize.year) / Math.LN10));\n\t\t\t\t\t\t\t\tvar norm = (axis.delta / timeUnitSize.year) / magn;\n\n\t\t\t\t\t\t\t\tif (norm < 1.5) {\n\t\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t\t} else if (norm < 3) {\n\t\t\t\t\t\t\t\t\tsize = 2;\n\t\t\t\t\t\t\t\t} else if (norm < 7.5) {\n\t\t\t\t\t\t\t\t\tsize = 5;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsize = 10;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsize *= magn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// minimum size for years is 1\n\n\t\t\t\t\t\t\tif (size < 1) {\n\t\t\t\t\t\t\t\tsize = 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\taxis.tickSize = opts.tickSize || [size, unit];\n\t\t\t\t\t\tvar tickSize = axis.tickSize[0];\n\t\t\t\t\t\tunit = axis.tickSize[1];\n\n\t\t\t\t\t\tvar step = tickSize * timeUnitSize[unit];\n\n\t\t\t\t\t\tif (unit == \"second\") {\n\t\t\t\t\t\t\td.setSeconds(floorInBase(d.getSeconds(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"minute\") {\n\t\t\t\t\t\t\td.setMinutes(floorInBase(d.getMinutes(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"hour\") {\n\t\t\t\t\t\t\td.setHours(floorInBase(d.getHours(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"month\") {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), tickSize));\n\t\t\t\t\t\t} else if (unit == \"quarter\") {\n\t\t\t\t\t\t\td.setMonth(3 * floorInBase(d.getMonth() / 3,\n\t\t\t\t\t\t\t\ttickSize));\n\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\td.setFullYear(floorInBase(d.getFullYear(), tickSize));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset smaller components\n\n\t\t\t\t\t\td.setMilliseconds(0);\n\n\t\t\t\t\t\tif (step >= timeUnitSize.minute) {\n\t\t\t\t\t\t\td.setSeconds(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.hour) {\n\t\t\t\t\t\t\td.setMinutes(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day) {\n\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.day * 4) {\n\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.month * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 3));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.quarter * 2) {\n\t\t\t\t\t\t\td.setMonth(floorInBase(d.getMonth(), 6));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (step >= timeUnitSize.year) {\n\t\t\t\t\t\t\td.setMonth(0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar carry = 0;\n\t\t\t\t\t\tvar v = Number.NaN;\n\t\t\t\t\t\tvar prev;\n\n\t\t\t\t\t\tdo {\n\n\t\t\t\t\t\t\tprev = v;\n\t\t\t\t\t\t\tv = d.getTime();\n\t\t\t\t\t\t\tticks.push(v);\n\n\t\t\t\t\t\t\tif (unit == \"month\" || unit == \"quarter\") {\n\t\t\t\t\t\t\t\tif (tickSize < 1) {\n\n\t\t\t\t\t\t\t\t\t// a bit complicated - we'll divide the\n\t\t\t\t\t\t\t\t\t// month/quarter up but we need to take\n\t\t\t\t\t\t\t\t\t// care of fractions so we don't end up in\n\t\t\t\t\t\t\t\t\t// the middle of a day\n\n\t\t\t\t\t\t\t\t\td.setDate(1);\n\t\t\t\t\t\t\t\t\tvar start = d.getTime();\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\t(unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t\tvar end = d.getTime();\n\t\t\t\t\t\t\t\t\td.setTime(v + carry * timeUnitSize.hour + (end - start) * tickSize);\n\t\t\t\t\t\t\t\t\tcarry = d.getHours();\n\t\t\t\t\t\t\t\t\td.setHours(0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\td.setMonth(d.getMonth() +\n\t\t\t\t\t\t\t\t\t\ttickSize * (unit == \"quarter\" ? 3 : 1));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (unit == \"year\") {\n\t\t\t\t\t\t\t\td.setFullYear(d.getFullYear() + tickSize);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\td.setTime(v + step);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} while (v < axis.max && v != prev);\n\n\t\t\t\t\t\treturn ticks;\n\t\t\t\t\t};\n\n\t\t\t\t\taxis.tickFormatter = function (v, axis) {\n\n\t\t\t\t\t\tvar d = dateGenerator(v, axis.options);\n\n\t\t\t\t\t\t// first check global format\n\n\t\t\t\t\t\tif (opts.timeformat != null) {\n\t\t\t\t\t\t\treturn formatDate(d, opts.timeformat, opts.monthNames, opts.dayNames);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// possibly use quarters if quarters are mentioned in\n\t\t\t\t\t\t// any of these places\n\n\t\t\t\t\t\tvar useQuarters = (axis.options.tickSize &&\n\t\t\t\t\t\t\t\taxis.options.tickSize[1] == \"quarter\") ||\n\t\t\t\t\t\t\t(axis.options.minTickSize &&\n\t\t\t\t\t\t\t\taxis.options.minTickSize[1] == \"quarter\");\n\n\t\t\t\t\t\tvar t = axis.tickSize[0] * timeUnitSize[axis.tickSize[1]];\n\t\t\t\t\t\tvar span = axis.max - axis.min;\n\t\t\t\t\t\tvar suffix = (opts.twelveHourClock) ? \" %p\" : \"\";\n\t\t\t\t\t\tvar hourCode = (opts.twelveHourClock) ? \"%I\" : \"%H\";\n\t\t\t\t\t\tvar fmt;\n\n\t\t\t\t\t\tif (t < timeUnitSize.minute) {\n\t\t\t\t\t\t\tfmt = hourCode + \":%M:%S\" + suffix;\n\t\t\t\t\t\t} else if (t < timeUnitSize.day) {\n\t\t\t\t\t\t\tif (span < 2 * timeUnitSize.day) {\n\t\t\t\t\t\t\t\tfmt = hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %d \" + hourCode + \":%M\" + suffix;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (t < timeUnitSize.month) {\n\t\t\t\t\t\t\tfmt = \"%b %d\";\n\t\t\t\t\t\t} else if ((useQuarters && t < timeUnitSize.quarter) ||\n\t\t\t\t\t\t\t(!useQuarters && t < timeUnitSize.year)) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"%b\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"%b %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (useQuarters && t < timeUnitSize.year) {\n\t\t\t\t\t\t\tif (span < timeUnitSize.year) {\n\t\t\t\t\t\t\t\tfmt = \"Q%q\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfmt = \"Q%q %Y\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfmt = \"%Y\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rt = formatDate(d, fmt, opts.monthNames, opts.dayNames);\n\n\t\t\t\t\t\treturn rt;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t$.plot.plugins.push({\n\t\tinit: init,\n\t\toptions: options,\n\t\tname: 'time',\n\t\tversion: '1.0'\n\t});\n\n\t// Time-axis support used to be in Flot core, which exposed the\n\t// formatDate function on the plot object. Various plugins depend\n\t// on the function, so we need to re-expose it here.\n\n\t$.plot.formatDate = formatDate;\n\t$.plot.dateGenerator = dateGenerator;\n\n})(jQuery);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import _ from 'lodash';\nimport './lib/jquery.flot.pie';\nimport $ from 'jquery';\n//import './lib/jquery.flot';\n\nexport default function link(scope: any, elem: any, attrs: any, ctrl: any) {\n let data;\n const panel = ctrl.panel;\n elem = elem.find('.piechart-panel__chart');\n const $tooltip = $('
') as any;\n\n ctrl.events.on('render', () => {\n if (panel.legendType === 'Right side') {\n render(false);\n setTimeout(() => {\n render(true);\n }, 50);\n } else {\n render(true);\n }\n });\n\n function getLegendHeight(panelHeight: any) {\n if (!ctrl.panel.legend.show || ctrl.panel.legendType === 'Right side' || ctrl.panel.legendType === 'On graph') {\n return 20;\n }\n\n if ((ctrl.panel.legendType === 'Under graph' && ctrl.panel.legend.percentage) || ctrl.panel.legend.values) {\n const breakPoint = parseInt(ctrl.panel.breakPoint, 10) / 100;\n const total = 23 + 20 * data.length;\n return Math.min(total, Math.floor(panelHeight * breakPoint));\n }\n\n return 0;\n }\n\n function formatter(label: any, slice: any) {\n const sliceData = slice.data[0][slice.data[0].length - 1];\n let decimal = 2;\n const start = `
${label}
`;\n\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n if (ctrl.panel.legend.values && ctrl.panel.legend.percentage) {\n return start + ctrl.formatValue(sliceData) + '
' + slice.percent.toFixed(decimal) + '%
';\n } else if (ctrl.panel.legend.values) {\n return start + ctrl.formatValue(sliceData) + '
';\n } else if (ctrl.panel.legend.percentage) {\n return start + slice.percent.toFixed(decimal) + '%';\n } else {\n return start + '';\n }\n }\n\n function noDataPoints() {\n const html = '
No data points
';\n elem.html(html);\n }\n\n function addPieChart() {\n const width = elem.width();\n const height = ctrl.height - getLegendHeight(ctrl.height);\n\n const size = Math.min(width, height);\n\n const plotCanvas = $('
');\n const plotCss = {\n margin: 'auto',\n position: 'relative',\n paddingBottom: 20 + 'px',\n height: size + 'px',\n };\n\n plotCanvas.css(plotCss);\n\n const backgroundColor = $('body').css('background-color');\n\n const options = {\n legend: {\n show: false,\n },\n series: {\n pie: {\n radius: 1,\n innerRadius: 0,\n show: true,\n stroke: {\n color: backgroundColor,\n width: parseFloat(ctrl.panel.strokeWidth).toFixed(1),\n },\n label: {\n show: ctrl.panel.legend.show && ctrl.panel.legendType === 'On graph',\n formatter: formatter,\n },\n highlight: {\n opacity: 0.0,\n },\n combine: {\n threshold: ctrl.panel.combine.threshold,\n label: ctrl.panel.combine.label,\n },\n },\n },\n grid: {\n hoverable: true,\n clickable: false,\n },\n };\n\n if (panel.pieType === 'donut') {\n options.series.pie.innerRadius = 0.5;\n }\n\n data = ctrl.data;\n\n for (let i = 0; i < data.length; i++) {\n const series = data[i];\n\n // if hidden remove points\n if (ctrl.hiddenSeries[series.label]) {\n series.data = {};\n }\n }\n\n if (panel.legend.sort) {\n if (ctrl.panel.valueName !== panel.legend.sort) {\n panel.legend.sort = ctrl.panel.valueName;\n }\n if (panel.legend.sortDesc === true) {\n data.sort((a: any, b: any) => {\n return b.legendData - a.legendData;\n });\n } else {\n data.sort((a: any, b: any) => {\n return a.legendData - b.legendData;\n });\n }\n }\n\n elem.html(plotCanvas);\n\n // @ts-ignore\n $.plot(plotCanvas, data, options);\n plotCanvas.bind('plothover', (event: any, pos: any, item: any) => {\n if (!item) {\n $tooltip.detach();\n return;\n }\n\n let body;\n const percent = parseFloat(item.series.percent).toFixed(2);\n const formatted = ctrl.formatValue(item.series.data[0][1]);\n\n body = '
';\n body += '
' + _.escape(item.series.label) + ': ' + formatted;\n body += ' (' + percent + '%)' + '
';\n body += '
';\n\n $tooltip.html(body).place_tt(pos.pageX + 20, pos.pageY);\n });\n }\n\n function render(incrementRenderCounter: any) {\n if (!ctrl.data) {\n return;\n }\n\n data = ctrl.data;\n\n if (0 === ctrl.data.length) {\n noDataPoints();\n } else {\n addPieChart();\n }\n\n if (incrementRenderCounter) {\n ctrl.renderingCompleted();\n }\n }\n}\n","import angular from 'angular';\n// @ts-ignore\nimport $ from 'jquery';\n//import './lib/jquery.flot.pie';\n\n//import 'jquery.flot';\n\nimport './lib/jquery.flot.time';\n\nimport _ from 'lodash';\n\n// @ts-ignore\nimport PerfectScrollbar from './lib/perfect-scrollbar.min';\n\nangular.module('grafana.directives').directive('piechartLegend', (popoverSrv: any, $timeout: any) => {\n return {\n link: (scope: any, elem: any) => {\n const $container = $('
');\n let firstRender = true;\n const ctrl = scope.ctrl;\n const panel = ctrl.panel;\n let data: any;\n let seriesList: any;\n let dataList: any;\n let i;\n let legendScrollbar: any;\n\n scope.$on('$destroy', () => {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n }\n });\n\n ctrl.events.on('render', () => {\n data = ctrl.series;\n if (data) {\n for (const i in data) {\n data[i].color = ctrl.data[i].color;\n }\n render();\n }\n });\n\n function getSeriesIndexForElement(el: any) {\n return el.parents('[data-series-index]').data('series-index');\n }\n\n function toggleSeries(e: any) {\n const el = $(e.currentTarget);\n // Consider Combine entry as special case (not clickable)\n if (el && el.text() !== panel.combine.label) {\n const index = getSeriesIndexForElement(el);\n const seriesInfo = dataList[index];\n const scrollPosition = $($container.children('tbody')).scrollTop();\n ctrl.toggleSeries(seriesInfo);\n if (typeof scrollPosition !== 'undefined') {\n $($container.children('tbody')).scrollTop(scrollPosition);\n }\n }\n }\n\n function sortLegend(e: any) {\n const el = $(e.currentTarget);\n const stat = el.data('stat');\n\n if (stat !== panel.legend.sort) {\n panel.legend.sortDesc = null;\n }\n\n // if already sort ascending, disable sorting\n if (panel.legend.sortDesc === false) {\n panel.legend.sort = null;\n panel.legend.sortDesc = null;\n ctrl.render();\n return;\n }\n\n panel.legend.sortDesc = !panel.legend.sortDesc;\n panel.legend.sort = stat;\n ctrl.render();\n }\n\n function getLegendHeaderHtml(statName: any) {\n let name = statName;\n\n if (panel.legend.header) {\n name = panel.legend.header;\n }\n\n let html = '' + _.escape(name);\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function getLegendPercentageHtml(statName: any) {\n const name = 'percentage';\n let html = '' + name;\n\n if (panel.legend.sort === statName) {\n const cssClass = panel.legend.sortDesc ? 'fa fa-caret-down' : 'fa fa-caret-up';\n html += ' ';\n }\n\n return html + '';\n }\n\n function openColorSelector(e: any) {\n // if we clicked inside poup container ignore click\n if ($(e.target).parents('.popover').length) {\n return;\n }\n\n const el = $(e.currentTarget).find('.fa-minus');\n const index = getSeriesIndexForElement(el);\n const series = seriesList[index];\n\n $timeout(() => {\n popoverSrv.show({\n element: el[0],\n position: 'right center',\n template:\n '' +\n '',\n openOn: 'hover',\n classNames: 'drop-popover drop-popover--transparent',\n model: {\n autoClose: true,\n series: series,\n toggleAxis: () => {},\n colorSelected: (color: any) => {\n ctrl.changeSeriesColor(series, color);\n },\n },\n });\n });\n }\n\n function render() {\n if (panel.legendType === 'On graph' || !panel.legend.show) {\n $container.empty();\n elem.find('.piechart-legend').css('padding-top', 0);\n return;\n } else {\n elem.find('.piechart-legend').css('padding-top', 6);\n }\n\n if (firstRender) {\n elem.append($container);\n $container.on('click', '.piechart-legend-icon', openColorSelector);\n $container.on('click', '.piechart-legend-alias', toggleSeries);\n $container.on('click', 'th', sortLegend);\n firstRender = false;\n }\n\n seriesList = data;\n dataList = ctrl.data;\n\n $container.empty();\n\n const width = panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth + 'px' : '';\n const ieWidth =\n panel.legendType === 'Right side' && panel.legend.sideWidth ? panel.legend.sideWidth - 1 + 'px' : '';\n elem.css('min-width', width);\n elem.css('width', ieWidth);\n\n const showValues = panel.legend.values || panel.legend.percentage;\n const tableLayout = (panel.legendType === 'Under graph' || panel.legendType === 'Right side') && showValues;\n\n $container.toggleClass('piechart-legend-table', tableLayout);\n\n let legendHeader;\n if (tableLayout) {\n let header = '';\n if (panel.legend.values) {\n header += getLegendHeaderHtml(ctrl.panel.valueName);\n }\n if (panel.legend.percentage) {\n header += getLegendPercentageHtml(ctrl.panel.valueName);\n }\n header += '';\n legendHeader = $(header);\n }\n\n let total = 0;\n if (panel.legend.percentage) {\n for (i = 0; i < seriesList.length; i++) {\n if (!ctrl.hiddenSeries[seriesList[i].label]) {\n total += seriesList[i].stats[ctrl.panel.valueName];\n }\n }\n }\n\n let combineNum = 0;\n const combineVal = {\n label: panel.combine.label,\n color: '',\n legendData: 0,\n };\n const seriesElements = [];\n\n for (i = 0; i < seriesList.length; i++) {\n const series = seriesList[i];\n const seriesData = dataList[i];\n // combine lower values than threshold and not include into legent\n if (seriesData.data / total < panel.combine.threshold) {\n // Jump hidden series\n if (!ctrl.hiddenSeries[seriesData.label]) {\n combineNum++;\n combineVal.legendData += seriesData.data;\n }\n } else {\n // ignore empty series\n if (panel.legend.hideEmpty && series.allIsNull) {\n continue;\n }\n // ignore series excluded via override\n if (!series.legend) {\n continue;\n }\n\n seriesElements.push($(generateLegendItem(seriesData, i, total, showValues, tableLayout)));\n }\n }\n\n // Add combine to legend\n if (combineNum > 0) {\n // Define color according to hiddenSeries and combineNum\n if (typeof panel.legend.sortDesc === 'undefined' || panel.legend.sortDesc === null || panel.legend.sortDesc) {\n if (Object.keys(ctrl.hiddenSeries).length > 0) {\n let _el, _max;\n for (const _key in ctrl.hiddenSeries) {\n _el = dataList.find((x: any) => x.label === _key);\n if (typeof _max === 'undefined') {\n _max = _el.legendData;\n combineVal.color = _el.color;\n } else {\n if (_el.legendData > _max) {\n _max = _el.legendData;\n combineVal.color = _el.color;\n }\n }\n }\n } else {\n combineVal.color = seriesList[seriesList.length - combineNum].color;\n }\n } else {\n combineVal.color = seriesList[0].color;\n }\n\n seriesElements.push(\n $(generateLegendItem(combineVal, dataList.length - combineNum, total, showValues, tableLayout))\n );\n }\n\n if (tableLayout) {\n // const topPadding = 6;\n const tbodyElem = $('');\n // tbodyElem.css(\"max-height\", maxHeight - topPadding);\n if (typeof legendHeader !== 'undefined') {\n tbodyElem.append(legendHeader);\n }\n tbodyElem.append(seriesElements);\n $container.append(tbodyElem);\n } else {\n $container.append(seriesElements);\n }\n\n if (panel.legendType === 'Under graph') {\n addScrollbar();\n } else {\n destroyScrollbar();\n }\n }\n\n function generateLegendItem(data: any, index: any, total: any, showValues: boolean, tableLayout: boolean) {\n let html = '
';\n html += '';\n html += '';\n html += '';\n\n html += '' + _.escape(data.label) + '';\n let decimal = 0;\n if (ctrl.panel.legend.percentageDecimals) {\n decimal = ctrl.panel.legend.percentageDecimals;\n }\n\n if (showValues && tableLayout) {\n const value = data.legendData;\n if (panel.legend.values) {\n html += '
' + ctrl.formatValue(value) + '
';\n }\n if (total) {\n const pvalue = ((value / total) * 100).toFixed(decimal) + '%';\n html += '
' + pvalue + '
';\n }\n }\n html += '
';\n\n return html;\n }\n\n function addScrollbar() {\n const scrollbarOptions = {\n // Number of pixels the content height can surpass the container height without enabling the scroll bar.\n scrollYMarginOffset: 2,\n suppressScrollX: true,\n };\n\n if (!legendScrollbar) {\n legendScrollbar = new PerfectScrollbar(elem[0], scrollbarOptions);\n } else {\n legendScrollbar.update();\n }\n }\n\n function destroyScrollbar() {\n if (legendScrollbar) {\n legendScrollbar.destroy();\n legendScrollbar = null;\n }\n }\n },\n };\n});\n","import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';\nimport _ from 'lodash';\nimport kbn from 'grafana/app/core/utils/kbn';\nimport config from 'grafana/app/core/config';\n// @ts-ignore\nimport TimeSeries from 'grafana/app/core/time_series';\nimport rendering from './rendering';\nimport './legend';\n\nclass PieChartCtrl extends MetricsPanelCtrl {\n static templateUrl = 'module.html';\n $rootScope: any;\n hiddenSeries: any;\n unitFormats: any;\n series: any;\n data: any;\n\n /** @ngInject */\n constructor($scope: any, $injector: any, $rootScope: any) {\n super($scope, $injector);\n this.$rootScope = $rootScope;\n this.hiddenSeries = {};\n\n const panelDefaults = {\n pieType: 'pie',\n legend: {\n show: true, // disable/enable legend\n values: true,\n },\n links: [],\n datasource: null,\n interval: null,\n targets: [{}],\n cacheTimeout: null,\n nullPointMode: 'connected',\n legendType: 'Under graph',\n breakPoint: '50%',\n aliasColors: {},\n format: 'short',\n valueName: 'current',\n strokeWidth: 1,\n fontSize: '80%',\n combine: {\n threshold: 0.0,\n label: 'Others',\n },\n };\n\n _.defaults(this.panel, panelDefaults);\n _.defaults(this.panel.legend, panelDefaults.legend);\n\n this.events.on('render', this.onRender.bind(this));\n this.events.on('data-received', this.onDataReceived.bind(this));\n this.events.on('data-error', this.onDataError.bind(this));\n this.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n this.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n this.setLegendWidthForLegacyBrowser();\n }\n\n onInitEditMode() {\n this.addEditorTab('Options', 'public/plugins/grafana-piechart-panel/editor.html', 2);\n this.unitFormats = kbn.getUnitFormats();\n }\n\n setUnitFormat(subItem: any) {\n this.panel.format = subItem.value;\n this.render();\n }\n\n onDataError() {\n this.series = [];\n this.render();\n }\n\n changeSeriesColor(series: any, color: any) {\n series.color = color;\n this.panel.aliasColors[series.alias] = series.color;\n this.render();\n }\n\n migrateToPanel(type: string) {\n this.onPluginTypeChange(config.panels[type]);\n }\n\n onRender() {\n this.data = this.parseSeries(this.series);\n }\n\n parseSeries(series: any) {\n return _.map(this.series, (serie, i) => {\n return {\n label: serie.alias,\n data: serie.stats[this.panel.valueName],\n color: this.panel.aliasColors[serie.alias] || this.$rootScope.colors[i],\n legendData: serie.stats[this.panel.valueName],\n };\n });\n }\n\n onDataReceived(dataList: any) {\n this.series = dataList.map(this.seriesHandler.bind(this));\n this.data = this.parseSeries(this.series);\n this.render(this.data);\n }\n\n seriesHandler(seriesData: any) {\n const series = new TimeSeries({\n datapoints: seriesData.datapoints,\n alias: seriesData.target,\n });\n\n series.flotpairs = series.getFlotPairs(this.panel.nullPointMode);\n return series;\n }\n\n getDecimalsForValue(value: any) {\n if (_.isNumber(this.panel.decimals)) {\n return { decimals: this.panel.decimals, scaledDecimals: null };\n }\n\n const delta = value / 2;\n let dec = -Math.floor(Math.log(delta) / Math.LN10);\n\n const magn = Math.pow(10, -dec);\n const norm = delta / magn; // norm is between 1.0 and 10.0\n let size;\n\n if (norm < 1.5) {\n size = 1;\n } else if (norm < 3) {\n size = 2;\n // special case for 2.5, requires an extra decimal\n if (norm > 2.25) {\n size = 2.5;\n ++dec;\n }\n } else if (norm < 7.5) {\n size = 5;\n } else {\n size = 10;\n }\n\n size *= magn;\n\n // reduce starting decimals if not needed\n if (Math.floor(value) === value) {\n dec = 0;\n }\n\n const result = {\n decimals: 0,\n scaledDecimals: 0,\n };\n result.decimals = Math.max(0, dec);\n result.scaledDecimals = result.decimals - Math.floor(Math.log(size) / Math.LN10) + 2;\n\n return result;\n }\n\n formatValue(value: any) {\n const decimalInfo = this.getDecimalsForValue(value);\n const formatFunc = kbn.valueFormats[this.panel.format];\n if (formatFunc) {\n return formatFunc(value, decimalInfo.decimals, decimalInfo.scaledDecimals);\n }\n return value;\n }\n\n link(scope: any, elem: any, attrs: any, ctrl: any) {\n rendering(scope, elem, attrs, ctrl);\n }\n\n toggleSeries(serie: any) {\n if (this.hiddenSeries[serie.label]) {\n delete this.hiddenSeries[serie.label];\n } else {\n this.hiddenSeries[serie.label] = true;\n }\n this.render();\n }\n\n onLegendTypeChanged() {\n this.setLegendWidthForLegacyBrowser();\n this.render();\n }\n\n setLegendWidthForLegacyBrowser() {\n // @ts-ignore\n const isIE11 = !!window.MSInputMethodContext && !!document.documentMode;\n if (isIE11 && this.panel.legendType === 'Right side' && !this.panel.legend.sideWidth) {\n this.panel.legend.sideWidth = 150;\n }\n }\n}\n\nexport { PieChartCtrl, PieChartCtrl as MetricsPanelCtrl };\n","import { PieChartCtrl } from './piechart_ctrl';\nimport { loadPluginCss } from 'grafana/app/plugins/sdk';\n\nloadPluginCss({\n dark: 'plugins/grafana-piechart-panel/styles/dark.css',\n light: 'plugins/grafana-piechart-panel/styles/light.css',\n});\n\nexport { PieChartCtrl as PanelCtrl };\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/plugin.json b/data/plugins/grafana-piechart-panel/plugin.json deleted file mode 100644 index 39bb5ed4f3d8d..0000000000000 --- a/data/plugins/grafana-piechart-panel/plugin.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "dependencies": { - "grafanaDependency": "\u003e=4.6.5", - "grafanaVersion": "4.6.5", - "plugins": [] - }, - "id": "grafana-piechart-panel", - "info": { - "author": { - "name": "Grafana Labs", - "url": "http://grafana.com" - }, - "build": { - "time": 1667561513884, - "repo": "https://github.com/grafana/piechart-panel", - "branch": "master", - "hash": "4eff3329acac076f56b19375ac52fa8228ddbbba", - "build": 15 - }, - "description": "Pie chart panel for grafana", - "keywords": [ - "piechart", - "panel" - ], - "links": [ - { - "name": "Project site", - "url": "https://github.com/grafana/piechart-panel" - }, - { - "name": "Blog Post", - "url": "https://blog.raintank.io/friends-dont-let-friends-abuse-pie-charts/" - }, - { - "name": "MIT License", - "url": "https://github.com/grafana/piechart-panel/blob/master/LICENSE" - } - ], - "logos": { - "large": "img/piechart_logo_large.svg", - "small": "img/piechart_logo_small.svg" - }, - "screenshots": [ - { - "name": "Donut!", - "path": "img/piechart-donut.png" - }, - { - "name": "Legend on the graph", - "path": "img/piechart-legend-on-graph.png" - }, - { - "name": "Legend to the right", - "path": "img/piechart-legend-rhs.png" - }, - { - "name": "Legend underneath", - "path": "img/piechart-legend-under.png" - }, - { - "name": "Piechart options", - "path": "img/piechart-options.png" - } - ], - "updated": "2022-11-04", - "version": "1.6.4" - }, - "name": "Pie Chart", - "type": "panel" -} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/styles/dark.css b/data/plugins/grafana-piechart-panel/styles/dark.css deleted file mode 100644 index 19704aece2457..0000000000000 --- a/data/plugins/grafana-piechart-panel/styles/dark.css +++ /dev/null @@ -1 +0,0 @@ -.pieLabel>div{color:#fff}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{cursor:crosshair;flex-grow:1;position:relative;top:10px}.datapoints-warning{pointer:none;cursor:auto;left:50%;margin-left:-100px;margin-top:-50px;padding:10px;position:absolute;text-align:center;top:50%;width:200px;z-index:10}.piechart-legend{flex:0 1 auto;margin:0 1rem;padding-top:6px;position:relative;text-align:center}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{padding-right:4px;position:relative;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{color:#d8d9da;cursor:pointer;float:left;font-size:85%;text-align:left;white-space:nowrap}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;padding-left:10px;white-space:nowrap}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;height:100%;overflow-x:hidden;overflow-y:auto;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{color:#8e8e8e;content:"(right-y)";padding:0 5px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{display:table-cell;float:none;padding:2px 10px;text-align:right;white-space:nowrap}.piechart-legend-table .piechart-legend-icon{padding:0;top:0;width:5px}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{max-width:650px;overflow:hidden;padding-left:7px;text-align:left;text-overflow:ellipsis;width:95%}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#262628}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{color:#33b5e5;font-size:85%;font-weight:700;padding:0 10px 1px 0;text-align:right;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#8e8e8e}.piechart-tooltip{background-color:#141414;color:#d8d9da;font-size:12px;white-space:nowrap}.piechart-tooltip .piechart-tooltip-time{color:#d8d9da;font-weight:700;padding:.2rem;position:relative;text-align:center;top:-3px}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right}.migrate-button{height:auto;min-height:32px} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/styles/light.css b/data/plugins/grafana-piechart-panel/styles/light.css deleted file mode 100644 index 00494761030b6..0000000000000 --- a/data/plugins/grafana-piechart-panel/styles/light.css +++ /dev/null @@ -1 +0,0 @@ -.pieLabel>div{color:#000}.piechart-panel{display:flex;flex-direction:column;height:100%}.piechart-panel--legend-right{flex-direction:row}.piechart-panel--legend-right .piechart-legend{flex:0 1 10px;height:100%}:root .piechart-panel--legend-right .piechart-legend,_:-ms-fullscreen{flex:0 1 200px}.piechart-panel--legend-right .piechart-legend-series{display:block;padding-left:0}.piechart-panel--legend-right .piechart-legend-table .piechart-legend-series{display:table-row}.piechart-legend__container{height:100%}.piechart-panel__chart{cursor:crosshair;flex-grow:1;position:relative;top:10px}.datapoints-warning{pointer:none;cursor:auto;left:50%;margin-left:-100px;margin-top:-50px;padding:10px;position:absolute;text-align:center;top:50%;width:200px;z-index:10}.piechart-legend{flex:0 1 auto;margin:0 1rem;padding-top:6px;position:relative;text-align:center}.piechart-legend .popover-content{padding:0}.piechart-legend-icon{padding-right:4px;position:relative;top:1px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-value{color:52545c;cursor:pointer;float:left;font-size:85%;text-align:left;white-space:nowrap}.piechart-legend-icon.current:before{content:"Current: "}.piechart-legend-icon.max:before{content:"Max: "}.piechart-legend-icon.min:before{content:"Min: "}.piechart-legend-icon.total:before{content:"Total: "}.piechart-legend-icon.avg:before{content:"Avg: "}.piechart-legend-alias.current:before{content:"Current: "}.piechart-legend-alias.max:before{content:"Max: "}.piechart-legend-alias.min:before{content:"Min: "}.piechart-legend-alias.total:before{content:"Total: "}.piechart-legend-alias.avg:before{content:"Avg: "}.piechart-legend-value.current:before{content:"Current: "}.piechart-legend-value.max:before{content:"Max: "}.piechart-legend-value.min:before{content:"Min: "}.piechart-legend-value.total:before{content:"Total: "}.piechart-legend-value.avg:before{content:"Avg: "}.piechart-legend-icon .fa{font-size:135%;position:relative;top:1px}.piechart-legend-series{float:left;padding-left:10px;white-space:nowrap}.piechart-legend-series--right-y{float:right}.piechart-legend-value{padding-left:6px}.piechart-legend-table tbody{display:block;height:100%;overflow-x:hidden;overflow-y:auto;padding-bottom:1px;padding-right:5px}.piechart-legend-table .piechart-legend-series{display:table-row;float:none;padding-left:0}.piechart-legend-table .piechart-legend-series--right-y{float:none}.piechart-legend-table .piechart-legend-series--right-y .piechart-legend-alias:after{color:#767980;content:"(right-y)";padding:0 5px}.piechart-legend-alias,.piechart-legend-icon,.piechart-legend-table td,.piechart-legend-value{display:table-cell;float:none;padding:2px 10px;text-align:right;white-space:nowrap}.piechart-legend-table .piechart-legend-icon{padding:0;top:0;width:5px}.piechart-legend-table .piechart-legend-icon .fa{top:4px}.piechart-legend-table .piechart-legend-value{padding-left:15px}.piechart-legend-table .piechart-legend-alias{max-width:650px;overflow:hidden;padding-left:7px;text-align:left;text-overflow:ellipsis;width:95%}.piechart-legend-table .piechart-legend-series:nth-child(odd){background:#dde4ed}.piechart-legend-table .piechart-legend-value.avg:before,.piechart-legend-table .piechart-legend-value.current:before,.piechart-legend-table .piechart-legend-value.max:before,.piechart-legend-table .piechart-legend-value.min:before,.piechart-legend-table .piechart-legend-value.total:before{content:""}.piechart-legend-table th{color:#61c2f2;font-size:85%;font-weight:700;padding:0 10px 1px 0;text-align:right;white-space:nowrap}.piechart-legend-series-hidden .piechart-legend-alias,.piechart-legend-series-hidden .piechart-legend-value{color:#acb6bf}.piechart-tooltip{background-color:#dde4ed;color:#35373f;font-size:12px;white-space:nowrap}.piechart-tooltip .piechart-tooltip-time{color:#35373f;font-weight:700;padding:.2rem;position:relative;text-align:center;top:-3px}.piechart-tooltip .piechart-tooltip-value{display:table-cell;font-weight:700;padding-left:15px;text-align:right}.migrate-button{height:auto;min-height:32px} \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/.config/.cprc.json b/data/plugins/youtube-video-panel/.config/.cprc.json new file mode 100644 index 0000000000000..6848868398212 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/.cprc.json @@ -0,0 +1,3 @@ +{ + "version": "5.5.1" +} diff --git a/data/plugins/youtube-video-panel/.config/.eslintrc b/data/plugins/youtube-video-panel/.config/.eslintrc new file mode 100644 index 0000000000000..b614760976a82 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/.eslintrc @@ -0,0 +1,25 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-eslint-config + */ +{ + "extends": ["@grafana/eslint-config"], + "root": true, + "rules": { + "react/prop-types": "off" + }, + "overrides": [ + { + "plugins": ["deprecation"], + "files": ["src/**/*.{ts,tsx}"], + "rules": { + "deprecation/deprecation": "warn" + }, + "parserOptions": { + "project": "./tsconfig.json" + } + } + ] +} diff --git a/data/plugins/youtube-video-panel/.config/.prettierrc.js b/data/plugins/youtube-video-panel/.config/.prettierrc.js new file mode 100644 index 0000000000000..bf506f5ce7fb7 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/.prettierrc.js @@ -0,0 +1,16 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in .config/README.md + */ + +module.exports = { + endOfLine: 'auto', + printWidth: 120, + trailingComma: 'es5', + semi: true, + jsxSingleQuote: false, + singleQuote: true, + useTabs: false, + tabWidth: 2, +}; diff --git a/data/plugins/youtube-video-panel/.config/Dockerfile b/data/plugins/youtube-video-panel/.config/Dockerfile new file mode 100644 index 0000000000000..2793416a4abe4 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/Dockerfile @@ -0,0 +1,53 @@ +ARG grafana_version=latest +ARG grafana_image=grafana-enterprise + +FROM grafana/${grafana_image}:${grafana_version} + +ARG development=false +ARG TARGETARCH + + +ENV DEV "${development}" + +# Make it as simple as possible to access the grafana instance for development purposes +# Do NOT enable these settings in a public facing / production grafana instance +ENV GF_AUTH_ANONYMOUS_ORG_ROLE "Admin" +ENV GF_AUTH_ANONYMOUS_ENABLED "true" +ENV GF_AUTH_BASIC_ENABLED "false" +# Set development mode so plugins can be loaded without the need to sign +ENV GF_DEFAULT_APP_MODE "development" + + +LABEL maintainer="Grafana Labs " + +ENV GF_PATHS_HOME="/usr/share/grafana" +WORKDIR $GF_PATHS_HOME + +USER root + +# Installing supervisor and inotify-tools +RUN if [ "${development}" = "true" ]; then \ + if grep -i -q alpine /etc/issue; then \ + apk add supervisor inotify-tools git; \ + elif grep -i -q ubuntu /etc/issue; then \ + DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y supervisor inotify-tools git && \ + rm -rf /var/lib/apt/lists/*; \ + else \ + echo 'ERROR: Unsupported base image' && /bin/false; \ + fi \ + fi + +COPY supervisord/supervisord.conf /etc/supervisor.d/supervisord.ini +COPY supervisord/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + + + +# Inject livereload script into grafana index.html +RUN sed -i 's|||g' /usr/share/grafana/public/views/index.html + + +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/data/plugins/youtube-video-panel/.config/README.md b/data/plugins/youtube-video-panel/.config/README.md new file mode 100644 index 0000000000000..4de64b5228ac7 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/README.md @@ -0,0 +1,164 @@ +# Default build configuration by Grafana + +**This is an auto-generated directory and is not intended to be changed! ⚠️** + +The `.config/` directory holds basic configuration for the different tools +that are used to develop, test and build the project. In order to make it updates easier we ask you to +not edit files in this folder to extend configuration. + +## How to extend the basic configs? + +Bear in mind that you are doing it at your own risk, and that extending any of the basic configuration can lead +to issues around working with the project. + +### Extending the ESLint config + +Edit the `.eslintrc` file in the project root in order to extend the ESLint configuration. + +**Example:** + +```json +{ + "extends": "./.config/.eslintrc", + "rules": { + "react/prop-types": "off" + } +} +``` + +--- + +### Extending the Prettier config + +Edit the `.prettierrc.js` file in the project root in order to extend the Prettier configuration. + +**Example:** + +```javascript +module.exports = { + // Prettier configuration provided by Grafana scaffolding + ...require('./.config/.prettierrc.js'), + + semi: false, +}; +``` + +--- + +### Extending the Jest config + +There are two configuration in the project root that belong to Jest: `jest-setup.js` and `jest.config.js`. + +**`jest-setup.js`:** A file that is run before each test file in the suite is executed. We are using it to +set up the Jest DOM for the testing library and to apply some polyfills. ([link to Jest docs](https://jestjs.io/docs/configuration#setupfilesafterenv-array)) + +**`jest.config.js`:** The main Jest configuration file that extends the Grafana recommended setup. ([link to Jest docs](https://jestjs.io/docs/configuration)) + +#### ESM errors with Jest + +A common issue with the current jest config involves importing an npm package that only offers an ESM build. These packages cause jest to error with `SyntaxError: Cannot use import statement outside a module`. To work around this, we provide a list of known packages to pass to the `[transformIgnorePatterns](https://jestjs.io/docs/configuration#transformignorepatterns-arraystring)` jest configuration property. If need be, this can be extended in the following way: + +```javascript +process.env.TZ = 'UTC'; +const { grafanaESModules, nodeModulesToTransform } = require('./config/jest/utils'); + +module.exports = { + // Jest configuration provided by Grafana + ...require('./.config/jest.config'), + // Inform jest to only transform specific node_module packages. + transformIgnorePatterns: [nodeModulesToTransform([...grafanaESModules, 'packageName'])], +}; +``` + +--- + +### Extending the TypeScript config + +Edit the `tsconfig.json` file in the project root in order to extend the TypeScript configuration. + +**Example:** + +```json +{ + "extends": "./.config/tsconfig.json", + "compilerOptions": { + "preserveConstEnums": true + } +} +``` + +--- + +### Extending the Webpack config + +Follow these steps to extend the basic Webpack configuration that lives under `.config/`: + +#### 1. Create a new Webpack configuration file + +Create a new config file that is going to extend the basic one provided by Grafana. +It can live in the project root, e.g. `webpack.config.ts`. + +#### 2. Merge the basic config provided by Grafana and your custom setup + +We are going to use [`webpack-merge`](https://github.com/survivejs/webpack-merge) for this. + +```typescript +// webpack.config.ts +import type { Configuration } from 'webpack'; +import { merge } from 'webpack-merge'; +import grafanaConfig from './.config/webpack/webpack.config'; + +const config = async (env): Promise => { + const baseConfig = await grafanaConfig(env); + + return merge(baseConfig, { + // Add custom config here... + output: { + asyncChunks: true, + }, + }); +}; + +export default config; +``` + +#### 3. Update the `package.json` to use the new Webpack config + +We need to update the `scripts` in the `package.json` to use the extended Webpack configuration. + +**Update for `build`:** + +```diff +-"build": "webpack -c ./.config/webpack/webpack.config.ts --env production", ++"build": "webpack -c ./webpack.config.ts --env production", +``` + +**Update for `dev`:** + +```diff +-"dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", ++"dev": "webpack -w -c ./webpack.config.ts --env development", +``` + +### Configure grafana image to use when running docker + +By default, `grafana-enterprise` will be used as the docker image for all docker related commands. If you want to override this behavior, simply alter the `docker-compose.yaml` by adding the following build arg `grafana_image`. + +**Example:** + +```yaml +version: '3.7' + +services: + grafana: + container_name: 'myorg-basic-app' + build: + context: ./.config + args: + grafana_version: ${GRAFANA_VERSION:-9.1.2} + grafana_image: ${GRAFANA_IMAGE:-grafana} +``` + +In this example, we assign the environment variable `GRAFANA_IMAGE` to the build arg `grafana_image` with a default value of `grafana`. This will allow you to set the value while running the docker compose commands, which might be convenient in some scenarios. + +--- diff --git a/data/plugins/youtube-video-panel/.config/entrypoint.sh b/data/plugins/youtube-video-panel/.config/entrypoint.sh new file mode 100644 index 0000000000000..00c69f246f620 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ "${DEV}" = "false" ]; then + echo "Starting test mode" + exec /run.sh +fi + +echo "Starting development mode" + +if grep -i -q alpine /etc/issue; then + exec /usr/bin/supervisord -c /etc/supervisord.conf +elif grep -i -q ubuntu /etc/issue; then + exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf +else + echo 'ERROR: Unsupported base image' + exit 1 +fi + diff --git a/data/plugins/youtube-video-panel/.config/jest-setup.js b/data/plugins/youtube-video-panel/.config/jest-setup.js new file mode 100644 index 0000000000000..74832e34f1e03 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/jest-setup.js @@ -0,0 +1,28 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-jest-config + */ + +import '@testing-library/jest-dom'; +import { TextEncoder, TextDecoder } from 'util'; + +Object.assign(global, { TextDecoder, TextEncoder }); + +// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom +Object.defineProperty(global, 'matchMedia', { + writable: true, + value: (query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // deprecated + removeListener: jest.fn(), // deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + }), +}); + +HTMLCanvasElement.prototype.getContext = () => {}; diff --git a/data/plugins/youtube-video-panel/.config/jest.config.js b/data/plugins/youtube-video-panel/.config/jest.config.js new file mode 100644 index 0000000000000..09704b4fb95d3 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/jest.config.js @@ -0,0 +1,43 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-jest-config + */ + +const path = require('path'); +const { grafanaESModules, nodeModulesToTransform } = require('./jest/utils'); + +module.exports = { + moduleNameMapper: { + '\\.(css|scss|sass)$': 'identity-obj-proxy', + 'react-inlinesvg': path.resolve(__dirname, 'jest', 'mocks', 'react-inlinesvg.tsx'), + }, + modulePaths: ['/src'], + setupFilesAfterEnv: ['/jest-setup.js'], + testEnvironment: 'jest-environment-jsdom', + testMatch: [ + '/src/**/__tests__/**/*.{js,jsx,ts,tsx}', + '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', + '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', + ], + transform: { + '^.+\\.(t|j)sx?$': [ + '@swc/jest', + { + sourceMaps: 'inline', + jsc: { + parser: { + syntax: 'typescript', + tsx: true, + decorators: false, + dynamicImport: true, + }, + }, + }, + ], + }, + // Jest will throw `Cannot use import statement outside module` if it tries to load an + // ES module without it being transformed first. ./config/README.md#esm-errors-with-jest + transformIgnorePatterns: [nodeModulesToTransform(grafanaESModules)], +}; diff --git a/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx b/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx new file mode 100644 index 0000000000000..d540f3aabf895 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx @@ -0,0 +1,25 @@ +// Due to the grafana/ui Icon component making fetch requests to +// `/public/img/icon/.svg` we need to mock react-inlinesvg to prevent +// the failed fetch requests from displaying errors in console. + +import React from 'react'; + +type Callback = (...args: any[]) => void; + +export interface StorageItem { + content: string; + queue: Callback[]; + status: string; +} + +export const cacheStore: { [key: string]: StorageItem } = Object.create(null); + +const SVG_FILE_NAME_REGEX = /(.+)\/(.+)\.svg$/; + +const InlineSVG = ({ src }: { src: string }) => { + // testId will be the file name without extension (e.g. `public/img/icons/angle-double-down.svg` -> `angle-double-down`) + const testId = src.replace(SVG_FILE_NAME_REGEX, '$2'); + return ; +}; + +export default InlineSVG; diff --git a/data/plugins/youtube-video-panel/.config/jest/utils.js b/data/plugins/youtube-video-panel/.config/jest/utils.js new file mode 100644 index 0000000000000..fdca0dec9abed --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/jest/utils.js @@ -0,0 +1,31 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in .config/README.md + */ + +/* + * This utility function is useful in combination with jest `transformIgnorePatterns` config + * to transform specific packages (e.g.ES modules) in a projects node_modules folder. + */ +const nodeModulesToTransform = (moduleNames) => `node_modules\/(?!.*(${moduleNames.join('|')})\/.*)`; + +// Array of known nested grafana package dependencies that only bundle an ESM version +const grafanaESModules = [ + '.pnpm', // Support using pnpm symlinked packages + '@grafana/schema', + 'd3', + 'd3-color', + 'd3-force', + 'd3-interpolate', + 'd3-scale-chromatic', + 'ol', + 'react-colorful', + 'rxjs', + 'uuid', +]; + +module.exports = { + nodeModulesToTransform, + grafanaESModules, +}; diff --git a/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf b/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf new file mode 100644 index 0000000000000..47624f03cbc57 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf @@ -0,0 +1,15 @@ +[supervisord] +nodaemon=true +user=root + +[program:grafana] +user=root +directory=/var/lib/grafana +command=/run.sh +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 +redirect_stderr=true +killasgroup=true +stopasgroup=true +autostart=true + diff --git a/data/plugins/youtube-video-panel/.config/tsconfig.json b/data/plugins/youtube-video-panel/.config/tsconfig.json new file mode 100644 index 0000000000000..15e64aca0a1f1 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/tsconfig.json @@ -0,0 +1,26 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-typescript-config + */ +{ + "compilerOptions": { + "alwaysStrict": true, + "declaration": false, + "rootDir": "../src", + "baseUrl": "../src", + "typeRoots": ["../node_modules/@types"], + "resolveJsonModule": true + }, + "ts-node": { + "compilerOptions": { + "module": "commonjs", + "target": "es5", + "esModuleInterop": true + }, + "transpileOnly": true + }, + "include": ["../src", "./types"], + "extends": "@grafana/tsconfig" +} diff --git a/data/plugins/youtube-video-panel/.config/types/custom.d.ts b/data/plugins/youtube-video-panel/.config/types/custom.d.ts new file mode 100644 index 0000000000000..64e6eaa6f2391 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/types/custom.d.ts @@ -0,0 +1,37 @@ +// Image declarations +declare module '*.gif' { + const src: string; + export default src; +} + +declare module '*.jpg' { + const src: string; + export default src; +} + +declare module '*.jpeg' { + const src: string; + export default src; +} + +declare module '*.png' { + const src: string; + export default src; +} + +declare module '*.webp' { + const src: string; + export default src; +} + +declare module '*.svg' { + const content: string; + export default content; +} + +// Font declarations +declare module '*.woff'; +declare module '*.woff2'; +declare module '*.eot'; +declare module '*.ttf'; +declare module '*.otf'; diff --git a/data/plugins/youtube-video-panel/.config/webpack/constants.ts b/data/plugins/youtube-video-panel/.config/webpack/constants.ts new file mode 100644 index 0000000000000..071e4fd3437df --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/webpack/constants.ts @@ -0,0 +1,2 @@ +export const SOURCE_DIR = 'src'; +export const DIST_DIR = 'dist'; diff --git a/data/plugins/youtube-video-panel/.config/webpack/utils.ts b/data/plugins/youtube-video-panel/.config/webpack/utils.ts new file mode 100644 index 0000000000000..015aa05107a4f --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/webpack/utils.ts @@ -0,0 +1,63 @@ +import fs from 'fs'; +import process from 'process'; +import os from 'os'; +import path from 'path'; +import { glob } from 'glob'; +import { SOURCE_DIR } from './constants'; + +export function isWSL() { + if (process.platform !== 'linux') { + return false; + } + + if (os.release().toLowerCase().includes('microsoft')) { + return true; + } + + try { + return fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft'); + } catch { + return false; + } +} + +export function getPackageJson() { + return require(path.resolve(process.cwd(), 'package.json')); +} + +export function getPluginJson() { + return require(path.resolve(process.cwd(), `${SOURCE_DIR}/plugin.json`)); +} + +export function getCPConfigVersion() { + const cprcJson = path.resolve(__dirname, '../', '.cprc.json'); + return fs.existsSync(cprcJson) ? require(cprcJson).version : { version: 'unknown' }; +} + +export function hasReadme() { + return fs.existsSync(path.resolve(process.cwd(), SOURCE_DIR, 'README.md')); +} + +// Support bundling nested plugins by finding all plugin.json files in src directory +// then checking for a sibling module.[jt]sx? file. +export async function getEntries(): Promise> { + const pluginsJson = await glob('**/src/**/plugin.json', { absolute: true }); + + const plugins = await Promise.all( + pluginsJson.map((pluginJson) => { + const folder = path.dirname(pluginJson); + return glob(`${folder}/module.{ts,tsx,js,jsx}`, { absolute: true }); + }) + ); + + return plugins.reduce((result, modules) => { + return modules.reduce((result, module) => { + const pluginPath = path.dirname(module); + const pluginName = path.relative(process.cwd(), pluginPath).replace(/src\/?/i, ''); + const entryName = pluginName === '' ? 'module' : `${pluginName}/module`; + + result[entryName] = module; + return result; + }, result); + }, {}); +} diff --git a/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts b/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts new file mode 100644 index 0000000000000..a0730a3532668 --- /dev/null +++ b/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts @@ -0,0 +1,271 @@ +/* + * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ + * + * In order to extend the configuration follow the steps in + * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-webpack-config + */ + +import CopyWebpackPlugin from 'copy-webpack-plugin'; +import ESLintPlugin from 'eslint-webpack-plugin'; +import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; +import path from 'path'; +import ReplaceInFileWebpackPlugin from 'replace-in-file-webpack-plugin'; +import TerserPlugin from 'terser-webpack-plugin'; +import { SubresourceIntegrityPlugin } from "webpack-subresource-integrity"; +import { type Configuration, BannerPlugin } from 'webpack'; +import LiveReloadPlugin from 'webpack-livereload-plugin'; +import VirtualModulesPlugin from 'webpack-virtual-modules'; + +import { DIST_DIR, SOURCE_DIR } from './constants'; +import { getCPConfigVersion, getEntries, getPackageJson, getPluginJson, hasReadme, isWSL } from './utils'; + +const pluginJson = getPluginJson(); +const cpVersion = getCPConfigVersion(); + +const virtualPublicPath = new VirtualModulesPlugin({ + 'node_modules/grafana-public-path.js': ` +import amdMetaModule from 'amd-module'; + +__webpack_public_path__ = + amdMetaModule && amdMetaModule.uri + ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1) + : 'public/plugins/${pluginJson.id}/'; +`, +}); + +const config = async (env): Promise => { + const baseConfig: Configuration = { + cache: { + type: 'filesystem', + buildDependencies: { + config: [__filename], + }, + }, + + context: path.join(process.cwd(), SOURCE_DIR), + + devtool: env.production ? 'source-map' : 'eval-source-map', + + entry: await getEntries(), + + externals: [ + // Required for dynamic publicPath resolution + { 'amd-module': 'module' }, + 'lodash', + 'jquery', + 'moment', + 'slate', + 'emotion', + '@emotion/react', + '@emotion/css', + 'prismjs', + 'slate-plain-serializer', + '@grafana/slate-react', + 'react', + 'react-dom', + 'react-redux', + 'redux', + 'rxjs', + 'react-router', + 'react-router-dom', + 'd3', + 'angular', + '@grafana/ui', + '@grafana/runtime', + '@grafana/data', + + // Mark legacy SDK imports as external if their name starts with the "grafana/" prefix + ({ request }, callback) => { + const prefix = 'grafana/'; + const hasPrefix = (request) => request.indexOf(prefix) === 0; + const stripPrefix = (request) => request.substr(prefix.length); + + if (hasPrefix(request)) { + return callback(undefined, stripPrefix(request)); + } + + callback(); + }, + ], + + // Support WebAssembly according to latest spec - makes WebAssembly module async + experiments: { + asyncWebAssembly: true, + }, + + mode: env.production ? 'production' : 'development', + + module: { + rules: [ + // This must come first in the rules array otherwise it breaks sourcemaps. + { + test: /src\/(?:.*\/)?module\.tsx?$/, + use: [ + { + loader: 'imports-loader', + options: { + imports: `side-effects grafana-public-path`, + }, + }, + ], + }, + { + exclude: /(node_modules)/, + test: /\.[tj]sx?$/, + use: { + loader: 'swc-loader', + options: { + jsc: { + baseUrl: path.resolve(process.cwd(), SOURCE_DIR), + target: 'es2015', + loose: false, + parser: { + syntax: 'typescript', + tsx: true, + decorators: false, + dynamicImport: true, + }, + }, + }, + }, + }, + { + test: /\.css$/, + use: ['style-loader', 'css-loader'], + }, + { + test: /\.s[ac]ss$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.(png|jpe?g|gif|svg)$/, + type: 'asset/resource', + generator: { + filename: Boolean(env.production) ? '[hash][ext]' : '[file]', + }, + }, + { + test: /\.(woff|woff2|eot|ttf|otf)(\?v=\d+\.\d+\.\d+)?$/, + type: 'asset/resource', + generator: { + filename: Boolean(env.production) ? '[hash][ext]' : '[file]', + }, + }, + ], + }, + + optimization: { + minimize: Boolean(env.production), + minimizer: [ + new TerserPlugin({ + terserOptions: { + format: { + comments: (_, { type, value }) => type === 'comment2' && value.trim().startsWith('[create-plugin]'), + }, + compress: { + drop_console: ['log', 'info'] + } + }, + }), + ], + }, + + output: { + clean: { + keep: new RegExp(`(.*?_(amd64|arm(64)?)(.exe)?|go_plugin_build_manifest)`), + }, + filename: '[name].js', + library: { + type: 'amd', + }, + path: path.resolve(process.cwd(), DIST_DIR), + publicPath: `public/plugins/${pluginJson.id}/`, + uniqueName: pluginJson.id, + crossOriginLoading: 'anonymous', + }, + + plugins: [ + virtualPublicPath, + // Insert create plugin version information into the bundle + new BannerPlugin({ + banner: "/* [create-plugin] version: " + cpVersion + " */", + raw: true, + entryOnly: true, + }), + new CopyWebpackPlugin({ + patterns: [ + // If src/README.md exists use it; otherwise the root README + // To `compiler.options.output` + { from: hasReadme() ? 'README.md' : '../README.md', to: '.', force: true }, + { from: 'plugin.json', to: '.' }, + { from: '../LICENSE', to: '.' }, + { from: '../CHANGELOG.md', to: '.', force: true }, + { from: '**/*.json', to: '.' }, // TODO + { from: '**/*.svg', to: '.', noErrorOnMissing: true }, // Optional + { from: '**/*.png', to: '.', noErrorOnMissing: true }, // Optional + { from: '**/*.html', to: '.', noErrorOnMissing: true }, // Optional + { from: 'img/**/*', to: '.', noErrorOnMissing: true }, // Optional + { from: 'libs/**/*', to: '.', noErrorOnMissing: true }, // Optional + { from: 'static/**/*', to: '.', noErrorOnMissing: true }, // Optional + { from: '**/query_help.md', to: '.', noErrorOnMissing: true }, // Optional + ], + }), + // Replace certain template-variables in the README and plugin.json + new ReplaceInFileWebpackPlugin([ + { + dir: DIST_DIR, + files: ['plugin.json', 'README.md'], + rules: [ + { + search: /\%VERSION\%/g, + replace: getPackageJson().version, + }, + { + search: /\%TODAY\%/g, + replace: new Date().toISOString().substring(0, 10), + }, + { + search: /\%PLUGIN_ID\%/g, + replace: pluginJson.id, + }, + ], + }, + ]), + new SubresourceIntegrityPlugin({ + hashFuncNames: ["sha256"], + }), + ...(env.development ? [ + new LiveReloadPlugin(), + new ForkTsCheckerWebpackPlugin({ + async: Boolean(env.development), + issue: { + include: [{ file: '**/*.{ts,tsx}' }], + }, + typescript: { configFile: path.join(process.cwd(), 'tsconfig.json') }, + }), + new ESLintPlugin({ + extensions: ['.ts', '.tsx'], + lintDirtyModulesOnly: Boolean(env.development), // don't lint on start, only lint changed files + }), + ] : []), + ], + + resolve: { + extensions: ['.js', '.jsx', '.ts', '.tsx'], + // handle resolving "rootDir" paths + modules: [path.resolve(process.cwd(), 'src'), 'node_modules'], + unsafeCache: true, + }, + }; + + if (isWSL()) { + baseConfig.watchOptions = { + poll: 3000, + ignored: /node_modules/, + }; + } + + return baseConfig; +}; + +export default config; diff --git a/data/plugins/youtube-video-panel/.eslintrc b/data/plugins/youtube-video-panel/.eslintrc new file mode 100644 index 0000000000000..476a147d87915 --- /dev/null +++ b/data/plugins/youtube-video-panel/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": "./.config/.eslintrc" +} diff --git a/data/plugins/youtube-video-panel/.nvmrc b/data/plugins/youtube-video-panel/.nvmrc new file mode 100644 index 0000000000000..209e3ef4b6247 --- /dev/null +++ b/data/plugins/youtube-video-panel/.nvmrc @@ -0,0 +1 @@ +20 diff --git a/data/plugins/youtube-video-panel/.prettierrc.js b/data/plugins/youtube-video-panel/.prettierrc.js index 263dbd3b276ea..6c79e24f3170b 100644 --- a/data/plugins/youtube-video-panel/.prettierrc.js +++ b/data/plugins/youtube-video-panel/.prettierrc.js @@ -1,3 +1,4 @@ module.exports = { - ...require("./node_modules/@grafana/toolkit/src/config/prettier.plugin.config.json"), + // Prettier configuration provided by Grafana scaffolding + ...require('./.config/.prettierrc.js'), }; diff --git a/data/plugins/youtube-video-panel/dist/MANIFEST.txt b/data/plugins/youtube-video-panel/dist/MANIFEST.txt deleted file mode 100644 index 96e61fc0b00d1..0000000000000 --- a/data/plugins/youtube-video-panel/dist/MANIFEST.txt +++ /dev/null @@ -1,57 +0,0 @@ - ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA512 - -{ - "manifestVersion": "2.0.0", - "signatureType": "private", - "signedByOrg": "themike", - "signedByOrgName": "themike", - "rootUrls": [ - "https://app.logz.io/", - "https://app-us.logz.io/", - "https://app-eu.logz.io/", - "https://app-ca.logz.io/", - "https://app-au.logz.io/", - "https://app-uk.logz.io/", - "https://app-nl.logz.io/", - "https://app-wa.logz.io/", - "https://app-jp.logz.io/", - "https://app.logz.io/grafana-app", - "https://app-us.logz.io/grafana-app", - "https://app-eu.logz.io/grafana-app", - "https://app-ca.logz.io/grafana-app", - "https://app-au.logz.io/grafana-app", - "https://app-uk.logz.io/grafana-app", - "https://app-nl.logz.io/grafana-app", - "https://app-wa.logz.io/grafana-app", - "https://app-jp.logz.io/grafana-app", - "http://grafana-services:9990/", - "http://grafana-service:9990/grafana-app/" - ], - "plugin": "youtube-video-panel", - "version": "%VERSION%", - "time": 1714056828666, - "keyId": "7e4d0c6a708866e7", - "files": { - "LICENSE": "b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1", - "CHANGELOG.md": "f039df40cb9e6dffcd8eb814227ba03e47f686d447bfb45e5eae8bdf83fa9465", - "module.js.LICENSE.txt": "6fca9fb5ddbe9c73d84667146676a9fef623ecbd6529d700b20950e5a48853ba", - "module.js.map": "220f06e6005ab6355f620c53d7aee43c57f5c7c5b9ff3866c6fa7d3f9b1b7f64", - "plugin.json": "2f04e3aaa92c2c41aed7bc2d789a0d46d806a056d165170223e39e8774a1df10", - "README.md": "5ba9f6f81524312f230a70aa9e0745398dbca48307968635730f8ced78c70367", - "img/logo.svg": "1defc6f7e585c67657bcfd8fddc599ee7dfa82f8674413f49fa274c2cd453ec6", - "module.js": "f927e1f1f6b086aa1db4b09906631457b90fdb8d3363971563deb2da20d9c640" - } -} ------BEGIN PGP SIGNATURE----- -Version: OpenPGP.js v4.10.11 -Comment: https://openpgpjs.org - -wrkEARMKAAYFAmYqbnwAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm551tAgkB/2pIydJKFSCnVuC1a/9us0LJ6pGhRZbE3pocDSbyMJnnSx5/ -SCPq6HdpBL6y5EBp26S1LNxZFy6agwc0KE2sV0ACCQDbCJklB3irrk06eei3 -/kx+YCTmfaxjeiY/yV2cIFfHINJFqEKohib0UbspcV1Dy6mtgJDAIjOHzc9n -8fJrZn9KUA== -=I4ji ------END PGP SIGNATURE----- diff --git a/data/plugins/youtube-video-panel/dist/module.js b/data/plugins/youtube-video-panel/dist/module.js index 507664628ee4a..a5866ecf4425f 100644 --- a/data/plugins/youtube-video-panel/dist/module.js +++ b/data/plugins/youtube-video-panel/dist/module.js @@ -1,3 +1,14 @@ -/*! For license information please see module.js.LICENSE.txt */ -define(["emotion","react","@grafana/data","@grafana/ui"],(function(e,t,n,r){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=7)}([function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=n},function(e,t){e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(6);function i(e,t){return t.encode?t.strict?r(e):encodeURIComponent(e):e}t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e,t){var n=function(e){var t;switch(e.arrayFormat){case"index":return function(e,n,r){t=/\[(\d*)\]$/.exec(e),e=e.replace(/\[\d*\]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return function(e,n,r){t=/(\[\])$/.exec(e),e=e.replace(/\[\]$/,""),t?void 0!==r[e]?r[e]=[].concat(r[e],n):r[e]=[n]:r[e]=n};default:return function(e,t,n){void 0!==n[e]?n[e]=[].concat(n[e],t):n[e]=t}}}(t=o({arrayFormat:"none"},t)),r=Object.create(null);return"string"!=typeof e?r:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var t=e.replace(/\+/g," ").split("="),o=t.shift(),i=t.length>0?t.join("="):void 0;i=void 0===i?null:decodeURIComponent(i),n(decodeURIComponent(o),i,r)})),Object.keys(r).sort().reduce((function(e,t){var n=r[t];return Boolean(n)&&"object"==typeof n&&!Array.isArray(n)?e[t]=function e(t){return Array.isArray(t)?t.sort():"object"==typeof t?e(Object.keys(t)).sort((function(e,t){return Number(e)-Number(t)})).map((function(e){return t[e]})):t}(n):e[t]=n,e}),Object.create(null))):r},t.stringify=function(e,t){var n=function(e){switch(e.arrayFormat){case"index":return function(t,n,r){return null===n?[i(t,e),"[",r,"]"].join(""):[i(t,e),"[",i(r,e),"]=",i(n,e)].join("")};case"bracket":return function(t,n){return null===n?i(t,e):[i(t,e),"[]=",i(n,e)].join("")};default:return function(t,n){return null===n?i(t,e):[i(t,e),"=",i(n,e)].join("")}}}(t=o({encode:!0,strict:!0,arrayFormat:"none"},t));return e?Object.keys(e).sort().map((function(r){var o=e[r];if(void 0===o)return"";if(null===o)return i(r,t);if(Array.isArray(o)){var a=[];return o.slice().forEach((function(e){void 0!==e&&a.push(n(r,e,a.length))})),a.join("&")}return i(r,t)+"="+i(o,t)})).filter((function(e){return e.length>0})).join("&"):""}},function(e,t,n){"use strict";e.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,c,u=a(e),l=1;l(()=>{"use strict";var a={781:t=>{t.exports=e},7:e=>{e.exports=t},485:e=>{e.exports=r},308:e=>{e.exports=o},959:e=>{e.exports=n}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return a[e](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.p="public/plugins/youtube-video-panel/";var c={};s.r(c),s.d(c,{plugin:()=>D});var l={};s.r(l),s.d(l,{exclude:()=>q,extract:()=>C,parse:()=>U,parseUrl:()=>T,pick:()=>L,stringify:()=>M,stringifyUrl:()=>B});var u=s(308),p=s.n(u);s.p=p()&&p().uri?p().uri.slice(0,p().uri.lastIndexOf("/")+1):"public/plugins/youtube-video-panel/";var f=s(781),d=s(959),y=s.n(d),m=s(485),g=s(7);const b="%[a-f0-9]{2}",h=new RegExp("("+b+")|([^%]+?)","gi"),v=new RegExp("("+b+")+","gi");function j(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(1===e.length)return e;t=t||1;const r=e.slice(0,t),o=e.slice(t);return Array.prototype.concat.call([],j(r),j(o))}function x(e){try{return decodeURIComponent(e)}catch{let t=e.match(h)||[];for(let r=1;rnull==e,S=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)),N=Symbol("encodeFragmentIdentifier");function I(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function E(e,t){return t.encode?t.strict?S(e):encodeURIComponent(e):e}function $(e,t){return t.decode?w(e):e}function A(e){return Array.isArray(e)?e.sort():"object"==typeof e?A(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function P(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function R(e,t,r){return"string"===r&&"string"==typeof e?e:"function"==typeof r&&"string"==typeof e?r(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()?"number"!==r||Number.isNaN(Number(e))||"string"!=typeof e||""===e.trim()?t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?Number(e):e:Number(e):"true"===e.toLowerCase()}function C(e){const t=(e=P(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function U(e,t){I((t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...t}).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,o)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===o[e]&&(o[e]={}),o[e][t[1]]=r):o[e]=r};case"bracket":return(e,r,o)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"colon-list-separator":return(e,r,o)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"comma":case"separator":return(t,r,o)=>{const n="string"==typeof r&&r.includes(e.arrayFormatSeparator),a="string"==typeof r&&!n&&$(r,e).includes(e.arrayFormatSeparator);r=a?$(r,e):r;const i=n||a?r.split(e.arrayFormatSeparator).map((t=>$(t,e))):null===r?r:$(r,e);o[t]=i};case"bracket-separator":return(t,r,o)=>{const n=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!n)return void(o[t]=r?$(r,e):r);const a=null===r?[]:r.split(e.arrayFormatSeparator).map((t=>$(t,e)));void 0!==o[t]?o[t]=[...o[t],...a]:o[t]=a};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[...[r[e]].flat(),t]:r[e]=t}}}(t),o=Object.create(null);if("string"!=typeof e)return o;if(!(e=e.trim().replace(/^[?#&]/,"")))return o;for(const n of e.split("&")){if(""===n)continue;const e=t.decode?n.replaceAll("+"," "):n;let[a,i]=F(e,"=");void 0===a&&(a=e),i=void 0===i?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?i:$(i,t),r($(a,t),i,o)}for(const[e,r]of Object.entries(o))if("object"==typeof r&&null!==r&&"string"!==t.types[e])for(const[o,n]of Object.entries(r)){const a=t.types[e]?t.types[e].replace("[]",""):void 0;r[o]=R(n,t,a)}else"object"==typeof r&&null!==r&&"string"===t.types[e]?o[e]=Object.values(r).join(t.arrayFormatSeparator):o[e]=R(r,t,t.types[e]);return!1===t.sort?o:(!0===t.sort?Object.keys(o).sort():Object.keys(o).sort(t.sort)).reduce(((e,t)=>{const r=o[t];return e[t]=Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?A(r):r,e}),Object.create(null))}function M(e,t){if(!e)return"";I((t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t}).arrayFormatSeparator);const r=r=>t.skipNull&&O(e[r])||t.skipEmptyString&&""===e[r],o=function(e){switch(e.arrayFormat){case"index":return t=>(r,o)=>{const n=r.length;return void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),"[",n,"]"].join("")]:[...r,[E(t,e),"[",E(n,e),"]=",E(o,e)].join("")]};case"bracket":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),"[]"].join("")]:[...r,[E(t,e),"[]=",E(o,e)].join("")];case"colon-list-separator":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),":list="].join("")]:[...r,[E(t,e),":list=",E(o,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return r=>(o,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?o:(n=null===n?"":n,0===o.length?[[E(r,e),t,E(n,e)].join("")]:[[o,E(n,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,E(t,e)]:[...r,[E(t,e),"=",E(o,e)].join("")]}}(t),n={};for(const[t,o]of Object.entries(e))r(t)||(n[t]=o);const a=Object.keys(n);return!1!==t.sort&&a.sort(t.sort),a.map((r=>{const n=e[r];return void 0===n?"":null===n?E(r,t):Array.isArray(n)?0===n.length&&"bracket-separator"===t.arrayFormat?E(r,t)+"[]":n.reduce(o(r),[]).join("&"):E(r,t)+"="+E(n,t)})).filter((e=>e.length>0)).join("&")}function T(e,t){t={decode:!0,...t};let[r,o]=F(e,"#");return void 0===r&&(r=e),{url:r?.split("?")?.[0]??"",query:U(C(e),t),...t&&t.parseFragmentIdentifier&&o?{fragmentIdentifier:$(o,t)}:{}}}function B(e,t){t={encode:!0,strict:!0,[N]:!0,...t};const r=P(e.url).split("?")[0]||"";let o=M({...U(C(e.url),{sort:!1}),...e.query},t);o&&=`?${o}`;let n=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);if("string"==typeof e.fragmentIdentifier){const o=new URL(r);o.hash=e.fragmentIdentifier,n=t[N]?o.hash:`#${e.fragmentIdentifier}`}return`${r}${o}${n}`}function L(e,t,r){r={parseFragmentIdentifier:!0,[N]:!1,...r};const{url:o,query:n,fragmentIdentifier:a}=T(e,r);return B({url:o,query:k(n,t),fragmentIdentifier:a},r)}function q(e,t,r){return L(e,Array.isArray(t)?e=>!t.includes(e):(e,r)=>!t(e,r),r)}const V=l,_=(0,g.stylesFactory)((()=>({wrapper:m.css` + position: absolute; + `,video:m.css` + top: 0; + left: 0; + `}))),D=new f.PanelPlugin((({options:e,width:t,height:r})=>{const o=_();let n="";const a={loop:0,autoplay:0,playlist:e.videoId};return e.autoPlay&&(a.autoplay=1),e.loop&&(a.loop=1),n="https://www.youtube.com/embed/"+e.videoId+"?"+V.stringify(a),y().createElement("div",{className:(0,m.cx)(o.wrapper,m.css` + width: ${t}px; + height: ${r}px; + `)},y().createElement("iframe",{frameBorder:"0",allowFullScreen:!0,className:(0,m.cx)(o.video,m.css` + width: ${t}px; + height: ${r}px; + `),src:n}))})).setPanelOptions((e=>e.addTextInput({path:"videoId",name:"Video ID",description:"The value after watch?v= in the URL.",defaultValue:"vYZzMk0NkgM",settings:{placeholder:"vYZzMk0NkgM"}}).addBooleanSwitch({path:"autoPlay",name:"Autoplay",defaultValue:!0}).addBooleanSwitch({path:"loop",name:"Loop",defaultValue:!0})));return c})())); //# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/module.js.LICENSE.txt b/data/plugins/youtube-video-panel/dist/module.js.LICENSE.txt deleted file mode 100644 index 72d2cfee18559..0000000000000 --- a/data/plugins/youtube-video-panel/dist/module.js.LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ diff --git a/data/plugins/youtube-video-panel/dist/module.js.map b/data/plugins/youtube-video-panel/dist/module.js.map index 47c9a246fc571..cf8849f051726 100644 --- a/data/plugins/youtube-video-panel/dist/module.js.map +++ b/data/plugins/youtube-video-panel/dist/module.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"emotion\"","webpack:///external \"react\"","webpack:///external \"@grafana/data\"","webpack:///external \"@grafana/ui\"","webpack:///../node_modules/query-string/index.js","webpack:///../node_modules/strict-uri-encode/index.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///./YoutubePanel.tsx","webpack:///./module.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","__WEBPACK_EXTERNAL_MODULE__3__","strictUriEncode","objectAssign","encode","opts","strict","encodeURIComponent","extract","str","split","parse","formatter","result","arrayFormat","accumulator","exec","replace","undefined","concat","parserForArrayFormat","ret","trim","forEach","param","parts","shift","val","length","join","decodeURIComponent","keys","sort","reduce","Boolean","Array","isArray","keysSorter","input","a","b","Number","map","stringify","obj","index","encoderForArrayFormat","slice","val2","push","filter","x","charCodeAt","toString","toUpperCase","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","TypeError","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","test3","letter","err","shouldUseNative","target","source","from","symbols","to","arguments","__makeTemplateObject","cooked","raw","getStyles","wrapper","video","videoURL","options","width","height","styles","youtubeParams","loop","autoplay","playlist","videoId","autoPlay","className","frameBorder","allowFullScreen","src","setPanelOptions","builder","addTextInput","path","description","defaultValue","settings","placeholder","addBooleanSwitch"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 7);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import React from 'react';\nimport { PanelProps } from '@grafana/data';\nimport { VideoOptions } from 'types';\nimport { css, cx } from 'emotion';\nimport { stylesFactory } from '@grafana/ui';\nimport qs from 'query-string';\n\ninterface Props extends PanelProps {}\n\nexport const YoutubePanel: React.FC = ({ options, width, height }) => {\n const styles = getStyles();\n let videoURL: any = '';\n\n const youtubeParams = {\n loop: 0,\n autoplay: 0,\n playlist: options.videoId,\n };\n\n if (options.autoPlay) {\n youtubeParams.autoplay = 1;\n }\n\n if (options.loop) {\n youtubeParams.loop = 1;\n }\n\n videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams);\n\n return (\n \n \n \n );\n};\n\nconst getStyles = stylesFactory(() => {\n return {\n wrapper: css`\n position: absolute;\n `,\n video: css`\n top: 0;\n left: 0;\n `,\n };\n});\n","/* istanbul ignore file */\n\nimport { PanelPlugin } from '@grafana/data';\nimport { VideoOptions } from './types';\nimport { YoutubePanel } from './YoutubePanel';\n\nexport const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => {\n return builder\n .addTextInput({\n path: 'videoId',\n name: 'Video ID',\n description: 'The value after watch?v= in the URL.',\n defaultValue: 'vYZzMk0NkgM',\n settings: {\n placeholder: 'vYZzMk0NkgM',\n },\n })\n .addBooleanSwitch({\n path: 'autoPlay',\n name: 'Autoplay',\n defaultValue: true,\n })\n .addBooleanSwitch({\n path: 'loop',\n name: 'Loop',\n defaultValue: true,\n });\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"module.js","mappings":"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","sources":["webpack://youtube-video-panel/external amd \"@grafana/data\"","webpack://youtube-video-panel/external amd \"@grafana/ui\"","webpack://youtube-video-panel/external amd \"emotion\"","webpack://youtube-video-panel/external amd \"module\"","webpack://youtube-video-panel/external amd \"react\"","webpack://youtube-video-panel/webpack/bootstrap","webpack://youtube-video-panel/webpack/runtime/compat get default export","webpack://youtube-video-panel/webpack/runtime/define property getters","webpack://youtube-video-panel/webpack/runtime/hasOwnProperty shorthand","webpack://youtube-video-panel/webpack/runtime/make namespace object","webpack://youtube-video-panel/webpack/runtime/publicPath","webpack://youtube-video-panel/./node_modules/grafana-public-path.js","webpack://youtube-video-panel/../node_modules/decode-uri-component/index.js","webpack://youtube-video-panel/../node_modules/filter-obj/index.js","webpack://youtube-video-panel/../node_modules/split-on-first/index.js","webpack://youtube-video-panel/../node_modules/query-string/base.js","webpack://youtube-video-panel/../node_modules/query-string/index.js","webpack://youtube-video-panel/./YoutubePanel.tsx","webpack://youtube-video-panel/./module.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","module.exports = __WEBPACK_EXTERNAL_MODULE__485__;","module.exports = __WEBPACK_EXTERNAL_MODULE__308__;","module.exports = __WEBPACK_EXTERNAL_MODULE__959__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"public/plugins/youtube-video-panel/\";","\nimport amdMetaModule from 'amd-module';\n\n__webpack_public_path__ =\n amdMetaModule && amdMetaModule.uri\n ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1)\n : 'public/plugins/youtube-video-panel/';\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import React from 'react';\nimport { PanelProps } from '@grafana/data';\nimport { VideoOptions } from 'types';\nimport { css, cx } from 'emotion';\nimport { stylesFactory } from '@grafana/ui';\nimport qs from 'query-string';\n\ninterface Props extends PanelProps {}\n\nexport const YoutubePanel: React.FC = ({ options, width, height }) => {\n const styles = getStyles();\n let videoURL: any = '';\n\n const youtubeParams = {\n loop: 0,\n autoplay: 0,\n playlist: options.videoId,\n };\n\n if (options.autoPlay) {\n youtubeParams.autoplay = 1;\n }\n\n if (options.loop) {\n youtubeParams.loop = 1;\n }\n\n videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams);\n\n return (\n \n \n \n );\n};\n\nconst getStyles = stylesFactory(() => {\n return {\n wrapper: css`\n position: absolute;\n `,\n video: css`\n top: 0;\n left: 0;\n `,\n };\n});\n","/* istanbul ignore file */\n\nimport { PanelPlugin } from '@grafana/data';\nimport { VideoOptions } from './types';\nimport { YoutubePanel } from './YoutubePanel';\n\nexport const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => {\n return builder\n .addTextInput({\n path: 'videoId',\n name: 'Video ID',\n description: 'The value after watch?v= in the URL.',\n defaultValue: 'vYZzMk0NkgM',\n settings: {\n placeholder: 'vYZzMk0NkgM',\n },\n })\n .addBooleanSwitch({\n path: 'autoPlay',\n name: 'Autoplay',\n defaultValue: true,\n })\n .addBooleanSwitch({\n path: 'loop',\n name: 'Loop',\n defaultValue: true,\n });\n});\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__781__","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__485__","__WEBPACK_EXTERNAL_MODULE__308__","__WEBPACK_EXTERNAL_MODULE__959__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","slice","lastIndexOf","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","length","left","right","Array","concat","decode","input","tokens","match","i","decodeUriComponent","encodedURI","TypeError","replaceMap","exec","result","entries","keys","replace","customDecodeURIComponent","includeKeys","object","predicate","isArray","descriptor","getOwnPropertyDescriptor","Reflect","ownKeys","splitOnFirst","string","separator","separatorIndex","indexOf","isNullOrUndefined","strictUriEncode","encodeURIComponent","replaceAll","x","charCodeAt","toString","toUpperCase","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","options","strict","keysSorter","sort","b","Number","map","removeHash","hashStart","parseValue","type","parseBooleans","toLowerCase","isNaN","trim","parseNumbers","extract","queryStart","parse","query","arrayFormat","arrayFormatSeparator","types","create","formatter","accumulator","includes","isEncodedArray","newValue","item","test","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","values","reduce","Boolean","stringify","shouldFilter","skipNull","skipEmptyString","index","keyValueSeparator","encoderForArrayFormat","objectCopy","filter","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","getHash","urlObjectForFragmentEncode","URL","pick","exclude","getStyles","stylesFactory","wrapper","css","video","plugin","PanelPlugin","width","height","styles","videoURL","youtubeParams","loop","autoplay","playlist","videoId","autoPlay","qs","div","className","cx","iframe","frameBorder","allowFullScreen","src","setPanelOptions","builder","addTextInput","path","name","description","defaultValue","settings","placeholder","addBooleanSwitch"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/plugin.json b/data/plugins/youtube-video-panel/dist/plugin.json index 57e610fba7048..5b968c92d1c59 100644 --- a/data/plugins/youtube-video-panel/dist/plugin.json +++ b/data/plugins/youtube-video-panel/dist/plugin.json @@ -24,8 +24,8 @@ } ], "screenshots": [], - "version": "%VERSION%", - "updated": "%TODAY%" + "version": "1.0.0", + "updated": "2024-10-06" }, "dependencies": { "grafanaVersion": "7.0.x", diff --git a/data/plugins/youtube-video-panel/docker-compose.yaml b/data/plugins/youtube-video-panel/docker-compose.yaml new file mode 100644 index 0000000000000..d4658548ebce5 --- /dev/null +++ b/data/plugins/youtube-video-panel/docker-compose.yaml @@ -0,0 +1,24 @@ +services: + grafana: + user: root + container_name: 'youtube-video-panel' + + build: + context: ./.config + args: + grafana_image: ${GRAFANA_IMAGE:-grafana-enterprise} + grafana_version: ${GRAFANA_VERSION:-11.2.2} + development: ${DEVELOPMENT:-false} + ports: + - 3000:3000/tcp + volumes: + - ./dist:/var/lib/grafana/plugins/youtube-video-panel + - ./provisioning:/etc/grafana/provisioning + - .:/root/youtube-video-panel + + environment: + NODE_ENV: development + GF_LOG_FILTERS: plugin.youtube-video-panel:debug + GF_LOG_LEVEL: debug + GF_DATAPROXY_LOGGING: 1 + GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: youtube-video-panel diff --git a/data/plugins/youtube-video-panel/jest-setup.js b/data/plugins/youtube-video-panel/jest-setup.js new file mode 100644 index 0000000000000..35a700b732b1a --- /dev/null +++ b/data/plugins/youtube-video-panel/jest-setup.js @@ -0,0 +1,2 @@ +// Jest setup provided by Grafana scaffolding +import './.config/jest-setup'; diff --git a/data/plugins/youtube-video-panel/jest.config.js b/data/plugins/youtube-video-panel/jest.config.js new file mode 100644 index 0000000000000..79fd52a1b4255 --- /dev/null +++ b/data/plugins/youtube-video-panel/jest.config.js @@ -0,0 +1,8 @@ +// force timezone to UTC to allow tests to work regardless of local timezone +// generally used by snapshots, but can affect specific tests +process.env.TZ = 'UTC'; + +module.exports = { + // Jest configuration provided by Grafana scaffolding + ...require('./.config/jest.config'), +}; diff --git a/data/plugins/youtube-video-panel/package.json b/data/plugins/youtube-video-panel/package.json index 6a5866e28bf00..c70398405540b 100644 --- a/data/plugins/youtube-video-panel/package.json +++ b/data/plugins/youtube-video-panel/package.json @@ -3,10 +3,15 @@ "version": "1.0.0", "description": "Add youtube videos in grafana panels", "scripts": { - "build": "grafana-toolkit plugin:build", - "test": "grafana-toolkit plugin:test", - "dev": "grafana-toolkit plugin:dev", - "watch": "grafana-toolkit plugin:dev --watch" + "build": "webpack -c ./.config/webpack/webpack.config.ts --env production", + "dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", + "lint": "eslint --cache --ignore-path ./.gitignore --ext .js,.jsx,.ts,.tsx .", + "lint:fix": "yarn run lint --fix", + "server": "docker compose up --build", + "sign": "npx --yes @grafana/sign-plugin@latest", + "test": "jest --watch --onlyChanged", + "test:ci": "jest --passWithNoTests --maxWorkers 4", + "typecheck": "tsc --noEmit" }, "repository": "github:grafana/simple-react-panel", "author": "iOrCohen", @@ -16,16 +21,62 @@ "email": "plugins@grafana.com" }, "devDependencies": { - "@grafana/data": "next", - "@grafana/toolkit": "next", - "@grafana/ui": "next", - "emotion": "10.0.27" + "@babel/core": "^7.21.4", + "@grafana/eslint-config": "^7.0.0", + "@grafana/tsconfig": "^2.0.0", + "@swc/core": "^1.3.90", + "@swc/helpers": "^0.5.0", + "@swc/jest": "^0.2.26", + "@testing-library/jest-dom": "6.1.4", + "@testing-library/react": "14.0.0", + "@types/jest": "^29.5.0", + "@types/node": "^20.8.7", + "@types/react-router-dom": "^5.2.0", + "@types/testing-library__jest-dom": "5.14.8", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.7.3", + "emotion": "10.0.27", + "eslint-plugin-deprecation": "^2.0.0", + "eslint-webpack-plugin": "^4.0.1", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "glob": "^10.2.7", + "identity-obj-proxy": "3.0.0", + "imports-loader": "^5.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "prettier": "^2.8.7", + "replace-in-file-webpack-plugin": "^1.0.6", + "sass": "1.63.2", + "sass-loader": "13.3.1", + "style-loader": "3.3.3", + "swc-loader": "^0.2.3", + "terser-webpack-plugin": "^5.3.10", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "5.5.4", + "webpack": "^5.94.0", + "webpack-cli": "^5.1.4", + "webpack-livereload-plugin": "^3.0.2", + "webpack-subresource-integrity": "^5.1.0", + "webpack-virtual-modules": "^0.6.2" }, "engines": { "node": ">=12 <13" }, "volta": { - "node": "17.9.1", + "node": "18.20.4", "yarn": "1.22.10" - } + }, + "dependencies": { + "@emotion/css": "11.10.6", + "@grafana/data": "next", + "@grafana/runtime": "^11.2.2", + "@grafana/schema": "^10.4.0", + "@grafana/ui": "next", + "query-string": "^9.1.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "tslib": "2.5.3" + }, + "packageManager": "yarn@4.1.0" } diff --git a/data/plugins/youtube-video-panel/tsconfig.json b/data/plugins/youtube-video-panel/tsconfig.json index 211e352ef5eb0..102e45b78491b 100644 --- a/data/plugins/youtube-video-panel/tsconfig.json +++ b/data/plugins/youtube-video-panel/tsconfig.json @@ -1,9 +1,3 @@ { - "extends": "./node_modules/@grafana/toolkit/src/config/tsconfig.plugin.json", - "include": ["src", "types"], - "compilerOptions": { - "rootDir": "./src", - "baseUrl": "./src", - "typeRoots": ["./node_modules/@types"] - } + "extends": "./.config/tsconfig.json" } diff --git a/data/plugins/youtube-video-panel/yarn.lock b/data/plugins/youtube-video-panel/yarn.lock index 9b4a796e73974..7d3c826e6c9c8 100644 --- a/data/plugins/youtube-video-panel/yarn.lock +++ b/data/plugins/youtube-video-panel/yarn.lock @@ -1,12988 +1,12140 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ant-design/css-animation@^1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@ant-design/css-animation/-/css-animation-1.7.2.tgz#4ee5d2ec0fb7cc0a78b44e1c82628bd4621ac7e3" - integrity sha512-bvVOe7A+r7lws58B7r+fgnQDK90cV45AXuvGx6i5CCSX1W/M3AJnHsNggDANBxEtWdNdFWcDd5LorB+RdSIlBw== - -"@antv/adjust@~0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@antv/adjust/-/adjust-0.1.1.tgz#e263ab0e1a1941a648842fc086cf65a7e3b75e98" - integrity sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q== - dependencies: - "@antv/util" "~1.3.1" - -"@antv/attr@~0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@antv/attr/-/attr-0.1.2.tgz#2eeb122fcaaf851a2d8749abc7c60519d3f77e37" - integrity sha512-QXjP+T2I+pJQcwZx1oCA4tipG43vgeCeKcGGKahlcxb71OBAzjJZm1QbF4frKXcnOqRkxVXtCr70X9TRair3Ew== - dependencies: - "@antv/util" "~1.3.1" - -"@antv/component@~0.3.3": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@antv/component/-/component-0.3.9.tgz#ed561c639b7738ce03ff63a866f59e251de82a17" - integrity sha512-Knh/Nq0S8UkTfZj4SL7XizagTfXYqjFAYIqFtOmUaKpRMgccUi7p1oA7fJdNPGktkndljy6fUmCWocEeBXRS2g== - dependencies: - "@antv/attr" "~0.1.2" - "@antv/g" "~3.3.5" - "@antv/util" "~1.3.1" - wolfy87-eventemitter "~5.1.0" - -"@antv/coord@~0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@antv/coord/-/coord-0.1.0.tgz#48a80ae36d07552f96657e7f8095227c63f0c0a9" - integrity sha512-W1R8h3Jfb3AfMBVfCreFPMVetgEYuwHBIGn0+d3EgYXe2ckOF8XWjkpGF1fZhOMHREMr+Gt27NGiQh8yBdLUgg== - dependencies: - "@antv/util" "~1.3.1" - -"@antv/g2@3.5.15": - version "3.5.15" - resolved "https://registry.yarnpkg.com/@antv/g2/-/g2-3.5.15.tgz#5951808f88210f4a45ca1acb38fb25a743b4a578" - integrity sha512-gWN28V/BRHrCe6O12WcJ7ji9UE8XETSQ146ur4zMu5I50ZO7kxc/3s038N0iyuJh3Em9nlrTjfhqjlysogrX7g== - dependencies: - "@antv/adjust" "~0.1.0" - "@antv/attr" "~0.1.2" - "@antv/component" "~0.3.3" - "@antv/coord" "~0.1.0" - "@antv/g" "~3.3.6" - "@antv/scale" "~0.1.1" - "@antv/util" "~1.3.1" - venn.js "~0.2.20" - wolfy87-eventemitter "~5.1.0" - -"@antv/g@~3.3.5", "@antv/g@~3.3.6": - version "3.3.6" - resolved "https://registry.yarnpkg.com/@antv/g/-/g-3.3.6.tgz#11fed9ddc9ed4e5a2aa244b7c8abb982a003f201" - integrity sha512-2GtyTz++s0BbN6s0ZL2/nrqGYCkd52pVoNH92YkrTdTOvpO6Z4DNoo6jGVgZdPX6Nzwli6yduC8MinVAhE8X6g== - dependencies: - "@antv/gl-matrix" "~2.7.1" - "@antv/util" "~1.3.1" - d3-ease "~1.0.3" - d3-interpolate "~1.1.5" - d3-timer "~1.0.6" - wolfy87-eventemitter "~5.1.0" - -"@antv/gl-matrix@^2.7.1", "@antv/gl-matrix@~2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz#acb8e37f7ab3df01345aba4372d7942be42eba14" - integrity sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q== - -"@antv/scale@~0.1.1": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@antv/scale/-/scale-0.1.5.tgz#243266e8b9047cf64b2fdfc40f9834cf0846496e" - integrity sha512-7RAu4iH5+Hk21h6+aBMiDTfmLf4IibK2SWjx/+E4f4AXRpqucO+8u7IbZdFkakAWxvqhJtN3oePJuTKqOMcmlg== - dependencies: - "@antv/util" "~1.3.1" - fecha "~2.3.3" - -"@antv/util@~1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@antv/util/-/util-1.3.1.tgz#30a34b201ff9126ec0d58c72c8166a9c3e644ccd" - integrity sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA== - dependencies: - "@antv/gl-matrix" "^2.7.1" - -"@babel/code-frame@7.8.3", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.9.0", "@babel/compat-data@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" - integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== - dependencies: - browserslist "^4.11.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" - integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.6" - "@babel/parser" "^7.9.6" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.7.5": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" - integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== - dependencies: - "@babel/types" "^7.12.11" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.4.0", "@babel/generator@^7.9.0", "@babel/generator@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" - integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== - dependencies: - "@babel/types" "^7.9.6" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-compilation-targets@^7.8.7": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" - integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== - dependencies: - "@babel/compat-data" "^7.9.6" - browserslist "^4.11.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" - integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/types" "^7.12.11" - -"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" - integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== - dependencies: - "@babel/types" "^7.12.10" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.12.7": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" - integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== - dependencies: - "@babel/types" "^7.12.7" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" - integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== - dependencies: - "@babel/types" "^7.12.5" - -"@babel/helper-module-transforms@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" - integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-simple-access" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/helper-validator-identifier" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" - integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== - dependencies: - "@babel/types" "^7.12.10" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-plugin-utils@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.12.1": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" - integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.12.7" - "@babel/helper-optimise-call-expression" "^7.12.10" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.11" - -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" - integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/helper-simple-access@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" - integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" - integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== - dependencies: - "@babel/types" "^7.12.11" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" - integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.5" - "@babel/types" "^7.12.5" - -"@babel/helpers@^7.9.0", "@babel/helpers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" - integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0", "@babel/parser@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" - integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== - -"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" - integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== - -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" - integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.9.5" - -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-dynamic-import@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.5.tgz#800597ddb8aefc2c293ed27459c1fcc935a26c2c" - integrity sha512-x2kZoIuLC//O5iA7PEvecB105o7TLzZo8ofBVhP79N+DO3jaX+KYfww9TQcfBEZD0nikNyYcGB1IKtRq36rdmg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.9.5.tgz#72c97cf5f38604aea3abf3b935b0e17b1db76a50" - integrity sha512-j3OEsGel8nHL/iusv/mRd5fYZ3DrOxWC82x0ogmdN/vHfAP4MYw+AFKYanzWlktNwikKvlzUV//afBW5FTp17Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" - integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" - integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" - integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.8.7", "@babel/plugin-transform-parameters@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.5.tgz#173b265746f5e15b2afe527eeda65b73623a0795" - integrity sha512-0+1FhHnMfj6lIIhVvS4KGQJeuhe1GI//h5uptK4PvLt+BGBxsoUJbd3/IW002yk//6sZPlFgsG1hY6OHLcy6kA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/preset-env@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" - integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - -"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.0", "@babel/traverse@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" - integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" - integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== - dependencies: - "@babel/code-frame" "^7.12.11" - "@babel/generator" "^7.12.11" - "@babel/helper-function-name" "^7.12.11" - "@babel/helper-split-export-declaration" "^7.12.11" - "@babel/parser" "^7.12.11" - "@babel/types" "^7.12.12" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" - integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.3": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" - integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@braintree/sanitize-url@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-4.0.0.tgz#2cda79ffd67b6ea919a63b5e1a883b92d636e844" - integrity sha512-bOoFoTxuEUuri/v1q0OXN0HIrZ2EiZlRSKdveU8vS5xf2+g0TmpXhmxkTc1s+XWR5xZNoVU4uvf/Mher98tfLw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": - version "10.0.29" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" - integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== - dependencies: - "@emotion/sheet" "0.9.4" - "@emotion/stylis" "0.8.5" - "@emotion/utils" "0.11.3" - "@emotion/weak-memoize" "0.2.5" - -"@emotion/core@^10.0.27", "@emotion/core@^10.0.9": - version "10.0.28" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" - integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== - dependencies: - "@babel/runtime" "^7.5.5" - "@emotion/cache" "^10.0.27" - "@emotion/css" "^10.0.27" - "@emotion/serialize" "^0.11.15" - "@emotion/sheet" "0.9.4" - "@emotion/utils" "0.11.3" - -"@emotion/css@^10.0.27", "@emotion/css@^10.0.9": - version "10.0.27" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" - integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== - dependencies: - "@emotion/serialize" "^0.11.15" - "@emotion/utils" "0.11.3" - babel-plugin-emotion "^10.0.27" - -"@emotion/hash@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": - version "0.11.16" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" - integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== - dependencies: - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/unitless" "0.7.5" - "@emotion/utils" "0.11.3" - csstype "^2.5.7" - -"@emotion/sheet@0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" - integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== - -"@emotion/stylis@0.8.5": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@emotion/utils@0.11.3": - version "0.11.3" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" - integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== - -"@emotion/weak-memoize@0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - -"@grafana/data@7.2.0", "@grafana/data@next": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@grafana/data/-/data-7.2.0.tgz#29ae47a1c8a331d12fa269ef900922ade829c0aa" - integrity sha512-m0QlXY8EIVE+RHeb4dUazqMB/VQy8gJWOioyizudGOXlH/C8hTk+Z/BeHEc8mbHGvINmmtcj7BPhPSUFP9jTdQ== - dependencies: - "@braintree/sanitize-url" "4.0.0" - apache-arrow "0.16.0" - lodash "4.17.19" - rxjs "6.6.2" - xss "1.0.6" - -"@grafana/e2e-selectors@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@grafana/e2e-selectors/-/e2e-selectors-7.2.0.tgz#6a9d3613399ac487929fdda52ec6fde60dd834ac" - integrity sha512-h4qDCeRRBrfN1+h9ppCuO4LgW7jV+d+4Z8mYjVBXe3/FniMZEHpq60D6pMJrXx+/ip0df9Aj7taAWY7FsQKlHA== - dependencies: - "@grafana/tsconfig" "^1.0.0-rc1" - commander "5.0.0" - execa "4.0.0" - typescript "3.9.3" - yaml "^1.8.3" - -"@grafana/eslint-config@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@grafana/eslint-config/-/eslint-config-2.0.3.tgz#f5a90eb689458142d41974285c5225f43229175b" - integrity sha512-ib8d4bJaomxyXfe10KcBAqMzQkEwhJ2VekpEr7eLSIfINv1S5eA223WhIMY/7ZgVmjkxp1mf7i/U30cM4KXrUg== - dependencies: - "@typescript-eslint/eslint-plugin" "4.0.1" - "@typescript-eslint/parser" "4.0.1" - eslint "7.4.0" - eslint-config-prettier "6.11.0" - eslint-plugin-jsdoc "28.6.1" - eslint-plugin-prettier "3.1.4" - eslint-plugin-react-hooks "4.0.5" - prettier "1.19.1" - typescript "4.0.2" - -"@grafana/slate-react@0.22.9-grafana": - version "0.22.9-grafana" - resolved "https://registry.yarnpkg.com/@grafana/slate-react/-/slate-react-0.22.9-grafana.tgz#07f35f0ffc018f616b9f82fa6e5ba65fae75c6a0" - integrity sha512-9NYjwabVOUQ/e4Y/Wm+sgePM65rb/gju59D52t4O42HsIm9exXv+SLajEBF/HiLHzuH5V+5uuHajbzv0vuE2VA== - dependencies: - debug "^3.1.0" - get-window "^1.1.1" - is-window "^1.0.2" - lodash "^4.1.1" - memoize-one "^4.0.0" - prop-types "^15.5.8" - react-immutable-proptypes "^2.1.0" - selection-is-backward "^1.0.0" - slate-base64-serializer "^0.2.111" - slate-dev-environment "^0.2.2" - slate-hotkeys "^0.2.9" - slate-plain-serializer "^0.7.10" - slate-prop-types "^0.5.41" - slate-react-placeholder "^0.2.8" - tiny-invariant "^1.0.1" - tiny-warning "^0.0.3" - -"@grafana/toolkit@next": - version "7.3.5" - resolved "https://registry.yarnpkg.com/@grafana/toolkit/-/toolkit-7.3.5.tgz#219e143abcbbc65f85b2ed397781c3698500cc94" - integrity sha512-l1KcQqWAj9W/rlacvssayQ5UGpGgPP1h2dUB+PuA/5JSP4MuZ2dKn7YxrJfrNSm9Gau17mamv2BsEOCssY3mzg== - dependencies: - "@babel/core" "7.9.0" - "@babel/preset-env" "7.9.0" - "@grafana/data" next - "@grafana/eslint-config" "2.0.3" - "@grafana/tsconfig" "^1.0.0-rc1" - "@grafana/ui" next - "@types/command-exists" "^1.2.0" - "@types/execa" "^0.9.0" - "@types/expect-puppeteer" "3.3.1" - "@types/fs-extra" "^8.1.0" - "@types/inquirer" "^6.0.3" - "@types/jest" "24.0.13" - "@types/node" "^12.0.4" - "@types/prettier" "^1.16.4" - "@types/puppeteer-core" "1.9.0" - "@types/react-dev-utils" "^9.0.4" - "@types/rimraf" "^2.0.3" - "@types/semver" "^6.0.0" - "@types/tmp" "^0.1.0" - "@types/webpack" "4.41.7" - "@typescript-eslint/eslint-plugin" "4.0.1" - "@typescript-eslint/parser" "4.0.1" - axios "0.19.2" - babel-jest "24.8.0" - babel-loader "8.1.0" - babel-plugin-angularjs-annotate "0.10.0" - chalk "^2.4.2" - command-exists "^1.2.8" - commander "^5.0.0" - concurrently "4.1.0" - copy-webpack-plugin "5.1.1" - css-loader "3.4.2" - eslint "7.4.0" - eslint-config-prettier "6.11.0" - eslint-plugin-jsdoc "28.6.1" - eslint-plugin-prettier "3.1.4" - eslint-plugin-react-hooks "4.0.5" - execa "^1.0.0" - expect-puppeteer "4.1.1" - file-loader "5.0.2" - fork-ts-checker-webpack-plugin "1.0.0" - fs-extra "^8.1.0" - globby "^10.0.1" - html-loader "0.5.5" - html-webpack-plugin "^3.2.0" - inquirer "^6.3.1" - jest "^25" - jest-canvas-mock "2.1.2" - jest-coverage-badges "^1.1.2" - jest-environment-jsdom-fifteen "^1.0.2" - jest-junit "^6.4.0" - less "^3.11.1" - less-loader "^5.0.0" - lodash "4.17.19" - md5-file "^4.0.0" - mini-css-extract-plugin "^0.7.0" - node-sass "^4.13.1" - optimize-css-assets-webpack-plugin "^5.0.3" - ora "^4.0.3" - pixelmatch "^5.1.0" - pngjs "^3.4.0" - postcss-flexbugs-fixes "4.2.0" - postcss-loader "3.0.0" - postcss-preset-env "6.7.0" - prettier "^1.19.1" - puppeteer-core "1.18.1" - react-dev-utils "^10.2.1" - replace-in-file "^4.1.0" - replace-in-file-webpack-plugin "^1.0.6" - rimraf "^3.0.0" - sass-loader "8.0.2" - semver "^7.1.3" - simple-git "^1.132.0" - style-loader "1.1.3" - terser-webpack-plugin "2.3.5" - ts-jest "26.3.0" - ts-loader "6.2.1" - ts-node "8.8.1" - tslib "2.0.1" - typescript "4.0.2" - url-loader "^2.0.1" - webpack "4.41.5" - -"@grafana/tsconfig@^1.0.0-rc1": - version "1.0.0-rc1" - resolved "https://registry.yarnpkg.com/@grafana/tsconfig/-/tsconfig-1.0.0-rc1.tgz#d07ea16755a50cae21000113f30546b61647a200" - integrity sha512-nucKPGyzlSKYSiJk5RA8GzMdVWhdYNdF+Hh65AXxjD9PlY69JKr5wANj8bVdQboag6dgg0BFKqgKPyY+YtV4Iw== - -"@grafana/ui@next": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@grafana/ui/-/ui-7.2.0.tgz#a5ed28ab1ff5ce8dc5426b86e924afa564cf862b" - integrity sha512-rVdHla4JACEkOo1Zxa9+MUbYAEeJ5P392QSRHpWeKiLQk9d6Poct0pw9pdKERbft0Y7n+q1Tqm32/jEwfqEMUw== - dependencies: - "@emotion/core" "^10.0.27" - "@grafana/data" "7.2.0" - "@grafana/e2e-selectors" "7.2.0" - "@grafana/slate-react" "0.22.9-grafana" - "@grafana/tsconfig" "^1.0.0-rc1" - "@iconscout/react-unicons" "1.1.4" - "@torkelo/react-select" "3.0.8" - "@types/react-beautiful-dnd" "12.1.2" - "@types/react-color" "3.0.1" - "@types/react-select" "3.0.8" - "@types/react-table" "7.0.12" - "@types/slate" "0.47.1" - "@types/slate-react" "0.22.5" - bizcharts "^3.5.8" - classnames "2.2.6" - d3 "5.15.0" - emotion "10.0.27" - immutable "3.8.2" - jquery "3.5.1" - lodash "4.17.19" - moment "2.24.0" - monaco-editor "0.20.0" - papaparse "5.3.0" - rc-cascader "1.0.1" - rc-drawer "3.1.3" - rc-slider "9.3.1" - rc-time-picker "^3.7.3" - react "16.12.0" - react-beautiful-dnd "13.0.0" - react-calendar "2.19.2" - react-color "2.18.0" - react-custom-scrollbars "4.2.1" - react-dom "16.12.0" - react-highlight-words "0.16.0" - react-hook-form "5.1.3" - react-monaco-editor "0.36.0" - react-popper "1.3.3" - react-storybook-addon-props-combinations "1.1.0" - react-table "7.0.0" - react-transition-group "4.3.0" - slate "0.47.8" - tinycolor2 "1.4.1" - -"@icons/material@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" - integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== - -"@iconscout/react-unicons@1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@iconscout/react-unicons/-/react-unicons-1.1.4.tgz#30731707e1baa49ab1c3198a5e0121be86b8928a" - integrity sha512-lhTSU3nKvzt1OwsRfFyK194QcQbE1Q4rRm6d5BOnKyZB+SN4qRv7tS4wLQgwk/pQyzn14Qw70nGA+tuKLRqcJg== - dependencies: - react ">=15.0.0 <17.0.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" - slash "^3.0.0" - -"@jest/core@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4" - integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA== - dependencies: - "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.1" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^25.5.0" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-resolve-dependencies "^25.5.4" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - jest-watcher "^25.5.0" - micromatch "^4.0.2" - p-each-series "^2.1.0" - realpath-native "^2.0.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^24.3.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" - integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== - dependencies: - "@jest/fake-timers" "^24.9.0" - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - jest-mock "^24.9.0" - -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== - dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - -"@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== - dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" - -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" - -"@jest/reporters@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" - integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^25.5.1" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-worker "^25.5.0" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^3.1.0" - terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" - optionalDependencies: - node-notifier "^6.0.0" - -"@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== - dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== - dependencies: - "@jest/test-result" "^25.5.0" - graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - -"@jest/transform@^24.8.0", "@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^2.0.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^24.3.0", "@jest/types@^24.8.0", "@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.0.1": - version "26.0.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.0.1.tgz#b78333fbd113fa7aec8d39de24f88de8686dac67" - integrity sha512-IbtjvqI9+eS1qFnOIEL7ggWmT+iK/U+Vde9cGWtYb/b6XgKb3X44ZAe/z9YZzoAAZ/E92m0DqrilF934IGNnQA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" - -"@sinonjs/commons@^1.7.0": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" - integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== - dependencies: - type-detect "4.0.8" - -"@torkelo/react-select@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@torkelo/react-select/-/react-select-3.0.8.tgz#04bfc877118af425f97eac2b471b66705484ee4a" - integrity sha512-becmEGnaOQpUcZS7kjQLaxjY0WKJcFFvAOTWIiU1XfwBV1sdCSgYFGWT+QhkCdRlP2Ux5U4cKhTUsWSeI9FsIA== - dependencies: - "@babel/runtime" "^7.4.4" - "@emotion/cache" "^10.0.9" - "@emotion/core" "^10.0.9" - "@emotion/css" "^10.0.9" - memoize-one "^5.0.0" - prop-types "^15.6.0" - react-input-autosize "^2.2.2" - react-transition-group "^4.3.0" - -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - -"@types/babel__core@^7.1.0": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.7": - version "7.1.12" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" - integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== - dependencies: - "@babel/types" "^7.3.0" - -"@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/clean-css@*": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d" - integrity sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ== - dependencies: - "@types/node" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/command-exists@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/command-exists/-/command-exists-1.2.0.tgz#d97e0ed10097090e4ab0367ed425b0312fad86f3" - integrity sha512-ugsxEJfsCuqMLSuCD4PIJkp5Uk2z6TCMRCgYVuhRo5cYQY3+1xXTQkSlPtkpGHuvWMjS2KTeVQXxkXRACMbM6A== - -"@types/connect-history-api-fallback@*": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.3.tgz#4772b79b8b53185f0f4c9deab09236baf76ee3b4" - integrity sha512-7SxFCd+FLlxCfwVwbyPxbR4khL9aNikJhrorw8nUIOqeuooc9gifBuDQOJw5kzN7i6i3vLn9G8Wde/4QDihpYw== - dependencies: - "@types/express-serve-static-core" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.33" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== - dependencies: - "@types/node" "*" - -"@types/eslint@*": - version "6.8.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-6.8.1.tgz#e26f365a5dda12445d1d5a17eb70efd7c844a3d8" - integrity sha512-eutiEpQ4SN7kdF8QVDPyiSSy7ZFM+werJVw6/mRxLGbG4oet6/p81WFjSIcuY9PzM+dsu25Yh5EAUmQ9aJC1gg== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "0.0.44" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" - integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/execa@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@types/execa/-/execa-0.9.0.tgz#9b025d2755f17e80beaf9368c3f4f319d8b0fb93" - integrity sha512-mgfd93RhzjYBUHHV532turHC2j4l/qxsF/PbfDmprHDEUHmNZGlDn1CEsulGK3AfsPdhkWzZQT/S/k0UGhLGsA== - dependencies: - "@types/node" "*" - -"@types/expect-puppeteer@3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/expect-puppeteer/-/expect-puppeteer-3.3.1.tgz#46e5944bf425b86ea13a563c7c8b86901414988d" - integrity sha512-3raSnf28NelDtv0ksvQPZs410taJZ4d70vA8sVzmbRPV04fpmQm9/BOxUCloETD/ZI1EXRpv0pzOQKhPTbm4jg== - dependencies: - "@types/jest" "*" - "@types/puppeteer" "*" - -"@types/express-serve-static-core@*": - version "4.17.7" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz#dfe61f870eb549dc6d7e12050901847c7d7e915b" - integrity sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.6" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e" - integrity sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "*" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/flatbuffers@^1.9.1": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@types/flatbuffers/-/flatbuffers-1.10.0.tgz#aa74e30ffdc86445f2f060e1808fc9d56b5603ba" - integrity sha512-7btbphLrKvo5yl/5CC2OCxUSMx1wV1wvGT1qDXkSt7yi00/YW7E8k6qzXqJHsp+WU0eoG7r6MTQQXI9lIvd0qA== - -"@types/fs-extra@^8.1.0": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.1.tgz#1e49f22d09aa46e19b51c0b013cb63d0d923a068" - integrity sha512-TcUlBem321DFQzBNuz8p0CLLKp0VvF/XH9E4KHNmgwyp4E3AfgI5cjiIVZWlbfThBop2qxFIh4+LeY6hVWWZ2w== - dependencies: - "@types/node" "*" - -"@types/glob@*", "@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" - integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== - dependencies: - "@types/node" "*" - -"@types/html-minifier@*": - version "3.5.3" - resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f" - integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg== - dependencies: - "@types/clean-css" "*" - "@types/relateurl" "*" - "@types/uglify-js" "*" - -"@types/html-webpack-plugin@*": - version "3.2.3" - resolved "https://registry.yarnpkg.com/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.3.tgz#865323e30e82560c0ca898dbf9f6f9d1c541cd7f" - integrity sha512-Y7dsVhTn75IaD4lMIY02UP1L8e0ou8KQu8DKPJAegEFKdJR28/8ejayDG8ykfR0DtYCx3dCEHIkdpN8AOB6txQ== - dependencies: - "@types/html-minifier" "*" - "@types/tapable" "*" - "@types/webpack" "*" - -"@types/http-proxy-middleware@*": - version "0.19.3" - resolved "https://registry.yarnpkg.com/@types/http-proxy-middleware/-/http-proxy-middleware-0.19.3.tgz#b2eb96fbc0f9ac7250b5d9c4c53aade049497d03" - integrity sha512-lnBTx6HCOUeIJMLbI/LaL5EmdKLhczJY5oeXZpX/cXE4rRqb3RmV7VcMpiEfYkmTjipv3h7IAyIINe4plEv7cA== - dependencies: - "@types/connect" "*" - "@types/http-proxy" "*" - "@types/node" "*" - -"@types/http-proxy@*": - version "1.17.4" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" - integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== - dependencies: - "@types/node" "*" - -"@types/inquirer@^6.0.3": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" - integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== - dependencies: - "@types/through" "*" - rxjs "^6.4.0" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" - integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== - -"@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest-diff@*": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-24.3.0.tgz#29e237a3d954babfe6e23cc59b57ecd8ca8d858d" - integrity sha512-vx1CRDeDUwQ0Pc7v+hS61O1ETA81kD04IMEC0hS1kPyVtHDdZrokAvpF7MT9VI/fVSzicelUZNCepDvhRV1PeA== - dependencies: - jest-diff "*" - -"@types/jest@*": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/jest@24.0.13": - version "24.0.13" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.13.tgz#10f50b64cb05fb02411fbba49e9042a3a11da3f9" - integrity sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww== - dependencies: - "@types/jest-diff" "*" - -"@types/jest@26.x": - version "26.0.20" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.20.tgz#cd2f2702ecf69e86b586e1f5223a60e454056307" - integrity sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - -"@types/json-schema@*", "@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== - -"@types/json-schema@^7.0.5": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== - -"@types/mime@*": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.2.tgz#857a118d8634c84bba7ae14088e4508490cd5da5" - integrity sha512-4kPlzbljFcsttWEq6aBW0OZe6BDajAmyvr2xknBG92tejQnvdGtT9+kXSZ580DqpxY9qG2xeQVF9Dq0ymUTo5Q== - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "14.0.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b" - integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA== - -"@types/node@^12.0.4": - version "12.12.42" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.42.tgz#d0d1149336bd07540dd1ea576692829d575dec34" - integrity sha512-R/9QdYFLL9dE9l5cWWzWIZByVGFd7lk7JVOJ7KD+E1SJ4gni7XJRLz9QTjyYQiHIqEAgku9VgxdLjMlhhUaAFg== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^1.16.4", "@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/puppeteer-core@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer-core/-/puppeteer-core-1.9.0.tgz#5ceb397e3ff769081fb07d71289b5009392d24d3" - integrity sha512-YJwGTq0a8xZxN7/QDeW59XMdKTRNzDTc8ZVBPDB6J13GgXn1+QzgMA8pAq1/bj2FD0R7xj3nYoZra10b0HLzFw== - dependencies: - "@types/puppeteer" "*" - -"@types/puppeteer@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/puppeteer/-/puppeteer-3.0.0.tgz#24cdcc131e319477608d893f0017e08befd70423" - integrity sha512-59+fkfHHXHzX5rgoXIMnZyzum7ZLx/Wc3fhsOduFThpTpKbzzdBHMZsrkKGLunimB4Ds/tI5lXTRLALK8Mmnhg== - dependencies: - "@types/node" "*" - -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - -"@types/qs@*": - version "6.9.3" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03" - integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA== - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -"@types/react-beautiful-dnd@12.1.2": - version "12.1.2" - resolved "https://registry.yarnpkg.com/@types/react-beautiful-dnd/-/react-beautiful-dnd-12.1.2.tgz#dfd1bdb072e92c1363e5f7a4c1842eaf95f77b21" - integrity sha512-h+0mA4cHmzL4BhyCniB6ZSSZhfO9LpXXbnhdAfa2k7klS03woiOT+Dh5AchY6eoQXk3vQVtqn40YY3u+MwFs8A== - dependencies: - "@types/react" "*" - -"@types/react-color@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.1.tgz#5433e2f503ea0e0831cbc6fd0c20f8157d93add0" - integrity sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw== - dependencies: - "@types/react" "*" - -"@types/react-dev-utils@^9.0.4": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@types/react-dev-utils/-/react-dev-utils-9.0.4.tgz#3e4bee79b7536777cef219427ab1d38adc24f3f2" - integrity sha512-8cv9rAeSP1EmyRQAbZ/i6uYtai1VoKHGSBwDyCLM82wCkqoh3WPjJgI1pfi2kiLc0C5hNU7DLo7/c4hylfHLWg== - dependencies: - "@types/eslint" "*" - "@types/express" "*" - "@types/html-webpack-plugin" "*" - "@types/webpack" "*" - "@types/webpack-dev-server" "*" - -"@types/react-dom@*": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== - dependencies: - "@types/react" "*" - -"@types/react-select@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-3.0.8.tgz#b824a12d438dd493c30ffff49a805f797602a837" - integrity sha512-0763TXYZc8bTiHM+DUnWoy9Rg5mk6PxYWBrEe6Fkjgc0Kv0r1RqjZk9/BrK4wdM0RNjYjixlFPnUhOJb76sMGg== - dependencies: - "@types/react" "*" - "@types/react-dom" "*" - "@types/react-transition-group" "*" - -"@types/react-table@7.0.12": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.0.12.tgz#cb57c8dfb110f8c2d0f04b9d44a70f9235a13b27" - integrity sha512-x/8nFrCjr1ySs51pkHsDQz3t+nW94qS/M9mpyLoweJNd9YKFzJ2mbVcUshfcMOyR1/UR+6lfz2EKA1lzOoJz+w== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@*": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.0.tgz#882839db465df1320e4753e6e9f70ca7e9b4d46d" - integrity sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "16.9.35" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" - integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/react@^16.x": - version "16.9.51" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.51.tgz#f8aa51ffa9996f1387f63686696d9b59713d2b60" - integrity sha512-lQa12IyO+DMlnSZ3+AGHRUiUcpK47aakMMoBG8f7HGxJT8Yfe+WE128HIXaHOHVPReAW0oDS3KAI0JI2DDe1PQ== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/relateurl@*": - version "0.2.28" - resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" - integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= - -"@types/rimraf@^2.0.3": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" - integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q== - dependencies: - "@types/glob" "*" - "@types/node" "*" - -"@types/semver@^6.0.0": - version "6.2.1" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.2.1.tgz#a236185670a7860f1597cf73bea2e16d001461ba" - integrity sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== - -"@types/serve-static@*": - version "1.13.4" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.4.tgz#6662a93583e5a6cabca1b23592eb91e12fa80e7c" - integrity sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug== - dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" - -"@types/slate-react@0.22.5": - version "0.22.5" - resolved "https://registry.yarnpkg.com/@types/slate-react/-/slate-react-0.22.5.tgz#a10796758aa6b3133e1c777959facbf8806959f7" - integrity sha512-WKJic5LlNRNUCnD6lEdlOZCcXWoDN8Ais2CmwVMn8pdt5Kh8hJsTYhXawNxOShPIOLVB+G+aVZNAXAAubEOpaw== - dependencies: - "@types/react" "*" - "@types/slate" "*" - immutable "^3.8.2" - -"@types/slate@*": - version "0.47.7" - resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.7.tgz#fec860e24456fdf9f1169f69aadd7ce64707881f" - integrity sha512-Vy4E9lOKGFc5msZMwLWtVN9nrGYsdk6S7jXdC0Wf26UoMqJCS3yzXbNoFILSoCh7fq57ftJZrM6+8kkC/yT+LA== - dependencies: - "@types/react" "*" - immutable "^3.8.2" - -"@types/slate@0.47.1": - version "0.47.1" - resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.1.tgz#6c66f82df085c764039eea2229be763f7e1906fd" - integrity sha512-2ZlnWI6/RYMXxeGFIeZtvmaXAeYAJh4ZVumziqVl77/liNEi9hOwkUTU2zFu+j/z21v385I2WVPl8sgadxfzXg== - dependencies: - "@types/react" "*" - immutable "^3.8.2" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/tapable@*": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" - integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== - -"@types/text-encoding-utf-8@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz#908d884af1114e5d8df47597b1e04f833383d23d" - integrity sha512-GpIEYaS+yNfYqpowLLziiY42pyaL+lThd/wMh6tTubaKuG4IRkXqqyxK7Nddn3BvpUg2+go3Gv/jbXvAFMRjiQ== - -"@types/through@*": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" - integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== - dependencies: - "@types/node" "*" - -"@types/tmp@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.1.0.tgz#19cf73a7bcf641965485119726397a096f0049bd" - integrity sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== - -"@types/uglify-js@*": - version "3.9.2" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" - integrity sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ== - dependencies: - source-map "^0.6.1" - -"@types/webpack-dev-server@*": - version "3.11.0" - resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#bcc3b85e7dc6ac2db25330610513f2228c2fcfb2" - integrity sha512-3+86AgSzl18n5P1iUP9/lz3G3GMztCp+wxdDvVuNhx1sr1jE79GpYfKHL8k+Vht3N74K2n98CuAEw4YPJCYtDA== - dependencies: - "@types/connect-history-api-fallback" "*" - "@types/express" "*" - "@types/http-proxy-middleware" "*" - "@types/serve-static" "*" - "@types/webpack" "*" - -"@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - -"@types/webpack@*": - version "4.41.13" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.13.tgz#988d114c8913d039b8a0e0502a7fe4f1f84f3d5e" - integrity sha512-RYmIHOWSxnTTa765N6jJBVE45pd2SYNblEYshVDduLw6RhocazNmRzE5/ytvBD8IkDMH6DI+bcrqxh8NILimBA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/webpack@4.41.7": - version "4.41.7" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.7.tgz#22be27dbd4362b01c3954ca9b021dbc9328d9511" - integrity sha512-OQG9viYwO0V1NaNV7d0n79V+n6mjOV30CwgFPIfTzwmk8DHbt+C4f2aBGdCYbo3yFyYD6sjXfqqOjwkl1j+ulA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^13.0.0": - version "13.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" - integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.0.1.tgz#88bde9239e29d688315718552cf80a3490491017" - integrity sha512-pQZtXupCn11O4AwpYVUX4PDFfmIJl90ZgrEBg0CEcqlwvPiG0uY81fimr1oMFblZnpKAq6prrT9a59pj1x58rw== - dependencies: - "@typescript-eslint/experimental-utils" "4.0.1" - "@typescript-eslint/scope-manager" "4.0.1" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.0.1.tgz#7d9a3ab6821ad5274dad2186c1aa0d93afd696eb" - integrity sha512-gAqOjLiHoED79iYTt3F4uSHrYmg/GPz/zGezdB0jAdr6S6gwNiR/j7cTZ8nREKVzMVKLd9G3xbg1sV9GClW3sw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.0.1" - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/typescript-estree" "4.0.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.0.1.tgz#73772080db7a7a4534a35d719e006f503e664dc3" - integrity sha512-1+qLmXHNAWSQ7RB6fdSQszAiA7JTwzakj5cNYjBTUmpH2cqilxMZEIV+DRKjVZs8NzP3ALmKexB0w/ExjcK9Iw== - dependencies: - "@typescript-eslint/scope-manager" "4.0.1" - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/typescript-estree" "4.0.1" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.0.1.tgz#24d93c3000bdfcc5a157dc4d32b742405a8631b5" - integrity sha512-u3YEXVJ8jsj7QCJk3om0Y457fy2euEOkkzxIB/LKU3MdyI+FJ2gI0M4aKEaXzwCSfNDiZ13a3lDo5DVozc+XLQ== - dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" - -"@typescript-eslint/types@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2" - integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg== - -"@typescript-eslint/typescript-estree@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.0.1.tgz#29a43c7060641ec51c902d9f50ac7c5866ec479f" - integrity sha512-zGzleORFXrRWRJAMLTB2iJD1IZbCPkg4hsI8mGdpYlKaqzvKYSEWVAYh14eauaR+qIoZVWrXgYSXqLtTlxotiw== - dependencies: - "@typescript-eslint/types" "4.0.1" - "@typescript-eslint/visitor-keys" "4.0.1" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.0.1.tgz#d4e8de62775f2a6db71c7e8539633680039fdd6c" - integrity sha512-yBSqd6FjnTzbg5RUy9J+9kJEyQjTI34JdGMJz+9ttlJzLCnGkBikxw+N5n2VDcc3CesbIEJ0MnZc5uRYnrEnCw== - dependencies: - "@typescript-eslint/types" "4.0.1" - eslint-visitor-keys "^2.0.0" - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn@^6.0.1, acorn@^6.2.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.0, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -add-dom-event-listener@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/add-dom-event-listener/-/add-dom-event-listener-1.1.0.tgz#6a92db3a0dd0abc254e095c0f1dc14acbbaae310" - integrity sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw== - dependencies: - object-assign "4.x" - -add-px-to-style@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a" - integrity sha1-0ME1RB+oAUqBN5BFMQlvZ/KPJjo= - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" - -aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apache-arrow@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/apache-arrow/-/apache-arrow-0.16.0.tgz#7ee7a6397d1a2d6349aed90c6ce5b92362e79881" - integrity sha512-hiabMZb2XgHiNK6f7C/2x/fyGS85PoCdkeMhJDyZipaJy1il1BJMDDEa3VLvM6mdxsG61pY1zev6zWetOj8Eog== - dependencies: - "@types/flatbuffers" "^1.9.1" - "@types/node" "^12.0.4" - "@types/text-encoding-utf-8" "^1.0.1" - command-line-args "5.0.2" - command-line-usage "5.0.5" - flatbuffers "1.11.0" - json-bignum "^0.0.3" - pad-left "^2.1.0" - text-encoding-utf-8 "^1.0.2" - tslib "^1.9.3" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argv-tools@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/argv-tools/-/argv-tools-0.1.2.tgz#fc4918a70775b8cc5f8296fa0cfea137bd8a8229" - integrity sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg== - dependencies: - array-back "^2.0.0" - find-replace "^2.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" - integrity sha1-ECyenpAF0+fjgpvwxPok7oYu6bk= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" - integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001061" - chalk "^2.4.2" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^7.0.30" - postcss-value-parser "^4.1.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== - -axios@0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-jest@24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" - chalk "^2.4.2" - slash "^2.0.0" - -babel-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== - dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-angularjs-annotate@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/babel-plugin-angularjs-annotate/-/babel-plugin-angularjs-annotate-0.10.0.tgz#4213b3aaae494a087aad0b8237c5d0716d22ca76" - integrity sha512-NPE7FOAxcLPCUR/kNkrhHIjoScR3RyIlRH3yRn79j8EZWtpILVnCOdA9yKfsOmRh6BHnLHKl8ZAThc+YDd/QwQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/types" "^7.2.0" - simple-is "~0.2.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-emotion@^10.0.27: - version "10.0.33" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz#ce1155dcd1783bbb9286051efee53f4e2be63e03" - integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@emotion/hash" "0.8.0" - "@emotion/memoize" "0.7.4" - "@emotion/serialize" "^0.11.16" - babel-plugin-macros "^2.0.0" - babel-plugin-syntax-jsx "^6.18.0" - convert-source-map "^1.5.0" - escape-string-regexp "^1.0.5" - find-root "^1.1.0" - source-map "^0.5.7" - -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.0.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-preset-current-node-syntax@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -babel-preset-jest@^24.6.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== - dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" - -babel-runtime@6.x, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bizcharts@^3.5.8: - version "3.5.9" - resolved "https://registry.yarnpkg.com/bizcharts/-/bizcharts-3.5.9.tgz#b4c56c8bc5e8567f65748aeb3916902c4e9c98c0" - integrity sha512-1GI1SWNHfU3xRYGh4b4Dn6gfHMaOZnl0EXewZGEL5V5/m97k2kBonedA0LvtdrOQZRAAM+sP1uwny/ttkNsnEQ== - dependencies: - "@antv/g2" "3.5.15" - "@babel/runtime" "^7.7.6" - invariant "^2.2.2" - lodash.debounce "^4.0.8" - prop-types "^15.6.0" - resize-observer-polyfill "^1.5.1" - warning "^3.0.0" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" - integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.2" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" - integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== - dependencies: - caniuse-lite "^1.0.30001035" - electron-to-chromium "^1.3.378" - node-releases "^1.1.52" - pkg-up "^3.1.0" - -browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.6.4, browserslist@^4.8.5, browserslist@^4.9.1: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== - dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@1.x, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" - integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== - dependencies: - chownr "^1.1.2" - figgy-pudding "^3.5.1" - fs-minipass "^2.0.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - infer-owner "^1.0.4" - lru-cache "^5.1.1" - minipass "^3.0.0" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - p-map "^3.0.0" - promise-inflight "^1.0.1" - rimraf "^2.7.1" - ssri "^7.0.0" - unique-filename "^1.1.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: - version "1.0.30001066" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz#0a8a58a10108f2b9bf38e7b65c237b12fd9c5f04" - integrity sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^2.0.4, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.0, chokidar@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" - integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1, chownr@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -classnames@2.2.6, classnames@2.x, classnames@^2.2.1, classnames@^2.2.5, classnames@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" - integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== - -clean-css@4.2.x: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5" - integrity sha512-Xs2Hf2nzrvJMFKimOR7YR0QwZ8fc0u98kdtwN1eNAZzNQgH3vK2pXzff6GJtKh7S5hoJ87ECiAiZFS2fb5Ii2w== - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clone@^2.1.1, clone@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-convert@~0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.0.2.tgz#c4e56b016636af1323cf485aa25c3cb203dfbbe4" - integrity sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA== - dependencies: - argv-tools "^0.1.1" - array-back "^2.0.0" - find-replace "^2.0.1" - lodash.camelcase "^4.3.0" - typical "^2.6.1" - -command-line-usage@5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-5.0.5.tgz#5f25933ffe6dedd983c635d38a21d7e623fda357" - integrity sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA== - dependencies: - array-back "^2.0.0" - chalk "^2.4.1" - table-layout "^0.4.3" - typical "^2.6.1" - -commander@2, commander@^2.20.0, commander@^2.9.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" - integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== - -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -comment-parser@^0.7.5: - version "0.7.6" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" - integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-classes@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/component-classes/-/component-classes-1.2.6.tgz#c642394c3618a4d8b0b8919efccbbd930e5cd691" - integrity sha1-xkI5TDYYpNiwuJGe/Mu9kw5c1pE= - dependencies: - component-indexof "0.0.3" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -component-indexof@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" - integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concurrently@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.0.tgz#17fdf067da71210685d9ea554423ef239da30d33" - integrity sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg== - dependencies: - chalk "^2.4.1" - date-fns "^1.23.0" - lodash "^4.17.10" - read-pkg "^4.0.1" - rxjs "^6.3.3" - spawn-command "^0.0.2-1" - supports-color "^4.5.0" - tree-kill "^1.1.0" - yargs "^12.0.1" - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contour_plot@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/contour_plot/-/contour_plot-0.0.1.tgz#475870f032b8e338412aa5fc507880f0bf495c77" - integrity sha1-R1hw8DK44zhBKqX8UHiA8L9JXHc= - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" - -core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== - dependencies: - browserslist "^4.8.5" - semver "7.0.0" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= - -core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-emotion@^10.0.27: - version "10.0.27" - resolved "https://registry.yarnpkg.com/create-emotion/-/create-emotion-10.0.27.tgz#cb4fa2db750f6ca6f9a001a33fbf1f6c46789503" - integrity sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg== - dependencies: - "@emotion/cache" "^10.0.27" - "@emotion/serialize" "^0.11.15" - "@emotion/sheet" "0.9.4" - "@emotion/utils" "0.11.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-context@<=0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.2.2.tgz#9836542f9aaa22868cd7d4a6f82667df38019dca" - integrity sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A== - dependencies: - fbjs "^0.8.0" - gud "^1.0.0" - -cross-spawn@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-animation@^1.3.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/css-animation/-/css-animation-1.6.1.tgz#162064a3b0d51f958b7ff37b3d6d4de18e17039e" - integrity sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog== - dependencies: - babel-runtime "6.x" - component-classes "^1.2.5" - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-box-model@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" - integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - dependencies: - tiny-invariant "^1.0.6" - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= - -cssfontparser@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3" - integrity sha1-9AIvyPlwDGgCnVQghK+69CWj8+M= - -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== - dependencies: - css-tree "1.0.0-alpha.39" - -cssom@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@^2.2.0, csstype@^2.5.7, csstype@^2.6.7: - version "2.6.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== - -csstype@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8" - integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag== - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d3-array@1, d3-array@^1.1.1, d3-array@^1.2.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - -d3-axis@1: - version "1.0.12" - resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-1.0.12.tgz#cdf20ba210cfbb43795af33756886fb3638daac9" - integrity sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ== - -d3-brush@1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-1.1.5.tgz#066b8e84d17b192986030446c97c0fba7e1bacdc" - integrity sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3-chord@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-1.0.6.tgz#309157e3f2db2c752f0280fedd35f2067ccbb15f" - integrity sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA== - dependencies: - d3-array "1" - d3-path "1" - -d3-collection@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -d3-color@1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-1.4.1.tgz#c52002bf8846ada4424d55d97982fef26eb3bc8a" - integrity sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q== - -d3-contour@1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-1.3.2.tgz#652aacd500d2264cb3423cee10db69f6f59bead3" - integrity sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg== - dependencies: - d3-array "^1.1.1" - -d3-dispatch@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== - -d3-drag@1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70" - integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w== - dependencies: - d3-dispatch "1" - d3-selection "1" - -d3-dsv@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-1.2.0.tgz#9d5f75c3a5f8abd611f74d3f5847b0d4338b885c" - integrity sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g== - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-ease@1, d3-ease@~1.0.3: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-1.0.6.tgz#ebdb6da22dfac0a22222f2d4da06f66c416a0ec0" - integrity sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ== - -d3-fetch@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-1.1.2.tgz#957c8fbc6d4480599ba191b1b2518bf86b3e1be2" - integrity sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA== - dependencies: - d3-dsv "1" - -d3-force@1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" - integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - -d3-format@1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.4.tgz#356925f28d0fd7c7983bfad593726fce46844030" - integrity sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw== - -d3-geo@1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.0.tgz#58ddbdf4d9db5f199db69d1b7c93dca6454a6f24" - integrity sha512-NalZVW+6/SpbKcnl+BCO67m8gX+nGeJdo6oGL9H6BRUGUL1e+AtPcP4vE4TwCQ/gl8y5KE7QvBzrLn+HsKIl+w== - dependencies: - d3-array "1" - -d3-hierarchy@1: - version "1.1.9" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== - -d3-interpolate@1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" - integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== - dependencies: - d3-color "1" - -d3-interpolate@~1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.1.6.tgz#2cf395ae2381804df08aa1bf766b7f97b5f68fb6" - integrity sha512-mOnv5a+pZzkNIHtw/V6I+w9Lqm9L5bG3OTXPM5A+QO0yyVMQ4W1uZhR+VOJmazaOZXri2ppbiZ5BUNWT0pFM9A== - dependencies: - d3-color "1" - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-polygon@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-1.0.6.tgz#0bf8cb8180a6dc107f518ddf7975e12abbfbd38e" - integrity sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ== - -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== - -d3-random@1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-1.1.2.tgz#2833be7c124360bf9e2d3fd4f33847cfe6cab291" - integrity sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ== - -d3-scale-chromatic@1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz#54e333fc78212f439b14641fb55801dd81135a98" - integrity sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg== - dependencies: - d3-color "1" - d3-interpolate "1" - -d3-scale@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-2.2.2.tgz#4e880e0b2745acaaddd3ede26a9e908a9e17b81f" - integrity sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw== - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-selection@1, d3-selection@^1.0.2, d3-selection@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.1.tgz#98eedbbe085fbda5bafa2f9e3f3a2f4d7d622a98" - integrity sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA== - -d3-shape@1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -d3-time-format@2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" - integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== - dependencies: - d3-time "1" - -d3-time@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - -d3-timer@1, d3-timer@~1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - -d3-transition@1, d3-transition@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-1.3.2.tgz#a98ef2151be8d8600543434c1ca80140ae23b398" - integrity sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA== - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -d3-voronoi@1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz#dd3c78d7653d2bb359284ae478645d95944c8297" - integrity sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg== - -d3-zoom@1: - version "1.8.3" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-1.8.3.tgz#b6a3dbe738c7763121cd05b8a7795ffe17f4fc0a" - integrity sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ== - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3@5.15.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" - integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== - dependencies: - d3-array "1" - d3-axis "1" - d3-brush "1" - d3-chord "1" - d3-collection "1" - d3-color "1" - d3-contour "1" - d3-dispatch "1" - d3-drag "1" - d3-dsv "1" - d3-ease "1" - d3-fetch "1" - d3-force "1" - d3-format "1" - d3-geo "1" - d3-hierarchy "1" - d3-interpolate "1" - d3-path "1" - d3-polygon "1" - d3-quadtree "1" - d3-random "1" - d3-scale "2" - d3-scale-chromatic "1" - d3-selection "1" - d3-shape "1" - d3-time "1" - d3-time-format "2" - d3-timer "1" - d3-transition "1" - d3-voronoi "1" - d3-zoom "1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^1.23.0: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.0.0, decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" - integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -direction@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" - integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew= - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-align@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c" - integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA== - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-css@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dom-css/-/dom-css-2.1.0.tgz#fdbc2d5a015d0a3e1872e11472bbd0e7b9e6a202" - integrity sha1-/bwtWgFdCj4YcuEUcrvQ57nmogI= - dependencies: - add-px-to-style "1.0.0" - prefix-style "2.0.1" - to-camel-case "1.0.0" - -dom-helpers@^5.0.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" - integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^2.6.7" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1, domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413: - version "1.3.452" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.452.tgz#ef6877702722471aa044a2429336cd450629934d" - integrity sha512-IdbjgCEqDvcU/1kUQa6C49I2NZOY3SBmU9Eus7mdFdJJBqn0Lg1Epfi/T4nqVcxTNBEGhcjwMhY1EysMBsXZrw== - -elliptic@^6.0.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -emotion@10.0.27: - version "10.0.27" - resolved "https://registry.yarnpkg.com/emotion/-/emotion-10.0.27.tgz#f9ca5df98630980a23c819a56262560562e5d75e" - integrity sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g== - dependencies: - babel-plugin-emotion "^10.0.27" - create-emotion "^10.0.27" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -es6-templates@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/es6-templates/-/es6-templates-0.2.3.tgz#5cb9ac9fb1ded6eb1239342b81d792bbb4078ee4" - integrity sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ= - dependencies: - recast "~0.11.12" - through "~2.3.6" - -escape-string-regexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.11.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" - integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== - dependencies: - get-stdin "^6.0.0" - -eslint-plugin-jsdoc@28.6.1: - version "28.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-28.6.1.tgz#c9e9da59d0d3cef4fb45ffb91c0acde43af4e418" - integrity sha512-Z3y7hcNPDuhL339D1KOf9SY8pMAxYxhaG4QLtu3KVn20k/hNF1u6WQv44wvuSCb6OfPJ4say37RUlSNqIjR+mw== - dependencies: - comment-parser "^0.7.5" - debug "^4.1.1" - jsdoctypeparser "^7.0.0" - lodash "^4.17.15" - regextras "^0.7.1" - semver "^7.3.2" - spdx-expression-parse "^3.0.1" - -eslint-plugin-prettier@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.5.tgz#4879003aa38e5d05d0312175beb6e4a1f617bfcf" - integrity sha512-3YLSjoArsE2rUwL8li4Yxx1SUg3DQWp+78N3bcJQGWVZckcp+yeQGsap/MSq05+thJk57o+Ww4PtZukXGL02TQ== - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint-visitor-keys@^1.2.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.4.0.tgz#4e35a2697e6c1972f9d6ef2b690ad319f80f206f" - integrity sha512-gU+lxhlPHu45H3JkEGgYhWhkR9wLHHEXC9FbWFnTlEkbKyZKWgWRLgf61E8zWmBuI6g5xKBph9ltg3NtZMVF8g== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.0" - eslint-utils "^2.0.0" - eslint-visitor-keys "^1.2.0" - espree "^7.1.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.14" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.1.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esprima@~3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -esrever@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" - integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g= - -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" - integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect-puppeteer@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/expect-puppeteer/-/expect-puppeteer-4.1.1.tgz#cda2ab7b6fa27ac24eba273bbb0296a0de538e6d" - integrity sha512-xNpu6uYJL9Qrrp4Z31MOpDWK68zAi+2qg5aMQlyOTVZNy7cAgBZiPvKCN0C1JmP3jgPZfcxhetVjZLaw/KcJOQ== - -expect@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== - dependencies: - "@jest/types" "^25.5.0" - ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-zip@^1.6.6: - version "1.7.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" - integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== - dependencies: - concat-stream "^1.6.2" - debug "^2.6.9" - mkdirp "^0.5.4" - yauzl "^2.10.0" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.0.3: - version "3.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbjs@^0.8.0: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fecha@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" - integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-5.0.2.tgz#7f3d8b4ac85a5e8df61338cfec95d7405f971caa" - integrity sha512-QMiQ+WBkGLejKe81HU8SZ9PovsU/5uaLo0JdTCEXOYv7i7jfAjHZi1tcwp9tSASJPOmmHZtbdCervFmXMH/Dcg== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f" - integrity sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-2.0.1.tgz#6d9683a7ca20f8f9aabeabad07e4e2580f528550" - integrity sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ== - dependencies: - array-back "^2.0.0" - test-value "^3.0.0" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatbuffers@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-1.11.0.tgz#90a47e584dd7851ad7a913f5a0ee99c1d76ce59f" - integrity sha512-0PqFKtXI4MjxomI7jO4g5XfLPm/15g2R+5WGCHBGYGh0ihQiypnHlJ6bMmkkrAe0GzZ4d7PDAfCONKIPUxNF+A== - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -fmin@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/fmin/-/fmin-0.0.2.tgz#59bbb40d43ffdc1c94cd00a568c41f95f1973017" - integrity sha1-Wbu0DUP/3ByUzQClaMQflfGXMBc= - dependencies: - contour_plot "^0.0.1" - json2module "^0.0.3" - rollup "^0.25.8" - tape "^4.5.1" - uglify-js "^2.6.2" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.0.0.tgz#0f9ff0219f9b6f1a1b10fa25d7cc5015e60c997a" - integrity sha512-Kc7LI0OlnWB0FRbDQO+nnDCfZr+LhFSJIP8kZppDXvuXI/opeMg3IrlMedBX/EGgOUK0ma5Hafgkdp3DuxgYdg== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^2.0.4" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" - integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1, function-bind@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== - dependencies: - globule "^1.0.0" - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-document@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b" - integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs= - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-user-locale@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-1.3.0.tgz#21ea740e413541281ae7b2b42e70ee523b7725b2" - integrity sha512-c5N8P0upjxCF9unIC2vTA+B+8nN7kU/D/TeItMAVYhWIIksyoULM1aflKflXM3w+Ij6vF/JZys+QcwIoDuy3Ag== - dependencies: - lodash.once "^4.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -get-window@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f" - integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw== - dependencies: - get-document "1" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1, glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.0.1: - version "11.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globule@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" - integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== - dependencies: - glob "~7.1.1" - lodash "~4.17.12" - minimatch "~3.0.2" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" - integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -highlight-words-core@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/highlight-words-core/-/highlight-words-core-1.2.2.tgz#1eff6d7d9f0a22f155042a00791237791b1eeaaa" - integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-loader@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-0.5.5.tgz#6356dbeb0c49756d8ebd5ca327f16ff06ab5faea" - integrity sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog== - dependencies: - es6-templates "^0.2.3" - fastparse "^1.1.1" - html-minifier "^3.5.8" - loader-utils "^1.1.0" - object-assign "^4.1.1" - -html-minifier@^3.2.3, html-minifier@^3.5.8: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4, iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" - integrity sha512-cgXgkypZBcCnOgSihyeqbo6gjIaIyDqPQB7Ra4vhE9m6kigdGoQDMHjviFhRZo3IMlRy6yElosoviMs5YxZXUA== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - -immer@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - -immutable@3.8.2, immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -in-publish@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" - integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -inquirer@7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^6.3.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" - integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-hotkey@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d" - integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA== - -is-in-browser@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" - integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-window@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d" - integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isomorphic-base64@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803" - integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM= - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-canvas-mock@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.1.2.tgz#0d16c9f91534f773fd132fc289f2e6b6db8faa28" - integrity sha512-1VI4PK4/X70yrSjYScYVkYJYbXYlZLKJkUrAlyHjQsfolv64aoFyIrmMDtqCjpYrpVvWYEcAGUaYv5DVJj00oQ== - dependencies: - cssfontparser "^1.2.1" - parse-color "^1.0.0" - -jest-changed-files@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" - integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== - dependencies: - "@jest/types" "^25.5.0" - execa "^3.2.0" - throat "^5.0.0" - -jest-cli@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d" - integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw== - dependencies: - "@jest/core" "^25.5.4" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^25.5.4" - jest-util "^25.5.0" - jest-validate "^25.5.0" - prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" - -jest-config@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" - -jest-coverage-badges@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/jest-coverage-badges/-/jest-coverage-badges-1.1.2.tgz#a70786b139fd8fb685db732e1e2d916d8a47287e" - integrity sha512-44A7i2xR6os8+fWk8ZRM6W4fKiD2jwKOLU9eB3iTIIWACd9RbdvmiCNpQZTOsUBhKvz7aQ/ASFhu5JOEhWUOlg== - dependencies: - mkdirp "0.5.1" - -jest-diff@*: - version "26.0.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.0.1.tgz#c44ab3cdd5977d466de69c46929e0e57f89aa1de" - integrity sha512-odTcHyl5X+U+QsczJmOjWw5tPvww+y9Yim5xzqxVl/R1j4z71+fHW4g8qu1ugMmKdFdxw+AtQgs5mupPnzcIBQ== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.0.0" - jest-get-type "^26.0.0" - pretty-format "^26.0.1" - -jest-diff@^25.2.1, jest-diff@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^26.0.0: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== - dependencies: - detect-newline "^3.0.0" - -jest-each@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" - -jest-environment-jsdom-fifteen@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.2.tgz#49a0af55e0d32737a6114a1575dd714702ad63b0" - integrity sha512-nfrnAfwklE1872LIB31HcjM65cWTh1wzvMSp10IYtPJjLDUbTTvDpajZgIxUnhRmzGvogdHDayCIlerLK0OBBg== - dependencies: - "@jest/environment" "^24.3.0" - "@jest/fake-timers" "^24.3.0" - "@jest/types" "^24.3.0" - jest-mock "^24.0.0" - jest-util "^24.0.0" - jsdom "^15.2.1" - -jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" - -jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" - -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-get-type@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" - integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== - dependencies: - "@jest/types" "^25.5.0" - "@types/graceful-fs" "^4.1.2" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" - co "^4.6.0" - expect "^25.5.0" - is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" - throat "^5.0.0" - -jest-junit@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" - integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== - dependencies: - jest-validate "^24.0.0" - mkdirp "^0.5.1" - strip-ansi "^4.0.0" - xml "^1.0.1" - -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== - dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== - dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - -jest-mock@^24.0.0, jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== - dependencies: - "@jest/types" "^25.5.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== - -jest-resolve-dependencies@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7" - integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw== - dependencies: - "@jest/types" "^25.5.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.5.1" - -jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== - dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" - read-pkg-up "^7.0.1" - realpath-native "^2.0.0" - resolve "^1.17.0" - slash "^3.0.0" - -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.3.1" - -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== - dependencies: - graceful-fs "^4.2.4" - -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" - graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" - natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" - -jest-util@26.x: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-util@^24.0.0, jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - -jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - make-dir "^3.0.0" - -jest-validate@^24.0.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-validate@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== - dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" - leven "^3.1.0" - pretty-format "^25.5.0" - -jest-watcher@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== - dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^25.1.0, jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^25: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db" - integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ== - dependencies: - "@jest/core" "^25.5.4" - import-local "^3.0.2" - jest-cli "^25.5.4" - -jquery@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" - integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== - -js-base64@^2.1.8: - version "2.5.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" - integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdoctypeparser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-7.0.0.tgz#957192fbcb8c574240092cca4635383a6ed706eb" - integrity sha512-6vWPn5qSy+MbgCVjXsQKVkRywhs+IxFU7Chw72DKsWoGueYp6QX8eTc55+EA0yPGYfhmglb1gfi283asXirfGQ== - -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-bignum@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/json-bignum/-/json-bignum-0.0.3.tgz#41163b50436c773d82424dbc20ed70db7604b8d7" - integrity sha1-QRY7UENsdz2CQk28IO1w23YEuNc= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json2module@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/json2module/-/json2module-0.0.3.tgz#00fb5f4a9b7adfc3f0647c29cb17bcd1979be9b2" - integrity sha1-APtfSpt638PwZHwpyxe80Zeb6bI= - dependencies: - rw "^1.3.2" - -json5@2.x, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -less-loader@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" - integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg== - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^4.0.1" - -less@^3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" - integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== - dependencies: - clone "^2.1.2" - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" - source-map "~0.6.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.memoize@4.x, lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.once@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - -lodash.padend@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@4.17.19: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.12: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -material-colors@^1.2.1: - version "1.2.6" - resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" - integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== - -md5-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" - integrity sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memoize-one@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906" - integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA== - -memoize-one@^5.0.0, memoize-one@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" - integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-class-names@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge-class-names/-/merge-class-names-1.3.0.tgz#c4cdc1a981a81dd9afc27aa4287e912a337c5dee" - integrity sha512-k0Qaj36VBpKgdc8c188LEZvo6v/zzry/FUufwopWbMSp6/knfVFU/KIB55/hJjeIpg18IH2WskXJCRnM/1BrdQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.0, micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.0.3, mime@^2.4.4: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009" - integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-css-extract-plugin@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz#5ba8290fbb4179a43dd27cca444ba150bee743a0" - integrity sha512-RQIw6+7utTYn8DBGsf/LpRgZCJMpZt+kuawJ/fju0KiOL6nAaTBNmCJwS7HtwSCXfS47gCkmtBFS7HdsquhdxQ== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-pipeline@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" - integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== - dependencies: - minipass "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@1.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -moment@2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - -moment@2.x: - version "2.26.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.26.0.tgz#5e1f82c6bafca6e83e808b30c8705eed0dcbd39a" - integrity sha512-oIixUO+OamkUkwjhAVE18rAMfRJNsNe/Stid/gwHSOfHrOtw9EhAY2AHvdKZ/k/MggcYELFCJz/Sn2pL8b8JMw== - -monaco-editor@*: - version "0.21.2" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.21.2.tgz#37054e63e480d51a2dd17d609dcfb192304d5605" - integrity sha512-jS51RLuzMaoJpYbu7F6TPuWpnWTLD4kjRW0+AZzcryvbxrTwhNy1KC9yboyKpgMTahpUbDUsuQULoo0GV1EPqg== - -monaco-editor@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.20.0.tgz#5d5009343a550124426cb4d965a4d27a348b4dea" - integrity sha512-hkvf4EtPJRMQlPC3UbMoRs0vTAFAYdzFQ+gpMb8A+9znae1c43q8Mab9iVsgTcg/4PNiLGGn3SlDIa8uvK1FIQ== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1, nan@^2.13.2: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== - dependencies: - growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" - shellwords "^0.1.1" - which "^1.3.1" - -node-releases@^1.1.52, node-releases@^1.1.53: - version "1.1.56" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" - integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== - -node-sass@^4.13.1: - version "4.14.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" - integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash "^4.17.15" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.13.2" - node-gyp "^3.8.0" - npmlog "^4.0.0" - request "^2.88.0" - sass-graph "2.2.5" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-hash@^1.1.8: - version "1.3.1" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" - integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== - -object-inspect@^1.7.0, object-inspect@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.4.tgz#c28a9d315e5c98340bf979fdcb2e58664aa10d83" - integrity sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -optimize-css-assets-webpack-plugin@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz#e2f1d4d94ad8c0af8967ebd7cf138dcb1ef14572" - integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" - integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@0: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.2.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pad-left@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pad-left/-/pad-left-2.1.0.tgz#16e6a3b2d44a8e138cb0838cc7cb403a4fc9e994" - integrity sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ= - dependencies: - repeat-string "^1.5.4" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -papaparse@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.0.tgz#ab1702feb96e79ab4309652f36db9536563ad05a" - integrity sha512-Lb7jN/4bTpiuGPrYy4tkKoUS8sTki8zacB5ke1p5zolhcSE4TlWgrlsxjrDTbG/dFVh07ck7X36hUf/b5V68pg== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-color@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" - integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= - dependencies: - color-convert "~0.5.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pixelmatch@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.2.0.tgz#6433386c6a830b0d9ee3962f9ad59695500677cd" - integrity sha512-TdleROuanI+Uo/4PcOAH7b7qgO4kjzJO8K4y/TBAo1wx/5BE8cn1B0I6Jfk3mKcJsGpWvX7zjM8OjU5o9i+aog== - dependencies: - pngjs "^4.0.1" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0, pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -pngjs@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pngjs@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-4.0.1.tgz#f803869bb2fc1bfe1bf99aa4ec21c108117cfdbe" - integrity sha512-rf5+2/ioHeQxR6IxuYNYGFytUyG3lma/WW1nsmjeHlWwtb2aByla6dkVc8pmJ9nplzkTA0q2xx7mMWrOTqT4Gg== - -popper.js@^1.14.4: - version "1.16.1" - resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-calc@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" - integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.0.tgz#662b3dcb6354638b9213a55eed8913bcdc8d004a" - integrity sha512-QRE0n3hpkxxS/OGvzOa+PDuy4mh/Jg4o9ui22/ko5iGYOG3M5dfJabjnAZjTdh2G9F85c7Hv8hWcEDEKW/xceQ== - dependencies: - postcss "^7.0.26" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz#71dd3c6c10a0d846c5eda07803439617bbbabacc" - integrity sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" - integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== - dependencies: - lodash.template "^4.5.0" - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" - integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" - -postcss-modules-scope@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" - integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd" - integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.23: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prefix-style@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06" - integrity sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY= - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@1.19.1, prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^21.2.1: - version "21.2.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" - integrity sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A== - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^26.0.1: - version "26.0.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.0.1.tgz#a4fe54fe428ad2fd3413ca6bbd1ec8c2e277e197" - integrity sha512-SWxz6MbupT3ZSlL0Po4WF/KujhQaVehijR2blyRDCzk9e45EaYMVhMBn49fnRuHxtkSpXTes1GxNpVmH86Bxfw== - dependencies: - "@jest/types" "^26.0.1" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -private@^0.1.8, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0, progress@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -prop-types@15.x, prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-from-env@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer-core@1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-1.18.1.tgz#37549e975273b7fa450e0f8a8023db6175ed049a" - integrity sha512-E/p4oIYnPZsCATQD5S6IKOBUnGG87h14OAXAmHjm+9SFIYLBUtY2AWg38Jfus9IjcAucnrYBv6A5372bte/S2g== - dependencies: - debug "^4.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^2.2.1" - mime "^2.0.3" - progress "^2.0.1" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^6.1.0" - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -raf-schd@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" - integrity sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ== - -raf@^3.1.0, raf@^3.4.0, raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -rc-align@^2.4.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-2.4.5.tgz#c941a586f59d1017f23a428f0b468663fb7102ab" - integrity sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw== - dependencies: - babel-runtime "^6.26.0" - dom-align "^1.7.0" - prop-types "^15.5.8" - rc-util "^4.0.4" - -rc-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-3.0.0.tgz#5b0510aaa12dfef7b8d79877d39e43de5ef831bc" - integrity sha512-/T/4LOlKJLFe8EwsORuc3pFWOJ8caUpj2vtKIHWea4PhakoleM7KDQsx0n1WDQENIeSfrP9P1FowVxAdvhjsvw== - dependencies: - classnames "2.x" - dom-align "^1.7.0" - rc-util "^4.12.0" - resize-observer-polyfill "^1.5.1" - -rc-align@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.8.tgz#276c3f5dfadf0de4bb95392cb81568c9e947a668" - integrity sha512-2sRUkmB8z4UEXzaS+lDHzXMoR8HrtKH9nn2yHlHVNyUTnaucjMFbdEoCk+hO1g7cpIgW0MphG8i0EH2scSesfw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - dom-align "^1.7.0" - rc-util "^5.3.0" - resize-observer-polyfill "^1.5.1" - -rc-animate@2.x: - version "2.11.1" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c" - integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - css-animation "^1.3.2" - prop-types "15.x" - raf "^3.4.0" - rc-util "^4.15.3" - react-lifecycles-compat "^3.0.4" - -rc-animate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-3.0.0.tgz#f76d7051136b7d650fb3d29366a160e95a369c0a" - integrity sha512-+ANeyCei4lWSJHWTcocywdYAy6lpRdBva/7Fs3nBBiAngW/W+Gmx+gQEcsmcgQBqziWUYnR91Bk12ltR3GBHPA== - dependencies: - "@ant-design/css-animation" "^1.7.2" - classnames "^2.2.6" - raf "^3.4.0" - rc-util "^4.15.3" - -rc-cascader@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-1.0.1.tgz#770de1e1fa7bd559aabd4d59e525819b8bc809b7" - integrity sha512-3mk33+YKJBP1XSrTYbdVLuCC73rUDq5STNALhvua5i8vyIgIxtb5fSl96JdWWq1Oj8tIBoHnCgoEoOYnIXkthQ== - dependencies: - array-tree-filter "^2.1.0" - rc-trigger "^4.0.0" - rc-util "^4.0.4" - warning "^4.0.1" - -rc-drawer@3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-3.1.3.tgz#cbcb04d4c07f0b66f2ece11d847f4a1bd80ea0b7" - integrity sha512-2z+RdxmzXyZde/1OhVMfDR1e/GBswFeWSZ7FS3Fdd0qhgVdpV1wSzILzzxRaT481ItB5hOV+e8pZT07vdJE8kg== - dependencies: - classnames "^2.2.6" - rc-util "^4.16.1" - react-lifecycles-compat "^3.0.4" - -rc-motion@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-1.1.2.tgz#07212f1b96c715b8245ec121339146c4a9b0968c" - integrity sha512-YC/E7SSWKBFakYg4PENhSRWD4ZLDqkI7FKmutJcrMewZ91/ZIWfoZSDvPaBdKO0hsFrrzWepFhXQIq0FNnCMWA== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - raf "^3.4.1" - rc-util "^5.0.6" - -rc-slider@9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.3.1.tgz#444012f3b4847d592b167a9cee6a1a46779a6ef4" - integrity sha512-c52PWPyrfJWh28K6dixAm0906L3/4MUIxqrNQA4TLnC/Z+cBNycWJUZoJerpwSOE1HdM3XDwixCsmtFc/7aWlQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-tooltip "^4.0.0" - rc-util "^5.0.0" - shallowequal "^1.1.0" - -rc-time-picker@^3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/rc-time-picker/-/rc-time-picker-3.7.3.tgz#65a8de904093250ae9c82b02a4905e0f995e23e2" - integrity sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg== - dependencies: - classnames "2.x" - moment "2.x" - prop-types "^15.5.8" - raf "^3.4.1" - rc-trigger "^2.2.0" - react-lifecycles-compat "^3.0.4" - -rc-tooltip@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-4.2.3.tgz#f6fb2a6d9e76ef64295a1d9b5a1618f8634c0645" - integrity sha512-7ySkaPGeqLLM4a/QYrKQ280aDthPxyvjJqQMstWX/AWX7/b1p23HIdHXdjBkziuvcnvXkW4lgZdFTVsylDiX1w== - dependencies: - "@babel/runtime" "^7.11.2" - rc-trigger "^4.2.1" - -rc-trigger@^2.2.0: - version "2.6.5" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-2.6.5.tgz#140a857cf28bd0fa01b9aecb1e26a50a700e9885" - integrity sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw== - dependencies: - babel-runtime "6.x" - classnames "^2.2.6" - prop-types "15.x" - rc-align "^2.4.0" - rc-animate "2.x" - rc-util "^4.4.0" - react-lifecycles-compat "^3.0.4" - -rc-trigger@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.2.1.tgz#e30271c703d3a470fd47e75b7432102c7d0c9449" - integrity sha512-iFQ+/FbzDvYDrTS3jXbdk4MgVNU0R/A8UAAQkspXSr4Q6jTcR6p+lfNhSS0JJgJuXtfjoInC0+8jXK8HUShQ0g== - dependencies: - classnames "^2.2.6" - raf "^3.4.1" - rc-align "^3.0.0" - rc-animate "^3.0.0" - rc-util "^4.20.0" - -rc-trigger@^4.2.1: - version "4.4.3" - resolved "https://registry.yarnpkg.com/rc-trigger/-/rc-trigger-4.4.3.tgz#ed449cd6cce446555bc57f4394229c5c7154f4b0" - integrity sha512-yq/WyuiPwxd2q6jy+VPyy0GUCRFJ2eFqAaCwPE27AOftXeIupOcJ/2t1wakSq63cfk7qtzev5DKHUAjb8LOJCw== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - raf "^3.4.1" - rc-align "^4.0.0" - rc-motion "^1.0.0" - rc-util "^5.0.1" - -rc-util@^4.0.4, rc-util@^4.12.0, rc-util@^4.15.3, rc-util@^4.16.1, rc-util@^4.20.0, rc-util@^4.4.0: - version "4.20.7" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.20.7.tgz#8c19f3a489744ec00c9871ffe3701cdb7ff4a38e" - integrity sha512-wzL7bGTimuUK/SgXlUIxcXYdQ27eAaBd8PTuiKz7ZI/Mbm5R6ZcRTWpeIGG56t+/79oi++kobfKbJrPxMTkKIw== - dependencies: - add-dom-event-listener "^1.1.0" - prop-types "^15.5.10" - react-is "^16.12.0" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.4.0.tgz#688eaeecfdae9dae2bfdf10bedbe884591dba004" - integrity sha512-kXDn1JyLJTAWLBFt+fjkTcUtXhxKkipQCobQmxIEVrX62iXgo24z8YKoWehWfMxPZFPE+RXqrmEu9j5kHz/Lrg== - dependencies: - react-is "^16.12.0" - shallowequal "^1.1.0" - -react-beautiful-dnd@13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz#f70cc8ff82b84bc718f8af157c9f95757a6c3b40" - integrity sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg== - dependencies: - "@babel/runtime" "^7.8.4" - css-box-model "^1.2.0" - memoize-one "^5.1.1" - raf-schd "^4.0.2" - react-redux "^7.1.1" - redux "^4.0.4" - use-memo-one "^1.1.1" - -react-calendar@2.19.2: - version "2.19.2" - resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-2.19.2.tgz#496e78eb11a00aee1ae6b5d02d221ed1ca2db952" - integrity sha512-zKbWxwmYEg84grFsCJz9EYpnGqsZy0iV67dHzkVE0EhBdXMg2eISBQYvw4+t8zdy5ySxQkDhUW8X8ERbSyZPVw== - dependencies: - get-user-locale "^1.2.0" - merge-class-names "^1.1.1" - prop-types "^15.6.0" - react-lifecycles-compat "^3.0.4" - -react-color@2.18.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.0.tgz#34956f0bac394f6c3bc01692fd695644cc775ffd" - integrity sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA== - dependencies: - "@icons/material" "^0.2.4" - lodash "^4.17.11" - material-colors "^1.2.1" - prop-types "^15.5.10" - reactcss "^1.2.0" - tinycolor2 "^1.4.1" - -react-custom-scrollbars@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/react-custom-scrollbars/-/react-custom-scrollbars-4.2.1.tgz#830fd9502927e97e8a78c2086813899b2a8b66db" - integrity sha1-gw/ZUCkn6X6KeMIIaBOJmyqLZts= - dependencies: - dom-css "^2.0.0" - prop-types "^15.5.10" - raf "^3.1.0" - -react-dev-utils@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" - integrity sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ== - dependencies: - "@babel/code-frame" "7.8.3" - address "1.1.2" - browserslist "4.10.0" - chalk "2.4.2" - cross-spawn "7.0.1" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.0.1" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "3.1.1" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "7.0.4" - is-root "2.1.0" - loader-utils "1.2.3" - open "^7.0.2" - pkg-up "3.1.0" - react-error-overlay "^6.0.7" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@16.12.0: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11" - integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.18.0" - -react-error-overlay@^6.0.7: - version "6.0.7" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== - -react-highlight-words@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/react-highlight-words/-/react-highlight-words-0.16.0.tgz#4b4b9824e3d2b98789d3e3b3aedb5e961ae1b7cf" - integrity sha512-q34TwCSJOL+5pVDv6LUj3amaoyXdNDwd7zRqVAvceOrO9g1haWLAglK6WkGLMNUa3PFN8EgGedLg/k8Gpndxqg== - dependencies: - highlight-words-core "^1.2.0" - memoize-one "^4.0.0" - prop-types "^15.5.8" - -react-hook-form@5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.1.3.tgz#24610e11878c6bd143569ce203320f7367893e75" - integrity sha512-6+6wSge72A2Y7WGqMke4afOz0uDJ3gOPSysmYKkjJszSbmw8X8at7tJPzifnZ+cwLDR88b4on/D+jfH5azWbIw== - -react-immutable-proptypes@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz#cce96d68cc3c18e89617cbf3092d08e35126af4a" - integrity sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ== - dependencies: - invariant "^2.2.2" - -react-input-autosize@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" - integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== - dependencies: - prop-types "^15.5.8" - -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-monaco-editor@0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/react-monaco-editor/-/react-monaco-editor-0.36.0.tgz#ac085c14f25fb072514c925596f6a06a711ee078" - integrity sha512-JVA5SZhOoYZ0DCdTwYgagtRb3jHo4KN7TVFiJauG+ZBAJWfDSTzavPIrwzWbgu8ahhDqDk4jUcYlOJL2BC/0UA== - dependencies: - "@types/react" "^16.x" - monaco-editor "*" - prop-types "^15.7.2" - -react-popper@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.3.tgz#2c6cef7515a991256b4f0536cd4bdcb58a7b6af6" - integrity sha512-ynMZBPkXONPc5K4P5yFWgZx5JGAUIP3pGGLNs58cfAPgK67olx7fmLp+AdpZ0+GoQ+ieFDa/z4cdV6u7sioH6w== - dependencies: - "@babel/runtime" "^7.1.2" - create-react-context "<=0.2.2" - popper.js "^1.14.4" - prop-types "^15.6.1" - typed-styles "^0.0.7" - warning "^4.0.2" - -react-redux@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" - integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== - dependencies: - "@babel/runtime" "^7.5.5" - hoist-non-react-statics "^3.3.0" - loose-envify "^1.4.0" - prop-types "^15.7.2" - react-is "^16.9.0" - -react-storybook-addon-props-combinations@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-storybook-addon-props-combinations/-/react-storybook-addon-props-combinations-1.1.0.tgz#22a61794cc3c106bf44be809af3c3241f6988e72" - integrity sha512-gCHyLTkXthuP3wV5nQn3A6ZrBjYnRniRtVprSrq+7Vu9SX1jUhIEPvqdLdPVRmlq9rwgKAX2QVo6kNd95kZ7Hw== - dependencies: - object-hash "^1.1.8" - pretty-format "^21.2.1" - -react-table@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.0.0.tgz#3297e454cbffe916626b184f5394d7e7e098fa36" - integrity sha512-/RKUYLuqrupUs0qHdjdQLmgwdQ9mgXPnpshqv2T+OQUGhTu0XuLXVc6GOIywemXNf6qjL3dj81O6zALLK74Emw== - -react-transition-group@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683" - integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react-transition-group@^4.3.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" - integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@16.12.0: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83" - integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -"react@>=15.0.0 <17.0.0": - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -reactcss@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/reactcss/-/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" - integrity sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A== - dependencies: - lodash "^4.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= - dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - -recast@~0.11.12: - version "0.11.23" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" - integrity sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM= - dependencies: - ast-types "0.9.6" - esprima "~3.1.0" - private "~0.1.5" - source-map "~0.5.0" - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reduce-flatten@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-1.0.1.tgz#258c78efd153ddf93cb561237f61184f3696e327" - integrity sha1-JYx479FT3fk8tWEjf2EYTzaW4yc= - -redux@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== - dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regextras@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" - integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== - -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -replace-in-file-webpack-plugin@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/replace-in-file-webpack-plugin/-/replace-in-file-webpack-plugin-1.0.6.tgz#eee7e139be967e8e48a0552f73037ed567b54dbd" - integrity sha512-+KRgNYL2nbc6nza6SeF+wTBNkovuHFTfJF8QIEqZg5MbwkYpU9no0kH2YU354wvY/BK8mAC2UKoJ7q+sJTvciw== - -replace-in-file@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-4.3.1.tgz#c67c92178b38052008e379197cc0d86ca927f7b0" - integrity sha512-FqVvfmpqGTD2JRGI1JjJ86b24P17x/WWwGdxExeyJxnh/2rVQz2+jXfD1507UnnhEQw092X0u0DPCBf1WC4ooQ== - dependencies: - chalk "^2.4.2" - glob "^7.1.6" - yargs "^15.0.2" - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.83.0, request@^2.87.0, request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@~1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.17.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup@^0.25.8: - version "0.25.8" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.25.8.tgz#bf6ce83b87510d163446eeaa577ed6a6fc5835e0" - integrity sha1-v2zoO4dRDRY0Ru6qV37WpvxYNeA= - dependencies: - chalk "^1.1.1" - minimist "^1.2.0" - source-map-support "^0.3.2" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rw@1, rw@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= - -rxjs@6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" - integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== - dependencies: - tslib "^1.9.0" - -rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sass-graph@2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" - integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^13.3.2" - -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -scheduler@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.18.0.tgz#5901ad6659bc1d8f3fdaf36eb7a67b0d6746b1c4" - integrity sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.5.0, schema-utils@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" - integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.0, schema-utils@^2.6.1, schema-utils@^2.6.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -selection-is-backward@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1" - integrity sha1-l6VGMxiKURq6ZBn8XB+pG0Z+a+E= - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.x: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-git@^1.132.0: - version "1.132.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.132.0.tgz#53ac4c5ec9e74e37c2fd461e23309f22fcdf09b1" - integrity sha512-xauHm1YqCTom1sC9eOjfq3/9RKiUA9iPnxBbrY2DdL8l4ADMu0jjM5l5lphQP5YWNqAL2aXC/OeuQ76vHtW5fg== - dependencies: - debug "^4.0.1" - -simple-is@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" - integrity sha1-Krt1qt453rXMgVzhDmGRFkhQuvA= - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slate-base64-serializer@^0.2.111: - version "0.2.115" - resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.115.tgz#438e051959bde013b50507f3144257e74039ff7f" - integrity sha512-GnLV7bUW/UQ5j7rVIxCU5zdB6NOVsEU6YWsCp68dndIjSGTGLaQv2+WwV3NcnrGGZEYe5qgo33j2QWrPws2C1A== - dependencies: - isomorphic-base64 "^1.0.2" - -slate-dev-environment@^0.2.2: - version "0.2.5" - resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.5.tgz#481b6906fde5becc390db7c14edf97a4bb0029f2" - integrity sha512-oLD8Fclv/RqrDv6RYfN2CRzNcRXsUB99Qgcw5L/njTjxAdDPguV6edQ3DgUG9Q2pLFLhI15DwsKClzVfFzfwGQ== - dependencies: - is-in-browser "^1.1.3" - -slate-hotkeys@^0.2.9: - version "0.2.11" - resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.11.tgz#a94db117d9a98575671192329b05f23e6f485d6f" - integrity sha512-xhq/TlI74dRbO57O4ulGsvCcV4eaQ5nEEz9noZjeNLtNzFRd6lSgExRqAJqKGGIeJw+FnJ3OcqGvdb5CEc9/Ew== - dependencies: - is-hotkey "0.1.4" - slate-dev-environment "^0.2.2" - -slate-plain-serializer@^0.7.10: - version "0.7.13" - resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.7.13.tgz#6de8f5c645dd749f1b2e4426c20de74bfd213adf" - integrity sha512-TtrlaslxQBEMV0LYdf3s7VAbTxRPe1xaW10WNNGAzGA855/0RhkaHjKkQiRjHv5rvbRleVf7Nxr9fH+4uErfxQ== - -slate-prop-types@^0.5.41: - version "0.5.44" - resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.5.44.tgz#da60b69c3451c3bd6cdd60a45d308eeba7e83c76" - integrity sha512-JS0iW7uaciE/W3ADuzeN1HOnSjncQhHPXJ65nZNQzB0DF7mXVmbwQKI6cmCo/xKni7XRJT0JbWSpXFhEdPiBUA== - -slate-react-placeholder@^0.2.8: - version "0.2.9" - resolved "https://registry.yarnpkg.com/slate-react-placeholder/-/slate-react-placeholder-0.2.9.tgz#30f450a05d4871c7d1a27668ebe7907861e7ca74" - integrity sha512-YSJ9Gb4tGpbzPje3eNKtu26hWM8ApxTk9RzjK+6zfD5V/RMTkuWONk24y6c9lZk0OAYNZNUmrnb/QZfU3j9nag== - -slate@0.47.8: - version "0.47.8" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.47.8.tgz#1e987b74d8216d44ec56154f0e6d3c722ce21e6e" - integrity sha512-/Jt0eq4P40qZvtzeKIvNb+1N97zVICulGQgQoMDH0TI8h8B+5kqa1YeckRdRnuvfYJm3J/9lWn2V3J1PrF+hag== - dependencies: - debug "^3.1.0" - direction "^0.1.5" - esrever "^0.2.0" - is-plain-object "^2.0.4" - lodash "^4.17.4" - tiny-invariant "^1.0.1" - tiny-warning "^0.0.3" - type-of "^2.0.1" - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.3.3.tgz#34900977d5ba3f07c7757ee72e73bb1a9b53754f" - integrity sha1-NJAJd9W6PwfHdX7nLnO7GptTdU8= - dependencies: - source-map "0.1.32" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@0.1.32: - version "0.1.32" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.32.tgz#c8b6c167797ba4740a8ea33252162ff08591b266" - integrity sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.0, source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" - integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== - dependencies: - figgy-pudding "^3.5.1" - minipass "^3.1.1" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" - integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - dependencies: - readable-stream "^2.0.1" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trim@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-loader@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" - integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.6.4" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= - dependencies: - has-flag "^2.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -symbol-observable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table-layout@^0.4.3: - version "0.4.5" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-0.4.5.tgz#d906de6a25fa09c0c90d1d08ecd833ecedcb7378" - integrity sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw== - dependencies: - array-back "^2.0.0" - deep-extend "~0.6.0" - lodash.padend "^4.6.1" - typical "^2.6.1" - wordwrapjs "^3.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tape@^4.5.1: - version "4.13.3" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" - integrity sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw== - dependencies: - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - function-bind "~1.1.1" - glob "~7.1.6" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.0.5" - minimist "~1.2.5" - object-inspect "~1.7.0" - resolve "~1.17.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.1" - through "~2.3.8" - -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz#5ad971acce5c517440ba873ea4f09687de2f4a81" - integrity sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w== - dependencies: - cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^25.1.0" - p-limit "^2.2.2" - schema-utils "^2.6.4" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.4.3" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^4.4.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -test-value@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-3.0.0.tgz#9168c062fab11a86b8d444dd968bb4b73851ce92" - integrity sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ== - dependencies: - array-back "^2.0.0" - typical "^2.6.1" - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6, through@~2.3.4, through@~2.3.6, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-invariant@^1.0.1, tiny-invariant@^1.0.6: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" - integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== - -tiny-warning@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" - integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== - -tinycolor2@1.4.1, tinycolor2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" - integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-camel-case@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" - integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= - dependencies: - to-space-case "^1.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-no-case@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" - integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -to-space-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" - integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= - dependencies: - to-no-case "^1.0.0" - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tree-kill@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - -ts-jest@26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.3.0.tgz#6b2845045347dce394f069bb59358253bc1338a9" - integrity sha512-Jq2uKfx6bPd9+JDpZNMBJMdMQUC3sJ08acISj8NXlVgR2d5OqslEHOR2KHMgwymu8h50+lKIm0m0xj/ioYdW2Q== - dependencies: - "@types/jest" "26.x" - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - jest-util "26.x" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "18.x" - -ts-loader@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.2.1.tgz#67939d5772e8a8c6bdaf6277ca023a4812da02ef" - integrity sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g== - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^4.0.0" - semver "^6.0.0" - -ts-node@8.8.1: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.8.1.tgz#7c4d3e9ed33aa703b64b28d7f9d194768be5064d" - integrity sha512-10DE9ONho06QORKAaCBpPiFCdW+tZJuY/84tyypGtl6r+/C7Asq0dhqbRZURuUlLQtZxxDvT8eoj8cGW0ha6Bg== - dependencies: - arg "^4.1.0" - diff "^4.0.1" - make-error "^1.1.1" - source-map-support "^0.5.6" - yn "3.1.1" - -tslib@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" - integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= - -typed-styles@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9" - integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@3.9.3: - version "3.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a" - integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ== - -typescript@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" - integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== - -typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= - -ua-parser-js@^0.7.18: - version "0.7.21" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" - integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -uglify-js@^2.6.2: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-2.3.0.tgz#e0e2ef658f003efb8ca41b0f3ffbf76bab88658b" - integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== - dependencies: - loader-utils "^1.2.3" - mime "^2.4.4" - schema-utils "^2.5.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-memo-one@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.1.tgz#39e6f08fe27e422a7d7b234b5f9056af313bd22c" - integrity sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0, util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -venn.js@~0.2.20: - version "0.2.20" - resolved "https://registry.yarnpkg.com/venn.js/-/venn.js-0.2.20.tgz#3f0e50cc75cba1f58692a8a32f67bd7aaf1aa6fa" - integrity sha512-bb5SYq/wamY9fvcuErb9a0FJkgIFHJjkLZWonQ+DoKKuDX3WPH2B4ouI1ce4K2iejBklQy6r1ly8nOGIyOCO6w== - dependencies: - d3-selection "^1.0.2" - d3-transition "^1.0.1" - fmin "0.0.2" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= - dependencies: - loose-envify "^1.0.0" - -warning@^4.0.1, warning@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.6.0: - version "1.7.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" - integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.0" - watchpack-chokidar2 "^2.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@1, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -wolfy87-eventemitter@~5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wolfy87-eventemitter/-/wolfy87-eventemitter-5.1.0.tgz#35c1ac0dd1ac0c15e35d981508fc22084a13a011" - integrity sha1-NcGsDdGsDBXjXZgVCPwiCEoToBE= - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrapjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-3.0.0.tgz#c94c372894cadc6feb1a66bff64e1d9af92c5d1e" - integrity sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw== - dependencies: - reduce-flatten "^1.0.1" - typical "^2.6.1" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.4.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" - integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xml@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xss@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.6.tgz#eaf11e9fc476e3ae289944a1009efddd8a124b51" - integrity sha512-6Q9TPBeNyoTRxgZFk5Ggaepk/4vUOYdOsIUYvLehcsIZTFjaavbVnsuAkLA5lIFuug5hw8zxcB9tm01gsjph2A== - dependencies: - commander "^2.9.0" - cssfilter "0.0.10" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2, yaml@^1.8.3: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@18.x, yargs-parser@^18.1.1, yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^12.0.1: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^15.0.2: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10 + +"@adobe/css-tools@npm:^4.3.1": + version: 4.4.0 + resolution: "@adobe/css-tools@npm:4.4.0" + checksum: 10/9c6315fe9efa5075d6ddb6ded7a1424bc9c41a01f2314b6bdcc368723985fe161008d03ddcc2b27b2da50cb9c14190fbce965d15cefe5f9a31bdd43f35b52115 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10/f3451525379c68a73eb0a1e65247fbf28c0cccd126d93af21c75fceff77773d43c0d4a2d51978fb131aff25b5f2cb41a9fe48cc296e61ae65e679c4f6918b0ab + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0": + version: 7.8.3 + resolution: "@babel/code-frame@npm:7.8.3" + dependencies: + "@babel/highlight": "npm:^7.8.3" + checksum: 10/bf152635a1160a570cd7b0199d8d94ad04b4114b2c3a3afb1d97c9b0c490c82928ac189f6a9e431b709c801649482845fbf14976eee5f3f1e68c8b6f5c65629a + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/code-frame@npm:7.25.7" + dependencies: + "@babel/highlight": "npm:^7.25.7" + picocolors: "npm:^1.0.0" + checksum: 10/000fb8299fb35b6217d4f6c6580dcc1fa2f6c0f82d0a54b8a029966f633a8b19b490a7a906b56a94e9d8bee91c3bc44c74c44c33fb0abaa588202f6280186291 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/compat-data@npm:7.25.7" + checksum: 10/8fdc451e0ed9e22d1324d504b84d4452ba6f4a806b0f5c364996ee4c2a77293f79ecf4da03033acb625c90bac115c61617eb6c894c2b88486724bcbe3af1a6eb + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.4, @babel/core@npm:^7.23.9": + version: 7.25.7 + resolution: "@babel/core@npm:7.25.7" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/helper-compilation-targets": "npm:^7.25.7" + "@babel/helper-module-transforms": "npm:^7.25.7" + "@babel/helpers": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10/f5fb7fb1e3ce357485cb33fe7984051a2d416472370b33144ae809df86a4663192b58cf0d828d40674d30f485790f3dd5aaf72eb659487673a4dc4be47cb3575 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/generator@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10/01542829621388077fa8a7464970c1db0f748f1482968dddf5332926afe4003f953cbe08e3bbbb0a335b11eba0126c9a81779bd1c5baed681a9ccec4ae63b217 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-compilation-targets@npm:7.25.7" + dependencies: + "@babel/compat-data": "npm:^7.25.7" + "@babel/helper-validator-option": "npm:^7.25.7" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10/bbf9be8480da3f9a89e36e9ea2e1c76601014c1074ccada7c2edb1adeb3b62bc402cc4abaf8d16760734b25eceb187a9510ce44f6a7a6f696ccc74f69283625b + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.0.0": + version: 7.8.3 + resolution: "@babel/helper-module-imports@npm:7.8.3" + dependencies: + "@babel/types": "npm:^7.8.3" + checksum: 10/612cabd2abcf05a726b14be5f5cf0f6258912da9d8c8e31d97f0c4c1ef66371787baffc117d1d971072bd97b080f9c98365ad11679a31566d41fbd7e83e6c185 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-imports@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/94556712c27058ea35a1a39e21a3a9f067cd699405b64333d7d92b2b3d2f24d6f0ffa51aedba0b908e320acb1854e70d296259622e636fb021eeae9a6d996f01 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-module-transforms@npm:7.25.7" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.7" + "@babel/helper-simple-access": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + "@babel/traverse": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/480309b1272ceaa985de1393f0e4c41aede0d5921ca644cec5aeaf43c8e4192b6dd56a58ef6d7e9acd02a43184ab45d3b241fc8c3a0a00f9dbb30235fd8a1181 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.25.7 + resolution: "@babel/helper-plugin-utils@npm:7.25.7" + checksum: 10/e1b0ea5e67b05378d6360e3fc370e99bfb247eed9f68145b5cce541da703424e1887fb6fc60ab2f7f743c72dcbfbed79d3032af43f2c251c229c734dc2572a5b + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-simple-access@npm:7.25.7" + dependencies: + "@babel/traverse": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/42da1c358f2516337a4f2927c77ebb952907543b9f85d7cb1e2b5b5f6d808cdc081ee66a73e2ecdf48c315d9b0c2a81a857d5e1923ea210b8e81aba5e6cd2b53 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-string-parser@npm:7.25.7" + checksum: 10/2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-identifier@npm:7.25.7" + checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.9.0, @babel/helper-validator-identifier@npm:^7.9.5": + version: 7.9.5 + resolution: "@babel/helper-validator-identifier@npm:7.9.5" + checksum: 10/29beeedae169d2b842837ee254d7b0d6d0bd7965be062de4e67b5740f38ea94922976c033157ac6283418fd521e76d79dac869d1c543b9a7f38b1b4f0b190870 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helper-validator-option@npm:7.25.7" + checksum: 10/3c46cbdd666d176f90a0b7e952a0c6e92184b66633336eca79aca243d1f86085ec339a6e45c3d44efa9e03f1829b470a350ddafa70926af6bbf1ac611284f8d3 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/helpers@npm:7.25.7" + dependencies: + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/2632909f83aa99e8b0da4e10e5ab7fc4f0274e6497bb0f17071e004e037d25e4a595583620261dc21410a526fb32b4f7063c3e15e60ed7890a6f9b8ad52312c5 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/highlight@npm:7.25.7" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.7" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10/823be2523d246dbf80aab3cc81c2a36c6111b16ac2949ef06789da54387824c2bfaa88c6627cdeb4ba7151d047a5d6765e49ebd0b478aba09759250111e65e08 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.8.3": + version: 7.9.0 + resolution: "@babel/highlight@npm:7.9.0" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.9.0" + chalk: "npm:^2.0.0" + js-tokens: "npm:^4.0.0" + checksum: 10/2e7dc27c209a59853b6830be6fab14d0f0bf6f73e4fe34114a874bf75ae24cfee55729fd26f69884959bc855c5c0d514d5deb8192a06a35e08c5a54cc243924c + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/parser@npm:7.25.7" + dependencies: + "@babel/types": "npm:^7.25.7" + bin: + parser: ./bin/babel-parser.js + checksum: 10/98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.25.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/7c5451e2d8351693acbc53b1e1f6951026e35899d22847a6d22424a1ee5c92c11ac6c6f209a9e18f85d7bb9267caaf2532653e892997cdcd51784106a5858b7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/243476a943a84b6b86e99076301e66f48268e8799564053e8feccab90da7944a0b42c91360216dbfb0b2958bbd0ed100d2c7b2db688dab83d19ff2745d4892eb + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.7" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/f1492336230920cc4daa6e7aa3571253fb0c0fd05a1d0a7b5dc0a5b907f31945235ee8bf09c83f7738b89943a2320a61dda95e0db2b6310b07040aeda6be4f44 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.9.2": + version: 7.25.7 + resolution: "@babel/runtime@npm:7.25.7" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10/73411fe0f1bff3a962586cef05b30f49e554b6563767e6d84f7d79d605b2c20e7fc3df291a3aebef69043181a8f893afdab9e6672557a5c2d08b9377d6f678cd + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7": + version: 7.9.6 + resolution: "@babel/runtime@npm:7.9.6" + dependencies: + regenerator-runtime: "npm:^0.13.4" + checksum: 10/610b0c73a52abb90886de89f12406be154c187798e5c3df5ef1bfa07ec73b1108b773ac0ca3d396db84633b43705d408302b314f21e3906c208841059dfd1d17 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2": + version: 7.11.2 + resolution: "@babel/runtime@npm:7.11.2" + dependencies: + regenerator-runtime: "npm:^0.13.4" + checksum: 10/ecd8101501cbf7128c3dbb2b6ce17b707ac95aa60c4075d3ce9b6649e873afa1ede14e5ae28c5a51d2c18b46d20300ce2a193a16f6c5af67cc29bc68f20defd8 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": + version: 7.25.7 + resolution: "@babel/template@npm:7.25.7" + dependencies: + "@babel/code-frame": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + checksum: 10/49e1e88d2eac17d31ae28d6cf13d6d29c1f49384c4f056a6751c065d6565c351e62c01ce6b11fef5edb5f3a77c87e114ea7326ca384fa618b4834e10cf9b20f3 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.25.7": + version: 7.25.7 + resolution: "@babel/traverse@npm:7.25.7" + dependencies: + "@babel/code-frame": "npm:^7.25.7" + "@babel/generator": "npm:^7.25.7" + "@babel/parser": "npm:^7.25.7" + "@babel/template": "npm:^7.25.7" + "@babel/types": "npm:^7.25.7" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10/5b2d332fcd6bc78e6500c997e79f7e2a54dfb357e06f0908cb7f0cdd9bb54e7fd3c5673f45993849d433d01ea6076a6d04b825958f0cfa01288ad55ffa5c286f + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.3.3": + version: 7.25.7 + resolution: "@babel/types@npm:7.25.7" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.7" + "@babel/helper-validator-identifier": "npm:^7.25.7" + to-fast-properties: "npm:^2.0.0" + checksum: 10/4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a + languageName: node + linkType: hard + +"@babel/types@npm:^7.8.3": + version: 7.9.6 + resolution: "@babel/types@npm:7.9.6" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.9.5" + lodash: "npm:^4.17.13" + to-fast-properties: "npm:^2.0.0" + checksum: 10/500d52c85c6831d75e9cff9d9429b18efa1d4e8a66d43a746cc0e4aacedbe8a3b94229ea395f2aad21c5eed62464fad1a0815da40d9da8561e8604ead739603d + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d + languageName: node + linkType: hard + +"@braintree/sanitize-url@npm:7.0.1": + version: 7.0.1 + resolution: "@braintree/sanitize-url@npm:7.0.1" + checksum: 10/5e01e6faf81b2289c8e7829aed185c834a88d501c51f569a9f2bc72549d4f2367eeb6f8a9e8039fbe3ef52b094c6afc32dc8272185c687ab6812340b1249cf4d + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:^0.5.0": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 10/b95682a852448e8ef50d6f8e3b7ba288aab3fd98a2bafbe46881a3db0c6e7248a2debe9e1ee0d4137c521e4743ca5bbcb1c0765c9d7b3e0ef53231506fec42b4 + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.10.6, @emotion/babel-plugin@npm:^11.11.0, @emotion/babel-plugin@npm:^11.12.0": + version: 11.12.0 + resolution: "@emotion/babel-plugin@npm:11.12.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.16.7" + "@babel/runtime": "npm:^7.18.3" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/serialize": "npm:^1.2.0" + babel-plugin-macros: "npm:^3.1.0" + convert-source-map: "npm:^1.5.0" + escape-string-regexp: "npm:^4.0.0" + find-root: "npm:^1.1.0" + source-map: "npm:^0.5.7" + stylis: "npm:4.2.0" + checksum: 10/fe6f4522ea2b61ef4214dd0b0f3778aad9c18434b47e50ae5091af226526bf305455c313065826a090682520c9462c151d4df62ec128f14671d3125afc05b148 + languageName: node + linkType: hard + +"@emotion/cache@npm:^10.0.27": + version: 10.0.29 + resolution: "@emotion/cache@npm:10.0.29" + dependencies: + "@emotion/sheet": "npm:0.9.4" + "@emotion/stylis": "npm:0.8.5" + "@emotion/utils": "npm:0.11.3" + "@emotion/weak-memoize": "npm:0.2.5" + checksum: 10/9978106bb1965e7167d37112fd8de3d12e877cdcf352da095cce7543615bfd4489f0ec798449bd4c8c77c80847175d52df60a84d259ec960af93f4c85293fd6a + languageName: node + linkType: hard + +"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": + version: 11.13.1 + resolution: "@emotion/cache@npm:11.13.1" + dependencies: + "@emotion/memoize": "npm:^0.9.0" + "@emotion/sheet": "npm:^1.4.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" + stylis: "npm:4.2.0" + checksum: 10/090c8ad2e5b23f1b3a95e94f1f0554a40ed1dcd844c9d31629a68ff824eff40f32d1362f67aefa440ee0aabd5a8cabcc76870fd6d77144d3ff251bdcdf1420b9 + languageName: node + linkType: hard + +"@emotion/css@npm:11.10.6": + version: 11.10.6 + resolution: "@emotion/css@npm:11.10.6" + dependencies: + "@emotion/babel-plugin": "npm:^11.10.6" + "@emotion/cache": "npm:^11.10.5" + "@emotion/serialize": "npm:^1.1.1" + "@emotion/sheet": "npm:^1.2.1" + "@emotion/utils": "npm:^1.2.0" + checksum: 10/e6d8d80ac1b1a1bba4a041d35ace7cce211a82cd93dd38a41d19ab19c2d9c47cf2189bec0c4cbdfd2018ad371f07f8e4ebe09d9ef9556d4a28fd386b89ce8b8d + languageName: node + linkType: hard + +"@emotion/css@npm:11.11.2": + version: 11.11.2 + resolution: "@emotion/css@npm:11.11.2" + dependencies: + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/cache": "npm:^11.11.0" + "@emotion/serialize": "npm:^1.1.2" + "@emotion/sheet": "npm:^1.2.2" + "@emotion/utils": "npm:^1.2.1" + checksum: 10/718f758575f05e3610cdef9bdcfcdf17eae1992616c7cc85e29a24ff3b4d3da9968cc1c253a510874c056c22dc73b6b12bd759be9943e20141e0603a3cb35630 + languageName: node + linkType: hard + +"@emotion/hash@npm:0.8.0": + version: 0.8.0 + resolution: "@emotion/hash@npm:0.8.0" + checksum: 10/4b35d88a97e67275c1d990c96d3b0450451d089d1508619488fc0acb882cb1ac91e93246d471346ebd1b5402215941ef4162efe5b51534859b39d8b3a0e3ffaa + languageName: node + linkType: hard + +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 10/379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 + languageName: node + linkType: hard + +"@emotion/memoize@npm:0.7.4": + version: 0.7.4 + resolution: "@emotion/memoize@npm:0.7.4" + checksum: 10/4e3920d4ec95995657a37beb43d3f4b7d89fed6caa2b173a4c04d10482d089d5c3ea50bbc96618d918b020f26ed6e9c4026bbd45433566576c1f7b056c3271dc + languageName: node + linkType: hard + +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 10/038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 + languageName: node + linkType: hard + +"@emotion/react@npm:11.11.4": + version: 11.11.4 + resolution: "@emotion/react@npm:11.11.4" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.11.0" + "@emotion/cache": "npm:^11.11.0" + "@emotion/serialize": "npm:^1.1.3" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" + "@emotion/utils": "npm:^1.2.1" + "@emotion/weak-memoize": "npm:^0.3.1" + hoist-non-react-statics: "npm:^3.3.1" + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/e7da3a1ddc1d72a4179010bdfd17423c13b1a77bf83a8b18271e919fd382d08c62dc2313ed5347acfd1ef85bb1bae8932597647a986e8a1ea1462552716cd495 + languageName: node + linkType: hard + +"@emotion/react@npm:^11.8.1": + version: 11.13.3 + resolution: "@emotion/react@npm:11.13.3" + dependencies: + "@babel/runtime": "npm:^7.18.3" + "@emotion/babel-plugin": "npm:^11.12.0" + "@emotion/cache": "npm:^11.13.0" + "@emotion/serialize": "npm:^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" + hoist-non-react-statics: "npm:^3.3.1" + peerDependencies: + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/ee70d3afc2e8dd771e6fe176d27dd87a5e21a54e54d871438fd1caa5aa2312d848c6866292fdc65a6ea1c945147c8422bda2d22ed739178af9902dc86d6b298a + languageName: node + linkType: hard + +"@emotion/serialize@npm:^0.11.15, @emotion/serialize@npm:^0.11.16": + version: 0.11.16 + resolution: "@emotion/serialize@npm:0.11.16" + dependencies: + "@emotion/hash": "npm:0.8.0" + "@emotion/memoize": "npm:0.7.4" + "@emotion/unitless": "npm:0.7.5" + "@emotion/utils": "npm:0.11.3" + csstype: "npm:^2.5.7" + checksum: 10/a6c3b70417bb0fc0ca65da139b147fe5f2067010bd8f4e3dadebe3006777b020f4dc4317e82a5644aaa1c64026ffa9283fdc9777d365b37fcea57d9e1fed7a6c + languageName: node + linkType: hard + +"@emotion/serialize@npm:^1.1.1, @emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3, @emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": + version: 1.3.2 + resolution: "@emotion/serialize@npm:1.3.2" + dependencies: + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/unitless": "npm:^0.10.0" + "@emotion/utils": "npm:^1.4.1" + csstype: "npm:^3.0.2" + checksum: 10/ead557c1ff19d917ef8169c02738ef36f0851fbfdf0bf69a543045bddea3b7281dc8252ee466cc5fb44ed27d1e61280ff943bb60a2c04158751fb07b3457cc93 + languageName: node + linkType: hard + +"@emotion/sheet@npm:0.9.4": + version: 0.9.4 + resolution: "@emotion/sheet@npm:0.9.4" + checksum: 10/53bb833b4bb69ea2af04e1ecad164f78fb2614834d2820f584c909686a8e047c44e96a6e824798c5c558e6d95e10772454a9e5c473c5dbe0d198e50deb2815bc + languageName: node + linkType: hard + +"@emotion/sheet@npm:^1.2.1, @emotion/sheet@npm:^1.2.2, @emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: 10/8ac6e9bf6b373a648f26ae7f1c24041038524f4c72f436f4f8c4761c665e58880c3229d8d89b1f7a4815dd8e5b49634d03e60187cb6f93097d7f7c1859e869d5 + languageName: node + linkType: hard + +"@emotion/stylis@npm:0.8.5": + version: 0.8.5 + resolution: "@emotion/stylis@npm:0.8.5" + checksum: 10/ceaa673457f501a393cb52873b2bc34dbe35ef0fb8faa4b943d73ecbbb42bc3cea53b87cbf482038b7b9b1f95859be3d8b58d508422b4d15aec5b62314cc3c1e + languageName: node + linkType: hard + +"@emotion/unitless@npm:0.7.5": + version: 0.7.5 + resolution: "@emotion/unitless@npm:0.7.5" + checksum: 10/f976e5345b53fae9414a7b2e7a949aa6b52f8bdbcc84458b1ddc0729e77ba1d1dfdff9960e0da60183877873d3a631fa24d9695dd714ed94bcd3ba5196586a6b + languageName: node + linkType: hard + +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: 10/6851c16edce01c494305f43b2cad7a26b939a821131b7c354e49b8e3b012c8810024755b0f4a03ef51117750309e55339825a97bd10411fb3687e68904769106 + languageName: node + linkType: hard + +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1, @emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": + version: 1.1.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10/33a10f44a873b3f5ccd2a1a3d13c2f34ed628f5a2be1ccf28540a86535a14d3a930afcbef209d48346a22ec60ff48f43c86ee9c846b9480d23a55a17145da66c + languageName: node + linkType: hard + +"@emotion/utils@npm:0.11.3": + version: 0.11.3 + resolution: "@emotion/utils@npm:0.11.3" + checksum: 10/c69d9fe0846283354fae7c97e4fbc8fc7116ab48313665c3b5a11c9dabeb311b30d8f53ed358625070b9b7538462d80106228b00d7db7985d40c40225d01b276 + languageName: node + linkType: hard + +"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1, @emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": + version: 1.4.1 + resolution: "@emotion/utils@npm:1.4.1" + checksum: 10/95e56fc0c9e05cf01a96268f0486ce813f1109a8653d2f575c67df9e8765d9c1b2daf09ad1ada67d933efbb08ca7990228e14b210c713daf90156b4869abe6a7 + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:0.2.5": + version: 0.2.5 + resolution: "@emotion/weak-memoize@npm:0.2.5" + checksum: 10/27d402b0c683b94658220b6d47840346ee582329ca2a15ec9c233492e0f1a27687ccb233b76eedc922f2e185e444cc89f7b97a81a1d3e5ae9f075bab08e965ea + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: 10/b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 + languageName: node + linkType: hard + +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: 10/db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 + languageName: node + linkType: hard + +"@es-joy/jsdoccomment@npm:~0.40.1": + version: 0.40.1 + resolution: "@es-joy/jsdoccomment@npm:0.40.1" + dependencies: + comment-parser: "npm:1.4.0" + esquery: "npm:^1.5.0" + jsdoc-type-pratt-parser: "npm:~4.0.0" + checksum: 10/6501c292067b261be553cdc0dca97cc7075c012a5cf283b26e8baa2f5544f487019244af3283c5503f18a5d1d5ba68d00b7581b9fa321866603bf34b3288a1b7 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10/8d70bcdcd8cd279049183aca747d6c2ed7092a5cf0cf5916faac1ef37ffa74f0c245c2a3a3d3b9979d9dfdd4ca59257b4c5621db699d637b847a2c5e02f491c2 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": + version: 4.11.1 + resolution: "@eslint-community/regexpp@npm:4.11.1" + checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.2": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + languageName: node + linkType: hard + +"@eslint/js@npm:8.52.0": + version: 8.52.0 + resolution: "@eslint/js@npm:8.52.0" + checksum: 10/86beff213d0ae4ced203a922b74e2cc4d767d109e7815f985bf648946ba072198977102e32afc9fa04f7825a6de83a831874f6b6675ba0c1d0743ade2dc2d53d + languageName: node + linkType: hard + +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" + dependencies: + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10/87d52989c3d2cc80373bc153b7a40814db3206ce7d0b2a2bdfb63e2ff39ffb8b999b1b0ccf28e548000ebf863bf16e2bed45eab4c4d287a5dbe974ef22368d82 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": + version: 1.6.11 + resolution: "@floating-ui/dom@npm:1.6.11" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10/8579392ad10151474869e7640af169b0d7fc2df48d4da27b6dcb1a57202329147ed986b2972787d4b8cd550c87897271b2d9c4633c2ec7d0b3ad37ce1da636f1 + languageName: node + linkType: hard + +"@floating-ui/react-dom@npm:^2.1.1": + version: 2.1.2 + resolution: "@floating-ui/react-dom@npm:2.1.2" + dependencies: + "@floating-ui/dom": "npm:^1.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10/2a67dc8499674e42ff32c7246bded185bb0fdd492150067caf9568569557ac4756a67787421d8604b0f241e5337de10762aee270d9aeef106d078a0ff13596c4 + languageName: node + linkType: hard + +"@floating-ui/react@npm:0.26.22": + version: 0.26.22 + resolution: "@floating-ui/react@npm:0.26.22" + dependencies: + "@floating-ui/react-dom": "npm:^2.1.1" + "@floating-ui/utils": "npm:^0.2.7" + tabbable: "npm:^6.0.0" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10/53f21ce765445733be4db2efd58c424ad1db0f369d4e20346733ff60f684574e7c435b9cea3298bf09a02484d2ebb52a4097bedda5d021430b3f08439fe91bc1 + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.7, @floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: 10/3e3ea3b2de06badc4baebdf358b3dbd77ccd9474a257a6ef237277895943db2acbae756477ec64de65a2a1436d94aea3107129a1feeef6370675bf2b161c1abc + languageName: node + linkType: hard + +"@formatjs/ecma402-abstract@npm:2.0.0": + version: 2.0.0 + resolution: "@formatjs/ecma402-abstract@npm:2.0.0" + dependencies: + "@formatjs/intl-localematcher": "npm:0.5.4" + tslib: "npm:^2.4.0" + checksum: 10/41543ba509ea3c7d6530d57b888115f7ca242f13462a951fae4d1d1f28bae10c999f4dea28a71d2f08366d4889a3f5276cae3a16c6f6417b841a84fd314c2234 + languageName: node + linkType: hard + +"@formatjs/fast-memoize@npm:2.2.0": + version: 2.2.0 + resolution: "@formatjs/fast-memoize@npm:2.2.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/8697fe72a7ece252d600a7d08105f2a2f758e2dd96f54ac0a4c508b1205a559fc08835635e1f8e5ca9dcc3ee61ce1fca4a0e7047b402f29fc96051e293a280ff + languageName: node + linkType: hard + +"@formatjs/icu-messageformat-parser@npm:2.7.8": + version: 2.7.8 + resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.0.0" + "@formatjs/icu-skeleton-parser": "npm:1.8.2" + tslib: "npm:^2.4.0" + checksum: 10/292fd36268ad84337c0e798fc73b58e8f3cf3f362cea031f710fd78053d29b420526ab766a95745e162ae4a11bf846bc2f7ae5c2c0a3288d3bc9daa97a3be8c1 + languageName: node + linkType: hard + +"@formatjs/icu-skeleton-parser@npm:1.8.2": + version: 1.8.2 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.0.0" + tslib: "npm:^2.4.0" + checksum: 10/a06b61cf6c298bbbc23349e391bad8a1cf0a6a32dc4928a4681a3aa6f38dd8c6a181dc4067e228f67584d4dc181d862704095e65c38cfac077c984dc24ba54d3 + languageName: node + linkType: hard + +"@formatjs/intl-localematcher@npm:0.5.4": + version: 0.5.4 + resolution: "@formatjs/intl-localematcher@npm:0.5.4" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/780cb29b42e1ea87f2eb5db268577fcdc53da52d9f096871f3a1bb78603b4ba81d208ea0b0b9bc21548797c941ce435321f62d2522795b83b740f90b0ceb5778 + languageName: node + linkType: hard + +"@grafana/data@npm:11.2.2, @grafana/data@npm:next": + version: 11.2.2 + resolution: "@grafana/data@npm:11.2.2" + dependencies: + "@braintree/sanitize-url": "npm:7.0.1" + "@grafana/schema": "npm:11.2.2" + "@types/d3-interpolate": "npm:^3.0.0" + "@types/string-hash": "npm:1.1.3" + d3-interpolate: "npm:3.0.1" + date-fns: "npm:3.6.0" + dompurify: "npm:^3.0.0" + eventemitter3: "npm:5.0.1" + fast_array_intersect: "npm:1.1.0" + history: "npm:4.10.1" + lodash: "npm:4.17.21" + marked: "npm:12.0.2" + marked-mangle: "npm:1.1.9" + moment: "npm:2.30.1" + moment-timezone: "npm:0.5.45" + ol: "npm:7.4.0" + papaparse: "npm:5.4.1" + react-use: "npm:17.5.1" + rxjs: "npm:7.8.1" + string-hash: "npm:^1.1.3" + tinycolor2: "npm:1.6.0" + tslib: "npm:2.6.3" + uplot: "npm:1.6.30" + xss: "npm:^1.0.14" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10/1998cf681e91c51aba96b2ac0335749357f13e8c4273a3551762f96ef60c4a8c0a7f4a9aaf36835639a1ed02ad6a5b546c13e7780c31c32fe6a10b532a2bbb4a + languageName: node + linkType: hard + +"@grafana/e2e-selectors@npm:11.2.2": + version: 11.2.2 + resolution: "@grafana/e2e-selectors@npm:11.2.2" + dependencies: + "@grafana/tsconfig": "npm:^1.3.0-rc1" + tslib: "npm:2.6.3" + typescript: "npm:5.4.5" + checksum: 10/d8c963711eeb3d51871463ae659689f25ba65e79ae485b433c396ecfced0a3a9b89f0faddda3b58a28340cd6bde6e0e0015505d44819752fd71ddb970882b1cc + languageName: node + linkType: hard + +"@grafana/eslint-config@npm:^7.0.0": + version: 7.0.0 + resolution: "@grafana/eslint-config@npm:7.0.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:6.18.1" + "@typescript-eslint/parser": "npm:6.18.1" + eslint: "npm:8.52.0" + eslint-config-prettier: "npm:8.8.0" + eslint-plugin-jsdoc: "npm:46.8.2" + eslint-plugin-react: "npm:7.33.2" + eslint-plugin-react-hooks: "npm:4.6.0" + typescript: "npm:5.2.2" + checksum: 10/62af39e70bea66585684877e5afd2cb48432ac8a5b6b2b18ba3ecc20a47dd53249946891d107c120e80d2cbbb69dd902d6c0748fe216c7987b965ba15e33e2d2 + languageName: node + linkType: hard + +"@grafana/faro-core@npm:^1.10.2": + version: 1.10.2 + resolution: "@grafana/faro-core@npm:1.10.2" + dependencies: + "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/otlp-transformer": "npm:^0.53.0" + checksum: 10/a326a40f3bc15bbf04992a0d45a8fd408b5ab5cc6b607871f010716c3944aa09bf4416ca0a302a9e6a167b2cf2eb4bc3573468c2c0a9e5ba183504490a66b289 + languageName: node + linkType: hard + +"@grafana/faro-web-sdk@npm:^1.3.6": + version: 1.10.2 + resolution: "@grafana/faro-web-sdk@npm:1.10.2" + dependencies: + "@grafana/faro-core": "npm:^1.10.2" + ua-parser-js: "npm:^1.0.32" + web-vitals: "npm:^4.0.1" + checksum: 10/46dac84bbff3e8abe1abe36b2c15e292ba10147ff8c41697ad339b51054bde32d009a5b3788358516775eb1dd63be092140691569d4ffb0b969ebdb9ee7816bf + languageName: node + linkType: hard + +"@grafana/runtime@npm:^11.2.2": + version: 11.2.2 + resolution: "@grafana/runtime@npm:11.2.2" + dependencies: + "@grafana/data": "npm:11.2.2" + "@grafana/e2e-selectors": "npm:11.2.2" + "@grafana/faro-web-sdk": "npm:^1.3.6" + "@grafana/schema": "npm:11.2.2" + "@grafana/ui": "npm:11.2.2" + history: "npm:4.10.1" + lodash: "npm:4.17.21" + rxjs: "npm:7.8.1" + tslib: "npm:2.6.3" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10/5dd6033c63f41c893b64f5e203688d1e090e39a01120c4fb296ac82674d1fe3e8bcca5bd73e9b630cb7635c6792c230be6a8886b3cf86b0836acab15234587ac + languageName: node + linkType: hard + +"@grafana/schema@npm:11.2.2": + version: 11.2.2 + resolution: "@grafana/schema@npm:11.2.2" + dependencies: + tslib: "npm:2.6.3" + checksum: 10/ea891fb6ebb68cebea1e33f86d816f1a07922e98c20027d1f9ba11cb4925a80064caa43aab6770db64f211930cd6724ed1ee13cf43fad562b1a8ce372ac2b988 + languageName: node + linkType: hard + +"@grafana/schema@npm:^10.4.0": + version: 10.4.10 + resolution: "@grafana/schema@npm:10.4.10" + dependencies: + tslib: "npm:2.6.2" + checksum: 10/67aae37fce2b9d85a17634d6e9f8551398de376430cd0cd57f5c90624ee89bb7e666f5c8e553e94296f41e53061f92c8ae70619ed27201798190b66bb21684fb + languageName: node + linkType: hard + +"@grafana/tsconfig@npm:^1.3.0-rc1": + version: 1.3.0-rc1 + resolution: "@grafana/tsconfig@npm:1.3.0-rc1" + checksum: 10/3ed039967ae9e0c6ab70387b6aee648086aed00bf0c831ca4d82088cd829e15dac953387413e18941cc75958eec89e58c53ed1a6dedc02a34bbb794fa9658ea0 + languageName: node + linkType: hard + +"@grafana/tsconfig@npm:^2.0.0": + version: 2.0.0 + resolution: "@grafana/tsconfig@npm:2.0.0" + checksum: 10/81e3c07e2f3f01e70b3e73a5f7e71871dc3a14c683b1d760828e0c4d609f55adf5111ff72b9148b7a7af3cdeb6199af1fdd295140b003ef2ff74f01a8b77bd09 + languageName: node + linkType: hard + +"@grafana/ui@npm:11.2.2, @grafana/ui@npm:next": + version: 11.2.2 + resolution: "@grafana/ui@npm:11.2.2" + dependencies: + "@emotion/css": "npm:11.11.2" + "@emotion/react": "npm:11.11.4" + "@floating-ui/react": "npm:0.26.22" + "@grafana/data": "npm:11.2.2" + "@grafana/e2e-selectors": "npm:11.2.2" + "@grafana/faro-web-sdk": "npm:^1.3.6" + "@grafana/schema": "npm:11.2.2" + "@hello-pangea/dnd": "npm:16.6.0" + "@leeoniya/ufuzzy": "npm:1.0.14" + "@monaco-editor/react": "npm:4.6.0" + "@popperjs/core": "npm:2.11.8" + "@react-aria/dialog": "npm:3.5.16" + "@react-aria/focus": "npm:3.18.1" + "@react-aria/overlays": "npm:3.23.1" + "@react-aria/utils": "npm:3.25.1" + "@tanstack/react-virtual": "npm:^3.5.1" + "@types/jquery": "npm:3.5.30" + "@types/lodash": "npm:4.17.7" + "@types/react-table": "npm:7.7.20" + ansicolor: "npm:1.1.100" + calculate-size: "npm:1.1.1" + classnames: "npm:2.5.1" + d3: "npm:7.9.0" + date-fns: "npm:3.6.0" + downshift: "npm:^9.0.6" + hoist-non-react-statics: "npm:3.3.2" + i18next: "npm:^23.0.0" + i18next-browser-languagedetector: "npm:^7.0.2" + immutable: "npm:4.3.7" + is-hotkey: "npm:0.2.0" + jquery: "npm:3.7.1" + lodash: "npm:4.17.21" + micro-memoize: "npm:^4.1.2" + moment: "npm:2.30.1" + monaco-editor: "npm:0.34.1" + ol: "npm:7.4.0" + prismjs: "npm:1.29.0" + rc-cascader: "npm:3.27.0" + rc-drawer: "npm:7.2.0" + rc-slider: "npm:10.6.2" + rc-time-picker: "npm:^3.7.3" + rc-tooltip: "npm:6.2.0" + react-calendar: "npm:4.8.0" + react-colorful: "npm:5.6.1" + react-custom-scrollbars-2: "npm:4.5.0" + react-dropzone: "npm:14.2.3" + react-highlight-words: "npm:0.20.0" + react-hook-form: "npm:^7.49.2" + react-i18next: "npm:^14.0.0" + react-inlinesvg: "npm:3.0.2" + react-loading-skeleton: "npm:3.4.0" + react-router-dom: "npm:5.3.3" + react-select: "npm:5.8.0" + react-table: "npm:7.8.0" + react-transition-group: "npm:4.4.5" + react-use: "npm:17.5.1" + react-window: "npm:1.8.10" + rxjs: "npm:7.8.1" + slate: "npm:0.47.9" + slate-plain-serializer: "npm:0.7.13" + slate-react: "npm:0.22.10" + tinycolor2: "npm:1.6.0" + tslib: "npm:2.6.3" + uplot: "npm:1.6.30" + uuid: "npm:9.0.1" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10/73b46ecbfc1027e477955f4271c834fb7b1e5cc3c9f342c027e7c8a5d744879967bfc899bd3dda59067a6be940eeb687b17d4e129e90ea60672e1bc512726177 + languageName: node + linkType: hard + +"@hello-pangea/dnd@npm:16.6.0": + version: 16.6.0 + resolution: "@hello-pangea/dnd@npm:16.6.0" + dependencies: + "@babel/runtime": "npm:^7.24.1" + css-box-model: "npm:^1.2.1" + memoize-one: "npm:^6.0.0" + raf-schd: "npm:^4.0.3" + react-redux: "npm:^8.1.3" + redux: "npm:^4.2.1" + use-memo-one: "npm:^1.1.3" + peerDependencies: + react: ^16.8.5 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0 + checksum: 10/f377461d400c8223174745e4d7ecf4fb0146f9e807413f98120ebbcf075282e631273988d336daaf1fb8e6b6c6a1a8e4f99beefecd7a6b68ccc3bb064d38f13f + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.13": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10/3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10/e993950e346331e5a32eefb27948ecdee2a2c4ab3f072b8f566cd213ef485dd50a3ca497050608db91006f5479e43f91a439aef68d2a313bd3ded06909c7c5b3 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 + languageName: node + linkType: hard + +"@internationalized/date@npm:^3.5.6": + version: 3.5.6 + resolution: "@internationalized/date@npm:3.5.6" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/54734b53ca74a32aae368a8f963324352b1fd5b13029b6e82555307b8f2ff355658c90e82a4f38f154a3edf874387d1efd26fc80f2edd068ce04f48f6467f26c + languageName: node + linkType: hard + +"@internationalized/message@npm:^3.1.5": + version: 3.1.5 + resolution: "@internationalized/message@npm:3.1.5" + dependencies: + "@swc/helpers": "npm:^0.5.0" + intl-messageformat: "npm:^10.1.0" + checksum: 10/210951fd8055af4db70d465e49bcbbdf2545ed223b936af9c1f18b745a51689ecb0ca49cbd5ee2dbfeccce2447808b7fe309bd12ee81f7e09283f20bf04200e9 + languageName: node + linkType: hard + +"@internationalized/number@npm:^3.5.4": + version: 3.5.4 + resolution: "@internationalized/number@npm:3.5.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/16641aecb58c075a6322dc6b36a2c6e521845296f81b86a128d015f072d1af998289b71b4d8b9521e7576bdeabfaf8067a3e741b0116c8595d82a4461c1ae03b + languageName: node + linkType: hard + +"@internationalized/string@npm:^3.2.4": + version: 3.2.4 + resolution: "@internationalized/string@npm:3.2.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/5fdb7f0bf7fa7055cdf62ded4efd6849d3db9cf0e6d53f349889e2ec9517b9135ad38a6bb8dcf25142c69c381618c0dd1a6a072117dd7cf2867ce17374f0f835 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10/e9ed5fd27c3aec1095e3a16e0c0cf148d1fee55a38665c35f7b3f86a9b5d00d042ddaabc98e8a1cb7463b9378c15f22a94eb35e99469c201453eb8375191f243 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10/b000a5acd8d4fe6e34e25c399c8bdbb5d3a202b4e10416e17bfc25e12bab90bb56d33db6089ae30569b52686f4b35ff28ef26e88e21e69821d2b85884bd055b8 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e + languageName: node + linkType: hard + +"@jest/create-cache-key-function@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/create-cache-key-function@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + checksum: 10/061ef63b13ec8c8e5d08e4456f03b5cf8c7f9c1cab4fed8402e1479153cafce6eea80420e308ef62027abb7e29b825fcfa06551856bd021d98e92e381bf91723 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10/90b5844a9a9d8097f2cf107b1b5e57007c552f64315da8c1f51217eeb0a9664889d3f145cdf8acf23a84f4d8309a6675e27d5b059659a004db0ea9546d1c81a8 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10/ef8d379778ef574a17bde2801a6f4469f8022a46a5f9e385191dc73bb1fc318996beaed4513fbd7055c2847227a1bed2469977821866534593a6e52a281499ee + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/9b394e04ffc46f91725ecfdff34c4e043eb7a16e1d78964094c9db3fde0b1c8803e45943a980e8c740d0a3d45661906de1416ca5891a538b0660481a3a828c27 + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10/910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10/30f42293545ab037d5799c81d3e12515790bb58513d37f788ce32d53326d0d72ebf5b40f989e6896739aa50a5f77be44686e510966370d58511d5ad2637c68c1 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10/f74bf512fd09bbe2433a2ad460b04668b7075235eea9a0c77d6a42222c10a79b9747dc2b2a623f140ed40d6865a2ed8f538f3cbb75169120ea863f29a7ed76cd + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10/81587b3c4dd8e6c60252122937cea0c637486311f4ed208b52b62aae2e7a87598f63ec330e6cd0984af494bfb16d3f0d60d3b21d7e5b4aedd2602ff3fe9d32e2 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10/832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.6 + resolution: "@jridgewell/source-map@npm:0.3.6" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + checksum: 10/0a9aca9320dc9044014ba0ef989b3a8411b0d778895553e3b7ca2ac0a75a20af4a5ad3f202acfb1879fa40466036a4417e1d5b38305baed8b9c1ebe6e4b3e7f5 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc + languageName: node + linkType: hard + +"@leeoniya/ufuzzy@npm:1.0.14": + version: 1.0.14 + resolution: "@leeoniya/ufuzzy@npm:1.0.14" + checksum: 10/852b580a8eaaf92e2d448f5b720e3c53e4bea22187bf5e8459256677c47183321b47b8384982e15751f42da7e77a216fd86c80e6185677d8270adeab4a4fb771 + languageName: node + linkType: hard + +"@mapbox/jsonlint-lines-primitives@npm:~2.0.2": + version: 2.0.2 + resolution: "@mapbox/jsonlint-lines-primitives@npm:2.0.2" + checksum: 10/6d8e64d34d912ebf29fead0d1917c8d8ad86e96f69b6100a9764af8cba391609474cdce7f7e4a2d579ccea58a142d1454257b795403179e9133a09af13101068 + languageName: node + linkType: hard + +"@mapbox/mapbox-gl-style-spec@npm:^13.23.1": + version: 13.28.0 + resolution: "@mapbox/mapbox-gl-style-spec@npm:13.28.0" + dependencies: + "@mapbox/jsonlint-lines-primitives": "npm:~2.0.2" + "@mapbox/point-geometry": "npm:^0.1.0" + "@mapbox/unitbezier": "npm:^0.0.0" + csscolorparser: "npm:~1.0.2" + json-stringify-pretty-compact: "npm:^2.0.0" + minimist: "npm:^1.2.6" + rw: "npm:^1.3.3" + sort-object: "npm:^0.3.2" + bin: + gl-style-composite: bin/gl-style-composite.js + gl-style-format: bin/gl-style-format.js + gl-style-migrate: bin/gl-style-migrate.js + gl-style-validate: bin/gl-style-validate.js + checksum: 10/d65f95fde4e58de62085a796f41a7ac16513f866adaac18baf19ee4ee00d4b6e16d515bb0dd5848e094fc32316d2a56f45a0013ef304c29d5b15c089ed25fb24 + languageName: node + linkType: hard + +"@mapbox/point-geometry@npm:^0.1.0": + version: 0.1.0 + resolution: "@mapbox/point-geometry@npm:0.1.0" + checksum: 10/f6f78ac8a7f798efb19db6eb1a9e05da7ba942102f5347c1a673d94202d0c606ec3f522efa3e76d583cdca46fb96dde52c3d37234f162d21df42f9e8c4f182bd + languageName: node + linkType: hard + +"@mapbox/unitbezier@npm:^0.0.0": + version: 0.0.0 + resolution: "@mapbox/unitbezier@npm:0.0.0" + checksum: 10/211fc5b0a40fafa0127baf87938a6a00535b22b51bec95df2f6141cf1dd50339bca2a9729c7a9803cdee5c2b4e0e3323a882655c74f1a86e557096684196e1ff + languageName: node + linkType: hard + +"@monaco-editor/loader@npm:^1.4.0": + version: 1.4.0 + resolution: "@monaco-editor/loader@npm:1.4.0" + dependencies: + state-local: "npm:^1.0.6" + peerDependencies: + monaco-editor: ">= 0.21.0 < 1" + checksum: 10/32ad01de015fc187450aa1cc0aa763af167664b6a61efcb9e1523a0f51ca5d0b35ba11ed95889edd6d774dfe98f196ef58f1607243abcbdd3d6d743f82ba8285 + languageName: node + linkType: hard + +"@monaco-editor/react@npm:4.6.0": + version: 4.6.0 + resolution: "@monaco-editor/react@npm:4.6.0" + dependencies: + "@monaco-editor/loader": "npm:^1.4.0" + peerDependencies: + monaco-editor: ">= 0.25.0 < 1" + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/e32724ebcc2fc81e91169d69eff8533e15a595c13156ec57965238a0f0afa67e2ed2abbf735a57cfaae15430bbc905b016b644bf7383a82d607501d557a6dd82 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.2 + resolution: "@npmcli/agent@npm:2.2.2" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10/96fc0036b101bae5032dc2a4cd832efb815ce9b33f9ee2f29909ee49d96a0026b3565f73c507a69eb8603f5cb32e0ae45a70cab1e2655990a4e06ae99f7f572a + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.1 + resolution: "@npmcli/fs@npm:3.1.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10/1e0e04087049b24b38bc0b30d87a9388ee3ca1d3fdfc347c2f77d84fcfe6a51f250bc57ba2c1f614d7e4285c6c62bf8c769bc19aa0949ea39e5b043ee023b0bd + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/api-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api": "npm:^1.0.0" + checksum: 10/347b4554d6ee01afb29bd39e8f9cbbccd80abb0883fe6a84e3bcce8ab4dbfe357a2729246d2f66de0de6272846fd1bb2d71e286e18ad2690d9e7f46f02f00f73 + languageName: node + linkType: hard + +"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10/474b6bcf42cd2825d56f915eb0d6e6cdcb37777a11fc2618fc2fa50754f4b9b5df23944f3aab186cb3ab930db5c3a81efa3183362802314a966930110346e6a4 + languageName: node + linkType: hard + +"@opentelemetry/otlp-transformer@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/otlp-transformer@npm:0.53.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.53.0" + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + "@opentelemetry/sdk-logs": "npm:0.53.0" + "@opentelemetry/sdk-metrics": "npm:1.26.0" + "@opentelemetry/sdk-trace-base": "npm:1.26.0" + protobufjs: "npm:^7.3.0" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10/578cf13d7984a0b1ba1db3d86d1e358bf70e8b534166f8327a10fccca0afd3900896a80e5e73caae61837b0cbc99d81b44784edee68a3517d73f5330a3624ccd + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/resources@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10/ce60dbf2bd424b01824b72f533724eaf64418e01c43bef952b87dbff6d2a0f28cdcbea0d3d95c5e324f609e58721bf52ea91b5518b0e30d6bb03fb95af85cc33 + languageName: node + linkType: hard + +"@opentelemetry/sdk-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/sdk-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.53.0" + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.10.0" + checksum: 10/b11b512820f3d55288f7478831587ebe2e7077980f060a779a13848c62cab30023734857c68ef110eebe961884cb8892d7c77841a5f1d22c2426cbb18d762975 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10/e48e4dd1fed1e501750460e1320f89507c19287c5059cfaccc8268ad8cc3e1de40feeee6584b23626e01f9cde0f10301d08edf6a65bbd1346ef94f70ae8844f5 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" + dependencies: + "@opentelemetry/core": "npm:1.26.0" + "@opentelemetry/resources": "npm:1.26.0" + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10/e4a3d296ad908b9f58d7aefdcc1f7383fb0eb64fc85b0b5d18c4a7d829ce3d0efa5e53f5fe1a23185d9b5d97b782431384efe01aba8ba788922260a9dbbdb662 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.27.0": + version: 1.27.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" + checksum: 10/98166522f299e2fe3d43376adbdeb92679b75ebb172e2a3c4c71f2942bd91585e9537618efbbae6dc08177699e5719368edf66d7e69e8636f360b85217bbdbe1 + languageName: node + linkType: hard + +"@petamoriken/float16@npm:^3.4.7": + version: 3.8.7 + resolution: "@petamoriken/float16@npm:3.8.7" + checksum: 10/934a0c66854dbede5a7d7db050ef614da481ce619e2b946b9d0b46daa5795e9e1b534baaa009894df7a179c6d9493814a7340dd04f0d10c64e95b5e7857ac68c + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10/115e8ceeec6bc69dff2048b35c0ab4f8bbee12d8bb6c1f4af758604586d802b6e669dcb02dda61d078de42c2b4ddce41b3d9e726d7daa6b4b850f4adbf7333ff + languageName: node + linkType: hard + +"@popperjs/core@npm:2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: 10/ddd16090cde777aaf102940f05d0274602079a95ad9805bd20bc55dcc7c3a2ba1b99dd5c73e5cc2753c3d31250ca52a67d58059459d7d27debb983a9f552936c + languageName: node + linkType: hard + +"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/aspromise@npm:1.1.2" + checksum: 10/8a938d84fe4889411296db66b29287bd61ea3c14c2d23e7a8325f46a2b8ce899857c5f038d65d7641805e6c1d06b495525c7faf00c44f85a7ee6476649034969 + languageName: node + linkType: hard + +"@protobufjs/base64@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/base64@npm:1.1.2" + checksum: 10/c71b100daeb3c9bdccab5cbc29495b906ba0ae22ceedc200e1ba49717d9c4ab15a6256839cebb6f9c6acae4ed7c25c67e0a95e734f612b258261d1a3098fe342 + languageName: node + linkType: hard + +"@protobufjs/codegen@npm:^2.0.4": + version: 2.0.4 + resolution: "@protobufjs/codegen@npm:2.0.4" + checksum: 10/c6ee5fa172a8464f5253174d3c2353ea520c2573ad7b6476983d9b1346f4d8f2b44aa29feb17a949b83c1816bc35286a5ea265ed9d8fdd2865acfa09668c0447 + languageName: node + linkType: hard + +"@protobufjs/eventemitter@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/eventemitter@npm:1.1.0" + checksum: 10/03af3e99f17ad421283d054c88a06a30a615922a817741b43ca1b13e7c6b37820a37f6eba9980fb5150c54dba6e26cb6f7b64a6f7d8afa83596fafb3afa218c3 + languageName: node + linkType: hard + +"@protobufjs/fetch@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/fetch@npm:1.1.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.1" + "@protobufjs/inquire": "npm:^1.1.0" + checksum: 10/67ae40572ad536e4ef94269199f252c024b66e3059850906bdaee161ca1d75c73d04d35cd56f147a8a5a079f5808e342b99e61942c1dae15604ff0600b09a958 + languageName: node + linkType: hard + +"@protobufjs/float@npm:^1.0.2": + version: 1.0.2 + resolution: "@protobufjs/float@npm:1.0.2" + checksum: 10/634c2c989da0ef2f4f19373d64187e2a79f598c5fb7991afb689d29a2ea17c14b796b29725945fa34b9493c17fb799e08ac0a7ccaae460ee1757d3083ed35187 + languageName: node + linkType: hard + +"@protobufjs/inquire@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/inquire@npm:1.1.0" + checksum: 10/c09efa34a5465cb120775e1a482136f2340a58b4abce7e93d72b8b5a9324a0e879275016ef9fcd73d72a4731639c54f2bb755bb82f916e4a78892d1d840bb3d2 + languageName: node + linkType: hard + +"@protobufjs/path@npm:^1.1.2": + version: 1.1.2 + resolution: "@protobufjs/path@npm:1.1.2" + checksum: 10/bb709567935fd385a86ad1f575aea98131bbd719c743fb9b6edd6b47ede429ff71a801cecbd64fc72deebf4e08b8f1bd8062793178cdaed3713b8d15771f9b83 + languageName: node + linkType: hard + +"@protobufjs/pool@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/pool@npm:1.1.0" + checksum: 10/b9c7047647f6af28e92aac54f6f7c1f7ff31b201b4bfcc7a415b2861528854fce3ec666d7e7e10fd744da905f7d4aef2205bbcc8944ca0ca7a82e18134d00c46 + languageName: node + linkType: hard + +"@protobufjs/utf8@npm:^1.1.0": + version: 1.1.0 + resolution: "@protobufjs/utf8@npm:1.1.0" + checksum: 10/131e289c57534c1d73a0e55782d6751dd821db1583cb2f7f7e017c9d6747addaebe79f28120b2e0185395d990aad347fb14ffa73ef4096fa38508d61a0e64602 + languageName: node + linkType: hard + +"@rc-component/portal@npm:^1.1.0, @rc-component/portal@npm:^1.1.1": + version: 1.1.2 + resolution: "@rc-component/portal@npm:1.1.2" + dependencies: + "@babel/runtime": "npm:^7.18.0" + classnames: "npm:^2.3.2" + rc-util: "npm:^5.24.4" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/ae9d4cdf07647fc4da3944f74ab4d25c16cc7021c5760d4db37c0600461a84f480243e5186f3e5760903041d3a3e0927cb4226f44583fa668d3cacd29245fd69 + languageName: node + linkType: hard + +"@rc-component/trigger@npm:^2.0.0, @rc-component/trigger@npm:^2.1.1": + version: 2.2.3 + resolution: "@rc-component/trigger@npm:2.2.3" + dependencies: + "@babel/runtime": "npm:^7.23.2" + "@rc-component/portal": "npm:^1.1.0" + classnames: "npm:^2.3.2" + rc-motion: "npm:^2.0.0" + rc-resize-observer: "npm:^1.3.1" + rc-util: "npm:^5.38.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/1747ae80f8dd46f3d288b989ae5b799eaf1b37dbc23166fcbcae6bd5c45c6b3413b7e43724e9d8c363d4f8cd2ed6e91d94f3f26f32006cc65808842f246b2417 + languageName: node + linkType: hard + +"@react-aria/dialog@npm:3.5.16": + version: 3.5.16 + resolution: "@react-aria/dialog@npm:3.5.16" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/overlays": "npm:^3.23.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/dialog": "npm:^3.5.12" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/10373652d60b232152b2d6f55cda2e40f0f2d08c0f8ee578256708305fe571e69109fede0d9979c7722096a51beb9e676e983a6cc2fa022fd4c12da3384a5103 + languageName: node + linkType: hard + +"@react-aria/focus@npm:3.18.1": + version: 3.18.1 + resolution: "@react-aria/focus@npm:3.18.1" + dependencies: + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/utils": "npm:^3.25.1" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/b8b764f0a43d34bee7c89f3510ccfecc0b3408f2418e30aa2a2ead54d5e94034fc2bc05c6469d4be9b27b7f1f78bfc9207bcb6dbe96bd11380cab243bb30d4be + languageName: node + linkType: hard + +"@react-aria/focus@npm:^3.18.1, @react-aria/focus@npm:^3.18.3": + version: 3.18.3 + resolution: "@react-aria/focus@npm:3.18.3" + dependencies: + "@react-aria/interactions": "npm:^3.22.3" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/b11632e638de2f40ec12a4a8c818059b9bf7e90b288a93b46985350c887ae7ecdf037391537f86fbacb2a186dec7e7c41a8f2ff767fd232a8cac3189f03735b2 + languageName: node + linkType: hard + +"@react-aria/i18n@npm:^3.12.1, @react-aria/i18n@npm:^3.12.3": + version: 3.12.3 + resolution: "@react-aria/i18n@npm:3.12.3" + dependencies: + "@internationalized/date": "npm:^3.5.6" + "@internationalized/message": "npm:^3.1.5" + "@internationalized/number": "npm:^3.5.4" + "@internationalized/string": "npm:^3.2.4" + "@react-aria/ssr": "npm:^3.9.6" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/54f111d9a9da68edcb8b821f7c8ead92f0c4d85307dbabee78bc5c89f5a19cdfa406b1e40b7c6f9dc26f7cedce4c9c5a10f8dcdae289e5a404c07b6fdda98aba + languageName: node + linkType: hard + +"@react-aria/interactions@npm:^3.22.1, @react-aria/interactions@npm:^3.22.3": + version: 3.22.3 + resolution: "@react-aria/interactions@npm:3.22.3" + dependencies: + "@react-aria/ssr": "npm:^3.9.6" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/bc1e8381bda81c106d64bb6eebe06c244bcd6905d1be95fdc26bad1c5d83c48d1ec5159fb1cb8ea9ee7ebafc76595702e2d174f3c8394b766779c0d34bfa6de7 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:3.23.1": + version: 3.23.1 + resolution: "@react-aria/overlays@npm:3.23.1" + dependencies: + "@react-aria/focus": "npm:^3.18.1" + "@react-aria/i18n": "npm:^3.12.1" + "@react-aria/interactions": "npm:^3.22.1" + "@react-aria/ssr": "npm:^3.9.5" + "@react-aria/utils": "npm:^3.25.1" + "@react-aria/visually-hidden": "npm:^3.8.14" + "@react-stately/overlays": "npm:^3.6.9" + "@react-types/button": "npm:^3.9.6" + "@react-types/overlays": "npm:^3.8.9" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/24aff9357b0ccdb412c8712fa3afdee281215b4054a652abbd086f898f037c375a2d254ec45776172e76f78db6b310fa3015d124de8c642e6b497a1396ccbef9 + languageName: node + linkType: hard + +"@react-aria/overlays@npm:^3.23.1": + version: 3.23.3 + resolution: "@react-aria/overlays@npm:3.23.3" + dependencies: + "@react-aria/focus": "npm:^3.18.3" + "@react-aria/i18n": "npm:^3.12.3" + "@react-aria/interactions": "npm:^3.22.3" + "@react-aria/ssr": "npm:^3.9.6" + "@react-aria/utils": "npm:^3.25.3" + "@react-aria/visually-hidden": "npm:^3.8.16" + "@react-stately/overlays": "npm:^3.6.11" + "@react-types/button": "npm:^3.10.0" + "@react-types/overlays": "npm:^3.8.10" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/c70af63d4ae828963b9fa780330cabf49e5a70f8981ae65d173e32934fa190fc8df1283de65d6a8b71b6340050718df19c2e7353b406114962d85ee5deb811ee + languageName: node + linkType: hard + +"@react-aria/ssr@npm:^3.9.5, @react-aria/ssr@npm:^3.9.6": + version: 3.9.6 + resolution: "@react-aria/ssr@npm:3.9.6" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/ea6b290346ce1e119ed9233fc0e34693d52ab9dc2509f07ab10710409b89484a544b7f26c1438802e97f3fb634844ae54638850cdd95caca0d1f5571781bf982 + languageName: node + linkType: hard + +"@react-aria/utils@npm:3.25.1": + version: 3.25.1 + resolution: "@react-aria/utils@npm:3.25.1" + dependencies: + "@react-aria/ssr": "npm:^3.9.5" + "@react-stately/utils": "npm:^3.10.2" + "@react-types/shared": "npm:^3.24.1" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/477b945ebdbda4200415dbc040d89658e58eb48e3d158a54a0d07c89d5605c1e3b51c21d2058b5346f8be2cab43c0f8d705f999b71712b96aa33546c0560cb47 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.25.1, @react-aria/utils@npm:^3.25.3": + version: 3.25.3 + resolution: "@react-aria/utils@npm:3.25.3" + dependencies: + "@react-aria/ssr": "npm:^3.9.6" + "@react-stately/utils": "npm:^3.10.4" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + clsx: "npm:^2.0.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/86aed35da5cb0d48d949e40bf8226d5a6d6c92a8cdc60e3e12d524d1f3cc91ab6b54c5e1642823773cbb889fb61af7da22e89488b704b56fc5f4d8d59da7519b + languageName: node + linkType: hard + +"@react-aria/visually-hidden@npm:^3.8.14, @react-aria/visually-hidden@npm:^3.8.16": + version: 3.8.16 + resolution: "@react-aria/visually-hidden@npm:3.8.16" + dependencies: + "@react-aria/interactions": "npm:^3.22.3" + "@react-aria/utils": "npm:^3.25.3" + "@react-types/shared": "npm:^3.25.0" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/263b4d0e78ae2932165cad3d91f8111527d04feae06c42078cbaaa8f8a8bc13f46321cf1c3203e3e7418ca319b2f02b8ff24764e8c4af714a6200450fa955277 + languageName: node + linkType: hard + +"@react-stately/overlays@npm:^3.6.11, @react-stately/overlays@npm:^3.6.9": + version: 3.6.11 + resolution: "@react-stately/overlays@npm:3.6.11" + dependencies: + "@react-stately/utils": "npm:^3.10.4" + "@react-types/overlays": "npm:^3.8.10" + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/98190b4b0ced5c94d924cf97b5d43a6e28f68aa44de7bb789c20354f30f00309c86089fb6948b5ec9d09f01605b5a412fb246545b7ee9bc34e3183e7261a2805 + languageName: node + linkType: hard + +"@react-stately/utils@npm:^3.10.2, @react-stately/utils@npm:^3.10.4": + version: 3.10.4 + resolution: "@react-stately/utils@npm:3.10.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/8a56b4d0cf8d5a7a692d6f94ffff63feac2d7078fbc5642b94b0afcaaf7c8f7f4682cfe546f98265034c52576c198be5502cff3f9b145137884e50eb9ffb96d5 + languageName: node + linkType: hard + +"@react-types/button@npm:^3.10.0, @react-types/button@npm:^3.9.6": + version: 3.10.0 + resolution: "@react-types/button@npm:3.10.0" + dependencies: + "@react-types/shared": "npm:^3.25.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/13973108d935e81a9e852bdc3a530a26a4cacc4a7ec37f1dde48202be0545066a71f4d7c476806d7911e91b2b9193c79f4e89dc616280b74db37cec3dd749fea + languageName: node + linkType: hard + +"@react-types/dialog@npm:^3.5.12": + version: 3.5.13 + resolution: "@react-types/dialog@npm:3.5.13" + dependencies: + "@react-types/overlays": "npm:^3.8.10" + "@react-types/shared": "npm:^3.25.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/c7ee923c326b7377660400ec794ef98330388250aa32df23f5c22a63e483bcad221283de26181bf2a5cab2c20d517f528bf351c9786ac9fece3e3726e4ae07c3 + languageName: node + linkType: hard + +"@react-types/overlays@npm:^3.8.10, @react-types/overlays@npm:^3.8.9": + version: 3.8.10 + resolution: "@react-types/overlays@npm:3.8.10" + dependencies: + "@react-types/shared": "npm:^3.25.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/2e8edf37f75df2884a280cbd25a3798d24b93669b8b2b606cadacaf40f605f63e437749cea28861fabecd78293302ac39108f4e65cedd412c474e92be9895561 + languageName: node + linkType: hard + +"@react-types/shared@npm:^3.24.1, @react-types/shared@npm:^3.25.0": + version: 3.25.0 + resolution: "@react-types/shared@npm:3.25.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + checksum: 10/fa31eb6153c223210c2eee46934a63b922917bcde0ee583f2cfe59675db122c10e1cbae6549b1fea4284391fdbeca6888b36e9dc797231ad4a76def01490aea5 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-arm64@npm:1.7.28" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-darwin-x64@npm:1.7.28" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.28" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-gnu@npm:1.7.28" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-arm64-musl@npm:1.7.28" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-gnu@npm:1.7.28" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-linux-x64-musl@npm:1.7.28" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-arm64-msvc@npm:1.7.28" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-ia32-msvc@npm:1.7.28" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.7.28": + version: 1.7.28 + resolution: "@swc/core-win32-x64-msvc@npm:1.7.28" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.3.90": + version: 1.7.28 + resolution: "@swc/core@npm:1.7.28" + dependencies: + "@swc/core-darwin-arm64": "npm:1.7.28" + "@swc/core-darwin-x64": "npm:1.7.28" + "@swc/core-linux-arm-gnueabihf": "npm:1.7.28" + "@swc/core-linux-arm64-gnu": "npm:1.7.28" + "@swc/core-linux-arm64-musl": "npm:1.7.28" + "@swc/core-linux-x64-gnu": "npm:1.7.28" + "@swc/core-linux-x64-musl": "npm:1.7.28" + "@swc/core-win32-arm64-msvc": "npm:1.7.28" + "@swc/core-win32-ia32-msvc": "npm:1.7.28" + "@swc/core-win32-x64-msvc": "npm:1.7.28" + "@swc/counter": "npm:^0.1.3" + "@swc/types": "npm:^0.1.12" + peerDependencies: + "@swc/helpers": "*" + dependenciesMeta: + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@swc/helpers": + optional: true + checksum: 10/a477e79387ecc8b68c2bdbbdc88cc61f27a02c5d00f0d77134f9e2de166786a4ee9f7388d6ffd44fc01bfef5311a15cc3132052bab72fb43246dc42705fedb60 + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: 10/df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 + languageName: node + linkType: hard + +"@swc/helpers@npm:^0.5.0": + version: 0.5.13 + resolution: "@swc/helpers@npm:0.5.13" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/6ba2f7e215d32d71fce139e2cfc426b3ed7eaa709febdeb07b97260a4c9eea4784cf047cc1271be273990b08220b576b94a42b5780947c0b3be84973a847a24d + languageName: node + linkType: hard + +"@swc/jest@npm:^0.2.26": + version: 0.2.36 + resolution: "@swc/jest@npm:0.2.36" + dependencies: + "@jest/create-cache-key-function": "npm:^29.7.0" + "@swc/counter": "npm:^0.1.3" + jsonc-parser: "npm:^3.2.0" + peerDependencies: + "@swc/core": "*" + checksum: 10/39c5699646f0e90400af106156e5604069e8a7d8216f2421e171837b086839176c16f69925ce6a5c4c48182005eed649bdf9664023708e169aa48814feecc0d8 + languageName: node + linkType: hard + +"@swc/types@npm:^0.1.12": + version: 0.1.13 + resolution: "@swc/types@npm:0.1.13" + dependencies: + "@swc/counter": "npm:^0.1.3" + checksum: 10/d0a50432917048cc69e30c82d1266e052a8e8d05ab202c5d74a5666be3748da4d2f99aaff46d91c0e3d285cf8f55270f8391cd578066fdecc3865733f8d5e14a + languageName: node + linkType: hard + +"@tanstack/react-virtual@npm:^3.5.1": + version: 3.10.8 + resolution: "@tanstack/react-virtual@npm:3.10.8" + dependencies: + "@tanstack/virtual-core": "npm:3.10.8" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/40a5d6089908096634fec2aa0cd646ca47c044c745e1b0d190ecbf9905ad2e6266ccd56c2550ed92f47349954dc11eb6930beac1354441ce7c98af81c5454d3f + languageName: node + linkType: hard + +"@tanstack/virtual-core@npm:3.10.8": + version: 3.10.8 + resolution: "@tanstack/virtual-core@npm:3.10.8" + checksum: 10/047e95fa72a0d341c0da8468799c176fd448481432f976a4780911bb4a2256aa4788d828f79fad78d127fe859b785189c13ca0fea10c560bf14d8ab8cb2c7790 + languageName: node + linkType: hard + +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10/510da752ea76f4a10a0a4e3a77917b0302cf03effe576cd3534cab7e796533ee2b0e9fb6fb11b911a1ebd7c70a0bb6f235bf4f816c9b82b95b8fe0cddfd10975 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:6.1.4": + version: 6.1.4 + resolution: "@testing-library/jest-dom@npm:6.1.4" + dependencies: + "@adobe/css-tools": "npm:^4.3.1" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.5.6" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 10/e5a0cdb96eec509c0c85f2b7a0d08fc1c9f6c10aa49bba0d738bf4bb114c3472b92ace5067aedfaaf848ae13b38ba9296047c219aa24b66c87aa16de33341fdb + languageName: node + linkType: hard + +"@testing-library/react@npm:14.0.0": + version: 14.0.0 + resolution: "@testing-library/react@npm:14.0.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^9.0.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10/1f2a4f78d107e741b35671e9c7dd992d5c9f49b48ee24112ccfe636179be72f3c62a65b1405901b59eb6cde996176ebc2c99099e04d9f14575641e46688747f0 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10/51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10/202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10/c0084c389dc030daeaf0115a92ce43a3f4d42fc8fef2d0e22112d87a42798d4a15aac413019d4a63f868327d52ad6740ab99609462b442fe6b9286b172d2e82e + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10/c32838d280b5ab59d62557f9e331d3831f8e547ee10b4f85cb78753d97d521270cebfc73ce501e9fb27fe71884d1ba75e18658692c2f4117543f0fc4e3e118b3 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10/b53c215e9074c69d212402990b0ca8fa57595d09e10d94bda3130aa22b55d796e50449199867879e4ea0ee968f3a2099e009cfb21a726a53324483abbf25cd30 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10/d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10/63d13a3789aa1e783b87a8b03d9fb2c2c90078de7782422feff1631b8c2a25db626e63a63ac5a1465d47359201c73069dacb4b52149d17c568187625da3064ae + languageName: node + linkType: hard + +"@types/color-name@npm:^1.1.1": + version: 1.1.1 + resolution: "@types/color-name@npm:1.1.1" + checksum: 10/73e0e230a6708210bcfc040f3bd3d7c4c0bf5ff7338e8e497cca3d05d20a0c29fb74a7bde0fa2cdf3322d4b1ffd5194c456712908974ae52d56c0d060ca55ae2 + languageName: node + linkType: hard + +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10/1cf0f512c09357b25d644ab01b54200be7c9b15c808333b0ccacf767fff36f17520b2fcde9dad45e1bd7ce84befad39b43da42b4fded57680fa2127006ca3ece + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/d3-interpolate@npm:3.0.4" + dependencies: + "@types/d3-color": "npm:*" + checksum: 10/72a883afd52c91132598b02a8cdfced9e783c54ca7e4459f9e29d5f45d11fb33f2cabc844e42fd65ba6e28f2a931dcce1add8607d2f02ef6fb8ea5b83ae84127 + languageName: node + linkType: hard + +"@types/eslint@npm:^8.56.10": + version: 8.56.12 + resolution: "@types/eslint@npm:8.56.12" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10/bd998b5d3f98ac430ec8db6223f1cff1820774c1e72eabda05463256875d97065fd357fba7379dd25e6bfbeb73296f28faff6f4dcbc320f890bb49b09087644d + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.5": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10/79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 + languageName: node + linkType: hard + +"@types/history@npm:^4.7.11": + version: 4.7.11 + resolution: "@types/history@npm:4.7.11" + checksum: 10/1da529a3485f3015daf794effa3185493bf7dd2551c26932389c614f5a0aab76ab97645897d1eef9c74ead216a3848fcaa019f165bbd6e4b71da6eff164b4c68 + languageName: node + linkType: hard + +"@types/hoist-non-react-statics@npm:^3.3.1": + version: 3.3.5 + resolution: "@types/hoist-non-react-statics@npm:3.3.5" + dependencies: + "@types/react": "npm:*" + hoist-non-react-statics: "npm:^3.3.0" + checksum: 10/b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10/3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10/b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10/93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 + languageName: node + linkType: hard + +"@types/jest@npm:*, @types/jest@npm:^29.5.0": + version: 29.5.13 + resolution: "@types/jest@npm:29.5.13" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10/7d6e3e4ef4b1cab0f61270d55764709512fdfbcb1bd47c0ef44117d48490529c1f264dacf3440b9188363e99e290b80b79c529eadc3af2184116a90f6856b192 + languageName: node + linkType: hard + +"@types/jquery@npm:3.5.30": + version: 3.5.30 + resolution: "@types/jquery@npm:3.5.30" + dependencies: + "@types/sizzle": "npm:*" + checksum: 10/5287586be022bfe85d411733b35f8f0ae8577c4afb5a94ff0e157d2c1036e10adfdd15ed80becb06f01647c39be5dbb24a45cba10db3fa6304eb442fa509321e + languageName: node + linkType: hard + +"@types/js-cookie@npm:^2.2.6": + version: 2.2.7 + resolution: "@types/js-cookie@npm:2.2.7" + checksum: 10/851f47e94ca1fc43661d8f51614d67a613e7810c91b876d0a3b311ce72f7df800107fd02a08cb6948184e12c120b4f058edca2f50424d8798bdcffd6627281e3 + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + parse5: "npm:^7.0.0" + checksum: 10/15fbb9a0bfb4a5845cf6e795f2fd12400aacfca53b8c7e5bca4a3e5e8fa8629f676327964d64258aefb127d2d8a2be86dad46359efbfca0e8c9c2b790e7f8a88 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 + languageName: node + linkType: hard + +"@types/lodash@npm:4.17.7": + version: 4.17.7 + resolution: "@types/lodash@npm:4.17.7" + checksum: 10/b8177f19cf962414a66989837481b13f546afc2e98e8d465bec59e6ac03a59c584eb7053ce511cde3a09c5f3096d22a5ae22cfb56b23f3b0da75b0743b6b1a44 + languageName: node + linkType: hard + +"@types/node@npm:*, @types/node@npm:>=13.7.0": + version: 22.7.4 + resolution: "@types/node@npm:22.7.4" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10/19ddab80c4eba2253c855ed67c9bbc47417183049d01e59010a738bd80d47338bab79fd1f44ae51516bd63a1db4bf21ddb38b16bf6401a2e93252068ec52e88b + languageName: node + linkType: hard + +"@types/node@npm:^20.8.7": + version: 20.16.10 + resolution: "@types/node@npm:20.16.10" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10/f0832d16fed07737c2c3edd6cb6414a22e8379173e56e701ab8890b8798c8f9bc37337332631818f813ff7f8c0e168e9900e8f44cdfd2406d15150289c813acc + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "@types/parse-json@npm:4.0.0" + checksum: 10/4df9de98150d2978afc2161482a3a8e6617883effba3223324f079de97ba7eabd7d84b90ced11c3f82b0c08d4a8383f678c9f73e9c41258f769b3fa234a2bb4f + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.3 + resolution: "@types/prop-types@npm:15.7.3" + checksum: 10/90064105961cfabb9174e61e5010b4e7a471e21832118ad0258f196f4be19ad7dd0f724cc62b0e90939d0b830d4f49ba54dffde166893fd0d9be1f3b43db6981 + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.0.0": + version: 18.3.0 + resolution: "@types/react-dom@npm:18.3.0" + dependencies: + "@types/react": "npm:*" + checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf + languageName: node + linkType: hard + +"@types/react-router-dom@npm:^5.2.0": + version: 5.3.3 + resolution: "@types/react-router-dom@npm:5.3.3" + dependencies: + "@types/history": "npm:^4.7.11" + "@types/react": "npm:*" + "@types/react-router": "npm:*" + checksum: 10/28c4ea48909803c414bf5a08502acbb8ba414669b4b43bb51297c05fe5addc4df0b8fd00e0a9d1e3535ec4073ef38aaafac2c4a2b95b787167d113bc059beff3 + languageName: node + linkType: hard + +"@types/react-router@npm:*": + version: 5.1.20 + resolution: "@types/react-router@npm:5.1.20" + dependencies: + "@types/history": "npm:^4.7.11" + "@types/react": "npm:*" + checksum: 10/72d78d2f4a4752ec40940066b73d7758a0824c4d0cbeb380ae24c8b1cdacc21a6fc835a99d6849b5b295517a3df5466fc28be038f1040bd870f8e39e5ded43a4 + languageName: node + linkType: hard + +"@types/react-table@npm:7.7.20": + version: 7.7.20 + resolution: "@types/react-table@npm:7.7.20" + dependencies: + "@types/react": "npm:*" + checksum: 10/adf86958dd5b2e044d23fc7896f758b5ec59987891b41e9b02d935d666e999a518b0bdd8ba5bd60d644f20147de0ec3cf5f6a12b75516f1fad43fb3b4fd8361f + languageName: node + linkType: hard + +"@types/react-transition-group@npm:^4.4.0": + version: 4.4.11 + resolution: "@types/react-transition-group@npm:4.4.11" + dependencies: + "@types/react": "npm:*" + checksum: 10/a7f4de6e5f57d9fcdea027e22873c633f96a803c96d422db8b99a45c36a9cceb7882d152136bbc31c7158fc1827e37aea5070d369724bb71dd11b5687332bc4d + languageName: node + linkType: hard + +"@types/react@npm:*": + version: 16.9.35 + resolution: "@types/react@npm:16.9.35" + dependencies: + "@types/prop-types": "npm:*" + csstype: "npm:^2.2.0" + checksum: 10/201c611ad4fc4b7208cf6270772730730e359cd9db6dbacab189082f564fb99167f24886e33481a3d0b8ffc1eea05c5f2f956d4e743aa731e59e61f90f49ac4a + languageName: node + linkType: hard + +"@types/semver@npm:^7.5.0": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 + languageName: node + linkType: hard + +"@types/sizzle@npm:*": + version: 2.3.8 + resolution: "@types/sizzle@npm:2.3.8" + checksum: 10/2ac62443dc917f5f903cbd9afc51c7d6cc1c6569b4e1a15faf04aea5b13b486e7f208650014c3dc4fed34653eded3e00fe5abffe0e6300cbf0e8a01beebf11a6 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 + languageName: node + linkType: hard + +"@types/string-hash@npm:1.1.3": + version: 1.1.3 + resolution: "@types/string-hash@npm:1.1.3" + checksum: 10/39a546088123efb1af9beac3854aa1eb54cf24ab75d99c8dac9ccfa7d46d70ac7c99c10983f7cc623dda1e476b6e21e7acffe6c5b3be894751ae4b9cfd103aaf + languageName: node + linkType: hard + +"@types/testing-library__jest-dom@npm:5.14.8": + version: 5.14.8 + resolution: "@types/testing-library__jest-dom@npm:5.14.8" + dependencies: + "@types/jest": "npm:*" + checksum: 10/26d768b3de5c71ecef683aa0e968ec2bb7f4626d78718132fa5a9c2064f9237836135e2551aa048c728407760d51d985a9d58a14528f2679a35d18d5ca200f08 + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10/01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 + languageName: node + linkType: hard + +"@types/use-sync-external-store@npm:^0.0.3": + version: 0.0.3 + resolution: "@types/use-sync-external-store@npm:0.0.3" + checksum: 10/161ddb8eec5dbe7279ac971531217e9af6b99f7783213566d2b502e2e2378ea19cf5e5ea4595039d730aa79d3d35c6567d48599f69773a02ffcff1776ec2a44e + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10/a794eb750e8ebc6273a51b12a0002de41343ffe46befef460bdbb57262d187fdf608bc6615b7b11c462c63c3ceb70abe2564c8dd8ee0f7628f38a314f74a9b9b + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10/16f6681bf4d99fb671bf56029141ed01db2862e3db9df7fc92d8bea494359ac96a1b4b1c35a836d1e95e665fb18ad753ab2015fc0db663454e8fd4e5d5e2ef91 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/eslint-plugin@npm:6.18.1" + dependencies: + "@eslint-community/regexpp": "npm:^4.5.1" + "@typescript-eslint/scope-manager": "npm:6.18.1" + "@typescript-eslint/type-utils": "npm:6.18.1" + "@typescript-eslint/utils": "npm:6.18.1" + "@typescript-eslint/visitor-keys": "npm:6.18.1" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.4" + natural-compare: "npm:^1.4.0" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/451abba1f784539ba38cbe40af26c461facd848e90cbf0c440a98ca2a770ff74a794bafe1df7240e52a97e7cd72bade97d5de751dffbac269643460ad65e3b19 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/parser@npm:6.18.1" + dependencies: + "@typescript-eslint/scope-manager": "npm:6.18.1" + "@typescript-eslint/types": "npm:6.18.1" + "@typescript-eslint/typescript-estree": "npm:6.18.1" + "@typescript-eslint/visitor-keys": "npm:6.18.1" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/b853d39dcf886668f9aa9ea12094e722d35be20855dc7f01c80ee847bf4f7e27aa74693c3a33d4d813705214bda28be1d6c7ca29e590233f894f556203171d29 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/scope-manager@npm:6.18.1" + dependencies: + "@typescript-eslint/types": "npm:6.18.1" + "@typescript-eslint/visitor-keys": "npm:6.18.1" + checksum: 10/ab75663cda67a2c95267f240f2e062a0aafab0df6d625043a134c8e1d61e193c0d3cfa49c802bd554b3fd80f4b7df5ea3f86ef2eb6994ba8b5e0790cc9868c84 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/scope-manager@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/type-utils@npm:6.18.1" + dependencies: + "@typescript-eslint/typescript-estree": "npm:6.18.1" + "@typescript-eslint/utils": "npm:6.18.1" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^1.0.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/f775011c35aef10b11e7cffde698fca8b06b313785cd44422c60a40b6643d85a38cbd9a3cbdef011d963680d65383c40988d983e9dfd01258ae50a2f37f6d293 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/types@npm:6.18.1" + checksum: 10/e304620953257a5af3b323697845d3fb41ffbb7944df2f84559675ef8ad71cc33011be30149efd8d34c5dedcbe92c6abee67cb1b95cb3dd56f15b9393b3435a6 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/types@npm:6.21.0" + checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/typescript-estree@npm:6.18.1" + dependencies: + "@typescript-eslint/types": "npm:6.18.1" + "@typescript-eslint/visitor-keys": "npm:6.18.1" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/33307bc87c3270f84f149545da79a15afaafacc5671e42f4aa827947f09c35ed114705f108ffa59d6ab175f8b838aa08cf10f9efe5b7793aca0792f879bbc7ca + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/visitor-keys": "npm:6.21.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + minimatch: "npm:9.0.3" + semver: "npm:^7.5.4" + ts-api-utils: "npm:^1.0.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/utils@npm:6.18.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.18.1" + "@typescript-eslint/types": "npm:6.18.1" + "@typescript-eslint/typescript-estree": "npm:6.18.1" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10/967728f062ec7ef434b9d05af6b45ae59e0f8f314e4aa7cefc8e2c30a277cf269b7913f3e9f8d26a86c3faf8b2c9385ba1221cfcd856e9b228421fc6508b41bc + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:^6.0.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@types/json-schema": "npm:^7.0.12" + "@types/semver": "npm:^7.5.0" + "@typescript-eslint/scope-manager": "npm:6.21.0" + "@typescript-eslint/types": "npm:6.21.0" + "@typescript-eslint/typescript-estree": "npm:6.21.0" + semver: "npm:^7.5.4" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10/b404a2c55a425a79d054346ae123087d30c7ecf7ed7abcf680c47bf70c1de4fabadc63434f3f460b2fa63df76bc9e4a0b9fa2383bb8a9fcd62733fb5c4e4f3e3 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.18.1": + version: 6.18.1 + resolution: "@typescript-eslint/visitor-keys@npm:6.18.1" + dependencies: + "@typescript-eslint/types": "npm:6.18.1" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10/2d6c5ffa52e89caec0b4958d7079fb4ca9f17c19b5f5d5b8446b4eef0079fd59cd9959f469cc13c4e7d72ef4c47849e561fe323f3cebafa01bc916d43082e57b + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" + dependencies: + "@typescript-eslint/types": "npm:6.21.0" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10/a775b0559437ae122d14fec0cfe59fdcaf5ca2d8ff48254014fd05d6797e20401e0f1518e628f9b06819aa085834a2534234977f9608b3f2e51f94b6e8b0bc43 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: 10/1d8705daa41f4d22ef7c6d422af4c530b84d69d0c253c6db5adec44d511d7caa66837803db5b1addcea611a1498fd5a67d2cf318b057a916283ae41ffb85ba8a + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + checksum: 10/e91e6b28114e35321934070a2db8973a08a5cd9c30500b817214c683bbf5269ed4324366dd93ad83bf2fba0d671ac8f39df1c142bf58f70c57a827eeba4a3d2f + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-opt": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + "@webassemblyjs/wast-printer": "npm:1.12.1" + checksum: 10/5678ae02dbebba2f3a344e25928ea5a26a0df777166c9be77a467bfde7aca7f4b57ef95587e4bd768a402cdf2fddc4c56f0a599d164cdd9fe313520e39e18137 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10/ec45bd50e86bc9856f80fe9af4bc1ae5c98fb85f57023d11dff2b670da240c47a7b1b9b6c89755890314212bd167cf3adae7f1157216ddffb739a4ce589fc338 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-buffer": "npm:1.12.1" + "@webassemblyjs/wasm-gen": "npm:1.12.1" + "@webassemblyjs/wasm-parser": "npm:1.12.1" + checksum: 10/21f25ae109012c49bb084e09f3b67679510429adc3e2408ad3621b2b505379d9cce337799a7919ef44db64e0d136833216914aea16b0d4856f353b9778e0cdb7 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10/f7311685b76c3e1def2abea3488be1e77f06ecd8633143a6c5c943ca289660952b73785231bb76a010055ca64645227a4bc79705c26ab7536216891b6bb36320 + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wast-printer@npm:1.12.1" + dependencies: + "@webassemblyjs/ast": "npm:1.12.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10/1a6a4b6bc4234f2b5adbab0cb11a24911b03380eb1cab6fb27a2250174a279fdc6aa2f5a9cf62dd1f6d4eb39f778f488e8ff15b9deb0670dee5c5077d46cf572 + languageName: node + linkType: hard + +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10/9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10/8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 10/20424e5c1e664e4d7ab11facee7033bb729f6acd86493138069532934c1299c1426da72942822dedb00caca8fc60cc8aec1626e610ee0e8a9679e3614f555860 + languageName: node + linkType: hard + +"@wojtekmaj/date-utils@npm:^1.1.3": + version: 1.5.1 + resolution: "@wojtekmaj/date-utils@npm:1.5.1" + checksum: 10/73dced08ab39fadc92a5bb95153b1bb068d006911db11521078aec878a5029d65a966abead333a43c0997197a52da6edf542e37c7fbb36b780f97d3451ece69f + languageName: node + linkType: hard + +"@xobotyi/scrollbar-width@npm:^1.9.5": + version: 1.9.5 + resolution: "@xobotyi/scrollbar-width@npm:1.9.5" + checksum: 10/026ccd174ec3ce032f42794c7e2ee9dab3cfee4f8f9d6ce4f2b4a2fe50cbf8be7406583fb2e203707c699690c5d40a13ee1611f1f67f6ceb01ac2a543acadc30 + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10/ab033b032927d77e2f9fa67accdf31b1ca7440974c21c9cfabc8349e10ca2817646171c4f23be98d0e31896d6c2c3462a074fe37752e523abc3e45c79254259c + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10/7217bae9fe240e0d804969e7b2af11cb04ec608837c78b56ca88831991b287e232a0b7fce8d548beaff42aaf0197ffa471d81be6ac4c4e53b0148025a2c076ec + languageName: node + linkType: hard + +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10/ebe95d7278999e605823fc515a3b05d689bc72e7f825536e73c95ebf621636874c6de1b749b3c4bf866b96ccd4b3a2802efa313d0e45ad51a413c8c73247db20 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10/2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 + languageName: node + linkType: hard + +"acorn-import-attributes@npm:^1.9.5": + version: 1.9.5 + resolution: "acorn-import-attributes@npm:1.9.5" + peerDependencies: + acorn: ^8 + checksum: 10/8bfbfbb6e2467b9b47abb4d095df717ab64fce2525da65eabee073e85e7975fb3a176b6c8bba17c99a7d8ede283a10a590272304eb54a93c4aa1af9790d47a8b + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10/871386764e1451c637bb8ab9f76f4995d408057e9909be6fb5ad68537ae3375d85e6a6f170b98989f44ab3ff6c74ad120bc2779a3d577606e7a0cd2b4efcaf77 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" + bin: + acorn: bin/acorn + checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 + languageName: node + linkType: hard + +"add-dom-event-listener@npm:^1.1.0": + version: 1.1.0 + resolution: "add-dom-event-listener@npm:1.1.0" + dependencies: + object-assign: "npm:4.x" + checksum: 10/dcab339517668e46887b4d5ddf3e299d5b3a1797e027cafe0480da6fb32591bfe04b567dd002d3b2c4d43f3c8addf208f7ae45db847b79daa1d7a7391dc3c076 + languageName: node + linkType: hard + +"add-px-to-style@npm:1.0.0": + version: 1.0.0 + resolution: "add-px-to-style@npm:1.0.0" + checksum: 10/2e8c3c2adce84253c4240b83e69574b1799c2bc4fb97998985b6f04520a0c2be3e1ea7fd498c29f38286ca9fbd24f7974faa6ad3a91ef4a2b7abd0404957ded2 + languageName: node + linkType: hard + +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10/21fb903e0917e5cb16591b4d0ef6a028a54b83ac30cd1fca58dece3d4e0990512a8723f9f83130d88a41e2af8b1f7be1386fda3ea2d181bb1a62155e75e95e23 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: 10/c478fec8f79953f118704d007a38f2a185458853f5c45579b9669372bd0e12602e88dc2ad0233077831504f7cd6fcc8251c383375bba5eaaf563b102938bda26 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10/70c263ded219bf277ffd9127f793b625f10a46113b2e901e150da41931fcfd7f5592da6d66862f4449bb157ffe65867c3294a7df1d661cc232c4163d5a1718ed + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10/d57c9d5bf8849bddcbd801b79bc3d2ddc736c2adb6b93a6a365429589dd7993ddbd5d37c6025ed6a7f89c27506b80131d5345c5b1fa6a97e40cd10a96bcd228c + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10/5021f96ab7ddd03a4005326bd06f45f448ebfbb0fe7018b1b70b6c28142fa68372bda2057359814b83fd0b2d4c8726c297f0a7557b15377be7b56ce5344533d8 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.9.0": + version: 8.17.1 + resolution: "ajv@npm:8.17.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10/ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10/d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff + languageName: node + linkType: hard + +"ansi-styles@npm:^4.1.0": + version: 4.2.1 + resolution: "ansi-styles@npm:4.2.1" + dependencies: + "@types/color-name": "npm:^1.1.1" + color-convert: "npm:^2.0.1" + checksum: 10/7c74dbc7ec912b9e45dacbfaa7e2513bea6aa24d5357a0cd3255e7f83ecfc62e1454c77ab150a8df60de700c83c17fbbf040e7c204b4b6fc7aa250c8afcb865f + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10/70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32 + languageName: node + linkType: hard + +"ansicolor@npm:1.1.100": + version: 1.1.100 + resolution: "ansicolor@npm:1.1.100" + checksum: 10/9420e96f44b578153dfd11e2d829d633ca2699452419aff48314219d66b7b69a9b6d994d2f2350b1d29a9826e33500b87fe85606629a8889cd52ce806908f4a9 + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3, anymatch@npm:^3.1.1, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + languageName: node + linkType: hard + +"are-docs-informative@npm:^0.0.2": + version: 0.0.2 + resolution: "are-docs-informative@npm:0.0.2" + checksum: 10/12cdae51a4bb369832ef1a35840604247d4ed0cbc8392f2519988d170f92c3f8c60e465844f41acba1ec3062d0edb2e9133fca38cb9c1214309153d50a25fa29 + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10/c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10/e5da608a7c4954bfece2d879342b6c218b6b207e2d9e5af270b5e38ef8418f02d122afdc948b68e32649b849a38377785252059090d66fa8081da95d1609c0d2 + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: 10/b2fe9bc98bd401bc322ccb99717c1ae2aaf53ea0d468d6e7aebdc02fac736e4a99b46971ee05b783b08ade23c675b2d8b60e4a1222a95f6e27bc4d2a0bfdcc03 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10/53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + is-string: "npm:^1.0.7" + checksum: 10/290b206c9451f181fb2b1f79a3bf1c0b66bb259791290ffbada760c79b284eef6f5ae2aeb4bcff450ebc9690edd25732c4c73a3c2b340fcc0f4563aed83bf488 + languageName: node + linkType: hard + +"array-tree-filter@npm:^2.1.0": + version: 2.1.0 + resolution: "array-tree-filter@npm:2.1.0" + checksum: 10/ca65dbeb80777eadadfcd4dbd2658d9eb0be66e426a6b6d64f1a71dff5351f2e6f370e0cbcc418e9e6e01d06b337b128441a71c7143abe4d925d027d5aa0100f + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10/5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10/d9d2f6f27584de92ec7995bc931103e6de722cd2498bdbfc4cba814fc3e52f056050a93be883018811f7c0a35875f5056584a0e940603a5e5934f0279896aebe + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10/33f20006686e0cbe844fde7fd290971e8366c6c5e3380681c2df15738b1df766dd02c7784034aeeb3b037f65c496ee54de665388288edb323a2008bb550f77ea + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10/874694e5d50e138894ff5b853e639c29b0aa42bbd355acda8e8e9cd337f1c80565f21edc15e8c727fa4c0877fd9d8783c575809e440cc4d2d19acaa048bf967d + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10/0221f16c1e3ec7b67da870ee0e1f12b825b5f9189835392b59a22990f715827561a4f4cd5330dc7507de272d8df821be6cd4b0cb569babf5ea4be70e365a2f3d + languageName: node + linkType: hard + +"assert@npm:2.0.0": + version: 2.0.0 + resolution: "assert@npm:2.0.0" + dependencies: + es6-object-assign: "npm:^1.1.0" + is-nan: "npm:^1.2.1" + object-is: "npm:^1.0.1" + util: "npm:^0.12.0" + checksum: 10/5bd5e80a0dc5fce9ac812254ad39bcec8c224878705e5021a1a0ae84e2c30b980f90584ef544a5f6b1cd79edb002e80972367731260dac723c7a6f76e0fcd2ea + languageName: node + linkType: hard + +"async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: "npm:^4.17.14" + checksum: 10/df8e52817d74677ab50c438d618633b9450aff26deb274da6dfedb8014130909482acdc7753bce9b72e6171ce9a9f6a92566c4ced34c3cb3714d57421d58ad27 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 + languageName: node + linkType: hard + +"attr-accept@npm:^2.2.2": + version: 2.2.2 + resolution: "attr-accept@npm:2.2.2" + checksum: 10/c867ed41ed749988ad2a6fc70eb2498b9c3c2d58aaad2a8d05422a383058f9d29e50c4bca363c5ee7433df738a7920cc95377bbce8678e817fb498299dd82010 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 + languageName: node + linkType: hard + +"babel-plugin-emotion@npm:^10.0.27": + version: 10.0.33 + resolution: "babel-plugin-emotion@npm:10.0.33" + dependencies: + "@babel/helper-module-imports": "npm:^7.0.0" + "@emotion/hash": "npm:0.8.0" + "@emotion/memoize": "npm:0.7.4" + "@emotion/serialize": "npm:^0.11.16" + babel-plugin-macros: "npm:^2.0.0" + babel-plugin-syntax-jsx: "npm:^6.18.0" + convert-source-map: "npm:^1.5.0" + escape-string-regexp: "npm:^1.0.5" + find-root: "npm:^1.1.0" + source-map: "npm:^0.5.7" + checksum: 10/ad026e89d3cca75679e89f5fede6eee4a9ee0d1e2c040bc64be34805a96f82791a9a962feb5480d8c0c8f53860eb1e60906b710c4603460bc85d373c46a8d7b0 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10/ffd436bb2a77bbe1942a33245d770506ab2262d9c1b3c1f1da7f0592f78ee7445a95bc2efafe619dd9c1b6ee52c10033d6c7d29ddefe6f5383568e60f31dfe8d + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^2.0.0": + version: 2.8.0 + resolution: "babel-plugin-macros@npm:2.8.0" + dependencies: + "@babel/runtime": "npm:^7.7.2" + cosmiconfig: "npm:^6.0.0" + resolve: "npm:^1.12.0" + checksum: 10/ef1e7a8870f38ec255b9e85a21fc2f1adc8a8a494c3b715ce01fd34cb36fb58b75fd4701dc01807bd8f0bd475364565eb9d3247b53921e39fedc8511aa647af0 + languageName: node + linkType: hard + +"babel-plugin-macros@npm:^3.1.0": + version: 3.1.0 + resolution: "babel-plugin-macros@npm:3.1.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + cosmiconfig: "npm:^7.0.0" + resolve: "npm:^1.19.0" + checksum: 10/30be6ca45e9a124c58ca00af9a0753e5410ec0b79a737714fc4722bbbeb693e55d9258f05c437145ef4a867c2d1603e06a1c292d66c243ce1227458c8ea2ca8c + languageName: node + linkType: hard + +"babel-plugin-syntax-jsx@npm:^6.18.0": + version: 6.18.0 + resolution: "babel-plugin-syntax-jsx@npm:6.18.0" + checksum: 10/0c7ce5b81d6cfc01a7dd7a76a9a8f090ee02ba5c890310f51217ef1a7e6163fb7848994bbc14fd560117892e82240df9c7157ad0764da67ca5f2afafb73a7d27 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb + languageName: node + linkType: hard + +"babel-runtime@npm:6.x, babel-runtime@npm:^6.26.0": + version: 6.26.0 + resolution: "babel-runtime@npm:6.26.0" + dependencies: + core-js: "npm:^2.4.0" + regenerator-runtime: "npm:^0.11.0" + checksum: 10/2cdf0f083b9598a43cdb11cbf1e7060584079a9a2230f06aec997ba81e887ef17fdcb5ad813a484ee099e06d2de0cea832bdd3011c06325acb284284c754ee8f + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10/bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + languageName: node + linkType: hard + +"body@npm:^5.1.0": + version: 5.1.0 + resolution: "body@npm:5.1.0" + dependencies: + continuable-cache: "npm:^0.3.1" + error: "npm:^7.0.0" + raw-body: "npm:~1.1.0" + safe-json-parse: "npm:~1.0.1" + checksum: 10/e11cf04a6ce4d9a9d0760b755c66d2b83aabcb7b30355373b3132c2af3bab7055ee15fe2540932b956084223d18f80fde47a289a106d4d773acb637ae82d832d + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 + languageName: node + linkType: hard + +"browserslist@npm:^4.21.10, browserslist@npm:^4.24.0": + version: 4.24.0 + resolution: "browserslist@npm:4.24.0" + dependencies: + caniuse-lite: "npm:^1.0.30001663" + electron-to-chromium: "npm:^1.5.28" + node-releases: "npm:^2.0.18" + update-browserslist-db: "npm:^1.1.0" + bin: + browserslist: cli.js + checksum: 10/26c1b8ba257a0b51b102080ba9d42945af2abaa8c4cf6da21cd47b3f123fc1e81640203b293214356c2c17d9d265bb3a5ed428b6d302f383576dd6ce8fd5036c + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10/edba1b65bae682450be4117b695997972bd9a3c4dfee029cab5bcb72ae5393a79a8f909b8bc77957eb0deec1c7168670f18f4d5c556f46cdd3bca5f3b3a8d020 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.1 + resolution: "buffer-from@npm:1.1.1" + checksum: 10/ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 + languageName: node + linkType: hard + +"builtin-modules@npm:^3.3.0": + version: 3.3.0 + resolution: "builtin-modules@npm:3.3.0" + checksum: 10/62e063ab40c0c1efccbfa9ffa31873e4f9d57408cb396a2649981a0ecbce56aabc93c28feaccbc5658c95aab2703ad1d11980e62ec2e5e72637404e1eb60f39e + languageName: node + linkType: hard + +"bytes@npm:1": + version: 1.0.0 + resolution: "bytes@npm:1.0.0" + checksum: 10/6e475440d7e32971611d2bc592695fee484ee91ca1cd49f99c855560131f71670d3d185210f6cdd1704f12281f0cfcee5cb1c1f6788cb2f676b410464b7d6885 + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.4 + resolution: "cacache@npm:18.0.4" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10/ca2f7b2d3003f84d362da9580b5561058ccaecd46cba661cbcff0375c90734b610520d46b472a339fd032d91597ad6ed12dde8af81571197f3c9772b5d35b104 + languageName: node + linkType: hard + +"calculate-size@npm:1.1.1": + version: 1.1.1 + resolution: "calculate-size@npm:1.1.1" + checksum: 10/8f1bfad7a98f49c9d2dca2191a48fa4d3fe0815397f95eed44cd151d67ded5829e0232259fa0d33ca5fc371a87ffcf530085790a06637e02445e8dab0a6b28c9 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001663": + version: 1.0.30001667 + resolution: "caniuse-lite@npm:1.0.30001667" + checksum: 10/5f0c48abb806737c422f05d0d9dda72facc25ee8adbae2c2ea9c57b87d9c2fa9ad8c3f6d54f21aca4e31ee1742cb5dd1543bf6b9133e3f77f79a645876322414 + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10/3d1d103433166f6bfe82ac75724951b33769675252d8417317363ef9d54699b7c3b2d46671b772b893a8e50c3ece70c4b933c73c01e81bc60ea4df9b55afa303 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10/37f90b31fd655fb49c2bd8e2a68aebefddd64522655d001ef417e6f955def0ed9110a867ffc878a533f2dafea5f2032433a37c8a7614969baa7f8a1cd424ddfc + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 + languageName: node + linkType: hard + +"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10/c327fb07704443f8d15f7b4a7ce93b2f0bc0e6cea07ec28a7570aa22cd51fcf0379df589403976ea956c369f25aa82d84561947e227cd925902e1751371658df + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.4 + resolution: "chrome-trace-event@npm:1.0.4" + checksum: 10/1762bed739774903bf5915fe3045c3120fc3c7f7d929d88e566447ea38944937a6370ccb687278318c43c24f837ad22dac780bed67c066336815557b8cf558c6 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10/75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 10/6e830a1e00a34d416949bbc1924f3e8da65cef4a6a09e2b7fa35722e2d1c34bf378d3baca987b698d1cbc3eb83e44b044039b4e82755c96f30e0f03d1d227637 + languageName: node + linkType: hard + +"classnames@npm:2.5.1, classnames@npm:^2.3.1, classnames@npm:^2.3.2": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: 10/58eb394e8817021b153bb6e7d782cfb667e4ab390cb2e9dac2fc7c6b979d1cc2b2a733093955fc5c94aa79ef5c8c89f11ab77780894509be6afbb91dddd79d15 + languageName: node + linkType: hard + +"classnames@npm:2.x, classnames@npm:^2.2.1, classnames@npm:^2.2.5, classnames@npm:^2.2.6": + version: 2.2.6 + resolution: "classnames@npm:2.2.6" + checksum: 10/a241cdac6a06d1572e4358eff219ff9be4e2bb83f0a4080b413f32f691e8b7ba4d635b1a99123cbdfef1604e10f398b6f1433364d5645004eea957494ef1f3e8 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10/eaa5561aeb3135c2cddf7a3b3f562fc4238ff3b3fc666869ef2adf264be0f372136702f16add9299087fb1907c2e4ec5dbfe83bd24bce815c70a80c6c1a2e950 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10/770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + languageName: node + linkType: hard + +"clsx@npm:^2.0.0": + version: 2.1.1 + resolution: "clsx@npm:2.1.1" + checksum: 10/cdfb57fa6c7649bbff98d9028c2f0de2f91c86f551179541cf784b1cfdc1562dcb951955f46d54d930a3879931a980e32a46b598acaea274728dbe068deca919 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10/30ea7d5c9ee51f2fdba4901d4186c5b7114a088ef98fd53eda3979da77eed96758a2cae81cc6d97e239aaea6065868cf908b24980663f7b7e96aa291b3e12fa4 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10/ffa319025045f2973919d155f25e7c00d08836b6b33ea2d205418c59bd63a665d713c52d9737a9e0fe467fb194b40fbef1d849bae80d674568ee220a31ef3d10 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10/09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"colorette@npm:^2.0.14": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 + languageName: node + linkType: hard + +"commander@npm:7": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb + languageName: node + linkType: hard + +"commander@npm:^2.20.0, commander@npm:^2.20.3": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10/90c5b6898610cd075984c58c4f88418a4fb44af08c1b1415e9854c03171bec31b336b7f3e4cefe33de994b3f12b03c5e2d638da4316df83593b9e82554e7e95b + languageName: node + linkType: hard + +"comment-parser@npm:1.4.0": + version: 1.4.0 + resolution: "comment-parser@npm:1.4.0" + checksum: 10/3ce7a975946ebb0d8410b6713a371e25b5a144b633dd7c6e502c18c9a4e4f1f9167ed0eaa90b07cbc18e91ee061b99c2889d6bed88cd7f0dc32ed1bbac89008a + languageName: node + linkType: hard + +"component-classes@npm:^1.2.5": + version: 1.2.6 + resolution: "component-classes@npm:1.2.6" + dependencies: + component-indexof: "npm:0.0.3" + checksum: 10/aa70f282b85a19d7a190dabb2c72c9b8a2a5565fc42d72ca0661e8ce47e55e53da29f468467771d7e0bf4ba8c9723e5a21954fc38b942d9d873ee56be856adfc + languageName: node + linkType: hard + +"component-indexof@npm:0.0.3": + version: 0.0.3 + resolution: "component-indexof@npm:0.0.3" + checksum: 10/34a720e96fc0be1043a4517845b1b7483989736c559089eca285f7ac9ef049eacc8ab12fc31f924dfa2d4ecea0714611a695d087ce11caf30502b5a80646e9e9 + languageName: node + linkType: hard + +"compute-scroll-into-view@npm:^3.1.0": + version: 3.1.0 + resolution: "compute-scroll-into-view@npm:3.1.0" + checksum: 10/cc5211d49bced5ad23385da5c2eaf69b6045628581b0dcb9f4dd407bfee51bbd26d2bce426be26edf2feaf8c243706f5a7c3759827d89cc5a01a5cf7d299a5eb + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 + languageName: node + linkType: hard + +"continuable-cache@npm:^0.3.1": + version: 0.3.1 + resolution: "continuable-cache@npm:0.3.1" + checksum: 10/b36ec13a3a641354b2b06579a8488a0e87cc016d44fffd62878bc360c99bcc7eb714abec6b9eb5c639b7ee50d0a25a504873a9b9c69088b49a13dd325dfb6d53 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.5.0": + version: 1.7.0 + resolution: "convert-source-map@npm:1.7.0" + dependencies: + safe-buffer: "npm:~5.1.1" + checksum: 10/0d0dd324ad15850cf1d44520560ab524ba3fce7ed8296df10d9aa466a0e964df9c9de0dcb78fb70a60493800b256ffe40d64f24968e32a48a1bcbff117102022 + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 + languageName: node + linkType: hard + +"copy-to-clipboard@npm:^3.3.1": + version: 3.3.3 + resolution: "copy-to-clipboard@npm:3.3.3" + dependencies: + toggle-selection: "npm:^1.0.6" + checksum: 10/e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:^11.0.0": + version: 11.0.0 + resolution: "copy-webpack-plugin@npm:11.0.0" + dependencies: + fast-glob: "npm:^3.2.11" + glob-parent: "npm:^6.0.1" + globby: "npm:^13.1.1" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + peerDependencies: + webpack: ^5.1.0 + checksum: 10/dc103be79ef72a4bb0bc8ce498b2cca964e3771326b009a1f3cb2d17960fca17538a725b09427161eccf485e2badbbd5490ddf2570f7976938e4e7338f1fd7e9 + languageName: node + linkType: hard + +"core-js@npm:^2.4.0": + version: 2.6.11 + resolution: "core-js@npm:2.6.11" + checksum: 10/4aee521824bde0d3e25c56de810c1ae1ceaa66516433bd700208ab04af09c54bbf4a8929e1002887e0826e98e89f3c37f0b409e2f5e4d5c70814af206ef91da8 + languageName: node + linkType: hard + +"cosmiconfig@npm:^6.0.0": + version: 6.0.0 + resolution: "cosmiconfig@npm:6.0.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.1.0" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.7.2" + checksum: 10/b184d2bfbced9ba6840fd097dbf3455c68b7258249bb9b1277913823d516d8dfdade8c5ccbf79db0ca8ebd4cc9b9be521ccc06a18396bd242d50023c208f1594 + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10/03600bb3870c80ed151b7b706b99a1f6d78df8f4bdad9c95485072ea13358ef294b13dd99f9e7bf4cc0b43bcd3599d40df7e648750d21c2f6817ca2cd687e071 + languageName: node + linkType: hard + +"create-emotion@npm:^10.0.27": + version: 10.0.27 + resolution: "create-emotion@npm:10.0.27" + dependencies: + "@emotion/cache": "npm:^10.0.27" + "@emotion/serialize": "npm:^0.11.15" + "@emotion/sheet": "npm:0.9.4" + "@emotion/utils": "npm:0.11.3" + checksum: 10/6838f6fe0a3e8d6a7a354685f1ffed6a23f28e74ce4bcdd045882f8e007715dc61596bddc05937cdfd67581eb66a697621a6d01c1a7357b85a816fddc22203fe + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce + languageName: node + linkType: hard + +"css-animation@npm:^1.3.2": + version: 1.6.1 + resolution: "css-animation@npm:1.6.1" + dependencies: + babel-runtime: "npm:6.x" + component-classes: "npm:^1.2.5" + checksum: 10/5aea8fd333300c6b15f523ac741dd2ed367489485c7a9a43647f7779fef9e5f338c405e3ad9ed8db338503b4aefea86108112a01bf78651b623f8bd2e146e0e0 + languageName: node + linkType: hard + +"css-box-model@npm:^1.2.1": + version: 1.2.1 + resolution: "css-box-model@npm:1.2.1" + dependencies: + tiny-invariant: "npm:^1.0.6" + checksum: 10/54778883733e59058b5de983cf442b9db6c1494543d4d84a3defd05b51b991a1865f59e4ae424e733af2aa1fdb6e0bd905cb73db0e7e548fbd89853859fedc81 + languageName: node + linkType: hard + +"css-in-js-utils@npm:^3.1.0": + version: 3.1.0 + resolution: "css-in-js-utils@npm:3.1.0" + dependencies: + hyphenate-style-name: "npm:^1.0.3" + checksum: 10/bd2f569f1870389004cfacfd7b798c0f40933d34af1f040c391a08322d097790b9a9524affb2ba4d26122e9cb8f4256afb59edb6077dbe607506944a9c673c67 + languageName: node + linkType: hard + +"css-loader@npm:^6.7.3": + version: 6.11.0 + resolution: "css-loader@npm:6.11.0" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.33" + postcss-modules-extract-imports: "npm:^3.1.0" + postcss-modules-local-by-default: "npm:^4.0.5" + postcss-modules-scope: "npm:^3.2.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.5.4" + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 10/9e3665509f6786d46683de5c5f5c4bdd4aa62396b4017b41dbbb41ea5ada4012c80ee1e3302b79b504bc24da7fa69e3552d99006cecc953e0d9eef4a3053b929 + languageName: node + linkType: hard + +"css-tree@npm:^1.1.2": + version: 1.1.3 + resolution: "css-tree@npm:1.1.3" + dependencies: + mdn-data: "npm:2.0.14" + source-map: "npm:^0.6.1" + checksum: 10/29710728cc4b136f1e9b23ee1228ec403ec9f3d487bc94a9c5dbec563c1e08c59bc917dd6f82521a35e869ff655c298270f43ca673265005b0cd05b292eb05ab + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10/f6d38088d870a961794a2580b2b2af1027731bb43261cfdce14f19238a88664b351cc8978abc20f06cc6bbde725699dec8deb6fe9816b139fc3f2af28719e774 + languageName: node + linkType: hard + +"csscolorparser@npm:~1.0.2": + version: 1.0.3 + resolution: "csscolorparser@npm:1.0.3" + checksum: 10/b46b9032eaace69e5bb151bb64473547d8e48813b45395c1923cde1c87674bbd030c99536f44373e092de6afdca1a8134933a1503e779aaeb703b7c7897f5eca + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10/0e161912c1306861d8f46e1883be1cbc8b1b2879f0f509287c0db71796e4ddfb97ac96bdfca38f77f452e2c10554e1bb5678c99b07a5cf947a12778f73e47e12 + languageName: node + linkType: hard + +"cssfilter@npm:0.0.10": + version: 0.0.10 + resolution: "cssfilter@npm:0.0.10" + checksum: 10/1e45182f42de848f092f50a313113c28a88e4ac98333bf1603ee1c3b200384a3bc83c12e35cd61135e3b0f218295f600d51120ca1f926b7958b2d3262d711214 + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 10/b502a315b1ce020a692036cc38cb36afa44157219b80deadfa040ab800aa9321fcfbecf02fd2e6ec87db169715e27978b4ab3701f916461e9cf7808899f23b54 + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 10/49eacc88077555e419646c0ea84ddc73c97e3a346ad7cb95e22f9413a9722d8964b91d781ce21d378bd5ae058af9a745402383fa4e35e9cdfd19654b63f892a9 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: "npm:~0.3.6" + checksum: 10/46f7f05a153446c4018b0454ee1464b50f606cb1803c90d203524834b7438eb52f3b173ba0891c618f380ced34ee12020675dc0052a7f1be755fe4ebc27ee977 + languageName: node + linkType: hard + +"csstype@npm:^2.2.0, csstype@npm:^2.5.7, csstype@npm:^2.6.7": + version: 2.6.10 + resolution: "csstype@npm:2.6.10" + checksum: 10/cdfbbc91dcc26197e308ff7f6e74a95b885eb0ad347ba2905226cd5b355d3878a7c3417269f4f966384a267c1b0a139ab85b5e28a89caaed7046d71d6a0cdb92 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.0.3 + resolution: "csstype@npm:3.0.3" + checksum: 10/cdeae99eb3500cbf5c9cd169042204b24f1efa8fee98da034c5ad800aaebcb32240e6adf098514cdf782ddf6687e51f425819108cda3f40c6ea259f26d1ff74f + languageName: node + linkType: hard + +"csstype@npm:^3.1.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10/f593cce41ff5ade23f44e77521e3a1bcc2c64107041e1bf6c3c32adc5187d0d60983292fda326154d20b01079e24931aa5b08e4467cc488b60bb1e7f6d478ade + languageName: node + linkType: hard + +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.2.0": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: "npm:1 - 2" + checksum: 10/5800c467f89634776a5977f6dae3f4e127d91be80f1d07e3e6e35303f9de93e6636d014b234838eea620f7469688d191b3f41207a30040aab750a63c97ec1d7c + languageName: node + linkType: hard + +"d3-axis@npm:3": + version: 3.0.0 + resolution: "d3-axis@npm:3.0.0" + checksum: 10/15ec43ecbd4e7b606fcda60f67a522e45576dfd6aa83dff47f3e91ef6c8448841a09cd91f630b492250dcec67c6ea64463510ead5e632ff6b827aeefae1d42ad + languageName: node + linkType: hard + +"d3-brush@npm:3": + version: 3.0.0 + resolution: "d3-brush@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-drag: "npm:2 - 3" + d3-interpolate: "npm:1 - 3" + d3-selection: "npm:3" + d3-transition: "npm:3" + checksum: 10/fa3a461b62f0f0ee6fe41f5babf45535a0a8f6d4999f675fb1dce932ee02eff72dec14c7296af31ca15998dc0141ccf5d02aa6499363f8bf2941d90688a1d644 + languageName: node + linkType: hard + +"d3-chord@npm:3": + version: 3.0.1 + resolution: "d3-chord@npm:3.0.1" + dependencies: + d3-path: "npm:1 - 3" + checksum: 10/4febcdca4fdc8ba91fc4f7545f4b6321c440150dff80c1ebef887db07bb4200395dfebede63b257393259de07f914da10842da5ab3135e1e281e33ad153e0849 + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:3": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 10/536ba05bfd9f4fcd6fa289b5974f5c846b21d186875684637e22bf6855e6aba93e24a2eb3712985c6af3f502fbbfa03708edb72f58142f626241a8a17258e545 + languageName: node + linkType: hard + +"d3-contour@npm:4": + version: 4.0.2 + resolution: "d3-contour@npm:4.0.2" + dependencies: + d3-array: "npm:^3.2.0" + checksum: 10/0b252267e0c3c5e97d7e0c720bd35654de99f981199f7240d7dd1acfd4e2d5bf1638829f6db486452eff9c38608efa4a6ab5a0d1525131735c011ee7be3cb4ba + languageName: node + linkType: hard + +"d3-delaunay@npm:6": + version: 6.0.4 + resolution: "d3-delaunay@npm:6.0.4" + dependencies: + delaunator: "npm:5" + checksum: 10/4588e2872d4154daaf2c3f34fefe74e43b909cc460238a7b02823907ca6dd109f2c488c57c8551f1a2607fe4b44fdf24e3a190cea29bca70ef5606678dd9e2de + languageName: node + linkType: hard + +"d3-dispatch@npm:1 - 3, d3-dispatch@npm:3": + version: 3.0.1 + resolution: "d3-dispatch@npm:3.0.1" + checksum: 10/2b82f41bf4ef88c2f9033dfe32815b67e2ef1c5754a74137a74c7d44d6f0d6ecfa934ac56ed8afe358f6c1f06462e8aa42ca0a388397b5b77a42721570e80487 + languageName: node + linkType: hard + +"d3-drag@npm:2 - 3, d3-drag@npm:3": + version: 3.0.0 + resolution: "d3-drag@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-selection: "npm:3" + checksum: 10/80bc689935e5a46ee92b2d7f71e1c792279382affed9fbcf46034bff3ff7d3f50cf61a874da4bdf331037292b9e7dca5c6401a605d4bb699fdcb4e0c87e176ec + languageName: node + linkType: hard + +"d3-dsv@npm:1 - 3, d3-dsv@npm:3": + version: 3.0.1 + resolution: "d3-dsv@npm:3.0.1" + dependencies: + commander: "npm:7" + iconv-lite: "npm:0.6" + rw: "npm:1" + bin: + csv2json: bin/dsv2json.js + csv2tsv: bin/dsv2dsv.js + dsv2dsv: bin/dsv2dsv.js + dsv2json: bin/dsv2json.js + json2csv: bin/json2dsv.js + json2dsv: bin/json2dsv.js + json2tsv: bin/json2dsv.js + tsv2csv: bin/dsv2dsv.js + tsv2json: bin/dsv2json.js + checksum: 10/a628ac42a272466940f713f310db2e5246690b22035121dc1230077070c9135fb7c9b4d260f093fcadf63b0528202a1953107448a4be3a860c4f42f50d09504d + languageName: node + linkType: hard + +"d3-ease@npm:1 - 3, d3-ease@npm:3": + version: 3.0.1 + resolution: "d3-ease@npm:3.0.1" + checksum: 10/985d46e868494e9e6806fedd20bad712a50dcf98f357bf604a843a9f6bc17714a657c83dd762f183173dcde983a3570fa679b2bc40017d40b24163cdc4167796 + languageName: node + linkType: hard + +"d3-fetch@npm:3": + version: 3.0.1 + resolution: "d3-fetch@npm:3.0.1" + dependencies: + d3-dsv: "npm:1 - 3" + checksum: 10/cd35d55f8fbb1ea1e37be362a575bb0161449957133aa5b45b9891889b2aca1dc0769c240a236736e33cd823e820a0e73fb3744582307a5d26d1df7bed0ccecb + languageName: node + linkType: hard + +"d3-force@npm:3": + version: 3.0.0 + resolution: "d3-force@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-quadtree: "npm:1 - 3" + d3-timer: "npm:1 - 3" + checksum: 10/85945f8d444d78567009518f0ab54c0f0c8873eb8eb9a2ff0ab667b0f81b419e101a411415d4a2c752547ec7143f89675e8c33b8f111e55e5579a04cb7f4591c + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:3": + version: 3.1.0 + resolution: "d3-format@npm:3.1.0" + checksum: 10/a0fe23d2575f738027a3db0ce57160e5a473ccf24808c1ed46d45ef4f3211076b34a18b585547d34e365e78dcc26dd4ab15c069731fc4b1c07a26bfced09ea31 + languageName: node + linkType: hard + +"d3-geo@npm:3": + version: 3.1.1 + resolution: "d3-geo@npm:3.1.1" + dependencies: + d3-array: "npm:2.5.0 - 3" + checksum: 10/dc5e980330d891dabf92869b98871b05ca2021c64d7ef253bcfd4f2348839ad33576fba474baecc2def86ebd3d943a11d93c0af26be0a2694f5bd59824838133 + languageName: node + linkType: hard + +"d3-hierarchy@npm:3": + version: 3.1.2 + resolution: "d3-hierarchy@npm:3.1.2" + checksum: 10/497b79dc6c35e28b21e8a7b94db92876abd1d4ec082d9803a07ea8964e55b0e71c511a21489363a36f1456f069adb8ff7d33c633678730d6ae961ed350b27733 + languageName: node + linkType: hard + +"d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3, d3-interpolate@npm:3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + checksum: 10/988d66497ef5c190cf64f8c80cd66e1e9a58c4d1f8932d776a8e3ae59330291795d5a342f5a97602782ccbef21a5df73bc7faf1f0dc46a5145ba6243a82a0f0e + languageName: node + linkType: hard + +"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0": + version: 3.1.0 + resolution: "d3-path@npm:3.1.0" + checksum: 10/8e97a9ab4930a05b18adda64cf4929219bac913a5506cf8585631020253b39309549632a5cbeac778c0077994442ddaaee8316ee3f380e7baf7566321b84e76a + languageName: node + linkType: hard + +"d3-polygon@npm:3": + version: 3.0.1 + resolution: "d3-polygon@npm:3.0.1" + checksum: 10/c4fa2ed19dcba13fd341815361d27e64597aa0d38d377e401e1353c4acbe8bd73c0afb3e49a1cf4119fadc3651ec8073d06aa6d0e34e664c868d071e58912cd1 + languageName: node + linkType: hard + +"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3": + version: 3.0.1 + resolution: "d3-quadtree@npm:3.0.1" + checksum: 10/1915b6a7b031fc312f9af61947072db9468c5a2b03837f6a90b38fdaebcd0ea17a883bffd94d16b8a6848e81711a06222f7d39f129386ef1850297219b8d32ba + languageName: node + linkType: hard + +"d3-random@npm:3": + version: 3.0.1 + resolution: "d3-random@npm:3.0.1" + checksum: 10/9f41d6ca3a1826cea8d88392917b5039504337d442a4d1357c870fa3031701e60209a2689a6ddae7df8fca824383d038c957eb545bc49a7428c71aaf3b11f56f + languageName: node + linkType: hard + +"d3-scale-chromatic@npm:3": + version: 3.1.0 + resolution: "d3-scale-chromatic@npm:3.1.0" + dependencies: + d3-color: "npm:1 - 3" + d3-interpolate: "npm:1 - 3" + checksum: 10/25df6a7c621b9171df8b2225e98e41c0a6bcac4de02deb4807280b31116e8f495c5ac93301796098ee5b698cb690154e8138d90d72fd1fe36744c60e02a3d8c4 + languageName: node + linkType: hard + +"d3-scale@npm:4": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: "npm:2.10.0 - 3" + d3-format: "npm:1 - 3" + d3-interpolate: "npm:1.2.0 - 3" + d3-time: "npm:2.1.1 - 3" + d3-time-format: "npm:2 - 4" + checksum: 10/e2dc4243586eae2a0fdf91de1df1a90d51dfacb295933f0ca7e9184c31203b01436bef69906ad40f1100173a5e6197ae753cb7b8a1a8fcfda43194ea9cad6493 + languageName: node + linkType: hard + +"d3-selection@npm:2 - 3, d3-selection@npm:3": + version: 3.0.0 + resolution: "d3-selection@npm:3.0.0" + checksum: 10/0e5acfd305b31628b7be5009ba7303d84bb34817a88ed4dde9c8bd9c23528573fc5272f89fc04e5be03d2cbf5441a248d7274aaf55a8ef3dad46e16333d72298 + languageName: node + linkType: hard + +"d3-shape@npm:3": + version: 3.2.0 + resolution: "d3-shape@npm:3.2.0" + dependencies: + d3-path: "npm:^3.1.0" + checksum: 10/2e861f4d4781ee8abd85d2b435f848d667479dcf01a4e0db3a06600a5bdeddedb240f88229ec7b3bf7fa300c2b3526faeaf7e75f9a24dbf4396d3cc5358ff39d + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:4": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: "npm:1 - 3" + checksum: 10/ffc0959258fbb90e3890bfb31b43b764f51502b575e87d0af2c85b85ac379120d246914d07fca9f533d1bcedc27b2841d308a00fd64848c3e2cad9eff5c9a0aa + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: "npm:2 - 3" + checksum: 10/c110bed295ce63e8180e45b82a9b0ba114d5f33ff315871878f209c1a6d821caa505739a2b07f38d1396637155b8e7372632dacc018e11fbe8ceef58f6af806d + languageName: node + linkType: hard + +"d3-timer@npm:1 - 3, d3-timer@npm:3": + version: 3.0.1 + resolution: "d3-timer@npm:3.0.1" + checksum: 10/004128602bb187948d72c7dc153f0f063f38ac7a584171de0b45e3a841ad2e17f1e40ad396a4af9cce5551b6ab4a838d5246d23492553843d9da4a4050a911e2 + languageName: node + linkType: hard + +"d3-transition@npm:2 - 3, d3-transition@npm:3": + version: 3.0.1 + resolution: "d3-transition@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + d3-dispatch: "npm:1 - 3" + d3-ease: "npm:1 - 3" + d3-interpolate: "npm:1 - 3" + d3-timer: "npm:1 - 3" + peerDependencies: + d3-selection: 2 - 3 + checksum: 10/02571636acb82f5532117928a87fe25de68f088c38ab4a8b16e495f0f2d08a3fd2937eaebdefdfcf7f1461545524927d2632d795839b88d2e4c71e387aaaffac + languageName: node + linkType: hard + +"d3-zoom@npm:3": + version: 3.0.0 + resolution: "d3-zoom@npm:3.0.0" + dependencies: + d3-dispatch: "npm:1 - 3" + d3-drag: "npm:2 - 3" + d3-interpolate: "npm:1 - 3" + d3-selection: "npm:2 - 3" + d3-transition: "npm:2 - 3" + checksum: 10/0e6e5c14e33c4ecdff311a900dd037dea407734f2dd2818988ed6eae342c1799e8605824523678bd404f81e37824cc588f62dbde46912444c89acc7888036c6b + languageName: node + linkType: hard + +"d3@npm:7.9.0": + version: 7.9.0 + resolution: "d3@npm:7.9.0" + dependencies: + d3-array: "npm:3" + d3-axis: "npm:3" + d3-brush: "npm:3" + d3-chord: "npm:3" + d3-color: "npm:3" + d3-contour: "npm:4" + d3-delaunay: "npm:6" + d3-dispatch: "npm:3" + d3-drag: "npm:3" + d3-dsv: "npm:3" + d3-ease: "npm:3" + d3-fetch: "npm:3" + d3-force: "npm:3" + d3-format: "npm:3" + d3-geo: "npm:3" + d3-hierarchy: "npm:3" + d3-interpolate: "npm:3" + d3-path: "npm:3" + d3-polygon: "npm:3" + d3-quadtree: "npm:3" + d3-random: "npm:3" + d3-scale: "npm:4" + d3-scale-chromatic: "npm:3" + d3-selection: "npm:3" + d3-shape: "npm:3" + d3-time: "npm:3" + d3-time-format: "npm:4" + d3-timer: "npm:3" + d3-transition: "npm:3" + d3-zoom: "npm:3" + checksum: 10/b0b418996bdf279b01f5c7a0117927f9ad3e833c9ce4657550ce6f6ace70b70cf829c4144b01df0be5a0f716d4e5f15ab0cadc5ff1ce1561d7be29ac86493d83 + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + checksum: 10/033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-buffer@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10/5919a39a18ee919573336158fd162fdf8ada1bc23a139f28543fd45fac48e0ea4a3ad3bfde91de124d4106e65c4a7525f6a84c20ba0797ec890a77a96d13a82a + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10/f33c65e58d8d0432ad79761f2e8a579818d724b5dc6dc4e700489b762d963ab30873c0f1c37d8f2ed12ef51c706d1195f64422856d25f067457aeec50cc40aac + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.0": + version: 1.0.0 + resolution: "data-view-byte-offset@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db + languageName: node + linkType: hard + +"date-fns@npm:3.6.0": + version: 3.6.0 + resolution: "date-fns@npm:3.6.0" + checksum: 10/cac35c58926a3b5d577082ff2b253612ec1c79eb6754fddef46b6a8e826501ea2cb346ecbd211205f1ba382ddd1f9d8c3f00bf433ad63cc3063454d294e3a6b8 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.3.7 + resolution: "debug@npm:4.3.7" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a + languageName: node + linkType: hard + +"debug@npm:^3.1.0": + version: 3.2.6 + resolution: "debug@npm:3.2.6" + dependencies: + ms: "npm:^2.1.1" + checksum: 10/c495d32519ed205aeab71b4bba84701c60b2d18efe98d41f88f498f09423252155450846ee31da0e4c3ea5d7d8f5123525e463612a7d3fa0bcd5fc06e4efe5fc + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10/de663a7bc4d368e3877db95fcd5c87b965569b58d16cdc4258c063d231ca7118748738df17cd638f7e9dd0be8e34cec08d7234b20f1f2a756a52fc5a38b188d0 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.4.1": + version: 0.4.1 + resolution: "decode-uri-component@npm:0.4.1" + checksum: 10/74eec26f7bec3767164e37d526ef19bc1214cb0bbeeeea1c4f0ceb79299e5c38d3ba734e7243d829842aa140f24e5d020f54cc25b17c7082461c8eead8a72ce3 + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10/e5277f6268f288649503125b781a7b7a2c9b22d011139688c0b3619fe40121e600eb1f077c891938d4b2428bdb6326cc3c77a763e4b1cc681bd9666ab1bad2a1 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10/1ce49d0b71d0f14d8ef991a742665eccd488dfc9b3cada069d4d7a86291e591c92d2589c832811dea182b4015736b210acaaebce6184be356c1060d176f5a05f + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10/058d9e1b0ff1a154468bf3837aea436abcfea1ba1d165ddaaf48ca93765fdd01a30d33c36173da8fbbed951dd0a267602bc782fe288b0fc4b7e1e7091afc4529 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10/abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10/b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + languageName: node + linkType: hard + +"delaunator@npm:5": + version: 5.0.1 + resolution: "delaunator@npm:5.0.1" + dependencies: + robust-predicates: "npm:^3.0.2" + checksum: 10/c378a55138d81d471a7214635b1a2c5e74f8ee06582f558df72f0c7c82c25868599ce9a18fb25a245c6c03cab886d17fb574681c78371b539dd069818703f53a + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10/179daf9d2f9af5c57ad66d97cb902a538bcf8ed64963fa7aa0c329b3de3665ce2eb6ffdc2f69f29d445fa4af2517e5e55e5b6e00c00a9ae4f43645f97f7078cb + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10/fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 + languageName: node + linkType: hard + +"direction@npm:^0.1.5": + version: 0.1.5 + resolution: "direction@npm:0.1.5" + bin: + direction: cli.js + checksum: 10/bf7d6ceca38f1cd4ffd33777207d0d64fe6075a2dee9c2b6c99b18ec9550fe20526a65baf1e0c1c9e683af6f4be27f84d55f753fc0c50df56dbd5551814b70c8 + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10/377b4a7f9eae0a5d72e1068c369c99e0e4ca17fdfd5219f3abd32a73a590749a267475a59d7b03a891f9b673c27429133a818c44b2e47e32fec024b34274e2ca + languageName: node + linkType: hard + +"dom-align@npm:^1.7.0": + version: 1.12.0 + resolution: "dom-align@npm:1.12.0" + checksum: 10/a7382592a29adfab222ab0826f91d4f6220559c9796a50a0b1202d49b60812e1930129670e00c9787c9da51c82a8be6d98e4005afc68e53bbafd23e9ef20635f + languageName: node + linkType: hard + +"dom-css@npm:^2.0.0": + version: 2.1.0 + resolution: "dom-css@npm:2.1.0" + dependencies: + add-px-to-style: "npm:1.0.0" + prefix-style: "npm:2.0.1" + to-camel-case: "npm:1.0.0" + checksum: 10/6180c872f17a4c026a690e399dd55e41a90f4e98c5af33ca0f16934309b67e762c929d07e38accc4e05ac4d22e8527af0252bf478a2d780b9e593a415b18905a + languageName: node + linkType: hard + +"dom-helpers@npm:^5.0.1": + version: 5.1.4 + resolution: "dom-helpers@npm:5.1.4" + dependencies: + "@babel/runtime": "npm:^7.8.7" + csstype: "npm:^2.6.7" + checksum: 10/329e1c6763c9442b5bf740e82b2fec46411917b2334df0d9720b26d4eac571b01658915bbc5527b87d3807955e0a9bc9e731c53ec2d12c900d4a47c5335116de + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: "npm:^7.0.0" + checksum: 10/4ed443227d2871d76c58d852b2e93c68e0443815b2741348f20881bedee8c1ad4f9bfc5d30c7dec433cd026b57da63407c010260b1682fef4c8847e7181ea43f + languageName: node + linkType: hard + +"dompurify@npm:^3.0.0": + version: 3.1.7 + resolution: "dompurify@npm:3.1.7" + checksum: 10/dc637a064306f83cf911caa267ffe1f973552047602020e3b6723c90f67962813edf8a65a0b62e8c9bc13fcd173a2691212a3719bc116226967f46bcd6181277 + languageName: node + linkType: hard + +"downshift@npm:^9.0.6": + version: 9.0.8 + resolution: "downshift@npm:9.0.8" + dependencies: + "@babel/runtime": "npm:^7.24.5" + compute-scroll-into-view: "npm:^3.1.0" + prop-types: "npm:^15.8.1" + react-is: "npm:18.2.0" + tslib: "npm:^2.6.2" + peerDependencies: + react: ">=16.12.0" + checksum: 10/9dc4577e780c54742ba4dde11f481f0d839f001b309200fbe4db112385b227ccd9cd2ef97d9e995379fa70249f0664a562240e415b9966f18c8a5cb7ce435f2c + languageName: node + linkType: hard + +"earcut@npm:^2.2.3": + version: 2.2.4 + resolution: "earcut@npm:2.2.4" + checksum: 10/ca8b24714cc2fa67f98fbca6ddcf64bb42ee8d75d0b4f1a81486b3282b0f7f1bf9ec49ad4d02149985886a0c8a03a173463f2acb1f51fa0bb7ba2e1d4aa1254d + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10/9b1d3e1baefeaf7d70799db8774149cef33b97183a6addceeba0cf6b85ba23ee2686f302f14482006df32df75d32b17c509c143a3689627929e4a8efaf483952 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.28": + version: 1.5.32 + resolution: "electron-to-chromium@npm:1.5.32" + checksum: 10/906b852f67e9de0a5f643085570f7383c5bb28b28b1dd0916bdc55d24d8a2238eb61c26db51a766630993e4c55fb7bbf6551b0ae570751fec2503eb592611c89 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10/c72d67a6821be15ec11997877c437491c313d924306b8da5d87d2a2bcc2cec9903cb5b04ee1a088460501d8e5b44f10df82fdc93c444101a7610b80c8b6938e1 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10/915acf859cea7131dac1b2b5c9c8e35c4849e325a1d114c30adb8cd615970f6dca0e27f64f3a4949d7d6ed86ecd79a1c5c63f02e697513cddd7b5835c90948b8 + languageName: node + linkType: hard + +"emotion@npm:10.0.27": + version: 10.0.27 + resolution: "emotion@npm:10.0.27" + dependencies: + babel-plugin-emotion: "npm:^10.0.27" + create-emotion: "npm:^10.0.27" + checksum: 10/376a43b150753f515b7ebc3fa3ae9a7143be5c6e1161984a19458967363a38112713a4e5c3de91020faffaf499bbe5c6f0ee517707fb7108a41c87efad6b5691 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.17.1": + version: 5.17.1 + resolution: "enhanced-resolve@npm:5.17.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10/e8e03cb7a4bf3c0250a89afbd29e5ec20e90ba5fcd026066232a0754864d7d0a393fa6fc0e5379314a6529165a1834b36731147080714459d98924520410d8f5 + languageName: node + linkType: hard + +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10/ede2a35c9bce1aeccd055a1b445d41c75a14a2bb1cd22e242f20cf04d236cdcd7f9c859eb83f76885327bfae0c25bf03303665ee1ce3d47c5927b98b0e3e3d48 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + languageName: node + linkType: hard + +"envinfo@npm:^7.7.3": + version: 7.14.0 + resolution: "envinfo@npm:7.14.0" + bin: + envinfo: dist/cli.js + checksum: 10/0d9d711f2b6ae02dec89dd768a3390acbcb99ac50d07f20e635a8d2db68447703476db535483592d1ed4656c3d36eee4883032d71a5118c917b4973e2d4fa027 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10/d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb + languageName: node + linkType: hard + +"error-stack-parser@npm:^2.0.6": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: "npm:^1.3.4" + checksum: 10/23db33135bfc6ba701e5eee45e1bb9bd2fe33c5d4f9927440d9a499c7ac538f91f455fcd878611361269893c56734419252c40d8105eb3b023cf8b0fc2ebb64e + languageName: node + linkType: hard + +"error@npm:^7.0.0": + version: 7.2.1 + resolution: "error@npm:7.2.1" + dependencies: + string-template: "npm:~0.2.1" + checksum: 10/9c790d20a386947acfeabb0d1c39173efe8e5a38cb732b5f06c11a25c23ce8ac4dafbb7aa240565e034580a49aba0703e743d0274c6228500ddf947a1b998568 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": + version: 1.23.3 + resolution: "es-abstract@npm:1.23.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + data-view-buffer: "npm:^1.0.1" + data-view-byte-length: "npm:^1.0.1" + data-view-byte-offset: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.0.3" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.1" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.3" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.2" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.9" + string.prototype.trimend: "npm:^1.0.8" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.2" + typed-array-byte-length: "npm:^1.0.1" + typed-array-byte-offset: "npm:^1.0.2" + typed-array-length: "npm:^1.0.6" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10/2da795a6a1ac5fc2c452799a409acc2e3692e06dc6440440b076908617188899caa562154d77263e3053bcd9389a07baa978ab10ac3b46acc399bd0c77be04cb + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10/bc2194befbe55725f9489098626479deee3c801eda7e83ce0dff2eb266a28dc808edb9b623ff01d31ebc1328f09d661333d86b601036692c2e3c1a6942319433 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.12": + version: 1.0.19 + resolution: "es-iterator-helpers@npm:1.0.19" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.3" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.3" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.2" + checksum: 10/980a8081cf6798fe17fcea193b0448d784d72d76aca7240b10813207c67e3dc0d8a23992263870c4fc291da5a946935b0c56dec4fa1a9de8fee0165e4fa1fc58 + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: 10/f29c7c97a58eb17640dcbd71bd6ef754ad4f58f95c3073894573d29dae2cad43ecd2060d97ed5b866dfb7804d5590fb7de1d2c5339a5fceae8bd60b580387fc5 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10/f8910cf477e53c0615f685c5c96210591841850871b81924fcf256bfbaa68c254457d994a4308c60d15b20805e7f61ce6abc669375e01a5349391a8c1767584f + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3": + version: 2.0.3 + resolution: "es-set-tostringtag@npm:2.0.3" + dependencies: + get-intrinsic: "npm:^1.2.4" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.1" + checksum: 10/7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10/6d3bf91f658a27cc7217cd32b407a0d714393a84d125ad576319b9e83a893bea165cf41270c29e9ceaa56d3cf41608945d7e2a2c31fd51c0009b0c31402b91c7 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b + languageName: node + linkType: hard + +"es6-object-assign@npm:^1.1.0": + version: 1.1.0 + resolution: "es6-object-assign@npm:1.1.0" + checksum: 10/396c30376c89e91b5435f177ff83ba0d5ba265e3583cbaaa3bce185df08bf87db58c6d5d84600634280cbf35f8f342569b6ab776d728a12e177e5db82f5b6e2f + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10/6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10/9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10/47719a65b2888b4586e3fa93769068b275961c13089e90d5d01a96a6e8e95871b1c3893576814c8fbf08a4a31a496f37e7b2c937cf231270f4d81de012832c7c + languageName: node + linkType: hard + +"eslint-config-prettier@npm:8.8.0": + version: 8.8.0 + resolution: "eslint-config-prettier@npm:8.8.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10/3638144cecada897105ff9442bc85aba71c4f44d7d25b576cb34d50a207f6655f7cc55e729aad1a934a9f15e55c88e7adcbd1067d6582325fc89864c879b52f1 + languageName: node + linkType: hard + +"eslint-plugin-deprecation@npm:^2.0.0": + version: 2.0.0 + resolution: "eslint-plugin-deprecation@npm:2.0.0" + dependencies: + "@typescript-eslint/utils": "npm:^6.0.0" + tslib: "npm:^2.3.1" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: ^4.2.4 || ^5.0.0 + checksum: 10/810276afa258155a35c863bb2138ebd2132447c3ed219e360915b0e7b4c6e77e09ae2931583d200b1f23e19040a27ad81c0927538a46392334bb4c3c4a2038b4 + languageName: node + linkType: hard + +"eslint-plugin-jsdoc@npm:46.8.2": + version: 46.8.2 + resolution: "eslint-plugin-jsdoc@npm:46.8.2" + dependencies: + "@es-joy/jsdoccomment": "npm:~0.40.1" + are-docs-informative: "npm:^0.0.2" + comment-parser: "npm:1.4.0" + debug: "npm:^4.3.4" + escape-string-regexp: "npm:^4.0.0" + esquery: "npm:^1.5.0" + is-builtin-module: "npm:^3.2.1" + semver: "npm:^7.5.4" + spdx-expression-parse: "npm:^3.0.1" + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: 10/240c92f4ca3dccabf9606e5df53fe08b1c5ad99a72ec3f9fd4a166bb3ca00505f8989745cca99e95e75e7d040998e94d3100b5b42dc57a69ee9135f7cd54ae55 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:4.6.0": + version: 4.6.0 + resolution: "eslint-plugin-react-hooks@npm:4.6.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10/3c63134e056a6d98d66e2c475c81f904169db817e89316d14e36269919e31f4876a2588aa0e466ec8ef160465169c627fe823bfdaae7e213946584e4a165a3ac + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.33.2": + version: 7.33.2 + resolution: "eslint-plugin-react@npm:7.33.2" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flatmap: "npm:^1.3.1" + array.prototype.tosorted: "npm:^1.1.1" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.12" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.6" + object.fromentries: "npm:^2.0.6" + object.hasown: "npm:^1.1.2" + object.values: "npm:^1.1.6" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.4" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.8" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10/cb8c5dd5859cace330e24b7d74b9c652c0d93ef1d87957261fe1ac2975c27c918d0d5dc607f25aba4972ce74d04456f4f93883a16ac10cd598680d047fc3495d + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10/c541ef384c92eb5c999b7d3443d80195fcafb3da335500946f6db76539b87d5826c8f2e1d23bf6afc3154ba8cd7c8e566f8dc00f1eea25fdf3afc8fb9c87b238 + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b + languageName: node + linkType: hard + +"eslint-webpack-plugin@npm:^4.0.1": + version: 4.2.0 + resolution: "eslint-webpack-plugin@npm:4.2.0" + dependencies: + "@types/eslint": "npm:^8.56.10" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.5" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.2.0" + peerDependencies: + eslint: ^8.0.0 || ^9.0.0 + webpack: ^5.0.0 + checksum: 10/061d11a93832b82bd0362d6c546f51fe5e3a0eb811374b86536a2929ff46fea7e5ef30e32f0d3194b9da146a7c0ae43f13b2ec5ce0f65a9ca9c4d961d9e446b3 + languageName: node + linkType: hard + +"eslint@npm:8.52.0": + version: 8.52.0 + resolution: "eslint@npm:8.52.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.2" + "@eslint/js": "npm:8.52.0" + "@humanwhocodes/config-array": "npm:^0.11.13" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10/01784ab15351d749bc95446039ed7acd5124f7cc84acdbf98c7199272eae06212a8f3ea4a9b47e7cc54ab17ca094c3a664bbfc3002c7de27936220e278b5028a + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb + languageName: node + linkType: hard + +"esquery@npm:^1.4.2, esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10/44ffcd89e714ea6b30143e7f119b104fc4d75e77ee913f34d59076b40ef2d21967f84e019f84e1fd0465b42cdbf725db449f232b5e47f29df29ed76194db8e16 + languageName: node + linkType: hard + +"esrever@npm:^0.2.0": + version: 0.2.0 + resolution: "esrever@npm:0.2.0" + bin: + esrever: bin/esrever + checksum: 10/be83b1d878930bab3227881b96b1b02b534ad48f8761fd1f41c521cfe1804be16b2af0ac9312eb78d1fd80a96f7336e0ef3e8f5d571d86f631e3be4b5e2dec5b + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10/3f67ad02b6dbfaddd9ea459cf2b6ef4ecff9a6082a7af9d22e445b9abc082ad9ca47e1825557b293fcdae477f4714e561123e30bb6a5b2f184fb2bad4a9497eb + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb + languageName: node + linkType: hard + +"eventemitter3@npm:5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10/ac6423ec31124629c84c7077eed1e6987f6d66c31cf43c6fcbf6c87791d56317ce808d9ead483652436df171b526fc7220eccdc9f3225df334e81582c3cf7dd5 + languageName: node + linkType: hard + +"events@npm:^3.2.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10/a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10/8ada91f2d70f7dff702c861c2c64f21dfdc1525628f3c0454fd6f02fce65f7b958616cbd2b99ca7fa4d474e461a3d363824e91b3eb881705231abbf387470597 + languageName: node + linkType: hard + +"exenv@npm:^1.2.2": + version: 1.2.2 + resolution: "exenv@npm:1.2.2" + checksum: 10/6840185e421394bcb143debb866d31d19c3e4a4bca87d2f319d68d61afff353b3c678f2eb389e3b98ab9aecbec19f6bebbdc4193984378af0a3366c498a7efc8 + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/63f97bc51f56a491950fb525f9ad94f1916e8a014947f8d8445d3847a665b5471b768522d659f5e865db20b6c2033d2ac10f35fcbd881a4d26407a4f6f18451a + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10/2d9bbb6473de7051f96790d5f9a678f32e60ed0aa70741dc7fdc96fec8d631124ec3374ac144387604f05afff9500f31a1d45bd9eee4cdc2e4f9ad2d9b9d5dbd + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1 + languageName: node + linkType: hard + +"fast-shallow-equal@npm:^1.0.0": + version: 1.0.0 + resolution: "fast-shallow-equal@npm:1.0.0" + checksum: 10/ae89318ce43c0c46410d9511ac31520d59cfe675bad3d0b1cb5f900b2d635943d788b8370437178e91ae0d0412decc394229c03e69925ade929a8c02da241610 + languageName: node + linkType: hard + +"fast-uri@npm:^3.0.1": + version: 3.0.2 + resolution: "fast-uri@npm:3.0.2" + checksum: 10/99224f0198e24a4072b9a8a25fc5fa553aa0153e00d29d41272096a6d97be417c9faa5978682868cbba46b09066dc9348563c7244057f3818067e7737db153b2 + languageName: node + linkType: hard + +"fast_array_intersect@npm:1.1.0": + version: 1.1.0 + resolution: "fast_array_intersect@npm:1.1.0" + checksum: 10/94a6d062cd5564d1614d73b23a0196b0fd1da57f16616721a8c0f2ab5cab7a5fe650b0f260bd4541143c53e9124b17ab7bd020679e69e29f39dc533df66e5e32 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10/ee85d33b5cef592033f70e1c13ae8624055950b4eb832435099cd56aa313d7f251b873bedbc06a517adfaff7b31756d139535991e2406967438e03a1bf1b008e + languageName: node + linkType: hard + +"fastest-stable-stringify@npm:^2.0.2": + version: 2.0.2 + resolution: "fastest-stable-stringify@npm:2.0.2" + checksum: 10/41bb381c0eab1419eb353658c0d78cb79a4e99ef8f53ec5d36b131f076e62ff3cdca6d22888640c55ea3382ae2c93d8629a67f5734655442976708448a8c2500 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69 + languageName: node + linkType: hard + +"faye-websocket@npm:~0.10.0": + version: 0.10.0 + resolution: "faye-websocket@npm:0.10.0" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10/f913f886e5b2218ab0aa5cdb527e0a8f91eb66b4ecf989f4d2b5df39b2ad1ce9bf88e9459392d313ec6658fedb82760dda79050bdfe1c7eb3f1aa8b737f3c400 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10/4f95d336fb805786759e383fd7fff342ceb7680f53efcc0ef82f502eb479ce35b98e8b207b6dfdfeea0eba845862107dc73813775fc6b56b3098c6e90a2dad77 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + languageName: node + linkType: hard + +"file-selector@npm:^0.6.0": + version: 0.6.0 + resolution: "file-selector@npm:0.6.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10/6add4098ae07fd1e9050b1e8d3fd9f128680c1d6648c0676af54ace4586e6e5bfcb8fdfa45b69e9131ffd8175bf630d54a445a5facf9be244f85b99ce309183e + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea + languageName: node + linkType: hard + +"filter-obj@npm:^5.1.0": + version: 5.1.0 + resolution: "filter-obj@npm:5.1.0" + checksum: 10/8f6dab6d8d8855f686e8cc6be289bbbd64a80be52c660124e36e982f78017cf5dae7de95f79ec167fbf62101d6aab93067a3105ae8f56251785a721e678d6b07 + languageName: node + linkType: hard + +"find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "find-root@npm:1.1.0" + checksum: 10/caa799c976a14925ba7f31ca1a226fe73d3aa270f4f1b623fcfeb1c6e263111db4beb807d8acd31bd4d48d44c343b93688a9288dfbccca27463c36a0301b0bb9 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10/02381c6ece5e9fa5b826c9bbea481d7fd77645d96e4b0b1395238124d581d10e56f17f723d897b6d133970f7a57f0fab9148cbbb67237a0a0ffe794ba60c0c70 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.1 + resolution: "flatted@npm:3.3.1" + checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10/e3a60480f3a09b12273ce2c5fcb9514d98dd0e528f58656a1b04680225f918d60a2f81f6a368f2f3b937fcee9cfc0cbf16f1ad9a0bc6a3a6e103a84c9a90087e + languageName: node + linkType: hard + +"fork-ts-checker-webpack-plugin@npm:^8.0.0": + version: 8.0.0 + resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" + dependencies: + "@babel/code-frame": "npm:^7.16.7" + chalk: "npm:^4.1.2" + chokidar: "npm:^3.5.3" + cosmiconfig: "npm:^7.0.1" + deepmerge: "npm:^4.2.2" + fs-extra: "npm:^10.0.0" + memfs: "npm:^3.4.1" + minimatch: "npm:^3.0.4" + node-abort-controller: "npm:^3.0.1" + schema-utils: "npm:^3.1.1" + semver: "npm:^7.3.5" + tapable: "npm:^2.2.1" + peerDependencies: + typescript: ">3.6.0" + webpack: ^5.11.0 + checksum: 10/49be81a780271b0e1f8c230c32ddb54d7e7ca562565b29811a94d5e679607b947850b133c3bb63057a71e67ac717c6c86c6d0390d1ecc885b506ae9158cf9bb5 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 + languageName: node + linkType: hard + +"fs-extra@npm:^10.0.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10/05ce2c3b59049bcb7b52001acd000e44b3c4af4ec1f8839f383ef41ec0048e3cfa7fd8a637b1bddfefad319145db89be91f4b7c1db2908205d38bf91e7d1d3b7 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/af143246cf6884fe26fa281621d45cfe111d34b30535a475bfa38dafe343dadb466c047a924ffc7d6b7b18265df4110224ce3803806dbb07173bf2087b648d7f + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.6 + resolution: "fs-monkey@npm:1.0.6" + checksum: 10/a0502a23aa0b467f671cd5c7f989ff48611cce1f23deb8f6924862b49234ff37de6828f739a4f2c1acf8f20e80cb426bf6a9d135c401f3df1e7089b7de04c815 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10/185e20d20f10c8d661d59aac0f3b63b31132d492e1b11fcc2a93cb2c47257ebaee7407c38513efd2b35cafdf972d9beb2ea4593c1e0f3bf8f2744836928d7454 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10/4d40be44d4609942e4e90c4fff77a811fa936f4985d92d2abfcf44f673ba344e2962bf223a33101f79c1a056465f36f09b072b9c289d7660ca554a12491cd5a2 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd + languageName: node + linkType: hard + +"geotiff@npm:^2.0.7": + version: 2.1.3 + resolution: "geotiff@npm:2.1.3" + dependencies: + "@petamoriken/float16": "npm:^3.4.7" + lerc: "npm:^3.0.0" + pako: "npm:^2.0.4" + parse-headers: "npm:^2.0.2" + quick-lru: "npm:^6.1.1" + web-worker: "npm:^1.2.0" + xml-utils: "npm:^1.0.2" + zstddec: "npm:^0.1.0" + checksum: 10/91475680b882c11e6c28b4538c8703da03a13fa1b3f8f9d456aa3b274cb71fb01f04aadb29006c3a607c20b724b936a95899ad8ef65d26a11eed59ba9f81c61f + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10/b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + languageName: node + linkType: hard + +"get-document@npm:1": + version: 1.0.0 + resolution: "get-document@npm:1.0.0" + checksum: 10/94312db44ea9d070cca8cc14272582d04c7638494d6b5c9c0d6f1d949ef2605b4102ee52f0ded11e571357aba45e9fcc98a5b0467d61e4943a66002167eb6e7a + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10/bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10/781266d29725f35c59f1d214aedc92b0ae855800a980800e2923b3fbc4e56b3cb6e462c42e09a1cf1a00c64e056a78fa407cbe06c7c92b7e5cd49b4b85c2a497 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10/e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + languageName: node + linkType: hard + +"get-user-locale@npm:^2.2.1": + version: 2.3.2 + resolution: "get-user-locale@npm:2.3.2" + dependencies: + mem: "npm:^8.0.0" + checksum: 10/58c1dd99b803731238640181335fc86b0bb27ed7fcec39233f1fdbee8a2d98bea44c9897e0d0f4f78b1b40c82d26449f82b1823e320c796bb5974198aa8cdde2 + languageName: node + linkType: hard + +"get-window@npm:^1.1.1": + version: 1.1.2 + resolution: "get-window@npm:1.1.2" + dependencies: + get-document: "npm:1" + checksum: 10/728b0be1e5eb3dde5180881e3a6a8810d25bc074e9d321a5fad9a60b7853f9e293e8eb30e57d9a6e98826d921db4c8fecf0700fc4785e3bdc252d9d75f0903c5 + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10/9009529195a955c40d7b9690794aeff5ba665cc38f1519e111c58bb54366fd0c106bde80acf97ba4e533208eb53422c83b136611a54c5fefb1edd8dc267cb62e + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.2.7, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10/62c5b1997d06674fc7191d3e01e324d3eda4d65ac9cc4e78329fa3b5c4fd42a0e1c8722822497a6964eee075255ce21ccf1eec2d83f92ef3f06653af4d0ee28e + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10/1f1fd078fb2f7296306ef9dd51019491044ccf17a59ed49d375b576ca108ff37e47f3d29aead7add40763574a992f16a5367dd1e2173b8634ef18556ab719ac4 + languageName: node + linkType: hard + +"globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10/288e95e310227bbe037076ea81b7c2598ccbc3122d87abc6dab39e1eec309aa14f0e366a98cdc45237ffcfcbad3db597778c0068217dcb1950fef6249104e1b1 + languageName: node + linkType: hard + +"globby@npm:^13.1.1": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.3.0" + ignore: "npm:^5.2.4" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10/4494a9d2162a7e4d327988b26be66d8eab87d7f59a83219e74b065e2c3ced23698f68fb10482bf9337133819281803fb886d6ae06afbb2affa743623eb0b1949 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10/6dd60dba97007b21e3a829fab3f771803cc1292977fe610e240ea72afd67e5690ac9eeaafc4a99710e78962e5936ab5a460787c2a1180f1cb0ccfac37d29f897 + languageName: node + linkType: hard + +"harmony-reflect@npm:^1.4.6": + version: 1.6.2 + resolution: "harmony-reflect@npm:1.6.2" + checksum: 10/69d30ebfb5dbd6ff0553725c7922404cf1dfe5390db1618298eed27fe6c9bd2f3f677727e9da969d21648f4a6a39041e2f46e99976be4385f9e34bac23058cd4 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10/4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10/7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a + languageName: node + linkType: hard + +"highlight-words-core@npm:^1.2.0": + version: 1.2.2 + resolution: "highlight-words-core@npm:1.2.2" + checksum: 10/6a5364ad8cce0107a387d3f43374f5814fb586cc155b282196bc2b9ce1c25aa9a8b76e8ab04d0c29428403a48225cad8280e00b8adbb6b02e05e3a6ab7ee2ef3 + languageName: node + linkType: hard + +"history@npm:4.10.1, history@npm:^4.9.0": + version: 4.10.1 + resolution: "history@npm:4.10.1" + dependencies: + "@babel/runtime": "npm:^7.1.2" + loose-envify: "npm:^1.2.0" + resolve-pathname: "npm:^3.0.0" + tiny-invariant: "npm:^1.0.2" + tiny-warning: "npm:^1.0.0" + value-equal: "npm:^1.0.1" + checksum: 10/042373f69dad6419a4d551b995ef40f449a8854775a1157c4e9f077ee39aea6ca7ed8f45ec3e1762ef1891357a724d17dad11f2fe7d0edeebcbcf9f48ed3e4d4 + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:3.3.2, hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10/1acbe85f33e5a39f90c822ad4d28b24daeb60f71c545279431dc98c312cd28a54f8d64788e477fe21dc502b0e3cf58589ebe5c1ad22af27245370391c2d24ea6 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: "npm:^2.0.0" + checksum: 10/707a812ec2acaf8bb5614c8618dc81e2fb6b4399d03e95ff18b65679989a072f4e919b9bef472039301a1bbfba64063ba4c79ea6e851c653ac9db80dbefe8fe5 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 + languageName: node + linkType: hard + +"html-parse-stringify@npm:^3.0.1": + version: 3.0.1 + resolution: "html-parse-stringify@npm:3.0.1" + dependencies: + void-elements: "npm:3.1.0" + checksum: 10/8743b76cc50e46d1956c1ad879d18eb9613b0d2d81e24686d633f9f69bb26b84676f64a926973de793cca479997017a63219278476d617b6c42d68246d7c07fe + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10/362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10/2a78a567ee6366dae0129d819b799dce1f95ec9732c5ab164a78ee69804ffb984abfa0660274e94e890fc54af93546eb9f12b6d10edbaed017e2d41c29b7cf29 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10/5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10/d062acfa0cb82beeb558f1043c6ba770ea892b5fb7b28654dbc70ea2aeea55226dd34c02a294f6c1ca179a5aa483c4ea641846821b182edbd9cc5d89b54c6848 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.5 + resolution: "https-proxy-agent@npm:7.0.5" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10/6679d46159ab3f9a5509ee80c3a3fc83fba3a920a5e18d32176c3327852c3c00ad640c0c4210a8fd70ea3c4a6d3a1b375bf01942516e7df80e2646bdc77658ab + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10/df59be9e0af479036798a881d1f136c4a29e0b518d4abb863afbd11bf30efa3eeb1d0425fc65942dcc05ab3bf40205ea436b0ff389f2cd20b75b8643d539bf86 + languageName: node + linkType: hard + +"hyphenate-style-name@npm:^1.0.3": + version: 1.1.0 + resolution: "hyphenate-style-name@npm:1.1.0" + checksum: 10/b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 + languageName: node + linkType: hard + +"i18next-browser-languagedetector@npm:^7.0.2": + version: 7.2.1 + resolution: "i18next-browser-languagedetector@npm:7.2.1" + dependencies: + "@babel/runtime": "npm:^7.23.2" + checksum: 10/20c93cbd23d62703e12268ec24679a91743cb6d652a6e83e6a102b2ecb8f79542821046a7f8f567a93fabfdc5cd9353dc7f3050c9c48948fe2ae0640d859a0dd + languageName: node + linkType: hard + +"i18next@npm:^23.0.0": + version: 23.15.2 + resolution: "i18next@npm:23.15.2" + dependencies: + "@babel/runtime": "npm:^7.23.2" + checksum: 10/ed14a290ba8e761a06b6a6ce5e608861f367eb0806fa1b4eb77494340502ad20491748ab2b27423ba186f5602b89cbcb87565683a03443d0368cd4b182ae6ef9 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10/5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + languageName: node + linkType: hard + +"identity-obj-proxy@npm:3.0.0": + version: 3.0.0 + resolution: "identity-obj-proxy@npm:3.0.0" + dependencies: + harmony-reflect: "npm:^1.4.6" + checksum: 10/66fe4d2ffc67655174f6abe100ab3b36d2f5e4de5b28a7c3121e5f51bd4e7c8c1bee4f9a41ce0586ace57fb63bfedbfc39508b7cb43b9e3ed6dc42f762158b4e + languageName: node + linkType: hard + +"ieee754@npm:^1.1.12": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 + languageName: node + linkType: hard + +"immutable@npm:4.3.7, immutable@npm:^4.0.0": + version: 4.3.7 + resolution: "immutable@npm:4.3.7" + checksum: 10/37d963c5050f03ae5f3714ba7a43d469aa482051087f4c65d673d1501c309ea231d87480c792e19fa85e2eaf965f76af5d0aa92726505f3cfe4af91619dfb80b + languageName: node + linkType: hard + +"import-fresh@npm:^3.1.0": + version: 3.2.1 + resolution: "import-fresh@npm:3.2.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10/caef42418a087c3951fb676943a7f21ba8971aa07f9b622dff4af7edcef4160e1b172dccd85a88d7eb109cf41406a4592f70259e6b3b33aeafd042bb61f81d96 + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10/2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10/0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 + languageName: node + linkType: hard + +"imports-loader@npm:^5.0.0": + version: 5.0.0 + resolution: "imports-loader@npm:5.0.0" + dependencies: + source-map-js: "npm:^1.0.2" + strip-comments: "npm:^2.0.1" + peerDependencies: + webpack: ^5.0.0 + checksum: 10/b507436b7d2c7a6d6d8623b93b5a0fda2d13c48d4d0f310b74b8465c080d9fd07a2f8d0f896e264b4feff59effa9aef736a2b668d7a695cecd8bdc7cb817373e + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10/cd3f5cbc9ca2d624c6a1f53f12e6b341659aba0e2d3254ae2b4464aaea8b4294cdb09616abbc59458f980531f2429784ed6a420d48d245bcad0811980c9efae9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 + languageName: node + linkType: hard + +"inline-style-prefixer@npm:^7.0.1": + version: 7.0.1 + resolution: "inline-style-prefixer@npm:7.0.1" + dependencies: + css-in-js-utils: "npm:^3.1.0" + checksum: 10/a430c962693f32a36bcec0124c9798bcf3725bb90468d493108c0242446a9cc92ff1967bdf99b6ce5331e7a9b75e6836bc9ba1b3d4756876b8ef48036acb2509 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10/3e66720508831153ecf37d13def9f6856f9f2960989ec8a0a0476c98f887fca9eff0163127466485cb825c900c2d6fc601aa9117b7783b90ffce23a71ea5d053 + languageName: node + linkType: hard + +"internmap@npm:1 - 2": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 10/873e0e7fcfe32f999aa0997a0b648b1244508e56e3ea6b8259b5245b50b5eeb3853fba221f96692bd6d1def501da76c32d64a5cb22a0b26cdd9b445664f805e0 + languageName: node + linkType: hard + +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 10/bc9e11126949c4e6ff49b0b819e923a9adc8e8bf3f9d4f2d782de6d5f592774f6fee4457c10bd08c6a2146b4baee460ccb242c99e5397defa9c846af0d00505a + languageName: node + linkType: hard + +"intl-messageformat@npm:^10.1.0": + version: 10.5.14 + resolution: "intl-messageformat@npm:10.5.14" + dependencies: + "@formatjs/ecma402-abstract": "npm:2.0.0" + "@formatjs/fast-memoize": "npm:2.2.0" + "@formatjs/icu-messageformat-parser": "npm:2.7.8" + tslib: "npm:^2.4.0" + checksum: 10/01692e92671b00d2423a7db405e6bb8e42bea52445dec931abaa8a8c47e3a7da17dddd3cd0faa33cb6a614370ea230b2c3980ae106cafa8b760e50ac4db0952f + languageName: node + linkType: hard + +"invariant@npm:^2.2.2": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10/cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10/1ed81e06721af012306329b31f532b5e24e00cb537be18ddc905a84f19fe8f83a09a1699862bf3a1ec4b9dea93c55a3fa5faf8b5ea380431469df540f38b092c + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10/34a26213d981d58b30724ef37a1e0682f4040d580fa9ff58fdfdd3cefcb2287921718c63971c1c404951e7b747c50fdc7caf6e867e951353fa71b369c04c969b + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10/73ced84fa35e59e2c57da2d01e12cd01479f381d7f122ce41dcbb713f09dbfc651315832cd2bf8accba7681a69e4d6f1e03941d94dd10040d415086360e7005e + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10/2cf336fbf8cba3badcf526aa3d10384c30bab32615ac4831b74492eb4e843ccb7d8439a119c27f84bcf217d72024e611b1373f870f433b48f3fa57d3d1b863f1 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e + languageName: node + linkType: hard + +"is-builtin-module@npm:^3.2.1": + version: 3.2.1 + resolution: "is-builtin-module@npm:3.2.1" + dependencies: + builtin-modules: "npm:^3.3.0" + checksum: 10/e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0": + version: 2.15.1 + resolution: "is-core-module@npm:2.15.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10/77316d5891d5743854bcef2cd2f24c5458fb69fbc9705c12ca17d54a2017a67d0693bbf1ba8c77af376c0eef6bf6d1b27a4ab08e4db4e69914c3789bdf2ceec5 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-view@npm:1.0.1" + dependencies: + is-typed-array: "npm:^1.1.13" + checksum: 10/4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10/1b8e9e1bf2075e862315ef9d38ce6d39c43ca9d81d46f73b34473506992f4b0fbaadb47ec9b420a5e76afe3f564d9f1f0d9b552ef272cc2395e0f21d743c9c29 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10/44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 + languageName: node + linkType: hard + +"is-hotkey@npm:0.1.4": + version: 0.1.4 + resolution: "is-hotkey@npm:0.1.4" + checksum: 10/c718add99354cf448d5875f2f58e4770d8993f480a4cbd48585ab13eb590422474b1bf320246152a94b938dc9d88ce79353bac882887a64b1f47c3ecda536c00 + languageName: node + linkType: hard + +"is-hotkey@npm:0.2.0": + version: 0.2.0 + resolution: "is-hotkey@npm:0.2.0" + checksum: 10/d3d42026e70ea796fb9af8345e511de4b90eed55765eb67db8695f83e60bac8566ace16b191c08c7f6fab36c9318133a9f1c19eb9e5f8ce528d8a433e4b41190 + languageName: node + linkType: hard + +"is-in-browser@npm:^1.1.3": + version: 1.1.3 + resolution: "is-in-browser@npm:1.1.3" + checksum: 10/f7411dbea0875ac609a794e28a545d654331e2a51f42a8c1629abbedf21ecb642ca726a4a9c8be28f9854990a764693483652b65612ccf7b5bc68aa4657e9a26 + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + languageName: node + linkType: hard + +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb + languageName: node + linkType: hard + +"is-nan@npm:^1.2.1": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10/1f784d3472c09bc2e47acba7ffd4f6c93b0394479aa613311dc1d70f1bfa72eb0846c81350967722c959ba65811bae222204d6c65856fdce68f31986140c7b0e + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10/2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10/ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 + languageName: node + linkType: hard + +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "is-shared-array-buffer@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 10/bc5402900dc62b96ebb2548bf5b0a0bcfacc2db122236fe3ab3b3e3c884293a0d5eb777e73f059bcbf8dc8563bb65eae972fee0fb97e38a9ae27c8678f62bcfe + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10/b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10/f850ba08286358b9a11aee6d93d371a45e3c59b5953549ee1c1a9a55ba5c1dd1bd9952488ae194ad8f32a9cf5e79c8fa5f0cc4d78c00720aa0bbcf238b38062d + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 10/40159582ff1b44fc40085f631baf19f56479b05af2faede65b4e6a0b6acab745c13fd070e35b475aafd8a1ee50879ba5a3f1265125b46bebdb446b6be1f62165 + languageName: node + linkType: hard + +"is-window@npm:^1.0.2": + version: 1.0.2 + resolution: "is-window@npm:1.0.2" + checksum: 10/aeaacd2ca816d38d4e2fba4670158fba2190061f28a61c5d84df7c479abf8897b8cb634d22cb76cdf7805035e95bebd430faaab6231ac2ebc814eae02d2c8fd4 + languageName: node + linkType: hard + +"isarray@npm:0.0.1": + version: 0.0.1 + resolution: "isarray@npm:0.0.1" + checksum: 10/49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10/1d8bc7911e13bb9f105b1b3e0b396c787a9e63046af0b8fe0ab1414488ab06b2b099b87a2d8a9e31d21c9a6fad773c7fc8b257c4880f2d957274479d28ca3414 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10/7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e + languageName: node + linkType: hard + +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10/db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + languageName: node + linkType: hard + +"isomorphic-base64@npm:^1.0.2": + version: 1.0.2 + resolution: "isomorphic-base64@npm:1.0.2" + checksum: 10/68780627db2382bffa847990fab4f0c1aee8a89dae4acd69aa423c9de46f51ca04a1ed216eb656b33c676eb4696b177fe4379f2cbe05ccb6e6699c01db83dfa5 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10/bbc4496c2f304d799f8ec22202ab38c010ac265c441947f075c0f7d46bd440b45c00e46017cf9053453d42182d768b1d6ed0e70a142c95ab00df9843aa5ab80e + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10/aa5271c0008dfa71b6ecc9ba1e801bf77b49dc05524e8c30d58aaf5b9505e0cd12f25f93165464d4266a518c5c75284ecb598fbd89fec081ae77d2c9d3327695 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10/86a83421ca1cf2109a9f6d193c06c31ef04a45e72a74579b11060b1e7bb9b6337a4e6f04abfb8857e2d569c271273c65e855ee429376a0d7c91ad91db42accd1 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10/f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10/b5013967ad8f28c9ca1be8e159eb10f591b8e46deae87476fe39d668c04374fe9158c815e8b6d2f45885b0a3fd842a8ba13f497ec762b3a0eff49bec278670b1 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10/96f8786eaab98e4bf5b2a5d6d9588ea46c4d06bbc4f2eb861fdd7b6b182b16f71d8a70e79820f335d52653b16d4843b29dd9cdcf38ae80406756db9199497cf3 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/6f3a7eb9cd9de5ea9e5aa94aed535631fa6f80221832952839b3cb59dd419b91c20b73887deb0b62230d06d02d6b6cf34ebb810b88d904bb4fe1e2e4f0905c98 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:^29.5.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/jsdom": "npm:^20.0.0" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jsdom: "npm:^20.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10/23bbfc9bca914baef4b654f7983175a4d49b0f515a5094ebcb8f819f28ec186f53c0ba06af1855eac04bab1457f4ea79dae05f70052cf899863e8096daa6e0f5 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10/8531b42003581cb18a69a2774e68c456fb5a5c3280b1b9b77475af9e346b6a457250f9d756bfeeae2fe6cbc9ef28434c205edab9390ee970a919baddfa08bb85 + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10/cb19a3948256de5f922d52f251821f99657339969bf86843bd26cf3332eae94883e8260e3d2fba46129a27c3971c1aa522490e460e16c7fad516e82d10bbf9f8 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10/30d58af6967e7d42bd903ccc098f3b4d3859ed46238fbc88d4add6a3f10bea00c226b93660285f058bc7a65f6f9529cf4eb80f8d4707f79f9e3a23686b4ab8f3 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10/8ee1163666d8eaa16d90a989edba2b4a3c8ab0ffaa95ad91b08ca42b015bfb70e164b247a5b17f9de32d096987cada63ed8491ab82761bfb9a28bc34b27ae161 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10/06c6e2a84591d9ede704d5022fc13791e8876e83397c89d481b0063332abbb64c0f01ef4ca7de520b35c7a1058556078d6bdc3631376f4e9ffb42316c1a8488e + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10/364cbaef00d8a2729fc760227ad34b5e60829e0869bd84976bdfbd8c0d0f9c2f22677b3e6dd8afa76ed174765351cd12bae3d4530c62eefb3791055127ca9745 + languageName: node + linkType: hard + +"jest@npm:^29.5.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a + languageName: node + linkType: hard + +"jquery@npm:3.7.1": + version: 3.7.1 + resolution: "jquery@npm:3.7.1" + checksum: 10/17be9929f5fa37697d9848284f0d108c543318ef79ec794e130cd0c49f6c050d60c803a69e8cfa16fa19f5ff7cdb814a6905cceab0831186560c65ed113cd579 + languageName: node + linkType: hard + +"js-cookie@npm:^2.2.1": + version: 2.2.1 + resolution: "js-cookie@npm:2.2.1" + checksum: 10/4387f5f5691cb96ca9ff8852c589d3012b53f484fda68630a39e20cabc6c5b740f09225e23233ba56cd9de6ebe300a23d20b2c7315f10c309ad5a89fd8c4990b + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10/bebe7ae829bbd586ce8cbe83501dd8cb8c282c8902a8aeeed0a073a89dc37e8103b1244f3c6acd60278bcbfe12d93a3f83c9ac396868a3b3bbc3c5e5e3b648ef + languageName: node + linkType: hard + +"jsdoc-type-pratt-parser@npm:~4.0.0": + version: 4.0.0 + resolution: "jsdoc-type-pratt-parser@npm:4.0.0" + checksum: 10/a225ab874e56612730dd6c0466ce9f09e8a0e7d85896e9e5f0fa53cfb2e897128a7ec702fd99ed3854b3fbf5a89ad6dce72ca4f4f6149da69f130c2874f06b75 + languageName: node + linkType: hard + +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: "npm:^2.0.6" + acorn: "npm:^8.8.1" + acorn-globals: "npm:^7.0.0" + cssom: "npm:^0.5.0" + cssstyle: "npm:^2.3.0" + data-urls: "npm:^3.0.2" + decimal.js: "npm:^10.4.2" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.2" + parse5: "npm:^7.1.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + ws: "npm:^8.11.0" + xml-name-validator: "npm:^4.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10/a4cdcff5b07eed87da90b146b82936321533b5efe8124492acf7160ebd5b9cf2b3c2435683592bf1cffb479615245756efb6c173effc1906f845a86ed22af985 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10/8e5a7de6b70a8bd71f9cb0b5a7ade6a73ae6ab55e697c74cc997cede97417a3a65ed86c36f7dd6125fe49766e8386c845023d9e213916ca92c9dfdd56e2babf3 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.1": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10/5553232045359b767b0f2039a6777fede1a8d7dca1a0ffb1f9ef73a7519489ae7f566b2e040f2b4c38edb8e35e37ae07af7f0a52420902f869ee0dbf5dc6c784 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10/5f3a99009ed5f2a5a67d06e2f298cc97bc86d462034173308156f15b43a6e850be8511dc204b9b94566305da2947f7d90289657237d210351a39059ff9d666cf + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10/12786c2e2f22c27439e6db0532ba321f1d0617c27ad8cb1c352a0e9249a50182fd1ba8b52a18899291604b0c32eafa8afd09e51203f19109a0537f68db2b652d + languageName: node + linkType: hard + +"json-stringify-pretty-compact@npm:^2.0.0": + version: 2.0.0 + resolution: "json-stringify-pretty-compact@npm:2.0.0" + checksum: 10/08f2725eef0a37bfd554aaa1ce551bc973e13f2c3dc86dd40b10ae6c08b3851b84946db672877e994e1fd1d904a578941c176609864e4f1a48b6d8f51fc2ac5f + languageName: node + linkType: hard + +"json5@npm:^2.2.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da + languageName: node + linkType: hard + +"jsonc-parser@npm:^3.2.0": + version: 3.3.1 + resolution: "jsonc-parser@npm:3.3.1" + checksum: 10/9b0dc391f20b47378f843ef1e877e73ec652a5bdc3c5fa1f36af0f119a55091d147a86c1ee86a232296f55c929bba174538c2bf0312610e0817a22de131cc3f4 + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10/03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10/b61d44613687dfe4cc8ad4b4fbf3711bf26c60b8d5ed1f494d723e0808415c59b24a7c0ed8ab10736a40ff84eef38cbbfb68b395e05d31117b44ffc59d31edfc + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10/0c0ecaf00a5c6173d25059c7db2113850b5457016dfa1d0e3ef26da4704fbb186b4938d7611246d86f0ddf1bccf26828daa5877b1f232a65e7373d0122a83e7f + languageName: node + linkType: hard + +"klona@npm:^2.0.6": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10/ed7e2c9af58cb646e758e60b75dec24bf72466066290f78c515a2bae23a06fa280f11ff3210c43b94a18744954aa5358f9d46583d5e4c36da073ecc3606355c4 + languageName: node + linkType: hard + +"lerc@npm:^3.0.0": + version: 3.0.0 + resolution: "lerc@npm:3.0.0" + checksum: 10/25c9c259b2211ac252910bacd2a85310755d0291644c37ffcdbf96725465bf5fd22e61946172e7fb214ac4aafcbc2885e1016686079a5acddda97dcd000526ad + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10/638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10/2e4720ff79f21ae08d42374b0a5c2f664c5be8b6c8f565bb4e1315c96ed3a8acaa9de788ffed82d7f2378cf36958573de07ef92336cb5255ed74d08b8318c9ee + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.1.6 + resolution: "lines-and-columns@npm:1.1.6" + checksum: 10/198a5436b1fa5cf703bae719c01c686b076f0ad7e1aafd95a58d626cabff302dc0414822126f2f80b58a8c3d66cda8a7b6da064f27130f87e1d3506d6dfd0d68 + languageName: node + linkType: hard + +"livereload-js@npm:^2.3.0": + version: 2.4.0 + resolution: "livereload-js@npm:2.4.0" + checksum: 10/24866a41647d922a1002756d06961099bff945c2e6f2f3af35aa8e1ebd2610149fdc7dfe2104980c481e4c758620dff02a8dec11ec0bc1ef762993729b117504 + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10/555ae002869c1e8942a0efd29a99b50a0ce6c3296efea95caf48f00d7f6f7f659203ed6613688b6181aa81dc76de3e65ece43094c6dffef3127fe1a84d973cd3 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10/83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10/d0ea2dd0097e6201be083865d50c3fb54fbfbdb247d9cc5950e086c991f448b7ab0cdab0d57eacccb43473d3f2acd21e134db39f22dac2d6c9ba6bf26978e3d6 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 + languageName: node + linkType: hard + +"lodash@npm:^4.1.1, lodash@npm:^4.17.13, lodash@npm:^4.17.4": + version: 4.17.15 + resolution: "lodash@npm:4.17.15" + checksum: 10/e3e43ed2f66761ade761883ba7662b8ddd753e79632c0bd064facf3b9bb4dcd3f08c5bf05b6c6eea005505c87984027605e7106f02d705a64d972c4be302918f + languageName: node + linkType: hard + +"long@npm:^5.0.0": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 10/9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10/e86f0280e99a8d8cd4eef24d8601ddae15ce54e43ac9990dfcb79e1e081c255ad24424a30d78d2ad8e51a8ce82a66a930047fed4b4aa38c6f0b392ff9300edfc + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.1 + resolution: "make-fetch-happen@npm:13.0.1" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + proc-log: "npm:^4.2.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10/11bae5ad6ac59b654dbd854f30782f9de052186c429dfce308eda42374528185a100ee40ac9ffdc36a2b6c821ecaba43913e4730a12f06f15e895ea9cb23fa59 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10/4c66ddfc654537333da952c084f507fa4c30c707b1635344eb35be894d797ba44c901a9cebe914aa29a7f61357543ba09b09dddbd7f65b4aee756b450f169f40 + languageName: node + linkType: hard + +"map-age-cleaner@npm:^0.1.3": + version: 0.1.3 + resolution: "map-age-cleaner@npm:0.1.3" + dependencies: + p-defer: "npm:^1.0.0" + checksum: 10/cb2804a5bcb3cbdfe4b59066ea6d19f5e7c8c196cd55795ea4c28f792b192e4c442426ae52524e5e1acbccf393d3bddacefc3d41f803e66453f6c4eda3650bc1 + languageName: node + linkType: hard + +"mapbox-to-css-font@npm:^2.4.1": + version: 2.4.5 + resolution: "mapbox-to-css-font@npm:2.4.5" + checksum: 10/62179d67e5532e5522ce15f0dce94936ceb29c1872684850eaa2195d103cefb9e0a3f7ce16a855ed5caf4ed6d0f0baccd3f34c41e480b7ffdf0ed1824c0c1f40 + languageName: node + linkType: hard + +"marked-mangle@npm:1.1.9": + version: 1.1.9 + resolution: "marked-mangle@npm:1.1.9" + peerDependencies: + marked: ">=4 <15" + checksum: 10/745e44bea9b52bc9c52e41f5d2b146eb21072a92ddf85b4b2f210b091da93fcbf2f5447b02f849fd19e79224bdca385462a42b96882493778d1d0ff0a3da9a8c + languageName: node + linkType: hard + +"marked@npm:12.0.2": + version: 12.0.2 + resolution: "marked@npm:12.0.2" + bin: + marked: bin/marked.js + checksum: 10/24d4fc58d37c1779197fa7f93c504d8c71d4df54eb69cbbc14a55ba2a8e2ad83d723801fc25452c21ce74b38a483c5863c53449f130253a597be9e9c1d3e7e2b + languageName: node + linkType: hard + +"mdn-data@npm:2.0.14": + version: 2.0.14 + resolution: "mdn-data@npm:2.0.14" + checksum: 10/64c629fcf14807e30d6dc79f97cbcafa16db066f53a294299f3932b3beb0eb0d1386d3a7fe408fc67348c449a4e0999360c894ba4c81eb209d7be4e36503de0e + languageName: node + linkType: hard + +"mem@npm:^8.0.0": + version: 8.1.1 + resolution: "mem@npm:8.1.1" + dependencies: + map-age-cleaner: "npm:^0.1.3" + mimic-fn: "npm:^3.1.0" + checksum: 10/5f22117d8a24775f0a61d333bd7fdbe19f7a9f8dc8ccee66f57ba98aeb4ed67e83cc130c482b78fd6a39887547749d8fe376fc44ca7efa81579ad9d0c0fa5acd + languageName: node + linkType: hard + +"memfs@npm:^3.4.1": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: "npm:^1.0.4" + checksum: 10/7c9cdb453a6b06e87f11e2dbe6c518fd3c1c1581b370ffa24f42f3fd5b1db8c2203f596e43321a0032963f3e9b66400f2c3cf043904ac496d6ae33eafd0878fe + languageName: node + linkType: hard + +"memoize-one@npm:>=3.1.1 <6": + version: 5.2.1 + resolution: "memoize-one@npm:5.2.1" + checksum: 10/b7141dc148b5c6fdd51e77ecf0421fd2581681eb8756e0b3dfbd4fe765b5e2b5a6bc90214bb6f19a96b6aed44de17eda3407142a7be9e24ccd0774bbd9874d1b + languageName: node + linkType: hard + +"memoize-one@npm:^4.0.0": + version: 4.1.0 + resolution: "memoize-one@npm:4.1.0" + checksum: 10/846c410f5f6582eead6da37aaaf08d747c6f37de9dd0feaa244b2353818ffc1d7c9c93c4b9b09bc8c7e5963d60962db86da63e39ec940dedd355ba080c6dc7fc + languageName: node + linkType: hard + +"memoize-one@npm:^6.0.0": + version: 6.0.0 + resolution: "memoize-one@npm:6.0.0" + checksum: 10/28feaf7e9a870efef1187df110b876ce42deaf86c955f4111d72d23b96e44eed573469316e6ad0d2cc7fa3b1526978215617b126158015f957242c7493babca9 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10/6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"micro-memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "micro-memoize@npm:4.1.2" + checksum: 10/027e90c3147c97c07224440ea50ede27eb7d888149e4925820397b466d16efc525f5ec3981e4cadec3258a8d36dfd5e7e7c8e660879fbe2e47106785be9bc570 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10/d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a + languageName: node + linkType: hard + +"mimic-fn@npm:^3.1.0": + version: 3.1.0 + resolution: "mimic-fn@npm:3.1.0" + checksum: 10/f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10/bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 + languageName: node + linkType: hard + +"mini-create-react-context@npm:^0.4.0": + version: 0.4.1 + resolution: "mini-create-react-context@npm:0.4.1" + dependencies: + "@babel/runtime": "npm:^7.12.1" + tiny-warning: "npm:^1.0.3" + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10/c816c785b7dccd67fdfa6a5edc673363b11845b6abca8a9d9f3ffa74520266d979b56f5db0dfc62ed912a90553c15be28c816311fc9c7856ab66a81d461d50e6 + languageName: node + linkType: hard + +"minimatch@npm:9.0.3": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + languageName: node + linkType: hard + +"minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.5 + resolution: "minipass-fetch@npm:3.0.5" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10/c669948bec1373313aaa8f104b962a3ced9f45c49b26366a4b0ae27ccdfa9c5740d72c8a84d3f8623d7a61c5fc7afdfda44789008c078f61a62441142efc4a97 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.6": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2 + languageName: node + linkType: hard + +"moment-timezone@npm:0.5.45": + version: 0.5.45 + resolution: "moment-timezone@npm:0.5.45" + dependencies: + moment: "npm:^2.29.4" + checksum: 10/45e3793d44bea8e826c934a335ebf0b92c6d6dae562fdb59d8c45a16d5c11de4d6692b5fa7eebca969881f06b81b55f8535883bfbc727b597d601709fa5a2bb2 + languageName: node + linkType: hard + +"moment@npm:2.30.1, moment@npm:^2.29.4": + version: 2.30.1 + resolution: "moment@npm:2.30.1" + checksum: 10/ae42d876d4ec831ef66110bdc302c0657c664991e45cf2afffc4b0f6cd6d251dde11375c982a5c0564ccc0fa593fc564576ddceb8c8845e87c15f58aa6baca69 + languageName: node + linkType: hard + +"moment@npm:2.x": + version: 2.26.0 + resolution: "moment@npm:2.26.0" + checksum: 10/39423430d0244e937ece6d08545055122de9ed47da13c04be7b98fc79d5e5f4cfa36252351feffb4dfa3a3969b81e37334127d4081796f79adbdbd5d66e2f8f4 + languageName: node + linkType: hard + +"monaco-editor@npm:0.34.1": + version: 0.34.1 + resolution: "monaco-editor@npm:0.34.1" + checksum: 10/50cde6f68f27cd66fbaadb7efe0e6ce46748e4bb552ddaa84451fbda18e5ff970a1fa79371c04618927c1f6348839747e3d4804fe383040bad2137527f8a38e4 + languageName: node + linkType: hard + +"ms@npm:^2.1.1": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"nano-css@npm:^5.6.2": + version: 5.6.2 + resolution: "nano-css@npm:5.6.2" + dependencies: + "@jridgewell/sourcemap-codec": "npm:^1.4.15" + css-tree: "npm:^1.1.2" + csstype: "npm:^3.1.2" + fastest-stable-stringify: "npm:^2.0.2" + inline-style-prefixer: "npm:^7.0.1" + rtl-css-js: "npm:^1.16.1" + stacktrace-js: "npm:^2.0.2" + stylis: "npm:^4.3.0" + peerDependencies: + react: "*" + react-dom: "*" + checksum: 10/6ed9f36957b19fc2dcf1644a853030cce70775bec3fed596cab9156063d522d5cb52cb1479117e4390acbe45b69321c9eb33915d96414aabaf09bff40497bb4a + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10/23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + languageName: node + linkType: hard + +"negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002 + languageName: node + linkType: hard + +"node-abort-controller@npm:^3.0.1": + version: 3.1.1 + resolution: "node-abort-controller@npm:3.1.1" + checksum: 10/0a2cdb7ec0aeaf3cb31e1ca0e192f5add48f1c5c9c9ed822129f9dddbd9432f69b7425982f94ce803c56a2104884530aa67cd57696e5774b2e5b8ec2f58de042 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.2.0 + resolution: "node-gyp@npm:10.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^4.1.0" + semver: "npm:^7.3.5" + tar: "npm:^6.2.1" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10/41773093b1275751dec942b985982fd4e7a69b88cae719b868babcef3880ee6168aaec8dcaa8cd0b9fa7c84873e36cc549c6cac6a124ee65ba4ce1f1cc108cfe + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10/b7afc2b65e56f7035b1a2eec57ae0fbdee7d742b1cdcd0f4387562b6527a011ab1cbe9f64cc8b3cca61e3297c9637c8bf61cec2e6b8d3a711d4b5267dfafbe02 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10/241e5fa9556f1c12bafb83c6c3e94f8cf3d8f2f8f904906ecef6e10bcaa1d59aa61212d4651bec70052015fc54bd3fdcdbe7fc0f638a17e6685aa586c076ec4e + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.1 + resolution: "nopt@npm:7.2.1" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10/95a1f6dec8a81cd18cdc2fed93e6f0b4e02cf6bdb4501c848752c6e34f9883d9942f036a5e3b21a699047d8a448562d891e67492df68ec9c373e6198133337ae + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10/5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.13 + resolution: "nwsapi@npm:2.2.13" + checksum: 10/f7f30a236f2ee513ea8042f1a987481dc2b900167c47f7163882f0fcfe7ccb57b5c8daaf2c91008dc20a204fcd79e050aee25001433ad99990bbed5a8c74121c + languageName: node + linkType: hard + +"object-assign@npm:4.x, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561 + languageName: node + linkType: hard + +"object-is@npm:^1.0.1, object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10/4f6f544773a595da21c69a7531e0e1d6250670f4e09c55f47eb02c516035cfcb1b46ceb744edfd3ecb362309dbccb6d7f88e43bf42e4d4595ac10a329061053a + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10/dbb22da4cda82e1658349ea62b80815f587b47131b3dd7a4ab7f84190ab31d206bbd8fe7e26ae3220c55b65725ac4529825f6142154211220302aa6b1518045d + languageName: node + linkType: hard + +"object.entries@npm:^1.1.6": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/2301918fbd1ee697cf6ff7cd94f060c738c0a7d92b22fd24c7c250e9b593642c9707ad2c44d339303c1439c5967d8964251cdfc855f7f6ec55db2dd79e8dc2a7 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10/5b2e80f7af1778b885e3d06aeb335dcc86965e39464671adb7167ab06ac3b0f5dd2e637a90d8ebd7426d69c6f135a4753ba3dd7d0fe2a7030cf718dcb910fd92 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.4 + resolution: "object.hasown@npm:1.1.4" + dependencies: + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + checksum: 10/797385577b3ef3c0d19333e03ed34bc7987978ae1ee1245069c9922e17d1128265187f729dc610260d03f8d418af26fcd7919b423793bf0af9099d9f08367d69 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6": + version: 1.2.0 + resolution: "object.values@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/db2e498019c354428c5dd30d02980d920ac365b155fce4dcf63eb9433f98ccf0f72624309e182ce7cc227c95e45d474e1d483418e60de2293dd23fa3ebe34903 + languageName: node + linkType: hard + +"ol-mapbox-style@npm:^10.1.0": + version: 10.7.0 + resolution: "ol-mapbox-style@npm:10.7.0" + dependencies: + "@mapbox/mapbox-gl-style-spec": "npm:^13.23.1" + mapbox-to-css-font: "npm:^2.4.1" + ol: "npm:^7.3.0" + checksum: 10/a8ddbde5fad8fa0a677ec7789c0a2cf4aaa30231d0d6c52246336a9bad195df7f57f3048adddb6e601094e3d4ac346e27d4f7d5aded11d561a6fb9ca3b294789 + languageName: node + linkType: hard + +"ol@npm:7.4.0": + version: 7.4.0 + resolution: "ol@npm:7.4.0" + dependencies: + earcut: "npm:^2.2.3" + geotiff: "npm:^2.0.7" + ol-mapbox-style: "npm:^10.1.0" + pbf: "npm:3.2.1" + rbush: "npm:^3.0.1" + checksum: 10/c83698fddd02fdd497e92bffee7ca7d4059f64d28a0be7a7781981f129b6636cacbee894aed331a572f066fe1e56a4cf22861c51e1efddb7fbb58c4bf5606ece + languageName: node + linkType: hard + +"ol@npm:^7.3.0": + version: 7.5.2 + resolution: "ol@npm:7.5.2" + dependencies: + earcut: "npm:^2.2.3" + geotiff: "npm:^2.0.7" + ol-mapbox-style: "npm:^10.1.0" + pbf: "npm:3.2.1" + rbush: "npm:^3.0.1" + checksum: 10/0763a3972f7a6ae47c7c4a70b787a856f420a79a6dddd5bbbe738ac023bfbecf8ed157faf4e49dcd3052c366a13d0a920cdf3179bd54215f8c67d5cc991e14b1 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10/e9fd0695a01cf226652f0385bf16b7a24153dbbb2039f764c8ba6d2306a8506b0e4ce570de6ad99c7a6eb49520743afdb66edd95ee979c1a342554ed49a9aadd + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10/a8398559c60aef88d7f353a4f98dcdff6090a4e70f874c827302bf1213d9106a1c4d5fcb68dacb1feb3c30a04c4102f41047aa55d4c576b863d6fc876e001af6 + languageName: node + linkType: hard + +"p-defer@npm:^1.0.0": + version: 1.0.0 + resolution: "p-defer@npm:1.0.0" + checksum: 10/1d8fb7138a0ccebb65479160fd93f245303c06c977c976105d75838f7f504a9a6ef11b7e058f98b4c957a6a8df268c616da1ee339285d565f9e5ba00304e027b + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10/513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + +"pako@npm:^2.0.4": + version: 2.1.0 + resolution: "pako@npm:2.1.0" + checksum: 10/38a04991d0ec4f4b92794a68b8c92bf7340692c5d980255c92148da96eb3e550df7a86a7128b5ac0c65ecddfe5ef3bbe9c6dab13e1bc315086e759b18f7c1401 + languageName: node + linkType: hard + +"papaparse@npm:5.4.1": + version: 5.4.1 + resolution: "papaparse@npm:5.4.1" + checksum: 10/5e6dc978187182ad2efa1d264ffe73d2042cd23b8fb1dcb0b0f5c8c7c772c11e3eb4e166fb0893880ed24529a96abe9065d704cc5b4cb96abf037413cfe43788 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse-headers@npm:^2.0.2": + version: 2.0.5 + resolution: "parse-headers@npm:2.0.5" + checksum: 10/210b13bc0f99cf6f1183896f01de164797ac35b2720c9f1c82a3e2ceab256f87b9048e8e16a14cfd1b75448771f8379cd564bd1674a179ab0168c90005d4981b + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0": + version: 5.0.0 + resolution: "parse-json@npm:5.0.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-better-errors: "npm:^1.0.1" + lines-and-columns: "npm:^1.1.6" + checksum: 10/bfe9108b5305a58f7e6575faaba2968e48e61ba3e784d6bf06d297f6127e00deb3d8161dd567e6988ddb5da50c8ff00f44197f917d63de070025bc2ce185c180 + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10/62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10/3c86806bb0fb1e9a999ff3a4c883b1ca243d99f45a619a0898dbf021a95a0189ed955c31b07fe49d342b54e814f33f2c9d7489198e8630dacd5477d413ec5782 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.6": + version: 1.0.6 + resolution: "path-parse@npm:1.0.6" + checksum: 10/962a85dd384d68d469ec5ba4010df8f8f9b7e936ce603bbe3211476c5615feb3c2b1ca61211a78445fadc833f0b1a86ea6484c861035ec4ac93011ba9aff9a11 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10/5e8845c159261adda6f09814d7725683257fcc85a18f329880ab4d7cc1d12830967eae5d5894e453f341710d5484b8fdbbd4d75181b4d6e1eb2f4dc7aeadc434 + languageName: node + linkType: hard + +"path-to-regexp@npm:^1.7.0": + version: 1.9.0 + resolution: "path-to-regexp@npm:1.9.0" + dependencies: + isarray: "npm:0.0.1" + checksum: 10/67f0f4823f7aab356523d93a83f9f8222bdd119fa0b27a8f8b587e8e6c9825294bb4ccd16ae619def111ff3fe5d15ff8f658cdd3b0d58b9c882de6fd15bc1b76 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10/5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + languageName: node + linkType: hard + +"pbf@npm:3.2.1": + version: 3.2.1 + resolution: "pbf@npm:3.2.1" + dependencies: + ieee754: "npm:^1.1.12" + resolve-protobuf-schema: "npm:^2.1.0" + bin: + pbf: bin/pbf + checksum: 10/566a64424063b07f46d3e2cb2288094a60b0a45efea48fd4030f527143b0e9c611399ebd3a6fd56db51908f2006defef5e09a1b2a027db9481a59a41156a540c + languageName: node + linkType: hard + +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: 10/534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": + version: 1.1.0 + resolution: "picocolors@npm:1.1.0" + checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc + languageName: node + linkType: hard + +"pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + languageName: node + linkType: hard + +"portfinder@npm:^1.0.17": + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" + dependencies: + async: "npm:^2.6.4" + debug: "npm:^3.2.7" + mkdirp: "npm:^0.5.6" + checksum: 10/842058052fb3c3da829589f3f44b13369cf504b16f6ab72fedec78a9438ac3fc53047f5c88a771511b17d6a94f50f83a94cef5fa625027b675d8f7241f7f2185 + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10/8ed3e96dfeea1c5880c1f4c9cb707e5fb26e8be22f14f82ef92df20fd2004e635c62ba47fbe8f2bb63bfd80dac1474be2fb39798da8c2feba2815435d1f749af + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.1.0": + version: 3.1.0 + resolution: "postcss-modules-extract-imports@npm:3.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10/00bfd3aff045fc13ded8e3bbfd8dfc73eff9a9708db1b2a132266aef6544c8d2aee7a5d7e021885f6f9bbd5565a9a9ab52990316e21ad9468a2534f87df8e849 + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.5": + version: 4.0.5 + resolution: "postcss-modules-local-by-default@npm:4.0.5" + dependencies: + icss-utils: "npm:^5.0.0" + postcss-selector-parser: "npm:^6.0.2" + postcss-value-parser: "npm:^4.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10/b08b01aa7f3d1a80bb1a5508ba3a208578fdd2fb6e54e5613fac244a4e014aa7ca639a614859fec93b399e5a6f86938f7690ca60f7e57c4e35b75621d3c07734 + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.2.0": + version: 3.2.0 + resolution: "postcss-modules-scope@npm:3.2.0" + dependencies: + postcss-selector-parser: "npm:^6.0.4" + peerDependencies: + postcss: ^8.1.0 + checksum: 10/17c293ad13355ba456498aa5815ddb7a4a736f7b781d89b294e1602a53b8d0e336131175f82460e290a0d672642f9039540042edc361d9000b682c44e766925b + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: "npm:^5.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10/18021961a494e69e65da9e42b4436144c9ecee65845c9bfeff2b7a26ea73d60762f69e288be8bb645447965b8fd6b26a264771136810dc0172bd31b940aee4f2 + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10/190034c94d809c115cd2f32ee6aade84e933450a43ec3899c3e78e7d7b33efd3a2a975bb45d7700b6c5b196c06a7d9acf3f1ba6f1d87032d9675a29d8bca1dd3 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10/e4e4486f33b3163a606a6ed94f9c196ab49a37a7a7163abfcd469e5f113210120d70b8dd5e33d64636f41ad52316a3725655421eb9a1094f1bcab1db2f555c62 + languageName: node + linkType: hard + +"postcss@npm:^8.4.33": + version: 8.4.47 + resolution: "postcss@npm:8.4.47" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.1.0" + source-map-js: "npm:^1.2.1" + checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 + languageName: node + linkType: hard + +"prefix-style@npm:2.0.1": + version: 2.0.1 + resolution: "prefix-style@npm:2.0.1" + checksum: 10/26503ee6629e8a5d6b1de75e4a6529bdcd17767d35afb4763c4985034d15a625def95831c94cb063bf4bfa7f6be430c9b41f7af8e0625017365a52510a6e25fc + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10/0b9d2c76801ca652a7f64892dd37b7e3fab149a37d2424920099bf894acccc62abb4424af2155ab36dea8744843060a2d8ddc983518d0b1e22265a22324b72ed + languageName: node + linkType: hard + +"prettier@npm:^2.8.7": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24 + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10/248990cbef9e96fb36a3e1ae6b903c551ca4ddd733f8d0912b9cc5141d3d0b3f9f8dfb4d799fb1c6723382c9c2083ffbfa4ad43ff9a0e7535d32d41fd5f01da6 + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10/dea96bc83c83cd91b2bfc55757b6b2747edcaac45b568e46de29deee80742f17bc76fe8898135a70d904f4928eafd8bb693cd1da4896e8bdd3c5e82cadf1d2bb + languageName: node + linkType: hard + +"prismjs@npm:1.29.0": + version: 1.29.0 + resolution: "prismjs@npm:1.29.0" + checksum: 10/2080db382c2dde0cfc7693769e89b501ef1bfc8ff4f8d25c07fd4c37ca31bc443f6133d5b7c145a73309dc396e829ddb7cc18560026d862a887ae08864ef6b07 + languageName: node + linkType: hard + +"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": + version: 4.2.0 + resolution: "proc-log@npm:4.2.0" + checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10/c52536521a4d21eff4f2f2aa4572446cad227464066365a7167e52ccf8d9839c099f9afec1aba0eed3d5a2514b3e79e0b3e7a1dc326b9acde6b75d27ed74b1a9 + languageName: node + linkType: hard + +"prop-types@npm:15.x, prop-types@npm:^15.5.10, prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2": + version: 15.7.2 + resolution: "prop-types@npm:15.7.2" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.8.1" + checksum: 10/1d2b6462559e78e4ab15775b5f9ca21bbdcf94c0c6597624a407f9f5ce2cac8c02997bc59cc517b54f64aa1e95e5134c86755ee99a24659bc023d7b2b3096e15 + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10/7d959caec002bc964c86cdc461ec93108b27337dabe6192fb97d69e16a0c799a03462713868b40749bfc1caf5f57ef80ac3e4ffad3effa636ee667582a75e2c0 + languageName: node + linkType: hard + +"protobufjs@npm:^7.3.0": + version: 7.4.0 + resolution: "protobufjs@npm:7.4.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 10/408423506610f70858d7593632f4a6aa4f05796c90fd632be9b9252457c795acc71aa6d3b54bb7f48a890141728fee4ca3906723ccea6c202ad71f21b3879b8b + languageName: node + linkType: hard + +"protocol-buffers-schema@npm:^3.3.1": + version: 3.6.0 + resolution: "protocol-buffers-schema@npm:3.6.0" + checksum: 10/55a1caed123fb2385eae5ea4770dc36b3017d1fe2005ffb1ef20c97dadf43a91876238ebc23bc240ef1f8501d054bdd9d12992796e9abed18ddf958e4f942eea + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10/256aa4bcaf9297256f552914e03cbdb0039c8fe1db11fa1e6d3f80790e16e563eb0a859a1e61082a95e224fc0c608661839439f8ecc6a3db4e48d46d99216ee4 + languageName: node + linkType: hard + +"qs@npm:^6.4.0": + version: 6.13.0 + resolution: "qs@npm:6.13.0" + dependencies: + side-channel: "npm:^1.0.6" + checksum: 10/f548b376e685553d12e461409f0d6e5c59ec7c7d76f308e2a888fd9db3e0c5e89902bedd0754db3a9038eda5f27da2331a6f019c8517dc5e0a16b3c9a6e9cef8 + languageName: node + linkType: hard + +"query-string@npm:^9.1.0": + version: 9.1.0 + resolution: "query-string@npm:9.1.0" + dependencies: + decode-uri-component: "npm:^0.4.1" + filter-obj: "npm:^5.1.0" + split-on-first: "npm:^3.0.0" + checksum: 10/87a0ea851f62d6abe5c6c60bc0114e5df1af73f6dbdfd3086ab82624330cafe92310029d834ee6117d92e3de877f2959cb634c31a55a1aef4acddaa11ad8be20 + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b + languageName: node + linkType: hard + +"quick-lru@npm:^6.1.1": + version: 6.1.2 + resolution: "quick-lru@npm:6.1.2" + checksum: 10/93e6f13bc038b619646792e240a8e2630be0aaeaf877bdda6e9357359314ddef04255876f981a4b6c01a22156bc40282b26f0ea5f81633423093db3c290679f1 + languageName: node + linkType: hard + +"quickselect@npm:^2.0.0": + version: 2.0.0 + resolution: "quickselect@npm:2.0.0" + checksum: 10/ed2e78431050d223fb75da20ee98011aef1a03f7cb04e1a32ee893402e640be3cfb76d72e9dbe01edf3bb457ff6a62e5c2d85748424d1aa531f6ba50daef098c + languageName: node + linkType: hard + +"raf-schd@npm:^4.0.3": + version: 4.0.3 + resolution: "raf-schd@npm:4.0.3" + checksum: 10/45514041c5ad31fa96aef3bb3c572a843b92da2f2cd1cb4a47c9ad58e48761d3a4126e18daa32b2bfa0bc2551a42d8f324a0e40e536cb656969929602b4e8b58 + languageName: node + linkType: hard + +"raf@npm:^3.1.0, raf@npm:^3.4.0, raf@npm:^3.4.1": + version: 3.4.1 + resolution: "raf@npm:3.4.1" + dependencies: + performance-now: "npm:^2.1.0" + checksum: 10/4c4b4c826b09d2aec6ca809f1a3c3c12136e7ec8d13fbb91f495dd2c99cd43345240e003da3bfd16036a432e635049fc6d9f69f9187f5f22ea88bb146ec75881 + languageName: node + linkType: hard + +"randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc + languageName: node + linkType: hard + +"raw-body@npm:~1.1.0": + version: 1.1.7 + resolution: "raw-body@npm:1.1.7" + dependencies: + bytes: "npm:1" + string_decoder: "npm:0.10" + checksum: 10/75ab1815ac54992abccccdffb27bd9ad9f5b6f5fb66e740474ad0d1bd3c1425e407b2be5eb34e0bef3da2c66bfa6a2c2b77498596f5b9999ead2d449fff0226f + languageName: node + linkType: hard + +"rbush@npm:^3.0.1": + version: 3.0.1 + resolution: "rbush@npm:3.0.1" + dependencies: + quickselect: "npm:^2.0.0" + checksum: 10/489e2e7d9889888ad533518f194e3ab7cc19b1f1365a38ee99fbdda542a47f41cda7dc89870180050f4d04ea402e9ff294e1d767d03c0f1694e0028b7609eec9 + languageName: node + linkType: hard + +"rc-align@npm:^2.4.0": + version: 2.4.5 + resolution: "rc-align@npm:2.4.5" + dependencies: + babel-runtime: "npm:^6.26.0" + dom-align: "npm:^1.7.0" + prop-types: "npm:^15.5.8" + rc-util: "npm:^4.0.4" + checksum: 10/6a82f7b47dda397b90c7b6d41e5500b9e3e427891d15a54f95708abf31a8aba19d882bd9e5ab42f4979b455aa2236b96cf6403152507bcd1fd7663be08a0ceb5 + languageName: node + linkType: hard + +"rc-animate@npm:2.x": + version: 2.11.1 + resolution: "rc-animate@npm:2.11.1" + dependencies: + babel-runtime: "npm:6.x" + classnames: "npm:^2.2.6" + css-animation: "npm:^1.3.2" + prop-types: "npm:15.x" + raf: "npm:^3.4.0" + rc-util: "npm:^4.15.3" + react-lifecycles-compat: "npm:^3.0.4" + checksum: 10/afb54ad896c9d50af212ae7a56a216b47b38238a4e8e187437fe965c2cf100f1ca82668ed90d38dcd3b0e3ced53f54383e417af09c6dc09f6db0f78cba2aa9e4 + languageName: node + linkType: hard + +"rc-cascader@npm:3.27.0": + version: 3.27.0 + resolution: "rc-cascader@npm:3.27.0" + dependencies: + "@babel/runtime": "npm:^7.12.5" + array-tree-filter: "npm:^2.1.0" + classnames: "npm:^2.3.1" + rc-select: "npm:~14.15.0" + rc-tree: "npm:~5.8.1" + rc-util: "npm:^5.37.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/ed0fa47131047097d08df341250bf0e3a5c01704d2a8a44ef7385aacc29ccc9aa8a60c05b3c102eb199593fa117ea9e595b36d7ab6c5ce4bf0d2917013b360a3 + languageName: node + linkType: hard + +"rc-drawer@npm:7.2.0": + version: 7.2.0 + resolution: "rc-drawer@npm:7.2.0" + dependencies: + "@babel/runtime": "npm:^7.23.9" + "@rc-component/portal": "npm:^1.1.1" + classnames: "npm:^2.2.6" + rc-motion: "npm:^2.6.1" + rc-util: "npm:^5.38.1" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/1c9c7e5a00bd341a996684e5e288e273fee5083c8daf37e61a5ef5db5204df8aeaf48bcb67d89d01cab4d3c484bcf4d73af257a2d8de2dd71a757fa9cabaed3c + languageName: node + linkType: hard + +"rc-motion@npm:^2.0.0, rc-motion@npm:^2.0.1, rc-motion@npm:^2.6.1": + version: 2.9.3 + resolution: "rc-motion@npm:2.9.3" + dependencies: + "@babel/runtime": "npm:^7.11.1" + classnames: "npm:^2.2.1" + rc-util: "npm:^5.43.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/7468588fdcd49d707a5c4ad071fe2bbea82c704a48e639af7437655a523f35d80ee34cc290d8c7daf4c211fa6d2a27826d6d30eaede1accf8e384b4e61582ff6 + languageName: node + linkType: hard + +"rc-overflow@npm:^1.3.1": + version: 1.3.2 + resolution: "rc-overflow@npm:1.3.2" + dependencies: + "@babel/runtime": "npm:^7.11.1" + classnames: "npm:^2.2.1" + rc-resize-observer: "npm:^1.0.0" + rc-util: "npm:^5.37.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/a35d6f035de9e5b71f5762ddaf9757770fadab7d5f5e6bf0451346cffb06027e9de75a8104ca782c71e381f55552588a350905a61083cd23d2fb6f24e2807007 + languageName: node + linkType: hard + +"rc-resize-observer@npm:^1.0.0, rc-resize-observer@npm:^1.3.1": + version: 1.4.0 + resolution: "rc-resize-observer@npm:1.4.0" + dependencies: + "@babel/runtime": "npm:^7.20.7" + classnames: "npm:^2.2.1" + rc-util: "npm:^5.38.0" + resize-observer-polyfill: "npm:^1.5.1" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/20af15f915f55f8e046402a209e0de30ecbf720c9a6131aa9d9451f77af9d837fd79dad9218cbbffe200f5d2503a2c03525b1eb38b5c6c21aed2827d535c1e5a + languageName: node + linkType: hard + +"rc-select@npm:~14.15.0": + version: 14.15.2 + resolution: "rc-select@npm:14.15.2" + dependencies: + "@babel/runtime": "npm:^7.10.1" + "@rc-component/trigger": "npm:^2.1.1" + classnames: "npm:2.x" + rc-motion: "npm:^2.0.1" + rc-overflow: "npm:^1.3.1" + rc-util: "npm:^5.16.1" + rc-virtual-list: "npm:^3.5.2" + peerDependencies: + react: "*" + react-dom: "*" + checksum: 10/707d9de38aaf83063ede754a925b56d6f02740197a3bed93f886c132ce797321d9e70a2fe32cff0546c54d9a11414d6d2c8fc1f914ac665fa11ad2b30a08bc85 + languageName: node + linkType: hard + +"rc-slider@npm:10.6.2": + version: 10.6.2 + resolution: "rc-slider@npm:10.6.2" + dependencies: + "@babel/runtime": "npm:^7.10.1" + classnames: "npm:^2.2.5" + rc-util: "npm:^5.36.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/ee5ec34fe940487a44cb03e89abf4199cbae990a334756fa9536a158d3a790cb7c1ebf321fc8048050a0cefa86138e097eb11bcc135bdb10db287b0738370790 + languageName: node + linkType: hard + +"rc-time-picker@npm:^3.7.3": + version: 3.7.3 + resolution: "rc-time-picker@npm:3.7.3" + dependencies: + classnames: "npm:2.x" + moment: "npm:2.x" + prop-types: "npm:^15.5.8" + raf: "npm:^3.4.1" + rc-trigger: "npm:^2.2.0" + react-lifecycles-compat: "npm:^3.0.4" + checksum: 10/236ba0dd1b1cee4dd398d2542c251a7e0da21b31d3390a23c45cc7f2ea266cfddd1f0b7f681fe205f2d92edaa72771cb087505790b5124eb0ca31668feb74da5 + languageName: node + linkType: hard + +"rc-tooltip@npm:6.2.0": + version: 6.2.0 + resolution: "rc-tooltip@npm:6.2.0" + dependencies: + "@babel/runtime": "npm:^7.11.2" + "@rc-component/trigger": "npm:^2.0.0" + classnames: "npm:^2.3.1" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/2be8fd3da8666df1d83485e5532e11eacf4dd3686efed9b4f0bc78caeb647196cac62104e54b9ce5dbc3051a9df70e07e54557f3273b632bb474a73c8bca0a2d + languageName: node + linkType: hard + +"rc-tree@npm:~5.8.1": + version: 5.8.8 + resolution: "rc-tree@npm:5.8.8" + dependencies: + "@babel/runtime": "npm:^7.10.1" + classnames: "npm:2.x" + rc-motion: "npm:^2.0.1" + rc-util: "npm:^5.16.1" + rc-virtual-list: "npm:^3.5.1" + peerDependencies: + react: "*" + react-dom: "*" + checksum: 10/5bcfcf1e82291a930304012655eb59adc348fe8b8d2d4f37660855ca03ba226f1c01bd17c9891757ccc9636e5872253249ec01d459ce690c6c54dff9401df3b6 + languageName: node + linkType: hard + +"rc-trigger@npm:^2.2.0": + version: 2.6.5 + resolution: "rc-trigger@npm:2.6.5" + dependencies: + babel-runtime: "npm:6.x" + classnames: "npm:^2.2.6" + prop-types: "npm:15.x" + rc-align: "npm:^2.4.0" + rc-animate: "npm:2.x" + rc-util: "npm:^4.4.0" + react-lifecycles-compat: "npm:^3.0.4" + checksum: 10/a3ed5f0c453a37ab00fce302e9f40daa64870eb001576a3409a94550802af1e01cbd7b050b3adf7225af03e82e2070d095477957fcd07209ee32602a2f3fba31 + languageName: node + linkType: hard + +"rc-util@npm:^4.0.4, rc-util@npm:^4.15.3, rc-util@npm:^4.4.0": + version: 4.20.7 + resolution: "rc-util@npm:4.20.7" + dependencies: + add-dom-event-listener: "npm:^1.1.0" + prop-types: "npm:^15.5.10" + react-is: "npm:^16.12.0" + react-lifecycles-compat: "npm:^3.0.4" + shallowequal: "npm:^1.1.0" + checksum: 10/a0e15002641a8be5134a2532a9eb4663763eff760a1a854c5018b862d0e114deae93a7c21f307db9c21f6276c6cfe4573ab95209bd56c19301343b4e94ff4ea5 + languageName: node + linkType: hard + +"rc-util@npm:^5.16.1, rc-util@npm:^5.24.4, rc-util@npm:^5.36.0, rc-util@npm:^5.37.0, rc-util@npm:^5.38.0, rc-util@npm:^5.38.1, rc-util@npm:^5.43.0": + version: 5.43.0 + resolution: "rc-util@npm:5.43.0" + dependencies: + "@babel/runtime": "npm:^7.18.3" + react-is: "npm:^18.2.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/6d5be9d79182c6b4c5a033ad6517b2940d3d2ac42a8e77ef5735591d182f8236f61bc7628d61e82a122d2046ec849462f3fe57c08d3a2a20279646785c34ec4a + languageName: node + linkType: hard + +"rc-virtual-list@npm:^3.5.1, rc-virtual-list@npm:^3.5.2": + version: 3.14.8 + resolution: "rc-virtual-list@npm:3.14.8" + dependencies: + "@babel/runtime": "npm:^7.20.0" + classnames: "npm:^2.2.6" + rc-resize-observer: "npm:^1.0.0" + rc-util: "npm:^5.36.0" + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 10/4f37f6adef15d5aeb15120d83ef34ecc73aae0ae274552e2062ef1d8f0b76073a3baa2fe4f7354da94e6c51920f5cc44d7a6c00cc54f80b8eff49353356e132a + languageName: node + linkType: hard + +"react-calendar@npm:4.8.0": + version: 4.8.0 + resolution: "react-calendar@npm:4.8.0" + dependencies: + "@wojtekmaj/date-utils": "npm:^1.1.3" + clsx: "npm:^2.0.0" + get-user-locale: "npm:^2.2.1" + prop-types: "npm:^15.6.0" + warning: "npm:^4.0.0" + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/26a58d9bbe9b1bbe1201612628d0f6bdeec0355ed3730013d066b9e87adbbee4b6f3f1c83352978c0e2f317d8d32ac31ac2cbb3c6f83833bef0ba047c5bb6907 + languageName: node + linkType: hard + +"react-colorful@npm:5.6.1": + version: 5.6.1 + resolution: "react-colorful@npm:5.6.1" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: 10/3e02ba013454818d0c323949bd961fb2c19ac18130dfc67a4032aa5b03787c5ffe7ff159c4b97dc3475072d576828ca0c4b8e8ce85b55eaf484180596cdf0403 + languageName: node + linkType: hard + +"react-custom-scrollbars-2@npm:4.5.0": + version: 4.5.0 + resolution: "react-custom-scrollbars-2@npm:4.5.0" + dependencies: + dom-css: "npm:^2.0.0" + prop-types: "npm:^15.5.10" + raf: "npm:^3.1.0" + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10/4e5e67032a254c6fbfc2157c8c9b28b4285a41372d458a41fa6756777e224f692ae842488e51cb089b55b83625809aed0eb403026b8a8122a7dcf667637b21fd + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10/ca5e7762ec8c17a472a3605b6f111895c9f87ac7d43a610ab7024f68cd833d08eda0625ce02ec7178cc1f3c957cf0b9273cdc17aa2cd02da87544331c43b1d21 + languageName: node + linkType: hard + +"react-dropzone@npm:14.2.3": + version: 14.2.3 + resolution: "react-dropzone@npm:14.2.3" + dependencies: + attr-accept: "npm:^2.2.2" + file-selector: "npm:^0.6.0" + prop-types: "npm:^15.8.1" + peerDependencies: + react: ">= 16.8 || 18.0.0" + checksum: 10/34cf1758a896795b579adab5f9cdc144330577ab1826a0b66ff9daa8c60a80ed6b31b8f989647664f2548cfe00b336e9c31a2f3dd8de43111c8318fcc89b279c + languageName: node + linkType: hard + +"react-from-dom@npm:^0.6.2": + version: 0.6.2 + resolution: "react-from-dom@npm:0.6.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/f3954737c2677e82f72ecedcdcf5f187d2a1b86a6c5b915f7300796ac153437581ee0111c9f524e7c18124d25d0d31391d54cdee318ea390722ca57e66813ed7 + languageName: node + linkType: hard + +"react-highlight-words@npm:0.20.0": + version: 0.20.0 + resolution: "react-highlight-words@npm:0.20.0" + dependencies: + highlight-words-core: "npm:^1.2.0" + memoize-one: "npm:^4.0.0" + prop-types: "npm:^15.5.8" + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10/5adf2cfb1f325ae51ea4dd2cb7522eb433b25534355868d1a3f4556b2b9f7a774c2a1aaa143abebb63a1b3a5590e70ba3d765942a47ff754a1a513cdc5b2f58b + languageName: node + linkType: hard + +"react-hook-form@npm:^7.49.2": + version: 7.53.0 + resolution: "react-hook-form@npm:7.53.0" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + checksum: 10/b7d73696b7c10e042f6ea6fcec01f951091146bfbc89d1378327a970bcd724b968e93fae1657bddada75caf648cfaf8693c5ba03c25e96816b755079d29f65da + languageName: node + linkType: hard + +"react-i18next@npm:^14.0.0": + version: 14.1.3 + resolution: "react-i18next@npm:14.1.3" + dependencies: + "@babel/runtime": "npm:^7.23.9" + html-parse-stringify: "npm:^3.0.1" + peerDependencies: + i18next: ">= 23.2.3" + react: ">= 16.8.0" + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + checksum: 10/d0fa0f2717103c60758f9ddc1710e529f52e341465ca3f106ffa9168d88ad2db1bdbae58c77cca389933ae14bc39835abb37d1982049551ca15f6d310e2b3f57 + languageName: node + linkType: hard + +"react-immutable-proptypes@npm:^2.1.0": + version: 2.2.0 + resolution: "react-immutable-proptypes@npm:2.2.0" + dependencies: + invariant: "npm:^2.2.2" + peerDependencies: + immutable: ">=3.6.2" + checksum: 10/f7ec15a16f35f97edefe93655fd360ad9da58362c1e83553b19ac0796c3677a22923782894d5408edee9a1c1eaa5408ac69585d08041249d43a1a5fcc3b764d3 + languageName: node + linkType: hard + +"react-inlinesvg@npm:3.0.2": + version: 3.0.2 + resolution: "react-inlinesvg@npm:3.0.2" + dependencies: + exenv: "npm:^1.2.2" + react-from-dom: "npm:^0.6.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/740fa33c7a09012bb96509f9003dc26e4e412eed2fc861ca40bfee9a3dddcf7c4d86fd20f824d4c017e44526aa9d747d6c9543ef3f2215bc0ace72754e025316 + languageName: node + linkType: hard + +"react-is@npm:18.2.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10/200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df + languageName: node + linkType: hard + +"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.6.0, react-is@npm:^16.7.0, react-is@npm:^16.8.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10/73b36281e58eeb27c9cc6031301b6ae19ecdc9f18ae2d518bdb39b0ac564e65c5779405d623f1df9abf378a13858b79442480244bd579968afc1faf9a2ce5e05 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0, react-is@npm:^18.2.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 + languageName: node + linkType: hard + +"react-lifecycles-compat@npm:^3.0.4": + version: 3.0.4 + resolution: "react-lifecycles-compat@npm:3.0.4" + checksum: 10/c66b9c98c15cd6b0d0a4402df5f665e8cc7562fb7033c34508865bea51fd7b623f7139b5b7e708515d3cd665f264a6a9403e1fa7e6d61a05759066f5e9f07783 + languageName: node + linkType: hard + +"react-loading-skeleton@npm:3.4.0": + version: 3.4.0 + resolution: "react-loading-skeleton@npm:3.4.0" + peerDependencies: + react: ">=16.8.0" + checksum: 10/f504c55f2b448e05abfe480950d89a4a7301773590e3c9fc42025370bcfd1c177466bb0a9cee6291d975772218c63c83656ac8b158a75de7a2e9ad75d440925b + languageName: node + linkType: hard + +"react-redux@npm:^8.1.3": + version: 8.1.3 + resolution: "react-redux@npm:8.1.3" + dependencies: + "@babel/runtime": "npm:^7.12.1" + "@types/hoist-non-react-statics": "npm:^3.3.1" + "@types/use-sync-external-store": "npm:^0.0.3" + hoist-non-react-statics: "npm:^3.3.2" + react-is: "npm:^18.0.0" + use-sync-external-store: "npm:^1.0.0" + peerDependencies: + "@types/react": ^16.8 || ^17.0 || ^18.0 + "@types/react-dom": ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: ">=0.59" + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + checksum: 10/c4c7586cff3abeb784e73598d330f5301116a4e9942fd36895f2bccd8990001709c6c3ea1817edb75ee477470d6c67c9113e05a7f86b2b68a3950c9c29fe20cb + languageName: node + linkType: hard + +"react-router-dom@npm:5.3.3": + version: 5.3.3 + resolution: "react-router-dom@npm:5.3.3" + dependencies: + "@babel/runtime": "npm:^7.12.13" + history: "npm:^4.9.0" + loose-envify: "npm:^1.3.1" + prop-types: "npm:^15.6.2" + react-router: "npm:5.3.3" + tiny-invariant: "npm:^1.0.2" + tiny-warning: "npm:^1.0.0" + peerDependencies: + react: ">=15" + checksum: 10/49552596f1a4c753b99324a5f4345b3ee91fbb780aa65851a7113f053044ef96c083d2ded12937e593b23a0fcdf58b9e49780df6bf6e27d9eeb348b3c85ae611 + languageName: node + linkType: hard + +"react-router@npm:5.3.3": + version: 5.3.3 + resolution: "react-router@npm:5.3.3" + dependencies: + "@babel/runtime": "npm:^7.12.13" + history: "npm:^4.9.0" + hoist-non-react-statics: "npm:^3.1.0" + loose-envify: "npm:^1.3.1" + mini-create-react-context: "npm:^0.4.0" + path-to-regexp: "npm:^1.7.0" + prop-types: "npm:^15.6.2" + react-is: "npm:^16.6.0" + tiny-invariant: "npm:^1.0.2" + tiny-warning: "npm:^1.0.0" + peerDependencies: + react: ">=15" + checksum: 10/4631eed91020c73950804c7c7454e74b2eb495f803c5ca60c8b5572ca72cc06e336f3b08d9ee3fa730128a52c4d9e16d1aa7e8b7f85560629117e16d99a01cef + languageName: node + linkType: hard + +"react-select@npm:5.8.0": + version: 5.8.0 + resolution: "react-select@npm:5.8.0" + dependencies: + "@babel/runtime": "npm:^7.12.0" + "@emotion/cache": "npm:^11.4.0" + "@emotion/react": "npm:^11.8.1" + "@floating-ui/dom": "npm:^1.0.1" + "@types/react-transition-group": "npm:^4.4.0" + memoize-one: "npm:^6.0.0" + prop-types: "npm:^15.6.0" + react-transition-group: "npm:^4.3.0" + use-isomorphic-layout-effect: "npm:^1.1.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/04d3639ea1872a9e4d9080ece1947432fc595403c0a740f671a1b7f7dd2639288cb133ec7a2b1ac20fad69fd303d696c2f924763405e0e1d93b847e54df9e966 + languageName: node + linkType: hard + +"react-table@npm:7.8.0": + version: 7.8.0 + resolution: "react-table@npm:7.8.0" + peerDependencies: + react: ^16.8.3 || ^17.0.0-0 || ^18.0.0 + checksum: 10/0c87db8f8823f8eca7a5521d406fa0c75d79972d47768f0c8347af3fa51f9856eea449186a0e2db2effc54d1d74a4e3477855cdbe9adf836d7dfac3a6ec5cdbf + languageName: node + linkType: hard + +"react-transition-group@npm:4.4.5": + version: 4.4.5 + resolution: "react-transition-group@npm:4.4.5" + dependencies: + "@babel/runtime": "npm:^7.5.5" + dom-helpers: "npm:^5.0.1" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 10/ca32d3fd2168c976c5d90a317f25d5f5cd723608b415fb3b9006f9d793c8965c619562d0884503a3e44e4b06efbca4fdd1520f30e58ca3e00a0890e637d55419 + languageName: node + linkType: hard + +"react-transition-group@npm:^4.3.0": + version: 4.4.1 + resolution: "react-transition-group@npm:4.4.1" + dependencies: + "@babel/runtime": "npm:^7.5.5" + dom-helpers: "npm:^5.0.1" + loose-envify: "npm:^1.4.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ">=16.6.0" + react-dom: ">=16.6.0" + checksum: 10/393ebcd37591d2ceef5d527f78b35ce34a49cffe4c24f1f4ff75c145c31943a4b0eb9d9e99b76651db650bafcb526111d78bae834ce464add8a142504b0c56e4 + languageName: node + linkType: hard + +"react-universal-interface@npm:^0.6.2": + version: 0.6.2 + resolution: "react-universal-interface@npm:0.6.2" + peerDependencies: + react: "*" + tslib: "*" + checksum: 10/bded7a34f5e44223495a095b6c29fa3ea6c8338a166d0f307d21443c20c9fa54a95bdae11d05ab3e6f61a7fa1eaa027f6fbe7ca064a2fb2af46539653ebcb308 + languageName: node + linkType: hard + +"react-use@npm:17.5.1": + version: 17.5.1 + resolution: "react-use@npm:17.5.1" + dependencies: + "@types/js-cookie": "npm:^2.2.6" + "@xobotyi/scrollbar-width": "npm:^1.9.5" + copy-to-clipboard: "npm:^3.3.1" + fast-deep-equal: "npm:^3.1.3" + fast-shallow-equal: "npm:^1.0.0" + js-cookie: "npm:^2.2.1" + nano-css: "npm:^5.6.2" + react-universal-interface: "npm:^0.6.2" + resize-observer-polyfill: "npm:^1.5.1" + screenfull: "npm:^5.1.0" + set-harmonic-interval: "npm:^1.0.1" + throttle-debounce: "npm:^3.0.1" + ts-easing: "npm:^0.2.0" + tslib: "npm:^2.1.0" + peerDependencies: + react: "*" + react-dom: "*" + checksum: 10/2da403a9949dbd964b9b8e20dcd354db66b7f7d5ca1f42572fbcdb06bd49ee828c295be4912cb87abc163d1b54820bb8c5fa85314a16c4579d9e30bf9cbd5759 + languageName: node + linkType: hard + +"react-window@npm:1.8.10": + version: 1.8.10 + resolution: "react-window@npm:1.8.10" + dependencies: + "@babel/runtime": "npm:^7.0.0" + memoize-one: "npm:>=3.1.1 <6" + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + checksum: 10/6f4a713a2012d605370ef4c7026a45ddd6801e428faa4cad558b12b05ba54c00de72de9a360db109db9666f972a3d955b63af9e5a4cd5fbc52411a382273107b + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10/b9214a9bd79e99d08de55f8bef2b7fc8c39630be97c4e29d7be173d14a9a10670b5325e94485f74cd8bff4966ef3c78ee53c79a7b0b9b70cba20aa8973acc694 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 + languageName: node + linkType: hard + +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: "npm:^1.20.0" + checksum: 10/ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10/fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b + languageName: node + linkType: hard + +"redux@npm:^4.2.1": + version: 4.2.1 + resolution: "redux@npm:4.2.1" + dependencies: + "@babel/runtime": "npm:^7.9.2" + checksum: 10/371e4833b671193303a7dea7803c8fdc8e0d566740c78f580e0a3b77b4161da25037626900a2205a5d616117fa6ad09a4232e5a110bd437186b5c6355a041750 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.6 + resolution: "reflect.getprototypeof@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.1" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10/518f6457e4bb470c9b317d239c62d4b4a05678b7eae4f1c3f4332fad379b3ea6d2d8999bfad448547fdba8fb77e4725cfe8c6440d0168ff387f16b4f19f759ad + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.11.0": + version: 0.11.1 + resolution: "regenerator-runtime@npm:0.11.1" + checksum: 10/64e62d78594c227e7d5269811bca9e4aa6451332adaae8c79a30cab0fa98733b1ad90bdb9d038095c340c6fad3b414a49a8d9e0b6b424ab7ff8f94f35704f8a2 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.13.4": + version: 0.13.5 + resolution: "regenerator-runtime@npm:0.13.5" + checksum: 10/69aaed4576adec0f3fcbb3f3d863b843c9ce30e8ebc099c961177102cf8c20481569d836ae2157e9e3841b9f1b943aed36de2295584f10992531901e80b678b0 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10/5db3161abb311eef8c45bcf6565f4f378f785900ed3945acf740a9888c792f75b98ecb77f0775f3bf95502ff423529d23e94f41d80c8256e8fa05ed4b07cf471 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.2" + checksum: 10/fe17bc4eebbc72945aaf9dd059eb7784a5ca453a67cc4b5b3e399ab08452c9a05befd92063e2c52e7b24d9238c60031656af32dd57c555d1ba6330dbf8c23b43 + languageName: node + linkType: hard + +"replace-in-file-webpack-plugin@npm:^1.0.6": + version: 1.0.6 + resolution: "replace-in-file-webpack-plugin@npm:1.0.6" + checksum: 10/0c00a074e544ebe1aef0615e594f6daad47427950a2454e88f94dcb185839d68ce07854b83bbcb5f9b2336f8e8ae24017db4eca085135a9be84e43585163301a + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10/a72468e2589270d91f06c7d36ec97a88db53ae5d6fe3787fadc943f0b0276b10347f89b363b2a82285f650bdcc135ad4a257c61bdd4d00d6df1fa24875b0ddaf + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10/839a3a890102a658f4cb3e7b2aa13a1f80a3a976b512020c3d1efc418491c48a886b6e481ea56afc6c4cb5eef678f23b2a4e70575e7534eccadf5e30ed2e56eb + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20 + languageName: node + linkType: hard + +"resize-observer-polyfill@npm:^1.5.1": + version: 1.5.1 + resolution: "resize-observer-polyfill@npm:1.5.1" + checksum: 10/e10ee50cd6cf558001de5c6fb03fee15debd011c2f694564b71f81742eef03fb30d6c2596d1d5bf946d9991cb692fcef529b7bd2e4057041377ecc9636c753ce + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10/91eb76ce83621eea7bbdd9b55121a5c1c4a39e54a9ce04a9ad4517f102f8b5131c2cf07622c738a6683991bf54f2ce178f5a42803ecbd527ddc5105f362cc9e3 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10/be18a5e4d76dd711778664829841cde690971d02b6cbae277735a09c1c28f407b99ef6ef3cd585a1e6546d4097b28df40ed32c4a287b9699dcf6d7f208495e23 + languageName: node + linkType: hard + +"resolve-pathname@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-pathname@npm:3.0.0" + checksum: 10/6147241ba42c423dbe83cb067a2b4af4f60908c3af57e1ea567729cc71416c089737fe2a73e9e79e7a60f00f66c91e4b45ad0d37cd4be2d43fec44963ef14368 + languageName: node + linkType: hard + +"resolve-protobuf-schema@npm:^2.1.0": + version: 2.1.0 + resolution: "resolve-protobuf-schema@npm:2.1.0" + dependencies: + protocol-buffers-schema: "npm:^3.3.1" + checksum: 10/88fffab2a3757888884a36f9aa4e24be5186b01820a8c26297dc1ce406b9daf776594926bdf524c2c8e8e5b0aba8ac48362b6584cdecc9a7083215ebca01c599 + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 + languageName: node + linkType: hard + +"resolve@npm:^1.12.0": + version: 1.17.0 + resolution: "resolve@npm:1.17.0" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10/74141da8c56192fd46f6aa887864f8fd74c1755425174526610cb775177278bb414c6f6feb3051ccd73d774d2ae124c6c97e463e30d7ffd9a87f7da202b851dd + languageName: node + linkType: hard + +"resolve@npm:^1.19.0, resolve@npm:^1.20.0": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/c473506ee01eb45cbcfefb68652ae5759e092e6b0fb64547feadf9736a6394f258fbc6f88e00c5ca36d5477fbb65388b272432a3600fa223062e54333c156753 + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.12.0#optional!builtin": + version: 1.17.0 + resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" + dependencies: + path-parse: "npm:^1.0.6" + checksum: 10/02e87fe9233d169fdc5220572c7b8933c9e23323aaecfd5b8d0b106a7f09dc676dd4d380e66c72b1369489292bcb337b13aad28b480a1bde5a5c040ff16758ea + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/f345cd37f56a2c0275e3fe062517c650bb673815d885e7507566df589375d165bbbf4bdb6aa95600a9bc55f4744b81f452b5a63f95b9f10a72787dba3c90890a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 + languageName: node + linkType: hard + +"robust-predicates@npm:^3.0.2": + version: 3.0.2 + resolution: "robust-predicates@npm:3.0.2" + checksum: 10/88bd7d45a6b89e88da2631d4c111aaaf0443de4d7078e9ab7f732245790a3645cf79bf91882a9740dbc959cf56ba75d5dced5bf2259410f8b6de19fd240cd08c + languageName: node + linkType: hard + +"rtl-css-js@npm:^1.16.1": + version: 1.16.1 + resolution: "rtl-css-js@npm:1.16.1" + dependencies: + "@babel/runtime": "npm:^7.1.2" + checksum: 10/fa6a3e1f73e65bf5763b8a051942477a0852ee072d29ebad0999f02556a73715e72374d9a31ddec3fe023b09702b56f8be3a5a0404816e795ab86ea879183e02 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rw@npm:1, rw@npm:^1.3.3": + version: 1.3.3 + resolution: "rw@npm:1.3.3" + checksum: 10/e90985d64777a00f4ab5f8c0bfea2fb5645c6bda5238840afa339c8a4f86f776e8ce83731155643a7425a0b27ce89077dab27b2f57519996ba4d2fe54cac1941 + languageName: node + linkType: hard + +"rxjs@npm:7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10/b10cac1a5258f885e9dd1b70d23c34daeb21b61222ee735d2ec40a8685bdca40429000703a44f0e638c27a684ac139e1c37e835d2a0dc16f6fc061a138ae3abb + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2": + version: 1.1.2 + resolution: "safe-array-concat@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10/a54f8040d7cb696a1ee38d19cc71ab3cfb654b9b81bae00c6459618cfad8214ece7e6666592f9c925aafef43d0a20c5e6fbb3413a2b618e1ce9d516a2e6dcfc5 + languageName: node + linkType: hard + +"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10/7eb5b48f2ed9a594a4795677d5a150faa7eb54483b2318b568dc0c4fc94092a6cce5be02c7288a0500a156282f5276d5688bce7259299568d1053b2150ef374a + languageName: node + linkType: hard + +"safe-json-parse@npm:~1.0.1": + version: 1.0.1 + resolution: "safe-json-parse@npm:1.0.1" + checksum: 10/5af65161011fd06dc1c51c18d759fe0df9e075fad4f5f363bc61403f4d963c3481f12d1794bbacef72aee7def20f426126da5767c283d9fcaecead34828499ad + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10/b04de61114b10274d92e25b6de7ccb5de07f11ea15637ff636de4b5190c0f5cd8823fe586dde718504cf78055437d70fd8804976894df502fcf5a210c970afb3 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 + languageName: node + linkType: hard + +"sass-loader@npm:13.3.1": + version: 13.3.1 + resolution: "sass-loader@npm:13.3.1" + dependencies: + klona: "npm:^2.0.6" + neo-async: "npm:^2.6.2" + peerDependencies: + fibers: ">= 3.1.0" + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: "*" + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + checksum: 10/e7b90287264370a7e855c2e155e814c4c2767a845c45b62d070988f2e8359e4811493c2c1739c510cac864b9edf4a5f1acfe081f139b3feb6297993e5dca7932 + languageName: node + linkType: hard + +"sass@npm:1.63.2": + version: 1.63.2 + resolution: "sass@npm:1.63.2" + dependencies: + chokidar: "npm:>=3.0.0 <4.0.0" + immutable: "npm:^4.0.0" + source-map-js: "npm:>=0.6.2 <2.0.0" + bin: + sass: sass.js + checksum: 10/97f1bcc86d4ab2cfa5855d0dee3082fe9c94d7f29a083c43a68d4693c6a005eb2d9fec3cffec43a748a67bd161f979f7b46606370395275d94f2d4549934ae5d + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10/97b50daf6ca3a153e89842efa18a862e446248296622b7473c169c84c823ee8a16e4a43bac2f73f11fc8cb9168c73fbb0d73340f26552bac17970e9052367aa9 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 + languageName: node + linkType: hard + +"schema-utils@npm:>1.0.0, schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10/808784735eeb153ab7f3f787f840aa3bc63f423d2a5a7e96c9e70a0e53d0bc62d7b37ea396fc598ce19196e4fb86a72f897154b7c6ce2358bbc426166f205e14 + languageName: node + linkType: hard + +"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10/2c7bbb1da967fdfd320e6cea538949006ec6e8c13ea560a4f94ff2c56809a8486fa5ec419e023452501a6befe1ca381e409c2798c24f4993c7c4094d97fdb258 + languageName: node + linkType: hard + +"screenfull@npm:^5.1.0": + version: 5.2.0 + resolution: "screenfull@npm:5.2.0" + checksum: 10/b8b4b8010f48889341ad1981ca9e6e02db1f10dec686244d95bd2bfde47451059f5ba4c744449913b10f021f14f79d374987a873b6086eb488295962ba50381e + languageName: node + linkType: hard + +"selection-is-backward@npm:^1.0.0": + version: 1.0.0 + resolution: "selection-is-backward@npm:1.0.0" + checksum: 10/93b540811393816979d4798b4706433a15d64f892f59524e66473b5b239bfffd629a7bca490be32c6773c47286c513b74e97fb68a7bb5d98f3eac998b505e85a + languageName: node + linkType: hard + +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10/505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10/c7614154a53ebf8c0428a6c40a3b0b47dac30587c1a19703d1b75f003803f73cdfa6a93474a9ba678fa565ef5fbddc2fae79bca03b7d22ab5fd5163dbe571a74 + languageName: node + linkType: hard + +"set-harmonic-interval@npm:^1.0.1": + version: 1.0.1 + resolution: "set-harmonic-interval@npm:1.0.1" + checksum: 10/14b9ce98625af9e0d80165a5c8ceb76ce1206df641197e020780e570f268f5427961138d3f47591962e2626b498a051a4488eaa646e5473373f843d7e9e468d4 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10/e066bd540cfec5e1b0f78134853e0d892d1c8945fb9a926a579946052e7cb0c70ca4fc34f875a8083aa7910d751805d36ae64af250a6de6f3d28f9fa7be6c21b + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: 10/f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10/c9fa63bbbd7431066174a48ba2dd9986dfd930c3a8b59de9c29d7b6854ec1c12a80d15310869ea5166d413b99f041bfa3dd80a7947bcd44ea8e6eb3ffeabfa1f + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10/aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10/94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10/da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d + languageName: node + linkType: hard + +"slate-base64-serializer@npm:^0.2.112": + version: 0.2.115 + resolution: "slate-base64-serializer@npm:0.2.115" + dependencies: + isomorphic-base64: "npm:^1.0.2" + peerDependencies: + slate: ">=0.32.0 <0.50.0" + checksum: 10/5bccd52d71a6f8ff877c12a4d6d6ed4b3e65de1c1bed828fcd24dbaec46c7caac2ab5dc559d64ed66c8943780ca40e444c26aaf0f3cea55725a92187bc2ea689 + languageName: node + linkType: hard + +"slate-dev-environment@npm:^0.2.2": + version: 0.2.5 + resolution: "slate-dev-environment@npm:0.2.5" + dependencies: + is-in-browser: "npm:^1.1.3" + checksum: 10/dce57027a1f2a41262096c48fecb83e27f7f4f98c0b889376f5d67e1ad141a0a1663b18928191e9663919b477e70fdbaa28a7736741f07bb257d06dfce77bbc8 + languageName: node + linkType: hard + +"slate-hotkeys@npm:^0.2.9": + version: 0.2.11 + resolution: "slate-hotkeys@npm:0.2.11" + dependencies: + is-hotkey: "npm:0.1.4" + slate-dev-environment: "npm:^0.2.2" + checksum: 10/302c0186b4483fe33fd6d7001f9526c9a3a9706ff5ceaa0dcd0a74bea08a27d29a612b03512a7dcf29a5693d417515bf021d8b75788b4147c6d2cb7850c3c0ac + languageName: node + linkType: hard + +"slate-plain-serializer@npm:0.7.13, slate-plain-serializer@npm:^0.7.11": + version: 0.7.13 + resolution: "slate-plain-serializer@npm:0.7.13" + peerDependencies: + immutable: ">=3.8.1" + slate: ">=0.46.0 <0.50.0" + checksum: 10/835a8c2a09cb3c091f9b900c2c2728731496c953d6183194d47a8ea62dfd45107dbde18f974070502182139f4ffc2a289b5e95a9d32654d2386cc64adbf985ee + languageName: node + linkType: hard + +"slate-prop-types@npm:^0.5.42": + version: 0.5.44 + resolution: "slate-prop-types@npm:0.5.44" + peerDependencies: + immutable: ">=3.8.1" + slate: ">=0.32.0 <0.50.0" + checksum: 10/6ef3632255383ef3a8a13e0f52c191a7b1d23064bf5f14f8f316555f2d63ac32dc9e8d429fa742ce7219caa32e69a9163d24f36d5c6789d1c9b14a4158eea339 + languageName: node + linkType: hard + +"slate-react-placeholder@npm:^0.2.9": + version: 0.2.9 + resolution: "slate-react-placeholder@npm:0.2.9" + peerDependencies: + react: ">=16.0.0" + slate: ">=0.47.0" + slate-react: ">=0.22.0" + checksum: 10/34b9cd299bda66031ad6d88e63748439e4ad47a4dfddef04ebf47d8e3afbf3be9fb5e8ca923ef719e7c9f8627af4d3faf764c858b68761e376c0f3daeab705f8 + languageName: node + linkType: hard + +"slate-react@npm:0.22.10": + version: 0.22.10 + resolution: "slate-react@npm:0.22.10" + dependencies: + debug: "npm:^3.1.0" + get-window: "npm:^1.1.1" + is-window: "npm:^1.0.2" + lodash: "npm:^4.1.1" + memoize-one: "npm:^4.0.0" + prop-types: "npm:^15.5.8" + react-immutable-proptypes: "npm:^2.1.0" + selection-is-backward: "npm:^1.0.0" + slate-base64-serializer: "npm:^0.2.112" + slate-dev-environment: "npm:^0.2.2" + slate-hotkeys: "npm:^0.2.9" + slate-plain-serializer: "npm:^0.7.11" + slate-prop-types: "npm:^0.5.42" + slate-react-placeholder: "npm:^0.2.9" + tiny-invariant: "npm:^1.0.1" + tiny-warning: "npm:^0.0.3" + peerDependencies: + immutable: ">=3.8.1 || >4.0.0-rc" + react: ">=16.6.0" + react-dom: ">=16.6.0" + slate: ">=0.47.0" + checksum: 10/f2567ff451a0064d44bd5153f30f24e70bdeea5ad5345f48d82ba58a4b9db2d8c55a6f269aa1e6358831f514fd782b1337c2c6258f1055b51788c27bff3dd22e + languageName: node + linkType: hard + +"slate@npm:0.47.9": + version: 0.47.9 + resolution: "slate@npm:0.47.9" + dependencies: + debug: "npm:^3.1.0" + direction: "npm:^0.1.5" + esrever: "npm:^0.2.0" + is-plain-object: "npm:^2.0.4" + lodash: "npm:^4.17.4" + tiny-invariant: "npm:^1.0.1" + tiny-warning: "npm:^0.0.3" + type-of: "npm:^2.0.1" + peerDependencies: + immutable: ">=3.8.1 || >4.0.0-rc" + checksum: 10/d1c66218d8c562f2ee17d9c79a7b985423855e4529252ebdf85f570ad46783f7a133c0ee274fb2fda1a7164571fd49d8bfd5fda0e0d89dbb49d3510b2b385c45 + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.4 + resolution: "socks-proxy-agent@npm:8.0.4" + dependencies: + agent-base: "npm:^7.1.1" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10/c8e7c2b398338b49a0a0f4d2bae5c0602aeeca6b478b99415927b6c5db349ca258448f2c87c6958ebf83eea17d42cbc5d1af0bfecb276cac10b9658b0f07f7d7 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10/ffcb622c22481dfcd7589aae71fbfd71ca34334064d181df64bf8b7feaeee19706aba4cffd1de35cc7bbaeeaa0af96be2d7f40fcbc7bc0ab69533a7ae9ffc4fb + languageName: node + linkType: hard + +"sort-asc@npm:^0.1.0": + version: 0.1.0 + resolution: "sort-asc@npm:0.1.0" + checksum: 10/c130223336a9431edd4c12cf0a4893eb9327591f8c9d9ccd1b27a42f7657b4bb84807d7150d79fc52ab7d1e9691684897de7ef2a6a3516d32349af68d2705d57 + languageName: node + linkType: hard + +"sort-desc@npm:^0.1.1": + version: 0.1.1 + resolution: "sort-desc@npm:0.1.1" + checksum: 10/f2a2568f4eaf9a7315700ae9e46e74ae7b395f24323bf807f07b20269a7c162b549b0bac6d5bb8e26f7ee15af72a74fdaf09d47257227dbe31c4ac8f13b19e1d + languageName: node + linkType: hard + +"sort-object@npm:^0.3.2": + version: 0.3.2 + resolution: "sort-object@npm:0.3.2" + dependencies: + sort-asc: "npm:^0.1.0" + sort-desc: "npm:^0.1.1" + checksum: 10/701fac8b49e9c720f4e5f4b70e995a795771dbecab2368b2e362c5c02cc269418a061f3303c47137d22fc3fe1ded03b4fd4215edec0960c4721274d320dae2b4 + languageName: node + linkType: hard + +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e + languageName: node + linkType: hard + +"source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10/8317e12d84019b31e34b86d483dd41d6f832f389f7417faf8fc5c75a66a12d9686e47f589a0554a868b8482f037e23df9d040d29387eb16fa14cb85f091ba207 + languageName: node + linkType: hard + +"source-map@npm:0.5.6": + version: 0.5.6 + resolution: "source-map@npm:0.5.6" + checksum: 10/c62fe98e106c762307eea3a982242c1a76a31bc762da10fe2dda12252d423c163e0cd45d313330c8bd040cc5121702511138252308f72b8a9273825e81e4db30 + languageName: node + linkType: hard + +"source-map@npm:^0.5.7": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10/9b4ac749ec5b5831cad1f8cc4c19c4298ebc7474b24a0acf293e2f040f03f8eeccb3d01f12aa0f90cf46d555c887e03912b83a042c627f419bda5152d89c5269 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10/bb127d6e2532de65b912f7c99fc66097cdea7d64c10d3ec9b5e96524dbbd7d20e01cba818a6ddb2ae75e62bb0c63d5e277a7e555a85cbc8ab40044984fa4ae15 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.1": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10/a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.20 + resolution: "spdx-license-ids@npm:3.0.20" + checksum: 10/30e566ea74b04232c64819d1f5313c00d92e9c73d054541650331fc794499b3bcc4991bcd90fa3c2fc4d040006f58f63104706255266e87a9d452e6574afc60c + languageName: node + linkType: hard + +"split-on-first@npm:^3.0.0": + version: 3.0.0 + resolution: "split-on-first@npm:3.0.0" + checksum: 10/75dc27ecbac65cfbeab9a3b90cf046307220192d3d7a30e46aa0f19571cc9b4802aac813f3de2cc9b16f2e46aae72f275659b5d2614bb5369c77724d739e5f73 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10/e7587128c423f7e43cc625fe2f87e6affdf5ca51c1cc468e910d8aaca46bb44a7fbcfa552f787b1d3987f7043aeb4527d1b99559e6621e01b42b3f45e5a24cbb + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10/c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.6 + resolution: "ssri@npm:10.0.6" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10/f92c1b3cc9bfd0a925417412d07d999935917bc87049f43ebec41074661d64cf720315661844106a77da9f8204b6d55ae29f9514e673083cae39464343af2a8b + languageName: node + linkType: hard + +"stack-generator@npm:^2.0.5": + version: 2.0.10 + resolution: "stack-generator@npm:2.0.10" + dependencies: + stackframe: "npm:^1.3.4" + checksum: 10/4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10/cdc988acbc99075b4b036ac6014e5f1e9afa7e564482b687da6384eee6a1909d7eaffde85b0a17ffbe186c5247faf6c2b7544e802109f63b72c7be69b13151bb + languageName: node + linkType: hard + +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: 10/29ca71c1fd17974c1c178df0236b1407bc65f6ea389cc43dec000def6e42ff548d4453de9a85b76469e2ae2b2abdd802c6b6f3db947c05794efbd740d1cf4121 + languageName: node + linkType: hard + +"stacktrace-gps@npm:^3.0.4": + version: 3.1.2 + resolution: "stacktrace-gps@npm:3.1.2" + dependencies: + source-map: "npm:0.5.6" + stackframe: "npm:^1.3.4" + checksum: 10/21cb60ce0990f7a661e964cf4bdef1e70dda2286fb628fbd0fd1e69e8925138433d08ed84969de2d396b3b91515e15336a502f777c26587db89f3933d6f63f9b + languageName: node + linkType: hard + +"stacktrace-js@npm:^2.0.2": + version: 2.0.2 + resolution: "stacktrace-js@npm:2.0.2" + dependencies: + error-stack-parser: "npm:^2.0.6" + stack-generator: "npm:^2.0.5" + stacktrace-gps: "npm:^3.0.4" + checksum: 10/e5f60a09852687e4a9206927fe1078e24d63e00a71a2dcddd67940e9504a54931a3454439d5b4e3e0e62aeb979be810573e8d3332fbef0dbfa335a8781b4b57c + languageName: node + linkType: hard + +"state-local@npm:^1.0.6": + version: 1.0.7 + resolution: "state-local@npm:1.0.7" + checksum: 10/1d956043e270861d40a639ff3457938cf61dbc7e25209d21b55060d8dfaf74742b8a1e525ed6fcb0c2d89b7d3e305bb8589bf27392012889456b3ad82a4b7d0a + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: "npm:^1.0.4" + checksum: 10/2a23a36f4f6bfa63f46ae2d53a3f80fe8276110b95a55345d8ed3d92125413494033bc8697eb774e8f7aeb5725f70e3d69753caa2ecacdac6258c16fa8aa8b0f + languageName: node + linkType: hard + +"string-hash@npm:^1.1.3": + version: 1.1.3 + resolution: "string-hash@npm:1.1.3" + checksum: 10/104b8667a5e0dc71bfcd29fee09cb88c6102e27bfb07c55f95535d90587d016731d52299380052e514266f4028a7a5172e0d9ac58e2f8f5001be61dc77c0754d + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 + languageName: node + linkType: hard + +"string-template@npm:~0.2.1": + version: 0.2.1 + resolution: "string-template@npm:0.2.1" + checksum: 10/042cdcf4d4832378f12fbf45b42f479990f330cc409e6dc184838801efbc8352ccf9428fe169f8f8cfff2b864879d4ba1ef8b5f41d63d1d71844c48005a1683f + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10/e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10/7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.8": + version: 4.0.11 + resolution: "string.prototype.matchall@npm:4.0.11" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + regexp.prototype.flags: "npm:^1.5.2" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.0.6" + checksum: 10/a902ff4500f909f2a08e55cc5ab1ffbbc905f603b36837674370ee3921058edd0392147e15891910db62a2f31ace2adaf065eaa3bc6e9810bdbc8ca48e05a7b5 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.9": + version: 1.2.9 + resolution: "string.prototype.trim@npm:1.2.9" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10/b2170903de6a2fb5a49bb8850052144e04b67329d49f1343cdc6a87cb24fb4e4b8ad00d3e273a399b8a3d8c32c89775d93a8f43cb42fbff303f25382079fb58a + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimend@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/c2e862ae724f95771da9ea17c27559d4eeced9208b9c20f69bbfcd1b9bc92375adf8af63a103194dba17c4cc4a5cb08842d929f415ff9d89c062d44689c8761b + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/160167dfbd68e6f7cb9f51a16074eebfce1571656fc31d40c3738ca9e30e35496f2c046fe57b6ad49f65f238a152be8c86fd9a2dd58682b5eba39dad995b3674 + languageName: node + linkType: hard + +"string_decoder@npm:0.10": + version: 0.10.31 + resolution: "string_decoder@npm:0.10.31" + checksum: 10/cc43e6b1340d4c7843da0e37d4c87a4084c2342fc99dcf6563c3ec273bb082f0cbd4ebf25d5da19b04fb16400d393885fda830be5128e1c416c73b5a6165f175 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10/ae3b5436d34fadeb6096367626ce987057713c566e1e7768818797e00ac5d62023d0f198c4e681eae9e20701721980b26a64a8f5b91238869592a9c6800719a2 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10/475f53e9c44375d6e72807284024ac5d668ee1d06010740dec0b9744f2ddf47de8d7151f80e5f6190fc8f384e802fdf9504b76a7e9020c9faee7103623338be2 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10/8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 + languageName: node + linkType: hard + +"strip-comments@npm:^2.0.1": + version: 2.0.1 + resolution: "strip-comments@npm:2.0.1" + checksum: 10/43ea36189e4ba543c6ffb0384831e9e23c3b57ede5592c6edcbfc883f489f91d00328fe2670b4e467f61c7886eff68deae3e946f0f092346b2b3cb058b9cfdba + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10/69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10/18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + languageName: node + linkType: hard + +"style-loader@npm:3.3.3": + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" + peerDependencies: + webpack: ^5.0.0 + checksum: 10/6c13d5075b5a5d69602215a242ef157460766e6e8a2e48276eb5da5b9852716910b48b3f120d492bbc7cd825dfa940b35fc84e1a9ab2a8792fd8d568b6b3e87a + languageName: node + linkType: hard + +"stylis@npm:4.2.0": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 10/58359185275ef1f39c339ae94e598168aa6bb789f6cf0d52e726c1e7087a94e9c17f0385a28d34483dec1ffc2c75670ec714dc5603d99c3124ec83bc2b0a0f42 + languageName: node + linkType: hard + +"stylis@npm:^4.3.0": + version: 4.3.4 + resolution: "stylis@npm:4.3.4" + checksum: 10/69b902a3c9fc3329c8ddb18d422f8130068356dd4d4a20ae245953679cc88ae08d49c55e32b0b57c8fe8a76f2ed7f32697240b8db4d368a25fc2db045ebaeba8 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10/5f505c6fa3c6e05873b43af096ddeb22159831597649881aeb8572d6fe3b81e798cc10840d0c9735e0026b250368851b7f77b65e84f4e4daa820a4f69947f55b + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.1.0 + resolution: "supports-color@npm:7.1.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10/f5b2df5336c825ac31ea155180d88b5b5aacaaa7037c5b15d73412b84f1187c205b289e41a303ae6919a261f6642ceea350281e047885b499d2c3a551056f70a + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e + languageName: node + linkType: hard + +"swc-loader@npm:^0.2.3": + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": "npm:^0.1.3" + peerDependencies: + "@swc/core": ^1.2.147 + webpack: ">=2" + checksum: 10/fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10/c09a00aadf279d47d0c5c46ca3b6b2fbaeb45f0a184976d599637d412d3a70bbdc043ff33effe1206dea0e36e0ad226cb957112e7ce9a4bf2daedf7fa4f85c53 + languageName: node + linkType: hard + +"tabbable@npm:^6.0.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10/980fa73476026e99dcacfc0d6e000d41d42c8e670faf4682496d30c625495e412c4369694f2a15cf1e5252d22de3c396f2b62edbe8d60b5dadc40d09e3f2dde3 + languageName: node + linkType: hard + +"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10/1769336dd21481ae6347611ca5fca47add0962fd8e80466515032125eca0084a4f0ede11e65341b9c0018ef4e1cf1ad820adbb0fba7cc99865c6005734000b0a + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.2.1": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.20" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10/fb1c2436ae1b4e983be043fa0a3d355c047b16b68f102437d08c736d7960c001e7420e2f722b9d99ce0dc70ca26a68cc63c0b82bc45f5b48671142b352a9d938 + languageName: node + linkType: hard + +"terser@npm:^5.26.0": + version: 5.34.1 + resolution: "terser@npm:5.34.1" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10/4389f39b5b841e2a7795ee733b54bf8fc44f8784a78c213dae32c7e6adc66c3bb258ebdcbacb8e7f1fa08fceb20bfc4ce4f7666d42bbfc29ab71126e89614c34 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10/8fccb2cb6c8fcb6bb4115394feb833f8b6cf4b9503ec2485c2c90febf435cac62abe882a0c5c51a37b9bbe70640cdd05acf5f45e486ac4583389f4b0855f69e5 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452 + languageName: node + linkType: hard + +"throttle-debounce@npm:^3.0.1": + version: 3.0.1 + resolution: "throttle-debounce@npm:3.0.1" + checksum: 10/c2b591bc881c595d44d5ee82cc607747569a84cd9652e7d9613d92759d84ffd61eab1ca56c6a294316b8c9978ff6d46c2c94ed95de5847f3de4b6c30342cb947 + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.0.1, tiny-invariant@npm:^1.0.6": + version: 1.1.0 + resolution: "tiny-invariant@npm:1.1.0" + checksum: 10/27d29bbb9e1d1d86e25766711c28ad91af6d67c87d561167077ac7fbce5212b97bbfe875e70bc369808e075748c825864c9b61f0e9f8652275ec86bcf4dcc924 + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.0.2": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 10/5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + +"tiny-lr@npm:^1.1.1": + version: 1.1.1 + resolution: "tiny-lr@npm:1.1.1" + dependencies: + body: "npm:^5.1.0" + debug: "npm:^3.1.0" + faye-websocket: "npm:~0.10.0" + livereload-js: "npm:^2.3.0" + object-assign: "npm:^4.1.0" + qs: "npm:^6.4.0" + checksum: 10/1601382129d1ce575c2bd1fa490d2f6ca292e53d8266cb59e5e4f2a7b30e2a6cd8ce719227aa48e25549a729de93103bfe2ba51206362e96c363ea9e4374d8f2 + languageName: node + linkType: hard + +"tiny-warning@npm:^0.0.3": + version: 0.0.3 + resolution: "tiny-warning@npm:0.0.3" + checksum: 10/edc25b4cfd50f55cdfde932b172b94f8581f6f1b1e5a9ec15c4978f7719baf523e71e26549dde714787868d41aa6b9bc1dacff2300cc0d180f8c44d040f7b1a5 + languageName: node + linkType: hard + +"tiny-warning@npm:^1.0.0, tiny-warning@npm:^1.0.3": + version: 1.0.3 + resolution: "tiny-warning@npm:1.0.3" + checksum: 10/da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 + languageName: node + linkType: hard + +"tinycolor2@npm:1.6.0": + version: 1.6.0 + resolution: "tinycolor2@npm:1.6.0" + checksum: 10/066c3acf4f82b81c58a0d3ab85f49407efe95ba87afc3c7a16b1d77625193dfbe10dd46c26d0a263c1137361dd5a6a68bff2fb71def5fb9b9aec940fb030bcd4 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10/cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 + languageName: node + linkType: hard + +"to-camel-case@npm:1.0.0": + version: 1.0.0 + resolution: "to-camel-case@npm:1.0.0" + dependencies: + to-space-case: "npm:^1.0.0" + checksum: 10/2f74cfcffa58e8ddede7e01a03eda2cc3f0ab50efdad1d0f1092d55b4e499be43846d1f9087c458fa9efde4958e407738197d65858272c56c915b649b9ca1e62 + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 + languageName: node + linkType: hard + +"to-no-case@npm:^1.0.0": + version: 1.0.2 + resolution: "to-no-case@npm:1.0.2" + checksum: 10/80671e9cb9695ceea2fff23f4678caa6d7a579a2077ecb8f9a0745d90a6435b505bd299688041328f702836289b6ac6a32abba76c5c3922639c0d0224df3dffa + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a + languageName: node + linkType: hard + +"to-space-case@npm:^1.0.0": + version: 1.0.0 + resolution: "to-space-case@npm:1.0.0" + dependencies: + to-no-case: "npm:^1.0.0" + checksum: 10/157cebe3e98e7cb465fe1978cf26450cc8ea8e637a01039854fac7ed60ad074e5e18b32333cc5f30df81b81ca374d63df768cd4c1fa0fe672605f965376227f4 + languageName: node + linkType: hard + +"toggle-selection@npm:^1.0.6": + version: 1.0.6 + resolution: "toggle-selection@npm:1.0.6" + checksum: 10/9a0ed0ecbaac72b4944888dacd79fe0a55eeea76120a4c7e46b3bb3d85b24f086e90560bb22f5a965654a25ab43d79ec47dfdb3f1850ba740b14c5a50abc7040 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2": + version: 4.1.4 + resolution: "tough-cookie@npm:4.1.4" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10/75663f4e2cd085f16af0b217e4218772adf0617fb3227171102618a54ce0187a164e505d61f773ed7d65988f8ff8a8f935d381f87da981752c1171b076b4afac + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: "npm:^2.1.1" + checksum: 10/b09a15886cbfaee419a3469081223489051ce9dca3374dd9500d2378adedbee84a3c73f83bfdd6bb13d53657753fc0d4e20a46bfcd3f1b9057ef528426ad7ce4 + languageName: node + linkType: hard + +"ts-api-utils@npm:^1.0.1": + version: 1.3.0 + resolution: "ts-api-utils@npm:1.3.0" + peerDependencies: + typescript: ">=4.2.0" + checksum: 10/3ee44faa24410cd649b5c864e068d438aa437ef64e9e4a66a41646a6d3024d3097a695eeb3fb26ee364705d3cb9653a65756d009e6a53badb6066a5f447bf7ed + languageName: node + linkType: hard + +"ts-easing@npm:^0.2.0": + version: 0.2.0 + resolution: "ts-easing@npm:0.2.0" + checksum: 10/e67ee862acca3b2e2718e736f31999adcef862d0df76d76a0e138588728d8a87dfec9978556044640bd0e90203590ad88ac2fe8746d0e9959b8d399132315150 + languageName: node + linkType: hard + +"ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10/a91a15b3c9f76ac462f006fa88b6bfa528130dcfb849dd7ef7f9d640832ab681e235b8a2bc58ecde42f72851cc1d5d4e22c901b0c11aa51001ea1d395074b794 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^4.2.0": + version: 4.2.0 + resolution: "tsconfig-paths@npm:4.2.0" + dependencies: + json5: "npm:^2.2.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10/5e55cc2fb6b800eb72011522e10edefccb45b1f9af055681a51354c9b597d1390c6fa9cc356b8c7529f195ac8a90a78190d563159f3a1eed10e01bbd4d01a8ab + languageName: node + linkType: hard + +"tslib@npm:2.5.3": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 10/d507e60ebe2480af4efc1655dfdb2762bb6ca57d76c4ba680375af801493648c2e97808bbd7e54691eb40e33a7e2e793cdef9c24ce6a8539b03cac8b26e09a61 + languageName: node + linkType: hard + +"tslib@npm:2.6.2": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca + languageName: node + linkType: hard + +"tslib@npm:2.6.3": + version: 2.6.3 + resolution: "tslib@npm:2.6.3" + checksum: 10/52109bb681f8133a2e58142f11a50e05476de4f075ca906d13b596ae5f7f12d30c482feb0bff167ae01cfc84c5803e575a307d47938999246f5a49d174fc558c + languageName: node + linkType: hard + +"tslib@npm:^1.8.1": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb + languageName: node + linkType: hard + +"tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.6.2": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 10/ea036bec1dd024e309939ffd49fda7a351c0e87a1b8eb049570dd119d447250e2c56e0e6c00554e8205760e7417793fdebff752a46e573fbe07d4f375502a5b2 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10/14687776479d048e3c1dbfe58a2409e00367810d6960c0f619b33793271ff2a27f81b52461f14a162f1f89a9b1d8da1b237fc7c99b0e1fdcec28ec63a86b1fec + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f + languageName: node + linkType: hard + +"type-of@npm:^2.0.1": + version: 2.0.1 + resolution: "type-of@npm:2.0.1" + checksum: 10/5da0273c61ae3eaeb4cb2580a823d2a5d593b572f994b92c2bebf124dc25b6a6cc9d55a2a7e709bae3b392c6b71ef62a93030c53417e859b0f9db942586ff2cd + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10/02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "typed-array-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10/e4a38329736fe6a73b52a09222d4a9e8de14caaa4ff6ad8e55217f6705b017d9815b7284c85065b3b8a7704e226ccff1372a72b78c2a5b6b71b7bf662308c903 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.2": + version: 1.0.2 + resolution: "typed-array-byte-offset@npm:1.0.2" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + checksum: 10/ac26d720ebb2aacbc45e231347c359e6649f52e0cfe0e76e62005912f8030d68e4cb7b725b1754e8fdd48e433cb68df5a8620a3e420ad1457d666e8b29bf9150 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.6": + version: 1.0.6 + resolution: "typed-array-length@npm:1.0.6" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.3" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + checksum: 10/05e96cf4ff836743ebfc593d86133b8c30e83172cb5d16c56814d7bacfed57ce97e87ada9c4b2156d9aaa59f75cdef01c25bd9081c7826e0b869afbefc3e8c39 + languageName: node + linkType: hard + +"typed-assert@npm:^1.0.8": + version: 1.0.9 + resolution: "typed-assert@npm:1.0.9" + checksum: 10/03b7e756cc5dd3a50a6580f8eb5376461986ecad67bc848fda26e2c5c4fd4514f04a9149ece4484f4ec5126aa4ef76bdaeccf2cfe9d66840602db7bafe3b7161 + languageName: node + linkType: hard + +"typescript@npm:5.2.2": + version: 5.2.2 + resolution: "typescript@npm:5.2.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/d65e50eb849bd21ff8677e5b9447f9c6e74777e346afd67754934264dcbf4bd59e7d2473f6062d9a015d66bd573311166357e3eb07fea0b52859cf9bb2b58555 + languageName: node + linkType: hard + +"typescript@npm:5.4.5": + version: 5.4.5 + resolution: "typescript@npm:5.4.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5 + languageName: node + linkType: hard + +"typescript@npm:5.5.4": + version: 5.5.4 + resolution: "typescript@npm:5.5.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/1689ccafef894825481fc3d856b4834ba3cc185a9c2878f3c76a9a1ef81af04194849840f3c69e7961e2312771471bb3b460ca92561e1d87599b26c37d0ffb6f + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.2.2#optional!builtin": + version: 5.2.2 + resolution: "typescript@patch:typescript@npm%3A5.2.2#optional!builtin::version=5.2.2&hash=f3b441" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/f79cc2ba802c94c2b78dbb00d767a10adb67368ae764709737dc277273ec148aa4558033a03ce901406b35fddf4eac46dabc94a1e1d12d2587e2b9cfe5707b4a + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": + version: 5.4.5 + resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=d69c25" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/584be8bac7112ad49a9eb9992f71d542b1ff2fafb5bb315e1c196145e8feab589f1d7223cfb2d5df6770789582e6918f8287d1f2f89911b38eb80e29c560ad00 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.5.4#optional!builtin": + version: 5.5.4 + resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=d69c25" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/2c065f0ef81855eac25c9b658a3c9da65ffc005260c12854c2286f40f3667e1b1ecf8bdbdd37b59aa0397920378ce7900bff8cb32e0f1c7af6fd86efc676718c + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.32": + version: 1.0.39 + resolution: "ua-parser-js@npm:1.0.39" + bin: + ua-parser-js: script/cli.js + checksum: 10/dd4026b6ece8a34a0d39b6de5542154c4506077d8def8647a300a29e1b3ffa0e23f5c8eeeb8101df6162b7b3eb3597d0b4adb031ae6104cbdb730d6ebc07f3c0 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10/8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10/40912a8963fc02fb8b600cf50197df4a275c602c60de4cac4f75879d3c48558cfac48de08a25cc10df8112161f7180b3bbb4d662aadb711568602f9eddee54f0 + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10/ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.0": + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10/7678dd8609750588d01aa7460e8eddf2ff9d16c2a52fb1811190e0d056390f1fdffd94db3cf8fb209cf634ab4fa9407886338711c71cc6ccade5eeb22b093734 + languageName: node + linkType: hard + +"uplot@npm:1.6.30": + version: 1.6.30 + resolution: "uplot@npm:1.6.30" + checksum: 10/08ad2f9441b8cfa26d9219362cdbb6f2dc6e5ec9403382df71798ed3e9d3666e7712c8a245e652ebb4a25c5d911cbdc614b52dfd891c0f7ce8705320d2eff81f + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10/c9e96bc8c5b34e9f05ddfeffc12f6aadecbb0d971b3cc26015b58d5b44676a99f50d5aeb1e5c9e61fa4d49961ae3ab1ae997369ed44da51b2f5ac010d188e6ad + languageName: node + linkType: hard + +"use-isomorphic-layout-effect@npm:^1.1.2": + version: 1.1.2 + resolution: "use-isomorphic-layout-effect@npm:1.1.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 10/fd3787ed19f6cfbf70e2c5822d01bebbf96b00968195840d5ad61082b8e6ca7a8e2e46270c4096537d18a38ea57f4e4e9668cce5eec36fa4697ddba2ef1203fd + languageName: node + linkType: hard + +"use-memo-one@npm:^1.1.3": + version: 1.1.3 + resolution: "use-memo-one@npm:1.1.3" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/8f08eba26d69406b61bb4b8dacdd5a92bd6aef5b53d346dfe87954f7330ee10ecabc937cc7854635155d46053828e85c10b5a5aff7a04720e6a97b9f42999bac + languageName: node + linkType: hard + +"use-sync-external-store@npm:^1.0.0": + version: 1.2.2 + resolution: "use-sync-external-store@npm:1.2.2" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10/671e9c190aab9a8374a5d468c6ba17f52c38b6fae970110bc196fc1e2b57204149aea9619be49a1bb5207fb6e51d8afd19c3bcb94afe61813fed039821461dc0 + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.2": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + languageName: node + linkType: hard + +"util@npm:^0.12.0": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10/61a10de7753353dd4d744c917f74cdd7d21b8b46379c1e48e1c4fd8e83f8190e6bd9978fc4e5102ab6a10ebda6019d1b36572fa4a325e175ec8b789a121f6147 + languageName: node + linkType: hard + +"uuid@npm:9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10/9d0b6adb72b736e36f2b1b53da0d559125ba3e39d913b6072f6f033e0c87835b414f0836b45bcfaf2bdf698f92297fea1c3cc19b0b258bc182c9c43cc0fab9f2 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166 + languageName: node + linkType: hard + +"value-equal@npm:^1.0.1": + version: 1.0.1 + resolution: "value-equal@npm:1.0.1" + checksum: 10/bb7ae1facc76b5cf8071aeb6c13d284d023fdb370478d10a5d64508e0e6e53bb459c4bbe34258df29d82e6f561f874f0105eba38de0e61fe9edd0bdce07a77a2 + languageName: node + linkType: hard + +"void-elements@npm:3.1.0": + version: 3.1.0 + resolution: "void-elements@npm:3.1.0" + checksum: 10/0390f818107fa8fce55bb0a5c3f661056001c1d5a2a48c28d582d4d847347c2ab5b7f8272314cac58acf62345126b6b09bea623a185935f6b1c3bbce0dfd7f7f + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: "npm:^4.0.0" + checksum: 10/9a00c412b5496f4f040842c9520bc0aaec6e0c015d06412a91a723cd7d84ea605ab903965f546b4ecdb3eae267f5145ba08565222b1d6cb443ee488cda9a0aee + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10/ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c + languageName: node + linkType: hard + +"warning@npm:^4.0.0": + version: 4.0.3 + resolution: "warning@npm:4.0.3" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10/e7842aff036e2e07ce7a6cc3225e707775b969fe3d0577ad64bd24660e3a9ce3017f0b8c22a136566dcd3a151f37b8ed1ccee103b3bd82bd8a571bf80b247bc4 + languageName: node + linkType: hard + +"watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 + languageName: node + linkType: hard + +"web-vitals@npm:^4.0.1": + version: 4.2.3 + resolution: "web-vitals@npm:4.2.3" + checksum: 10/f4f1b0d6e0dd06b50a1d48c5cbe8a2804f26c5778d7c9bd0a8f591c147fd044f35465a3e95659b9ca801bfd85742e0ac70c3416228c4241d858fcecb8b396503 + languageName: node + linkType: hard + +"web-worker@npm:^1.2.0": + version: 1.3.0 + resolution: "web-worker@npm:1.3.0" + checksum: 10/9dd89763997a7fa4c50128bed088137775c6033cc2aead24fd82e8292991bb1d3ffc672b47df16eed86c9268d2bf230d5bb3e0d06f41a7b3c0c4c36abf4c1ba7 + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10/4c4f65472c010eddbe648c11b977d048dd96956a625f7f8b9d64e1b30c3c1f23ea1acfd654648426ce5c743c2108a5a757c0592f02902cf7367adb7d14e67721 + languageName: node + linkType: hard + +"webpack-cli@npm:^5.1.4": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + dependencies: + "@discoveryjs/json-ext": "npm:^0.5.0" + "@webpack-cli/configtest": "npm:^2.1.1" + "@webpack-cli/info": "npm:^2.0.2" + "@webpack-cli/serve": "npm:^2.0.5" + colorette: "npm:^2.0.14" + commander: "npm:^10.0.1" + cross-spawn: "npm:^7.0.3" + envinfo: "npm:^7.7.3" + fastest-levenshtein: "npm:^1.0.12" + import-local: "npm:^3.0.2" + interpret: "npm:^3.1.1" + rechoir: "npm:^0.8.0" + webpack-merge: "npm:^5.7.3" + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 10/9ac3ae7c43b032051de2803d751bd3b44e1f226b931dcd56066a8e01b12734d49730903df9235e1eb1b67b2ee7451faf24a219c8f4a229c4f42c42e827eac44c + languageName: node + linkType: hard + +"webpack-livereload-plugin@npm:^3.0.2": + version: 3.0.2 + resolution: "webpack-livereload-plugin@npm:3.0.2" + dependencies: + anymatch: "npm:^3.1.1" + portfinder: "npm:^1.0.17" + schema-utils: "npm:>1.0.0" + tiny-lr: "npm:^1.1.1" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10/d7a01b77ae40e17d359ef3f0cb3bf7639f1449a2a7a6a13b438924d4a9cf996a652d99fe6e638b504845a1e71da7aec8e63743c6b1a7d04010bc228ef89ab1d1 + languageName: node + linkType: hard + +"webpack-merge@npm:^5.7.3": + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" + dependencies: + clone-deep: "npm:^4.0.1" + flat: "npm:^5.0.2" + wildcard: "npm:^2.0.0" + checksum: 10/fa46ab200f17d06c7cb49fc37ad91f15769753953c9724adac1061fa305a2a223cb37c3ed25a5f501580c91f11a0800990fe3814c70a77bf1aa5b3fca45a2ac6 + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 10/a661f41795d678b7526ae8a88cd1b3d8ce71a7d19b6503da8149b2e667fc7a12f9b899041c1665d39e38245ed3a59ab68de648ea31040c3829aa695a5a45211d + languageName: node + linkType: hard + +"webpack-subresource-integrity@npm:^5.1.0": + version: 5.1.0 + resolution: "webpack-subresource-integrity@npm:5.1.0" + dependencies: + typed-assert: "npm:^1.0.8" + peerDependencies: + html-webpack-plugin: ">= 5.0.0-beta.1 < 6" + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + checksum: 10/815704e739de6c949229519a0d5d0d9a038c363f6dd89d79c6cad715409e5a67ea93c22eb0c46169293192a525d21ac5f675f13908cdaaab17c519c04382238c + languageName: node + linkType: hard + +"webpack-virtual-modules@npm:^0.6.2": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 10/d9a0d035f7ec0c7f1055aaf88bfe48b7f96458043916a1b2926d9012fd61de3810a6b768e31a8cd4b3c84a9b6d55824361a9dd20aaf9f5ccfb6f017af216a178 + languageName: node + linkType: hard + +"webpack@npm:^5.94.0": + version: 5.95.0 + resolution: "webpack@npm:5.95.0" + dependencies: + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.12.1" + "@webassemblyjs/wasm-edit": "npm:^1.12.1" + "@webassemblyjs/wasm-parser": "npm:^1.12.1" + acorn: "npm:^8.7.1" + acorn-import-attributes: "npm:^1.9.5" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10/0377ad3a550b041f26237c96fb55754625b0ce6bae83c1c2447e3262ad056b0b0ad770dcbb92b59f188e9a2bd56155ce910add17dcf023cfbe78bdec774380c1 + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: "npm:>=0.5.1" + safe-buffer: "npm:>=5.1.0" + websocket-extensions: "npm:>=0.1.1" + checksum: 10/17197d265d5812b96c728e70fd6fe7d067471e121669768fe0c7100c939d997ddfc807d371a728556e24fc7238aa9d58e630ea4ff5fd4cfbb40f3d0a240ef32d + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 10/b5399b487d277c78cdd2aef63764b67764aa9899431e3a2fa272c6ad7236a0fb4549b411d89afa76d5afd664c39d62fc19118582dc937e5bb17deb694f42a0d1 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10/162d712d88fd134a4fe587e53302da812eb4215a1baa4c394dfd86eff31d0a079ff932c05233857997de07481093358d6e7587997358f49b8a580a777be22089 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10/96f9f628c663c2ae05412c185ca81b3df54bcb921ab52fe9ebc0081c1720f25d770665401eb2338ab7f48c71568133845638e18a81ed52ab5d4dcef7d22b40ef + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: "npm:^3.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10/dfcd51c6f4bfb54685528fb10927f3fd3d7c809b5671beef4a8cdd7b1408a7abf3343a35bc71dab83a1424f1c1e92cc2700d7930d95d231df0fac361de0c7648 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.4 + resolution: "which-builtin-type@npm:1.1.4" + dependencies: + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 10/c0cdb9b004e7a326f4ce54c75b19658a3bec73601a71dd7e2d9538accb3e781b546b589c3f306caf5e7429ac1c8019028d5e662e2860f03603354105b8247c83 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10/674bf659b9bcfe4055f08634b48a8588e879161b9fefed57e9ec4ff5601e4d50a05ccd76cf10f698ef5873784e5df3223336d56c7ce88e13bcf52ebe582fc8d7 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": + version: 1.1.15 + resolution: "which-typed-array@npm:1.1.15" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10/4782f8a1d6b8fc12c65e968fea49f59752bf6302dc43036c3bf87da718a80710f61a062516e9764c70008b487929a73546125570acea95c5b5dcc8ac3052c70f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10/f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 10/e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10/cebdaeca3a6880da410f75209e68cd05428580de5ad24535f22696d7d9cab134d1f8498599f344c3cf0fb37c1715807a183778d8c648d6cc0cb5ff2bb4236540 + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10/7b1e4b35e9bb2312d2ee9ee7dc95b8cb5f8b4b5a89f7dde5543fe66c1e3715663094defa50d75454ac900bd210f702d575f15f3f17fa9ec0291806d2578d1ddf + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10/3be1f5508a46c190619d5386b1ac8f3af3dbe951ed0f7b0b4a0961eed6fc626bd84b50cf4be768dabc0a05b672f5d0c5ee7f42daa557b14415d18c3a13c7d246 + languageName: node + linkType: hard + +"ws@npm:^8.11.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/70dfe53f23ff4368d46e4c0b1d4ca734db2c4149c6f68bc62cb16fc21f753c47b35fcc6e582f3bdfba0eaeb1c488cddab3c2255755a5c3eecb251431e42b3ff6 + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: 10/f9582a3f281f790344a471c207516e29e293c6041b2c20d84dd6e58832cd7c19796c47e108fd4fd4b164a5e72ad94f2268f8ace8231cde4a2c6428d6aa220f92 + languageName: node + linkType: hard + +"xml-utils@npm:^1.0.2": + version: 1.10.1 + resolution: "xml-utils@npm:1.10.1" + checksum: 10/b5b7c8d62cbe18ac4c05f70ca1da0c0f5e703a019e636cea1b6bd9d82bc27f8fbbceb2da0371812323d5e8c2dd0beaf957c18a99b0ea68b247c605eb57383fe3 + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10/4ad5924974efd004a47cce6acf5c0269aee0e62f9a805a426db3337af7bcbd331099df174b024ace4fb18971b8a56de386d2e73a1c4b020e3abd63a4a9b917f1 + languageName: node + linkType: hard + +"xss@npm:^1.0.14": + version: 1.0.15 + resolution: "xss@npm:1.0.15" + dependencies: + commander: "npm:^2.20.3" + cssfilter: "npm:0.0.10" + bin: + xss: bin/xss + checksum: 10/074ad54babac9dd5107466dbf30d3b871dbedae1f8e7b8f4e3b76d60da8b92bd0f66f18ccd26b8524545444ef784b78c526cee089a907aa904f83c8b8d7958f6 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10/5f1b5f95e3775de4514edbb142398a2c37849ccfaf04a015be5d75521e9629d3be29bd4432d23c57f37e5b61ade592fb0197022e9993f81a06a5afbdcda9346d + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10/e088b37b4d4885b70b50c9fa1b7e54bd2e27f5c87205f9deaffd1fb293ab263d9c964feadb9817a7b129a5bf30a06582cb08750f810568ecc14f3cdbabb79cb3 + languageName: node + linkType: hard + +"yaml@npm:^1.7.2": + version: 1.10.0 + resolution: "yaml@npm:1.10.0" + checksum: 10/dc65f8d0dc5853a7391ed0cd48782bb747ada0065e60d5a5f83eb2a8bc3ec609b2fbf77db6a7df204151cc6e2efb8bfb7314d487f21c2a181bf375cc42eb450f + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10/9dc2c217ea3bf8d858041252d43e074f7166b53f3d010a8c711275e09cd3d62a002969a39858b92bbda2a6a63a585c7127014534a560b9c69ed2d923d113406e + languageName: node + linkType: hard + +"yargs@npm:^17.3.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10/abb3e37678d6e38ea85485ed86ebe0d1e3464c640d7d9069805ea0da12f69d5a32df8e5625e370f9c96dd1c2dc088ab2d0a4dd32af18222ef3c4224a19471576 + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard + +"youtube-video-panel@workspace:.": + version: 0.0.0-use.local + resolution: "youtube-video-panel@workspace:." + dependencies: + "@babel/core": "npm:^7.21.4" + "@emotion/css": "npm:11.10.6" + "@grafana/data": "npm:next" + "@grafana/eslint-config": "npm:^7.0.0" + "@grafana/runtime": "npm:^11.2.2" + "@grafana/schema": "npm:^10.4.0" + "@grafana/tsconfig": "npm:^2.0.0" + "@grafana/ui": "npm:next" + "@swc/core": "npm:^1.3.90" + "@swc/helpers": "npm:^0.5.0" + "@swc/jest": "npm:^0.2.26" + "@testing-library/jest-dom": "npm:6.1.4" + "@testing-library/react": "npm:14.0.0" + "@types/jest": "npm:^29.5.0" + "@types/node": "npm:^20.8.7" + "@types/react-router-dom": "npm:^5.2.0" + "@types/testing-library__jest-dom": "npm:5.14.8" + copy-webpack-plugin: "npm:^11.0.0" + css-loader: "npm:^6.7.3" + emotion: "npm:10.0.27" + eslint-plugin-deprecation: "npm:^2.0.0" + eslint-webpack-plugin: "npm:^4.0.1" + fork-ts-checker-webpack-plugin: "npm:^8.0.0" + glob: "npm:^10.2.7" + identity-obj-proxy: "npm:3.0.0" + imports-loader: "npm:^5.0.0" + jest: "npm:^29.5.0" + jest-environment-jsdom: "npm:^29.5.0" + prettier: "npm:^2.8.7" + query-string: "npm:^9.1.0" + react: "npm:18.2.0" + react-dom: "npm:18.2.0" + replace-in-file-webpack-plugin: "npm:^1.0.6" + sass: "npm:1.63.2" + sass-loader: "npm:13.3.1" + style-loader: "npm:3.3.3" + swc-loader: "npm:^0.2.3" + terser-webpack-plugin: "npm:^5.3.10" + ts-node: "npm:^10.9.2" + tsconfig-paths: "npm:^4.2.0" + tslib: "npm:2.5.3" + typescript: "npm:5.5.4" + webpack: "npm:^5.94.0" + webpack-cli: "npm:^5.1.4" + webpack-livereload-plugin: "npm:^3.0.2" + webpack-subresource-integrity: "npm:^5.1.0" + webpack-virtual-modules: "npm:^0.6.2" + languageName: unknown + linkType: soft + +"zstddec@npm:^0.1.0": + version: 0.1.0 + resolution: "zstddec@npm:0.1.0" + checksum: 10/818d7a7b910509bed32a5ae42352dc45e87e4ee8470c27352859824540efceb9643864afbbb93564beb76822d72a946a6ee7cfbf01627ee34a1cd9656f2857b8 + languageName: node + linkType: hard From 242a7c50ff4eb02302fd113f2bcdb9ed9b1b6c24 Mon Sep 17 00:00:00 2001 From: copyhold Date: Mon, 7 Oct 2024 12:27:04 +0300 Subject: [PATCH 6/6] delete yt plugin --- .../youtube-video-panel/.circleci/config.yml | 67 - .../youtube-video-panel/.codeclimate.yml | 8 - .../youtube-video-panel/.config/.cprc.json | 3 - .../youtube-video-panel/.config/.eslintrc | 25 - .../.config/.prettierrc.js | 16 - .../youtube-video-panel/.config/Dockerfile | 53 - .../youtube-video-panel/.config/README.md | 164 - .../youtube-video-panel/.config/entrypoint.sh | 18 - .../youtube-video-panel/.config/jest-setup.js | 28 - .../.config/jest.config.js | 43 - .../.config/jest/mocks/react-inlinesvg.tsx | 25 - .../youtube-video-panel/.config/jest/utils.js | 31 - .../.config/supervisord/supervisord.conf | 15 - .../youtube-video-panel/.config/tsconfig.json | 26 - .../.config/types/custom.d.ts | 37 - .../.config/webpack/constants.ts | 2 - .../.config/webpack/utils.ts | 63 - .../.config/webpack/webpack.config.ts | 271 - .../plugins/youtube-video-panel/.editorconfig | 16 - data/plugins/youtube-video-panel/.eslintrc | 3 - data/plugins/youtube-video-panel/.gitignore | 31 - data/plugins/youtube-video-panel/.nvmrc | 1 - .../youtube-video-panel/.prettierrc.js | 4 - data/plugins/youtube-video-panel/CHANGELOG.md | 7 - data/plugins/youtube-video-panel/LICENSE | 201 - data/plugins/youtube-video-panel/README.md | 41 - data/plugins/youtube-video-panel/appveyor.yml | 26 - .../youtube-video-panel/dist/CHANGELOG.md | 7 - data/plugins/youtube-video-panel/dist/LICENSE | 201 - .../youtube-video-panel/dist/README.md | 41 - .../youtube-video-panel/dist/img/logo.svg | 1 - .../youtube-video-panel/dist/module.js | 14 - .../youtube-video-panel/dist/module.js.map | 1 - .../youtube-video-panel/dist/plugin.json | 34 - .../youtube-video-panel/docker-compose.yaml | 24 - .../youtube-video-panel/docs/README.md | 1 - .../plugins/youtube-video-panel/jest-setup.js | 2 - .../youtube-video-panel/jest.config.js | 8 - data/plugins/youtube-video-panel/package.json | 82 - .../youtube-video-panel/src/YoutubePanel.tsx | 66 - .../youtube-video-panel/src/img/logo.svg | 1 - .../youtube-video-panel/src/module.test.ts | 6 - .../plugins/youtube-video-panel/src/module.ts | 28 - .../youtube-video-panel/src/plugin.json | 34 - data/plugins/youtube-video-panel/src/types.ts | 6 - .../plugins/youtube-video-panel/tsconfig.json | 3 - data/plugins/youtube-video-panel/yarn.lock | 12140 ---------------- 47 files changed, 13925 deletions(-) delete mode 100755 data/plugins/youtube-video-panel/.circleci/config.yml delete mode 100644 data/plugins/youtube-video-panel/.codeclimate.yml delete mode 100644 data/plugins/youtube-video-panel/.config/.cprc.json delete mode 100644 data/plugins/youtube-video-panel/.config/.eslintrc delete mode 100644 data/plugins/youtube-video-panel/.config/.prettierrc.js delete mode 100644 data/plugins/youtube-video-panel/.config/Dockerfile delete mode 100644 data/plugins/youtube-video-panel/.config/README.md delete mode 100644 data/plugins/youtube-video-panel/.config/entrypoint.sh delete mode 100644 data/plugins/youtube-video-panel/.config/jest-setup.js delete mode 100644 data/plugins/youtube-video-panel/.config/jest.config.js delete mode 100644 data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx delete mode 100644 data/plugins/youtube-video-panel/.config/jest/utils.js delete mode 100644 data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf delete mode 100644 data/plugins/youtube-video-panel/.config/tsconfig.json delete mode 100644 data/plugins/youtube-video-panel/.config/types/custom.d.ts delete mode 100644 data/plugins/youtube-video-panel/.config/webpack/constants.ts delete mode 100644 data/plugins/youtube-video-panel/.config/webpack/utils.ts delete mode 100644 data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts delete mode 100644 data/plugins/youtube-video-panel/.editorconfig delete mode 100644 data/plugins/youtube-video-panel/.eslintrc delete mode 100644 data/plugins/youtube-video-panel/.gitignore delete mode 100644 data/plugins/youtube-video-panel/.nvmrc delete mode 100644 data/plugins/youtube-video-panel/.prettierrc.js delete mode 100644 data/plugins/youtube-video-panel/CHANGELOG.md delete mode 100644 data/plugins/youtube-video-panel/LICENSE delete mode 100644 data/plugins/youtube-video-panel/README.md delete mode 100644 data/plugins/youtube-video-panel/appveyor.yml delete mode 100644 data/plugins/youtube-video-panel/dist/CHANGELOG.md delete mode 100644 data/plugins/youtube-video-panel/dist/LICENSE delete mode 100644 data/plugins/youtube-video-panel/dist/README.md delete mode 100644 data/plugins/youtube-video-panel/dist/img/logo.svg delete mode 100644 data/plugins/youtube-video-panel/dist/module.js delete mode 100644 data/plugins/youtube-video-panel/dist/module.js.map delete mode 100644 data/plugins/youtube-video-panel/dist/plugin.json delete mode 100644 data/plugins/youtube-video-panel/docker-compose.yaml delete mode 100644 data/plugins/youtube-video-panel/docs/README.md delete mode 100644 data/plugins/youtube-video-panel/jest-setup.js delete mode 100644 data/plugins/youtube-video-panel/jest.config.js delete mode 100644 data/plugins/youtube-video-panel/package.json delete mode 100644 data/plugins/youtube-video-panel/src/YoutubePanel.tsx delete mode 100644 data/plugins/youtube-video-panel/src/img/logo.svg delete mode 100644 data/plugins/youtube-video-panel/src/module.test.ts delete mode 100644 data/plugins/youtube-video-panel/src/module.ts delete mode 100644 data/plugins/youtube-video-panel/src/plugin.json delete mode 100644 data/plugins/youtube-video-panel/src/types.ts delete mode 100644 data/plugins/youtube-video-panel/tsconfig.json delete mode 100644 data/plugins/youtube-video-panel/yarn.lock diff --git a/data/plugins/youtube-video-panel/.circleci/config.yml b/data/plugins/youtube-video-panel/.circleci/config.yml deleted file mode 100755 index 9f5fabb7c3534..0000000000000 --- a/data/plugins/youtube-video-panel/.circleci/config.yml +++ /dev/null @@ -1,67 +0,0 @@ -version: 2.1 - -parameters: - ssh-fingerprint: - type: string - default: ${GITHUB_SSH_FINGERPRINT} - -aliases: - # Workflow filters - - &filter-only-master - branches: - only: master - - &filter-only-release - branches: - only: /^v[1-9]*[0-9]+\.[1-9]*[0-9]+\.x$/ - -workflows: - plugin_workflow: - jobs: - - build - -executors: - default_exec: # declares a reusable executor - docker: - - image: srclosson/grafana-plugin-ci-alpine:latest - e2e_exec: - docker: - - image: srclosson/grafana-plugin-ci-e2e:latest - -jobs: - build: - executor: default_exec - steps: - - checkout - - restore_cache: - name: restore node_modules - keys: - - build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} - - run: - name: Install dependencies - command: | - mkdir ci - [ -f ~/project/node_modules/.bin/grafana-toolkit ] || yarn install --frozen-lockfile - - save_cache: - name: save node_modules - paths: - - ~/project/node_modules - key: build-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "yarn.lock" }} - - run: - name: Build and test frontend - command: ./node_modules/.bin/grafana-toolkit plugin:ci-build - - run: - name: Move results to ci folder - command: ./node_modules/.bin/grafana-toolkit plugin:ci-build --finish - - run: - name: Package distribution - command: | - ./node_modules/.bin/grafana-toolkit plugin:ci-package - - persist_to_workspace: - root: . - paths: - - ci/jobs/package - - ci/packages - - ci/dist - - ci/grafana-test-env - - store_artifacts: - path: ci diff --git a/data/plugins/youtube-video-panel/.codeclimate.yml b/data/plugins/youtube-video-panel/.codeclimate.yml deleted file mode 100644 index 5ec9380d02243..0000000000000 --- a/data/plugins/youtube-video-panel/.codeclimate.yml +++ /dev/null @@ -1,8 +0,0 @@ -exclude_patterns: -- "dist" -- "**/node_modules/" -- "**/*.d.ts" -- "src/libs/" -- "src/images/" -- "src/img/" -- "src/screenshots/" diff --git a/data/plugins/youtube-video-panel/.config/.cprc.json b/data/plugins/youtube-video-panel/.config/.cprc.json deleted file mode 100644 index 6848868398212..0000000000000 --- a/data/plugins/youtube-video-panel/.config/.cprc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "version": "5.5.1" -} diff --git a/data/plugins/youtube-video-panel/.config/.eslintrc b/data/plugins/youtube-video-panel/.config/.eslintrc deleted file mode 100644 index b614760976a82..0000000000000 --- a/data/plugins/youtube-video-panel/.config/.eslintrc +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in - * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-eslint-config - */ -{ - "extends": ["@grafana/eslint-config"], - "root": true, - "rules": { - "react/prop-types": "off" - }, - "overrides": [ - { - "plugins": ["deprecation"], - "files": ["src/**/*.{ts,tsx}"], - "rules": { - "deprecation/deprecation": "warn" - }, - "parserOptions": { - "project": "./tsconfig.json" - } - } - ] -} diff --git a/data/plugins/youtube-video-panel/.config/.prettierrc.js b/data/plugins/youtube-video-panel/.config/.prettierrc.js deleted file mode 100644 index bf506f5ce7fb7..0000000000000 --- a/data/plugins/youtube-video-panel/.config/.prettierrc.js +++ /dev/null @@ -1,16 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in .config/README.md - */ - -module.exports = { - endOfLine: 'auto', - printWidth: 120, - trailingComma: 'es5', - semi: true, - jsxSingleQuote: false, - singleQuote: true, - useTabs: false, - tabWidth: 2, -}; diff --git a/data/plugins/youtube-video-panel/.config/Dockerfile b/data/plugins/youtube-video-panel/.config/Dockerfile deleted file mode 100644 index 2793416a4abe4..0000000000000 --- a/data/plugins/youtube-video-panel/.config/Dockerfile +++ /dev/null @@ -1,53 +0,0 @@ -ARG grafana_version=latest -ARG grafana_image=grafana-enterprise - -FROM grafana/${grafana_image}:${grafana_version} - -ARG development=false -ARG TARGETARCH - - -ENV DEV "${development}" - -# Make it as simple as possible to access the grafana instance for development purposes -# Do NOT enable these settings in a public facing / production grafana instance -ENV GF_AUTH_ANONYMOUS_ORG_ROLE "Admin" -ENV GF_AUTH_ANONYMOUS_ENABLED "true" -ENV GF_AUTH_BASIC_ENABLED "false" -# Set development mode so plugins can be loaded without the need to sign -ENV GF_DEFAULT_APP_MODE "development" - - -LABEL maintainer="Grafana Labs " - -ENV GF_PATHS_HOME="/usr/share/grafana" -WORKDIR $GF_PATHS_HOME - -USER root - -# Installing supervisor and inotify-tools -RUN if [ "${development}" = "true" ]; then \ - if grep -i -q alpine /etc/issue; then \ - apk add supervisor inotify-tools git; \ - elif grep -i -q ubuntu /etc/issue; then \ - DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y supervisor inotify-tools git && \ - rm -rf /var/lib/apt/lists/*; \ - else \ - echo 'ERROR: Unsupported base image' && /bin/false; \ - fi \ - fi - -COPY supervisord/supervisord.conf /etc/supervisor.d/supervisord.ini -COPY supervisord/supervisord.conf /etc/supervisor/conf.d/supervisord.conf - - - -# Inject livereload script into grafana index.html -RUN sed -i 's|||g' /usr/share/grafana/public/views/index.html - - -COPY entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh -ENTRYPOINT ["/entrypoint.sh"] diff --git a/data/plugins/youtube-video-panel/.config/README.md b/data/plugins/youtube-video-panel/.config/README.md deleted file mode 100644 index 4de64b5228ac7..0000000000000 --- a/data/plugins/youtube-video-panel/.config/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# Default build configuration by Grafana - -**This is an auto-generated directory and is not intended to be changed! ⚠️** - -The `.config/` directory holds basic configuration for the different tools -that are used to develop, test and build the project. In order to make it updates easier we ask you to -not edit files in this folder to extend configuration. - -## How to extend the basic configs? - -Bear in mind that you are doing it at your own risk, and that extending any of the basic configuration can lead -to issues around working with the project. - -### Extending the ESLint config - -Edit the `.eslintrc` file in the project root in order to extend the ESLint configuration. - -**Example:** - -```json -{ - "extends": "./.config/.eslintrc", - "rules": { - "react/prop-types": "off" - } -} -``` - ---- - -### Extending the Prettier config - -Edit the `.prettierrc.js` file in the project root in order to extend the Prettier configuration. - -**Example:** - -```javascript -module.exports = { - // Prettier configuration provided by Grafana scaffolding - ...require('./.config/.prettierrc.js'), - - semi: false, -}; -``` - ---- - -### Extending the Jest config - -There are two configuration in the project root that belong to Jest: `jest-setup.js` and `jest.config.js`. - -**`jest-setup.js`:** A file that is run before each test file in the suite is executed. We are using it to -set up the Jest DOM for the testing library and to apply some polyfills. ([link to Jest docs](https://jestjs.io/docs/configuration#setupfilesafterenv-array)) - -**`jest.config.js`:** The main Jest configuration file that extends the Grafana recommended setup. ([link to Jest docs](https://jestjs.io/docs/configuration)) - -#### ESM errors with Jest - -A common issue with the current jest config involves importing an npm package that only offers an ESM build. These packages cause jest to error with `SyntaxError: Cannot use import statement outside a module`. To work around this, we provide a list of known packages to pass to the `[transformIgnorePatterns](https://jestjs.io/docs/configuration#transformignorepatterns-arraystring)` jest configuration property. If need be, this can be extended in the following way: - -```javascript -process.env.TZ = 'UTC'; -const { grafanaESModules, nodeModulesToTransform } = require('./config/jest/utils'); - -module.exports = { - // Jest configuration provided by Grafana - ...require('./.config/jest.config'), - // Inform jest to only transform specific node_module packages. - transformIgnorePatterns: [nodeModulesToTransform([...grafanaESModules, 'packageName'])], -}; -``` - ---- - -### Extending the TypeScript config - -Edit the `tsconfig.json` file in the project root in order to extend the TypeScript configuration. - -**Example:** - -```json -{ - "extends": "./.config/tsconfig.json", - "compilerOptions": { - "preserveConstEnums": true - } -} -``` - ---- - -### Extending the Webpack config - -Follow these steps to extend the basic Webpack configuration that lives under `.config/`: - -#### 1. Create a new Webpack configuration file - -Create a new config file that is going to extend the basic one provided by Grafana. -It can live in the project root, e.g. `webpack.config.ts`. - -#### 2. Merge the basic config provided by Grafana and your custom setup - -We are going to use [`webpack-merge`](https://github.com/survivejs/webpack-merge) for this. - -```typescript -// webpack.config.ts -import type { Configuration } from 'webpack'; -import { merge } from 'webpack-merge'; -import grafanaConfig from './.config/webpack/webpack.config'; - -const config = async (env): Promise => { - const baseConfig = await grafanaConfig(env); - - return merge(baseConfig, { - // Add custom config here... - output: { - asyncChunks: true, - }, - }); -}; - -export default config; -``` - -#### 3. Update the `package.json` to use the new Webpack config - -We need to update the `scripts` in the `package.json` to use the extended Webpack configuration. - -**Update for `build`:** - -```diff --"build": "webpack -c ./.config/webpack/webpack.config.ts --env production", -+"build": "webpack -c ./webpack.config.ts --env production", -``` - -**Update for `dev`:** - -```diff --"dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", -+"dev": "webpack -w -c ./webpack.config.ts --env development", -``` - -### Configure grafana image to use when running docker - -By default, `grafana-enterprise` will be used as the docker image for all docker related commands. If you want to override this behavior, simply alter the `docker-compose.yaml` by adding the following build arg `grafana_image`. - -**Example:** - -```yaml -version: '3.7' - -services: - grafana: - container_name: 'myorg-basic-app' - build: - context: ./.config - args: - grafana_version: ${GRAFANA_VERSION:-9.1.2} - grafana_image: ${GRAFANA_IMAGE:-grafana} -``` - -In this example, we assign the environment variable `GRAFANA_IMAGE` to the build arg `grafana_image` with a default value of `grafana`. This will allow you to set the value while running the docker compose commands, which might be convenient in some scenarios. - ---- diff --git a/data/plugins/youtube-video-panel/.config/entrypoint.sh b/data/plugins/youtube-video-panel/.config/entrypoint.sh deleted file mode 100644 index 00c69f246f620..0000000000000 --- a/data/plugins/youtube-video-panel/.config/entrypoint.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -if [ "${DEV}" = "false" ]; then - echo "Starting test mode" - exec /run.sh -fi - -echo "Starting development mode" - -if grep -i -q alpine /etc/issue; then - exec /usr/bin/supervisord -c /etc/supervisord.conf -elif grep -i -q ubuntu /etc/issue; then - exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf -else - echo 'ERROR: Unsupported base image' - exit 1 -fi - diff --git a/data/plugins/youtube-video-panel/.config/jest-setup.js b/data/plugins/youtube-video-panel/.config/jest-setup.js deleted file mode 100644 index 74832e34f1e03..0000000000000 --- a/data/plugins/youtube-video-panel/.config/jest-setup.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in - * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-jest-config - */ - -import '@testing-library/jest-dom'; -import { TextEncoder, TextDecoder } from 'util'; - -Object.assign(global, { TextDecoder, TextEncoder }); - -// https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom -Object.defineProperty(global, 'matchMedia', { - writable: true, - value: (query) => ({ - matches: false, - media: query, - onchange: null, - addListener: jest.fn(), // deprecated - removeListener: jest.fn(), // deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), - }), -}); - -HTMLCanvasElement.prototype.getContext = () => {}; diff --git a/data/plugins/youtube-video-panel/.config/jest.config.js b/data/plugins/youtube-video-panel/.config/jest.config.js deleted file mode 100644 index 09704b4fb95d3..0000000000000 --- a/data/plugins/youtube-video-panel/.config/jest.config.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in - * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-jest-config - */ - -const path = require('path'); -const { grafanaESModules, nodeModulesToTransform } = require('./jest/utils'); - -module.exports = { - moduleNameMapper: { - '\\.(css|scss|sass)$': 'identity-obj-proxy', - 'react-inlinesvg': path.resolve(__dirname, 'jest', 'mocks', 'react-inlinesvg.tsx'), - }, - modulePaths: ['/src'], - setupFilesAfterEnv: ['/jest-setup.js'], - testEnvironment: 'jest-environment-jsdom', - testMatch: [ - '/src/**/__tests__/**/*.{js,jsx,ts,tsx}', - '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', - '/src/**/*.{spec,test,jest}.{js,jsx,ts,tsx}', - ], - transform: { - '^.+\\.(t|j)sx?$': [ - '@swc/jest', - { - sourceMaps: 'inline', - jsc: { - parser: { - syntax: 'typescript', - tsx: true, - decorators: false, - dynamicImport: true, - }, - }, - }, - ], - }, - // Jest will throw `Cannot use import statement outside module` if it tries to load an - // ES module without it being transformed first. ./config/README.md#esm-errors-with-jest - transformIgnorePatterns: [nodeModulesToTransform(grafanaESModules)], -}; diff --git a/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx b/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx deleted file mode 100644 index d540f3aabf895..0000000000000 --- a/data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx +++ /dev/null @@ -1,25 +0,0 @@ -// Due to the grafana/ui Icon component making fetch requests to -// `/public/img/icon/.svg` we need to mock react-inlinesvg to prevent -// the failed fetch requests from displaying errors in console. - -import React from 'react'; - -type Callback = (...args: any[]) => void; - -export interface StorageItem { - content: string; - queue: Callback[]; - status: string; -} - -export const cacheStore: { [key: string]: StorageItem } = Object.create(null); - -const SVG_FILE_NAME_REGEX = /(.+)\/(.+)\.svg$/; - -const InlineSVG = ({ src }: { src: string }) => { - // testId will be the file name without extension (e.g. `public/img/icons/angle-double-down.svg` -> `angle-double-down`) - const testId = src.replace(SVG_FILE_NAME_REGEX, '$2'); - return ; -}; - -export default InlineSVG; diff --git a/data/plugins/youtube-video-panel/.config/jest/utils.js b/data/plugins/youtube-video-panel/.config/jest/utils.js deleted file mode 100644 index fdca0dec9abed..0000000000000 --- a/data/plugins/youtube-video-panel/.config/jest/utils.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in .config/README.md - */ - -/* - * This utility function is useful in combination with jest `transformIgnorePatterns` config - * to transform specific packages (e.g.ES modules) in a projects node_modules folder. - */ -const nodeModulesToTransform = (moduleNames) => `node_modules\/(?!.*(${moduleNames.join('|')})\/.*)`; - -// Array of known nested grafana package dependencies that only bundle an ESM version -const grafanaESModules = [ - '.pnpm', // Support using pnpm symlinked packages - '@grafana/schema', - 'd3', - 'd3-color', - 'd3-force', - 'd3-interpolate', - 'd3-scale-chromatic', - 'ol', - 'react-colorful', - 'rxjs', - 'uuid', -]; - -module.exports = { - nodeModulesToTransform, - grafanaESModules, -}; diff --git a/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf b/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf deleted file mode 100644 index 47624f03cbc57..0000000000000 --- a/data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf +++ /dev/null @@ -1,15 +0,0 @@ -[supervisord] -nodaemon=true -user=root - -[program:grafana] -user=root -directory=/var/lib/grafana -command=/run.sh -stdout_logfile=/dev/fd/1 -stdout_logfile_maxbytes=0 -redirect_stderr=true -killasgroup=true -stopasgroup=true -autostart=true - diff --git a/data/plugins/youtube-video-panel/.config/tsconfig.json b/data/plugins/youtube-video-panel/.config/tsconfig.json deleted file mode 100644 index 15e64aca0a1f1..0000000000000 --- a/data/plugins/youtube-video-panel/.config/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in - * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-typescript-config - */ -{ - "compilerOptions": { - "alwaysStrict": true, - "declaration": false, - "rootDir": "../src", - "baseUrl": "../src", - "typeRoots": ["../node_modules/@types"], - "resolveJsonModule": true - }, - "ts-node": { - "compilerOptions": { - "module": "commonjs", - "target": "es5", - "esModuleInterop": true - }, - "transpileOnly": true - }, - "include": ["../src", "./types"], - "extends": "@grafana/tsconfig" -} diff --git a/data/plugins/youtube-video-panel/.config/types/custom.d.ts b/data/plugins/youtube-video-panel/.config/types/custom.d.ts deleted file mode 100644 index 64e6eaa6f2391..0000000000000 --- a/data/plugins/youtube-video-panel/.config/types/custom.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -// Image declarations -declare module '*.gif' { - const src: string; - export default src; -} - -declare module '*.jpg' { - const src: string; - export default src; -} - -declare module '*.jpeg' { - const src: string; - export default src; -} - -declare module '*.png' { - const src: string; - export default src; -} - -declare module '*.webp' { - const src: string; - export default src; -} - -declare module '*.svg' { - const content: string; - export default content; -} - -// Font declarations -declare module '*.woff'; -declare module '*.woff2'; -declare module '*.eot'; -declare module '*.ttf'; -declare module '*.otf'; diff --git a/data/plugins/youtube-video-panel/.config/webpack/constants.ts b/data/plugins/youtube-video-panel/.config/webpack/constants.ts deleted file mode 100644 index 071e4fd3437df..0000000000000 --- a/data/plugins/youtube-video-panel/.config/webpack/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const SOURCE_DIR = 'src'; -export const DIST_DIR = 'dist'; diff --git a/data/plugins/youtube-video-panel/.config/webpack/utils.ts b/data/plugins/youtube-video-panel/.config/webpack/utils.ts deleted file mode 100644 index 015aa05107a4f..0000000000000 --- a/data/plugins/youtube-video-panel/.config/webpack/utils.ts +++ /dev/null @@ -1,63 +0,0 @@ -import fs from 'fs'; -import process from 'process'; -import os from 'os'; -import path from 'path'; -import { glob } from 'glob'; -import { SOURCE_DIR } from './constants'; - -export function isWSL() { - if (process.platform !== 'linux') { - return false; - } - - if (os.release().toLowerCase().includes('microsoft')) { - return true; - } - - try { - return fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft'); - } catch { - return false; - } -} - -export function getPackageJson() { - return require(path.resolve(process.cwd(), 'package.json')); -} - -export function getPluginJson() { - return require(path.resolve(process.cwd(), `${SOURCE_DIR}/plugin.json`)); -} - -export function getCPConfigVersion() { - const cprcJson = path.resolve(__dirname, '../', '.cprc.json'); - return fs.existsSync(cprcJson) ? require(cprcJson).version : { version: 'unknown' }; -} - -export function hasReadme() { - return fs.existsSync(path.resolve(process.cwd(), SOURCE_DIR, 'README.md')); -} - -// Support bundling nested plugins by finding all plugin.json files in src directory -// then checking for a sibling module.[jt]sx? file. -export async function getEntries(): Promise> { - const pluginsJson = await glob('**/src/**/plugin.json', { absolute: true }); - - const plugins = await Promise.all( - pluginsJson.map((pluginJson) => { - const folder = path.dirname(pluginJson); - return glob(`${folder}/module.{ts,tsx,js,jsx}`, { absolute: true }); - }) - ); - - return plugins.reduce((result, modules) => { - return modules.reduce((result, module) => { - const pluginPath = path.dirname(module); - const pluginName = path.relative(process.cwd(), pluginPath).replace(/src\/?/i, ''); - const entryName = pluginName === '' ? 'module' : `${pluginName}/module`; - - result[entryName] = module; - return result; - }, result); - }, {}); -} diff --git a/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts b/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts deleted file mode 100644 index a0730a3532668..0000000000000 --- a/data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts +++ /dev/null @@ -1,271 +0,0 @@ -/* - * ⚠️⚠️⚠️ THIS FILE WAS SCAFFOLDED BY `@grafana/create-plugin`. DO NOT EDIT THIS FILE DIRECTLY. ⚠️⚠️⚠️ - * - * In order to extend the configuration follow the steps in - * https://grafana.com/developers/plugin-tools/get-started/set-up-development-environment#extend-the-webpack-config - */ - -import CopyWebpackPlugin from 'copy-webpack-plugin'; -import ESLintPlugin from 'eslint-webpack-plugin'; -import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; -import path from 'path'; -import ReplaceInFileWebpackPlugin from 'replace-in-file-webpack-plugin'; -import TerserPlugin from 'terser-webpack-plugin'; -import { SubresourceIntegrityPlugin } from "webpack-subresource-integrity"; -import { type Configuration, BannerPlugin } from 'webpack'; -import LiveReloadPlugin from 'webpack-livereload-plugin'; -import VirtualModulesPlugin from 'webpack-virtual-modules'; - -import { DIST_DIR, SOURCE_DIR } from './constants'; -import { getCPConfigVersion, getEntries, getPackageJson, getPluginJson, hasReadme, isWSL } from './utils'; - -const pluginJson = getPluginJson(); -const cpVersion = getCPConfigVersion(); - -const virtualPublicPath = new VirtualModulesPlugin({ - 'node_modules/grafana-public-path.js': ` -import amdMetaModule from 'amd-module'; - -__webpack_public_path__ = - amdMetaModule && amdMetaModule.uri - ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1) - : 'public/plugins/${pluginJson.id}/'; -`, -}); - -const config = async (env): Promise => { - const baseConfig: Configuration = { - cache: { - type: 'filesystem', - buildDependencies: { - config: [__filename], - }, - }, - - context: path.join(process.cwd(), SOURCE_DIR), - - devtool: env.production ? 'source-map' : 'eval-source-map', - - entry: await getEntries(), - - externals: [ - // Required for dynamic publicPath resolution - { 'amd-module': 'module' }, - 'lodash', - 'jquery', - 'moment', - 'slate', - 'emotion', - '@emotion/react', - '@emotion/css', - 'prismjs', - 'slate-plain-serializer', - '@grafana/slate-react', - 'react', - 'react-dom', - 'react-redux', - 'redux', - 'rxjs', - 'react-router', - 'react-router-dom', - 'd3', - 'angular', - '@grafana/ui', - '@grafana/runtime', - '@grafana/data', - - // Mark legacy SDK imports as external if their name starts with the "grafana/" prefix - ({ request }, callback) => { - const prefix = 'grafana/'; - const hasPrefix = (request) => request.indexOf(prefix) === 0; - const stripPrefix = (request) => request.substr(prefix.length); - - if (hasPrefix(request)) { - return callback(undefined, stripPrefix(request)); - } - - callback(); - }, - ], - - // Support WebAssembly according to latest spec - makes WebAssembly module async - experiments: { - asyncWebAssembly: true, - }, - - mode: env.production ? 'production' : 'development', - - module: { - rules: [ - // This must come first in the rules array otherwise it breaks sourcemaps. - { - test: /src\/(?:.*\/)?module\.tsx?$/, - use: [ - { - loader: 'imports-loader', - options: { - imports: `side-effects grafana-public-path`, - }, - }, - ], - }, - { - exclude: /(node_modules)/, - test: /\.[tj]sx?$/, - use: { - loader: 'swc-loader', - options: { - jsc: { - baseUrl: path.resolve(process.cwd(), SOURCE_DIR), - target: 'es2015', - loose: false, - parser: { - syntax: 'typescript', - tsx: true, - decorators: false, - dynamicImport: true, - }, - }, - }, - }, - }, - { - test: /\.css$/, - use: ['style-loader', 'css-loader'], - }, - { - test: /\.s[ac]ss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - }, - { - test: /\.(png|jpe?g|gif|svg)$/, - type: 'asset/resource', - generator: { - filename: Boolean(env.production) ? '[hash][ext]' : '[file]', - }, - }, - { - test: /\.(woff|woff2|eot|ttf|otf)(\?v=\d+\.\d+\.\d+)?$/, - type: 'asset/resource', - generator: { - filename: Boolean(env.production) ? '[hash][ext]' : '[file]', - }, - }, - ], - }, - - optimization: { - minimize: Boolean(env.production), - minimizer: [ - new TerserPlugin({ - terserOptions: { - format: { - comments: (_, { type, value }) => type === 'comment2' && value.trim().startsWith('[create-plugin]'), - }, - compress: { - drop_console: ['log', 'info'] - } - }, - }), - ], - }, - - output: { - clean: { - keep: new RegExp(`(.*?_(amd64|arm(64)?)(.exe)?|go_plugin_build_manifest)`), - }, - filename: '[name].js', - library: { - type: 'amd', - }, - path: path.resolve(process.cwd(), DIST_DIR), - publicPath: `public/plugins/${pluginJson.id}/`, - uniqueName: pluginJson.id, - crossOriginLoading: 'anonymous', - }, - - plugins: [ - virtualPublicPath, - // Insert create plugin version information into the bundle - new BannerPlugin({ - banner: "/* [create-plugin] version: " + cpVersion + " */", - raw: true, - entryOnly: true, - }), - new CopyWebpackPlugin({ - patterns: [ - // If src/README.md exists use it; otherwise the root README - // To `compiler.options.output` - { from: hasReadme() ? 'README.md' : '../README.md', to: '.', force: true }, - { from: 'plugin.json', to: '.' }, - { from: '../LICENSE', to: '.' }, - { from: '../CHANGELOG.md', to: '.', force: true }, - { from: '**/*.json', to: '.' }, // TODO - { from: '**/*.svg', to: '.', noErrorOnMissing: true }, // Optional - { from: '**/*.png', to: '.', noErrorOnMissing: true }, // Optional - { from: '**/*.html', to: '.', noErrorOnMissing: true }, // Optional - { from: 'img/**/*', to: '.', noErrorOnMissing: true }, // Optional - { from: 'libs/**/*', to: '.', noErrorOnMissing: true }, // Optional - { from: 'static/**/*', to: '.', noErrorOnMissing: true }, // Optional - { from: '**/query_help.md', to: '.', noErrorOnMissing: true }, // Optional - ], - }), - // Replace certain template-variables in the README and plugin.json - new ReplaceInFileWebpackPlugin([ - { - dir: DIST_DIR, - files: ['plugin.json', 'README.md'], - rules: [ - { - search: /\%VERSION\%/g, - replace: getPackageJson().version, - }, - { - search: /\%TODAY\%/g, - replace: new Date().toISOString().substring(0, 10), - }, - { - search: /\%PLUGIN_ID\%/g, - replace: pluginJson.id, - }, - ], - }, - ]), - new SubresourceIntegrityPlugin({ - hashFuncNames: ["sha256"], - }), - ...(env.development ? [ - new LiveReloadPlugin(), - new ForkTsCheckerWebpackPlugin({ - async: Boolean(env.development), - issue: { - include: [{ file: '**/*.{ts,tsx}' }], - }, - typescript: { configFile: path.join(process.cwd(), 'tsconfig.json') }, - }), - new ESLintPlugin({ - extensions: ['.ts', '.tsx'], - lintDirtyModulesOnly: Boolean(env.development), // don't lint on start, only lint changed files - }), - ] : []), - ], - - resolve: { - extensions: ['.js', '.jsx', '.ts', '.tsx'], - // handle resolving "rootDir" paths - modules: [path.resolve(process.cwd(), 'src'), 'node_modules'], - unsafeCache: true, - }, - }; - - if (isWSL()) { - baseConfig.watchOptions = { - poll: 3000, - ignored: /node_modules/, - }; - } - - return baseConfig; -}; - -export default config; diff --git a/data/plugins/youtube-video-panel/.editorconfig b/data/plugins/youtube-video-panel/.editorconfig deleted file mode 100644 index ba4e65a47fe05..0000000000000 --- a/data/plugins/youtube-video-panel/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true -max_line_length = 120 - -[*.{js,ts,tsx,scss}] -quote_type = single - -[*.md] -trim_trailing_whitespace = false diff --git a/data/plugins/youtube-video-panel/.eslintrc b/data/plugins/youtube-video-panel/.eslintrc deleted file mode 100644 index 476a147d87915..0000000000000 --- a/data/plugins/youtube-video-panel/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.config/.eslintrc" -} diff --git a/data/plugins/youtube-video-panel/.gitignore b/data/plugins/youtube-video-panel/.gitignore deleted file mode 100644 index 0a87d3aa05e13..0000000000000 --- a/data/plugins/youtube-video-panel/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -node_modules/ - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# Compiled binary addons (https://nodejs.org/api/addons.html) -artifacts/ -work/ -ci/ -e2e-results/ - -# Editors -.idea - -!dist diff --git a/data/plugins/youtube-video-panel/.nvmrc b/data/plugins/youtube-video-panel/.nvmrc deleted file mode 100644 index 209e3ef4b6247..0000000000000 --- a/data/plugins/youtube-video-panel/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20 diff --git a/data/plugins/youtube-video-panel/.prettierrc.js b/data/plugins/youtube-video-panel/.prettierrc.js deleted file mode 100644 index 6c79e24f3170b..0000000000000 --- a/data/plugins/youtube-video-panel/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - // Prettier configuration provided by Grafana scaffolding - ...require('./.config/.prettierrc.js'), -}; diff --git a/data/plugins/youtube-video-panel/CHANGELOG.md b/data/plugins/youtube-video-panel/CHANGELOG.md deleted file mode 100644 index b25c0ac8d6a2e..0000000000000 --- a/data/plugins/youtube-video-panel/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. - -## v1.0.0 - -Initial Release diff --git a/data/plugins/youtube-video-panel/LICENSE b/data/plugins/youtube-video-panel/LICENSE deleted file mode 100644 index 8dada3edaf50d..0000000000000 --- a/data/plugins/youtube-video-panel/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/data/plugins/youtube-video-panel/README.md b/data/plugins/youtube-video-panel/README.md deleted file mode 100644 index 77bc223a8bca1..0000000000000 --- a/data/plugins/youtube-video-panel/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Grafana Panel Plugin Template - - - -This template is a starting point for building Grafana Panel Plugins in Grafana 7.0+ - - -## What is Grafana Panel Plugin? -Panels are the building blocks of Grafana. They allow you to visualize data in different ways. While Grafana has several types of panels already built-in, you can also build your own panel, to add support for other visualizations. - -For more information about panels, refer to the documentation on [Panels](https://grafana.com/docs/grafana/latest/features/panels/panels/) - -## Getting started -1. Install dependencies -```BASH -yarn install -``` -2. Build plugin in development mode or run in watch mode -```BASH -yarn dev -``` -or -```BASH -yarn watch -``` -3. Build plugin in production mode -```BASH -yarn build -``` - -## Learn more -- [Build a panel plugin tutorial](https://grafana.com/tutorials/build-a-panel-plugin) -- [Grafana documentation](https://grafana.com/docs/) -- [Grafana Tutorials](https://grafana.com/tutorials/) - Grafana Tutorials are step-by-step guides that help you make the most of Grafana -- [Grafana UI Library](https://developers.grafana.com/ui) - UI components to help you build interfaces using Grafana Design System diff --git a/data/plugins/youtube-video-panel/appveyor.yml b/data/plugins/youtube-video-panel/appveyor.yml deleted file mode 100644 index b1eef59f643b4..0000000000000 --- a/data/plugins/youtube-video-panel/appveyor.yml +++ /dev/null @@ -1,26 +0,0 @@ -# Test against the latest version of this Node.js version -environment: - nodejs_version: "12" - -# Local NPM Modules -cache: - - node_modules - -# Install scripts. (runs after repo cloning) -install: - # Get the latest stable version of Node.js or io.js - - ps: Install-Product node $env:nodejs_version - # install modules - - npm install -g yarn --quiet - - yarn install --pure-lockfile - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - - node --version - - npm --version - -# Run the build -build_script: - - yarn dev # This will also run prettier! - - yarn build # make sure both scripts work diff --git a/data/plugins/youtube-video-panel/dist/CHANGELOG.md b/data/plugins/youtube-video-panel/dist/CHANGELOG.md deleted file mode 100644 index b25c0ac8d6a2e..0000000000000 --- a/data/plugins/youtube-video-panel/dist/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. - -## v1.0.0 - -Initial Release diff --git a/data/plugins/youtube-video-panel/dist/LICENSE b/data/plugins/youtube-video-panel/dist/LICENSE deleted file mode 100644 index 8dada3edaf50d..0000000000000 --- a/data/plugins/youtube-video-panel/dist/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/data/plugins/youtube-video-panel/dist/README.md b/data/plugins/youtube-video-panel/dist/README.md deleted file mode 100644 index 77bc223a8bca1..0000000000000 --- a/data/plugins/youtube-video-panel/dist/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Grafana Panel Plugin Template - - - -This template is a starting point for building Grafana Panel Plugins in Grafana 7.0+ - - -## What is Grafana Panel Plugin? -Panels are the building blocks of Grafana. They allow you to visualize data in different ways. While Grafana has several types of panels already built-in, you can also build your own panel, to add support for other visualizations. - -For more information about panels, refer to the documentation on [Panels](https://grafana.com/docs/grafana/latest/features/panels/panels/) - -## Getting started -1. Install dependencies -```BASH -yarn install -``` -2. Build plugin in development mode or run in watch mode -```BASH -yarn dev -``` -or -```BASH -yarn watch -``` -3. Build plugin in production mode -```BASH -yarn build -``` - -## Learn more -- [Build a panel plugin tutorial](https://grafana.com/tutorials/build-a-panel-plugin) -- [Grafana documentation](https://grafana.com/docs/) -- [Grafana Tutorials](https://grafana.com/tutorials/) - Grafana Tutorials are step-by-step guides that help you make the most of Grafana -- [Grafana UI Library](https://developers.grafana.com/ui) - UI components to help you build interfaces using Grafana Design System diff --git a/data/plugins/youtube-video-panel/dist/img/logo.svg b/data/plugins/youtube-video-panel/dist/img/logo.svg deleted file mode 100644 index 3d284dea3af7f..0000000000000 --- a/data/plugins/youtube-video-panel/dist/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/module.js b/data/plugins/youtube-video-panel/dist/module.js deleted file mode 100644 index a5866ecf4425f..0000000000000 --- a/data/plugins/youtube-video-panel/dist/module.js +++ /dev/null @@ -1,14 +0,0 @@ -/* [create-plugin] version: 5.5.1 */ -define(["@grafana/data","@grafana/ui","emotion","module","react"],((e,t,r,o,n)=>(()=>{"use strict";var a={781:t=>{t.exports=e},7:e=>{e.exports=t},485:e=>{e.exports=r},308:e=>{e.exports=o},959:e=>{e.exports=n}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={exports:{}};return a[e](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.p="public/plugins/youtube-video-panel/";var c={};s.r(c),s.d(c,{plugin:()=>D});var l={};s.r(l),s.d(l,{exclude:()=>q,extract:()=>C,parse:()=>U,parseUrl:()=>T,pick:()=>L,stringify:()=>M,stringifyUrl:()=>B});var u=s(308),p=s.n(u);s.p=p()&&p().uri?p().uri.slice(0,p().uri.lastIndexOf("/")+1):"public/plugins/youtube-video-panel/";var f=s(781),d=s(959),y=s.n(d),m=s(485),g=s(7);const b="%[a-f0-9]{2}",h=new RegExp("("+b+")|([^%]+?)","gi"),v=new RegExp("("+b+")+","gi");function j(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(1===e.length)return e;t=t||1;const r=e.slice(0,t),o=e.slice(t);return Array.prototype.concat.call([],j(r),j(o))}function x(e){try{return decodeURIComponent(e)}catch{let t=e.match(h)||[];for(let r=1;rnull==e,S=e=>encodeURIComponent(e).replaceAll(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)),N=Symbol("encodeFragmentIdentifier");function I(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function E(e,t){return t.encode?t.strict?S(e):encodeURIComponent(e):e}function $(e,t){return t.decode?w(e):e}function A(e){return Array.isArray(e)?e.sort():"object"==typeof e?A(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function P(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function R(e,t,r){return"string"===r&&"string"==typeof e?e:"function"==typeof r&&"string"==typeof e?r(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()?"number"!==r||Number.isNaN(Number(e))||"string"!=typeof e||""===e.trim()?t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?Number(e):e:Number(e):"true"===e.toLowerCase()}function C(e){const t=(e=P(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function U(e,t){I((t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,types:Object.create(null),...t}).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,o)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===o[e]&&(o[e]={}),o[e][t[1]]=r):o[e]=r};case"bracket":return(e,r,o)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"colon-list-separator":return(e,r,o)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"comma":case"separator":return(t,r,o)=>{const n="string"==typeof r&&r.includes(e.arrayFormatSeparator),a="string"==typeof r&&!n&&$(r,e).includes(e.arrayFormatSeparator);r=a?$(r,e):r;const i=n||a?r.split(e.arrayFormatSeparator).map((t=>$(t,e))):null===r?r:$(r,e);o[t]=i};case"bracket-separator":return(t,r,o)=>{const n=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!n)return void(o[t]=r?$(r,e):r);const a=null===r?[]:r.split(e.arrayFormatSeparator).map((t=>$(t,e)));void 0!==o[t]?o[t]=[...o[t],...a]:o[t]=a};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[...[r[e]].flat(),t]:r[e]=t}}}(t),o=Object.create(null);if("string"!=typeof e)return o;if(!(e=e.trim().replace(/^[?#&]/,"")))return o;for(const n of e.split("&")){if(""===n)continue;const e=t.decode?n.replaceAll("+"," "):n;let[a,i]=F(e,"=");void 0===a&&(a=e),i=void 0===i?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?i:$(i,t),r($(a,t),i,o)}for(const[e,r]of Object.entries(o))if("object"==typeof r&&null!==r&&"string"!==t.types[e])for(const[o,n]of Object.entries(r)){const a=t.types[e]?t.types[e].replace("[]",""):void 0;r[o]=R(n,t,a)}else"object"==typeof r&&null!==r&&"string"===t.types[e]?o[e]=Object.values(r).join(t.arrayFormatSeparator):o[e]=R(r,t,t.types[e]);return!1===t.sort?o:(!0===t.sort?Object.keys(o).sort():Object.keys(o).sort(t.sort)).reduce(((e,t)=>{const r=o[t];return e[t]=Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?A(r):r,e}),Object.create(null))}function M(e,t){if(!e)return"";I((t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t}).arrayFormatSeparator);const r=r=>t.skipNull&&O(e[r])||t.skipEmptyString&&""===e[r],o=function(e){switch(e.arrayFormat){case"index":return t=>(r,o)=>{const n=r.length;return void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),"[",n,"]"].join("")]:[...r,[E(t,e),"[",E(n,e),"]=",E(o,e)].join("")]};case"bracket":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),"[]"].join("")]:[...r,[E(t,e),"[]=",E(o,e)].join("")];case"colon-list-separator":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[E(t,e),":list="].join("")]:[...r,[E(t,e),":list=",E(o,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return r=>(o,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?o:(n=null===n?"":n,0===o.length?[[E(r,e),t,E(n,e)].join("")]:[[o,E(n,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,E(t,e)]:[...r,[E(t,e),"=",E(o,e)].join("")]}}(t),n={};for(const[t,o]of Object.entries(e))r(t)||(n[t]=o);const a=Object.keys(n);return!1!==t.sort&&a.sort(t.sort),a.map((r=>{const n=e[r];return void 0===n?"":null===n?E(r,t):Array.isArray(n)?0===n.length&&"bracket-separator"===t.arrayFormat?E(r,t)+"[]":n.reduce(o(r),[]).join("&"):E(r,t)+"="+E(n,t)})).filter((e=>e.length>0)).join("&")}function T(e,t){t={decode:!0,...t};let[r,o]=F(e,"#");return void 0===r&&(r=e),{url:r?.split("?")?.[0]??"",query:U(C(e),t),...t&&t.parseFragmentIdentifier&&o?{fragmentIdentifier:$(o,t)}:{}}}function B(e,t){t={encode:!0,strict:!0,[N]:!0,...t};const r=P(e.url).split("?")[0]||"";let o=M({...U(C(e.url),{sort:!1}),...e.query},t);o&&=`?${o}`;let n=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);if("string"==typeof e.fragmentIdentifier){const o=new URL(r);o.hash=e.fragmentIdentifier,n=t[N]?o.hash:`#${e.fragmentIdentifier}`}return`${r}${o}${n}`}function L(e,t,r){r={parseFragmentIdentifier:!0,[N]:!1,...r};const{url:o,query:n,fragmentIdentifier:a}=T(e,r);return B({url:o,query:k(n,t),fragmentIdentifier:a},r)}function q(e,t,r){return L(e,Array.isArray(t)?e=>!t.includes(e):(e,r)=>!t(e,r),r)}const V=l,_=(0,g.stylesFactory)((()=>({wrapper:m.css` - position: absolute; - `,video:m.css` - top: 0; - left: 0; - `}))),D=new f.PanelPlugin((({options:e,width:t,height:r})=>{const o=_();let n="";const a={loop:0,autoplay:0,playlist:e.videoId};return e.autoPlay&&(a.autoplay=1),e.loop&&(a.loop=1),n="https://www.youtube.com/embed/"+e.videoId+"?"+V.stringify(a),y().createElement("div",{className:(0,m.cx)(o.wrapper,m.css` - width: ${t}px; - height: ${r}px; - `)},y().createElement("iframe",{frameBorder:"0",allowFullScreen:!0,className:(0,m.cx)(o.video,m.css` - width: ${t}px; - height: ${r}px; - `),src:n}))})).setPanelOptions((e=>e.addTextInput({path:"videoId",name:"Video ID",description:"The value after watch?v= in the URL.",defaultValue:"vYZzMk0NkgM",settings:{placeholder:"vYZzMk0NkgM"}}).addBooleanSwitch({path:"autoPlay",name:"Autoplay",defaultValue:!0}).addBooleanSwitch({path:"loop",name:"Loop",defaultValue:!0})));return c})())); -//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/module.js.map b/data/plugins/youtube-video-panel/dist/module.js.map deleted file mode 100644 index cf8849f051726..0000000000000 --- a/data/plugins/youtube-video-panel/dist/module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"module.js","mappings":"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","sources":["webpack://youtube-video-panel/external amd \"@grafana/data\"","webpack://youtube-video-panel/external amd \"@grafana/ui\"","webpack://youtube-video-panel/external amd \"emotion\"","webpack://youtube-video-panel/external amd \"module\"","webpack://youtube-video-panel/external amd \"react\"","webpack://youtube-video-panel/webpack/bootstrap","webpack://youtube-video-panel/webpack/runtime/compat get default export","webpack://youtube-video-panel/webpack/runtime/define property getters","webpack://youtube-video-panel/webpack/runtime/hasOwnProperty shorthand","webpack://youtube-video-panel/webpack/runtime/make namespace object","webpack://youtube-video-panel/webpack/runtime/publicPath","webpack://youtube-video-panel/./node_modules/grafana-public-path.js","webpack://youtube-video-panel/../node_modules/decode-uri-component/index.js","webpack://youtube-video-panel/../node_modules/filter-obj/index.js","webpack://youtube-video-panel/../node_modules/split-on-first/index.js","webpack://youtube-video-panel/../node_modules/query-string/base.js","webpack://youtube-video-panel/../node_modules/query-string/index.js","webpack://youtube-video-panel/./YoutubePanel.tsx","webpack://youtube-video-panel/./module.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__781__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","module.exports = __WEBPACK_EXTERNAL_MODULE__485__;","module.exports = __WEBPACK_EXTERNAL_MODULE__308__;","module.exports = __WEBPACK_EXTERNAL_MODULE__959__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"public/plugins/youtube-video-panel/\";","\nimport amdMetaModule from 'amd-module';\n\n__webpack_public_path__ =\n amdMetaModule && amdMetaModule.uri\n ? amdMetaModule.uri.slice(0, amdMetaModule.uri.lastIndexOf('/') + 1)\n : 'public/plugins/youtube-video-panel/';\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","import decodeComponent from 'decode-uri-component';\nimport {includeKeys} from 'filter-obj';\nimport splitOnFirst from 'split-on-first';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSeparator = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options, type) {\n\tif (type === 'string' && typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof type === 'function' && typeof value === 'string') {\n\t\treturn type(value);\n\t}\n\n\tif (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\treturn value.toLowerCase() === 'true';\n\t}\n\n\tif (type === 'number' && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\treturn Number(value);\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\ttypes: Object.create(null),\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null && options.types[key] !== 'string') {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tconst type = options.types[key] ? options.types[key].replace('[]', '') : undefined;\n\t\t\t\tvalue[key2] = parseValue(value2, options, type);\n\t\t\t}\n\t\t} else if (typeof value === 'object' && value !== null && options.types[key] === 'string') {\n\t\t\treturnValue[key] = Object.values(value).join(options.arrayFormatSeparator);\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options, options.types[key]);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tresult[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tqueryString &&= `?${queryString}`;\n\n\tlet hash = getHash(object.url);\n\tif (typeof object.fragmentIdentifier === 'string') {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import React from 'react';\nimport { PanelProps } from '@grafana/data';\nimport { VideoOptions } from 'types';\nimport { css, cx } from 'emotion';\nimport { stylesFactory } from '@grafana/ui';\nimport qs from 'query-string';\n\ninterface Props extends PanelProps {}\n\nexport const YoutubePanel: React.FC = ({ options, width, height }) => {\n const styles = getStyles();\n let videoURL: any = '';\n\n const youtubeParams = {\n loop: 0,\n autoplay: 0,\n playlist: options.videoId,\n };\n\n if (options.autoPlay) {\n youtubeParams.autoplay = 1;\n }\n\n if (options.loop) {\n youtubeParams.loop = 1;\n }\n\n videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams);\n\n return (\n \n \n \n );\n};\n\nconst getStyles = stylesFactory(() => {\n return {\n wrapper: css`\n position: absolute;\n `,\n video: css`\n top: 0;\n left: 0;\n `,\n };\n});\n","/* istanbul ignore file */\n\nimport { PanelPlugin } from '@grafana/data';\nimport { VideoOptions } from './types';\nimport { YoutubePanel } from './YoutubePanel';\n\nexport const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => {\n return builder\n .addTextInput({\n path: 'videoId',\n name: 'Video ID',\n description: 'The value after watch?v= in the URL.',\n defaultValue: 'vYZzMk0NkgM',\n settings: {\n placeholder: 'vYZzMk0NkgM',\n },\n })\n .addBooleanSwitch({\n path: 'autoPlay',\n name: 'Autoplay',\n defaultValue: true,\n })\n .addBooleanSwitch({\n path: 'loop',\n name: 'Loop',\n defaultValue: true,\n });\n});\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__781__","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__485__","__WEBPACK_EXTERNAL_MODULE__308__","__WEBPACK_EXTERNAL_MODULE__959__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","p","slice","lastIndexOf","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","length","left","right","Array","concat","decode","input","tokens","match","i","decodeUriComponent","encodedURI","TypeError","replaceMap","exec","result","entries","keys","replace","customDecodeURIComponent","includeKeys","object","predicate","isArray","descriptor","getOwnPropertyDescriptor","Reflect","ownKeys","splitOnFirst","string","separator","separatorIndex","indexOf","isNullOrUndefined","strictUriEncode","encodeURIComponent","replaceAll","x","charCodeAt","toString","toUpperCase","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","options","strict","keysSorter","sort","b","Number","map","removeHash","hashStart","parseValue","type","parseBooleans","toLowerCase","isNaN","trim","parseNumbers","extract","queryStart","parse","query","arrayFormat","arrayFormatSeparator","types","create","formatter","accumulator","includes","isEncodedArray","newValue","item","test","arrayValue","flat","parserForArrayFormat","returnValue","parameter","parameter_","key2","value2","values","reduce","Boolean","stringify","shouldFilter","skipNull","skipEmptyString","index","keyValueSeparator","encoderForArrayFormat","objectCopy","filter","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","getHash","urlObjectForFragmentEncode","URL","pick","exclude","getStyles","stylesFactory","wrapper","css","video","plugin","PanelPlugin","width","height","styles","videoURL","youtubeParams","loop","autoplay","playlist","videoId","autoPlay","qs","div","className","cx","iframe","frameBorder","allowFullScreen","src","setPanelOptions","builder","addTextInput","path","name","description","defaultValue","settings","placeholder","addBooleanSwitch"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/dist/plugin.json b/data/plugins/youtube-video-panel/dist/plugin.json deleted file mode 100644 index 5b968c92d1c59..0000000000000 --- a/data/plugins/youtube-video-panel/dist/plugin.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "panel", - "name": "Youtube Video Panel", - "id": "youtube-video-panel", - "info": { - "description": "Add youtube videos in grafana panels", - "author": { - "name": "iOrCohen", - "url": "" - }, - "keywords": [], - "logos": { - "small": "img/logo.svg", - "large": "img/logo.svg" - }, - "links": [ - { - "name": "Website", - "url": "https://github.com/grafana/simple-react-panel" - }, - { - "name": "License", - "url": "https://github.com/grafana/simple-react-panel/blob/master/LICENSE" - } - ], - "screenshots": [], - "version": "1.0.0", - "updated": "2024-10-06" - }, - "dependencies": { - "grafanaVersion": "7.0.x", - "plugins": [] - } -} diff --git a/data/plugins/youtube-video-panel/docker-compose.yaml b/data/plugins/youtube-video-panel/docker-compose.yaml deleted file mode 100644 index d4658548ebce5..0000000000000 --- a/data/plugins/youtube-video-panel/docker-compose.yaml +++ /dev/null @@ -1,24 +0,0 @@ -services: - grafana: - user: root - container_name: 'youtube-video-panel' - - build: - context: ./.config - args: - grafana_image: ${GRAFANA_IMAGE:-grafana-enterprise} - grafana_version: ${GRAFANA_VERSION:-11.2.2} - development: ${DEVELOPMENT:-false} - ports: - - 3000:3000/tcp - volumes: - - ./dist:/var/lib/grafana/plugins/youtube-video-panel - - ./provisioning:/etc/grafana/provisioning - - .:/root/youtube-video-panel - - environment: - NODE_ENV: development - GF_LOG_FILTERS: plugin.youtube-video-panel:debug - GF_LOG_LEVEL: debug - GF_DATAPROXY_LOGGING: 1 - GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: youtube-video-panel diff --git a/data/plugins/youtube-video-panel/docs/README.md b/data/plugins/youtube-video-panel/docs/README.md deleted file mode 100644 index f044a5a5ea5ea..0000000000000 --- a/data/plugins/youtube-video-panel/docs/README.md +++ /dev/null @@ -1 +0,0 @@ -TODO: add example docs structure diff --git a/data/plugins/youtube-video-panel/jest-setup.js b/data/plugins/youtube-video-panel/jest-setup.js deleted file mode 100644 index 35a700b732b1a..0000000000000 --- a/data/plugins/youtube-video-panel/jest-setup.js +++ /dev/null @@ -1,2 +0,0 @@ -// Jest setup provided by Grafana scaffolding -import './.config/jest-setup'; diff --git a/data/plugins/youtube-video-panel/jest.config.js b/data/plugins/youtube-video-panel/jest.config.js deleted file mode 100644 index 79fd52a1b4255..0000000000000 --- a/data/plugins/youtube-video-panel/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// force timezone to UTC to allow tests to work regardless of local timezone -// generally used by snapshots, but can affect specific tests -process.env.TZ = 'UTC'; - -module.exports = { - // Jest configuration provided by Grafana scaffolding - ...require('./.config/jest.config'), -}; diff --git a/data/plugins/youtube-video-panel/package.json b/data/plugins/youtube-video-panel/package.json deleted file mode 100644 index c70398405540b..0000000000000 --- a/data/plugins/youtube-video-panel/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "name": "youtube-video-panel", - "version": "1.0.0", - "description": "Add youtube videos in grafana panels", - "scripts": { - "build": "webpack -c ./.config/webpack/webpack.config.ts --env production", - "dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development", - "lint": "eslint --cache --ignore-path ./.gitignore --ext .js,.jsx,.ts,.tsx .", - "lint:fix": "yarn run lint --fix", - "server": "docker compose up --build", - "sign": "npx --yes @grafana/sign-plugin@latest", - "test": "jest --watch --onlyChanged", - "test:ci": "jest --passWithNoTests --maxWorkers 4", - "typecheck": "tsc --noEmit" - }, - "repository": "github:grafana/simple-react-panel", - "author": "iOrCohen", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/grafana/simple-react-panel/issues", - "email": "plugins@grafana.com" - }, - "devDependencies": { - "@babel/core": "^7.21.4", - "@grafana/eslint-config": "^7.0.0", - "@grafana/tsconfig": "^2.0.0", - "@swc/core": "^1.3.90", - "@swc/helpers": "^0.5.0", - "@swc/jest": "^0.2.26", - "@testing-library/jest-dom": "6.1.4", - "@testing-library/react": "14.0.0", - "@types/jest": "^29.5.0", - "@types/node": "^20.8.7", - "@types/react-router-dom": "^5.2.0", - "@types/testing-library__jest-dom": "5.14.8", - "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.7.3", - "emotion": "10.0.27", - "eslint-plugin-deprecation": "^2.0.0", - "eslint-webpack-plugin": "^4.0.1", - "fork-ts-checker-webpack-plugin": "^8.0.0", - "glob": "^10.2.7", - "identity-obj-proxy": "3.0.0", - "imports-loader": "^5.0.0", - "jest": "^29.5.0", - "jest-environment-jsdom": "^29.5.0", - "prettier": "^2.8.7", - "replace-in-file-webpack-plugin": "^1.0.6", - "sass": "1.63.2", - "sass-loader": "13.3.1", - "style-loader": "3.3.3", - "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.10", - "ts-node": "^10.9.2", - "tsconfig-paths": "^4.2.0", - "typescript": "5.5.4", - "webpack": "^5.94.0", - "webpack-cli": "^5.1.4", - "webpack-livereload-plugin": "^3.0.2", - "webpack-subresource-integrity": "^5.1.0", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=12 <13" - }, - "volta": { - "node": "18.20.4", - "yarn": "1.22.10" - }, - "dependencies": { - "@emotion/css": "11.10.6", - "@grafana/data": "next", - "@grafana/runtime": "^11.2.2", - "@grafana/schema": "^10.4.0", - "@grafana/ui": "next", - "query-string": "^9.1.0", - "react": "18.2.0", - "react-dom": "18.2.0", - "tslib": "2.5.3" - }, - "packageManager": "yarn@4.1.0" -} diff --git a/data/plugins/youtube-video-panel/src/YoutubePanel.tsx b/data/plugins/youtube-video-panel/src/YoutubePanel.tsx deleted file mode 100644 index ded7c19f0127e..0000000000000 --- a/data/plugins/youtube-video-panel/src/YoutubePanel.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; -import { PanelProps } from '@grafana/data'; -import { VideoOptions } from 'types'; -import { css, cx } from 'emotion'; -import { stylesFactory } from '@grafana/ui'; -import qs from 'query-string'; - -interface Props extends PanelProps {} - -export const YoutubePanel: React.FC = ({ options, width, height }) => { - const styles = getStyles(); - let videoURL: any = ''; - - const youtubeParams = { - loop: 0, - autoplay: 0, - playlist: options.videoId, - }; - - if (options.autoPlay) { - youtubeParams.autoplay = 1; - } - - if (options.loop) { - youtubeParams.loop = 1; - } - - videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams); - - return ( -
- -
- ); -}; - -const getStyles = stylesFactory(() => { - return { - wrapper: css` - position: absolute; - `, - video: css` - top: 0; - left: 0; - `, - }; -}); diff --git a/data/plugins/youtube-video-panel/src/img/logo.svg b/data/plugins/youtube-video-panel/src/img/logo.svg deleted file mode 100644 index 3d284dea3af7f..0000000000000 --- a/data/plugins/youtube-video-panel/src/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data/plugins/youtube-video-panel/src/module.test.ts b/data/plugins/youtube-video-panel/src/module.test.ts deleted file mode 100644 index 26feee77f134c..0000000000000 --- a/data/plugins/youtube-video-panel/src/module.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Just a stub test -describe('placeholder test', () => { - it('should return true', () => { - expect(true).toBeTruthy(); - }); -}); diff --git a/data/plugins/youtube-video-panel/src/module.ts b/data/plugins/youtube-video-panel/src/module.ts deleted file mode 100644 index c9520fd7b8847..0000000000000 --- a/data/plugins/youtube-video-panel/src/module.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* istanbul ignore file */ - -import { PanelPlugin } from '@grafana/data'; -import { VideoOptions } from './types'; -import { YoutubePanel } from './YoutubePanel'; - -export const plugin = new PanelPlugin(YoutubePanel).setPanelOptions(builder => { - return builder - .addTextInput({ - path: 'videoId', - name: 'Video ID', - description: 'The value after watch?v= in the URL.', - defaultValue: 'vYZzMk0NkgM', - settings: { - placeholder: 'vYZzMk0NkgM', - }, - }) - .addBooleanSwitch({ - path: 'autoPlay', - name: 'Autoplay', - defaultValue: true, - }) - .addBooleanSwitch({ - path: 'loop', - name: 'Loop', - defaultValue: true, - }); -}); diff --git a/data/plugins/youtube-video-panel/src/plugin.json b/data/plugins/youtube-video-panel/src/plugin.json deleted file mode 100644 index 57e610fba7048..0000000000000 --- a/data/plugins/youtube-video-panel/src/plugin.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "panel", - "name": "Youtube Video Panel", - "id": "youtube-video-panel", - "info": { - "description": "Add youtube videos in grafana panels", - "author": { - "name": "iOrCohen", - "url": "" - }, - "keywords": [], - "logos": { - "small": "img/logo.svg", - "large": "img/logo.svg" - }, - "links": [ - { - "name": "Website", - "url": "https://github.com/grafana/simple-react-panel" - }, - { - "name": "License", - "url": "https://github.com/grafana/simple-react-panel/blob/master/LICENSE" - } - ], - "screenshots": [], - "version": "%VERSION%", - "updated": "%TODAY%" - }, - "dependencies": { - "grafanaVersion": "7.0.x", - "plugins": [] - } -} diff --git a/data/plugins/youtube-video-panel/src/types.ts b/data/plugins/youtube-video-panel/src/types.ts deleted file mode 100644 index 9e63ae961f046..0000000000000 --- a/data/plugins/youtube-video-panel/src/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface VideoOptions { - videoURL?: string; - videoId?: string; - autoPlay: boolean; - loop: boolean; -} diff --git a/data/plugins/youtube-video-panel/tsconfig.json b/data/plugins/youtube-video-panel/tsconfig.json deleted file mode 100644 index 102e45b78491b..0000000000000 --- a/data/plugins/youtube-video-panel/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.config/tsconfig.json" -} diff --git a/data/plugins/youtube-video-panel/yarn.lock b/data/plugins/youtube-video-panel/yarn.lock deleted file mode 100644 index 7d3c826e6c9c8..0000000000000 --- a/data/plugins/youtube-video-panel/yarn.lock +++ /dev/null @@ -1,12140 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10 - -"@adobe/css-tools@npm:^4.3.1": - version: 4.4.0 - resolution: "@adobe/css-tools@npm:4.4.0" - checksum: 10/9c6315fe9efa5075d6ddb6ded7a1424bc9c41a01f2314b6bdcc368723985fe161008d03ddcc2b27b2da50cb9c14190fbce965d15cefe5f9a31bdd43f35b52115 - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/f3451525379c68a73eb0a1e65247fbf28c0cccd126d93af21c75fceff77773d43c0d4a2d51978fb131aff25b5f2cb41a9fe48cc296e61ae65e679c4f6918b0ab - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0": - version: 7.8.3 - resolution: "@babel/code-frame@npm:7.8.3" - dependencies: - "@babel/highlight": "npm:^7.8.3" - checksum: 10/bf152635a1160a570cd7b0199d8d94ad04b4114b2c3a3afb1d97c9b0c490c82928ac189f6a9e431b709c801649482845fbf14976eee5f3f1e68c8b6f5c65629a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/code-frame@npm:7.25.7" - dependencies: - "@babel/highlight": "npm:^7.25.7" - picocolors: "npm:^1.0.0" - checksum: 10/000fb8299fb35b6217d4f6c6580dcc1fa2f6c0f82d0a54b8a029966f633a8b19b490a7a906b56a94e9d8bee91c3bc44c74c44c33fb0abaa588202f6280186291 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/compat-data@npm:7.25.7" - checksum: 10/8fdc451e0ed9e22d1324d504b84d4452ba6f4a806b0f5c364996ee4c2a77293f79ecf4da03033acb625c90bac115c61617eb6c894c2b88486724bcbe3af1a6eb - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.4, @babel/core@npm:^7.23.9": - version: 7.25.7 - resolution: "@babel/core@npm:7.25.7" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/helper-compilation-targets": "npm:^7.25.7" - "@babel/helper-module-transforms": "npm:^7.25.7" - "@babel/helpers": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10/f5fb7fb1e3ce357485cb33fe7984051a2d416472370b33144ae809df86a4663192b58cf0d828d40674d30f485790f3dd5aaf72eb659487673a4dc4be47cb3575 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/generator@npm:7.25.7" - dependencies: - "@babel/types": "npm:^7.25.7" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10/01542829621388077fa8a7464970c1db0f748f1482968dddf5332926afe4003f953cbe08e3bbbb0a335b11eba0126c9a81779bd1c5baed681a9ccec4ae63b217 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-compilation-targets@npm:7.25.7" - dependencies: - "@babel/compat-data": "npm:^7.25.7" - "@babel/helper-validator-option": "npm:^7.25.7" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10/bbf9be8480da3f9a89e36e9ea2e1c76601014c1074ccada7c2edb1adeb3b62bc402cc4abaf8d16760734b25eceb187a9510ce44f6a7a6f696ccc74f69283625b - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.0.0": - version: 7.8.3 - resolution: "@babel/helper-module-imports@npm:7.8.3" - dependencies: - "@babel/types": "npm:^7.8.3" - checksum: 10/612cabd2abcf05a726b14be5f5cf0f6258912da9d8c8e31d97f0c4c1ef66371787baffc117d1d971072bd97b080f9c98365ad11679a31566d41fbd7e83e6c185 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-imports@npm:7.25.7" - dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/94556712c27058ea35a1a39e21a3a9f067cd699405b64333d7d92b2b3d2f24d6f0ffa51aedba0b908e320acb1854e70d296259622e636fb021eeae9a6d996f01 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-module-transforms@npm:7.25.7" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.7" - "@babel/helper-simple-access": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - "@babel/traverse": "npm:^7.25.7" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/480309b1272ceaa985de1393f0e4c41aede0d5921ca644cec5aeaf43c8e4192b6dd56a58ef6d7e9acd02a43184ab45d3b241fc8c3a0a00f9dbb30235fd8a1181 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.7, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.25.7 - resolution: "@babel/helper-plugin-utils@npm:7.25.7" - checksum: 10/e1b0ea5e67b05378d6360e3fc370e99bfb247eed9f68145b5cce541da703424e1887fb6fc60ab2f7f743c72dcbfbed79d3032af43f2c251c229c734dc2572a5b - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-simple-access@npm:7.25.7" - dependencies: - "@babel/traverse": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/42da1c358f2516337a4f2927c77ebb952907543b9f85d7cb1e2b5b5f6d808cdc081ee66a73e2ecdf48c315d9b0c2a81a857d5e1923ea210b8e81aba5e6cd2b53 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-string-parser@npm:7.25.7" - checksum: 10/2b8de9fa86c3f3090a349f1ce6e8ee2618a95355cbdafc6f228d82fa4808c84bf3d1d25290c6616d0a18b26b6cfeb6ec2aeebf01404bc8c60051d0094209f0e6 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-identifier@npm:7.25.7" - checksum: 10/ec6934cc47fc35baaeb968414a372b064f14f7b130cf6489a014c9486b0fd2549b3c6c682cc1fc35080075e8e38d96aeb40342d63d09fc1a62510c8ce25cde1e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.9.0, @babel/helper-validator-identifier@npm:^7.9.5": - version: 7.9.5 - resolution: "@babel/helper-validator-identifier@npm:7.9.5" - checksum: 10/29beeedae169d2b842837ee254d7b0d6d0bd7965be062de4e67b5740f38ea94922976c033157ac6283418fd521e76d79dac869d1c543b9a7f38b1b4f0b190870 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helper-validator-option@npm:7.25.7" - checksum: 10/3c46cbdd666d176f90a0b7e952a0c6e92184b66633336eca79aca243d1f86085ec339a6e45c3d44efa9e03f1829b470a350ddafa70926af6bbf1ac611284f8d3 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/helpers@npm:7.25.7" - dependencies: - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/2632909f83aa99e8b0da4e10e5ab7fc4f0274e6497bb0f17071e004e037d25e4a595583620261dc21410a526fb32b4f7063c3e15e60ed7890a6f9b8ad52312c5 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/highlight@npm:7.25.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10/823be2523d246dbf80aab3cc81c2a36c6111b16ac2949ef06789da54387824c2bfaa88c6627cdeb4ba7151d047a5d6765e49ebd0b478aba09759250111e65e08 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.8.3": - version: 7.9.0 - resolution: "@babel/highlight@npm:7.9.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.9.0" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 10/2e7dc27c209a59853b6830be6fab14d0f0bf6f73e4fe34114a874bf75ae24cfee55729fd26f69884959bc855c5c0d514d5deb8192a06a35e08c5a54cc243924c - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/parser@npm:7.25.7" - dependencies: - "@babel/types": "npm:^7.25.7" - bin: - parser: ./bin/babel-parser.js - checksum: 10/98eaa81bd378734a5f2790f02c7c076ecaba0839217445b4b84f45a7b391d640c34034253231a5bb2b2daf8204796f03584c3f94c10d46b004369bbb426a418f - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/3a10849d83e47aec50f367a9e56a6b22d662ddce643334b087f9828f4c3dd73bdc5909aaeabe123fed78515767f9ca43498a0e621c438d1cd2802d7fae3c9648 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.25.7 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/7c5451e2d8351693acbc53b1e1f6951026e35899d22847a6d22424a1ee5c92c11ac6c6f209a9e18f85d7bb9267caaf2532653e892997cdcd51784106a5858b7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/166ac1125d10b9c0c430e4156249a13858c0366d38844883d75d27389621ebe651115cb2ceb6dc011534d5055719fa1727b59f39e1ab3ca97820eef3dcab5b9b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.25.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/243476a943a84b6b86e99076301e66f48268e8799564053e8feccab90da7944a0b42c91360216dbfb0b2958bbd0ed100d2c7b2db688dab83d19ff2745d4892eb - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10/f1492336230920cc4daa6e7aa3571253fb0c0fd05a1d0a7b5dc0a5b907f31945235ee8bf09c83f7738b89943a2320a61dda95e0db2b6310b07040aeda6be4f44 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.0, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.0, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.24.5, @babel/runtime@npm:^7.9.2": - version: 7.25.7 - resolution: "@babel/runtime@npm:7.25.7" - dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: 10/73411fe0f1bff3a962586cef05b30f49e554b6563767e6d84f7d79d605b2c20e7fc3df291a3aebef69043181a8f893afdab9e6672557a5c2d08b9377d6f678cd - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7": - version: 7.9.6 - resolution: "@babel/runtime@npm:7.9.6" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10/610b0c73a52abb90886de89f12406be154c187798e5c3df5ef1bfa07ec73b1108b773ac0ca3d396db84633b43705d408302b314f21e3906c208841059dfd1d17 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.11.1, @babel/runtime@npm:^7.11.2": - version: 7.11.2 - resolution: "@babel/runtime@npm:7.11.2" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 10/ecd8101501cbf7128c3dbb2b6ce17b707ac95aa60c4075d3ce9b6649e873afa1ede14e5ae28c5a51d2c18b46d20300ce2a193a16f6c5af67cc29bc68f20defd8 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.7, @babel/template@npm:^7.3.3": - version: 7.25.7 - resolution: "@babel/template@npm:7.25.7" - dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - checksum: 10/49e1e88d2eac17d31ae28d6cf13d6d29c1f49384c4f056a6751c065d6565c351e62c01ce6b11fef5edb5f3a77c87e114ea7326ca384fa618b4834e10cf9b20f3 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.25.7": - version: 7.25.7 - resolution: "@babel/traverse@npm:7.25.7" - dependencies: - "@babel/code-frame": "npm:^7.25.7" - "@babel/generator": "npm:^7.25.7" - "@babel/parser": "npm:^7.25.7" - "@babel/template": "npm:^7.25.7" - "@babel/types": "npm:^7.25.7" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10/5b2d332fcd6bc78e6500c997e79f7e2a54dfb357e06f0908cb7f0cdd9bb54e7fd3c5673f45993849d433d01ea6076a6d04b825958f0cfa01288ad55ffa5c286f - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.7, @babel/types@npm:^7.3.3": - version: 7.25.7 - resolution: "@babel/types@npm:7.25.7" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.7" - "@babel/helper-validator-identifier": "npm:^7.25.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/4504e16a95b6a67d50cfaa389bcbc0621019084cff73784ad4797f82d1bb76c870cb0abb6d9881d5776eb06b4607419a2b1205a08c3e87b152d74bd0884b822a - languageName: node - linkType: hard - -"@babel/types@npm:^7.8.3": - version: 7.9.6 - resolution: "@babel/types@npm:7.9.6" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.9.5" - lodash: "npm:^4.17.13" - to-fast-properties: "npm:^2.0.0" - checksum: 10/500d52c85c6831d75e9cff9d9429b18efa1d4e8a66d43a746cc0e4aacedbe8a3b94229ea395f2aad21c5eed62464fad1a0815da40d9da8561e8604ead739603d - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d - languageName: node - linkType: hard - -"@braintree/sanitize-url@npm:7.0.1": - version: 7.0.1 - resolution: "@braintree/sanitize-url@npm:7.0.1" - checksum: 10/5e01e6faf81b2289c8e7829aed185c834a88d501c51f569a9f2bc72549d4f2367eeb6f8a9e8039fbe3ef52b094c6afc32dc8272185c687ab6812340b1249cf4d - languageName: node - linkType: hard - -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 10/b95682a852448e8ef50d6f8e3b7ba288aab3fd98a2bafbe46881a3db0c6e7248a2debe9e1ee0d4137c521e4743ca5bbcb1c0765c9d7b3e0ef53231506fec42b4 - languageName: node - linkType: hard - -"@emotion/babel-plugin@npm:^11.10.6, @emotion/babel-plugin@npm:^11.11.0, @emotion/babel-plugin@npm:^11.12.0": - version: 11.12.0 - resolution: "@emotion/babel-plugin@npm:11.12.0" - dependencies: - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/runtime": "npm:^7.18.3" - "@emotion/hash": "npm:^0.9.2" - "@emotion/memoize": "npm:^0.9.0" - "@emotion/serialize": "npm:^1.2.0" - babel-plugin-macros: "npm:^3.1.0" - convert-source-map: "npm:^1.5.0" - escape-string-regexp: "npm:^4.0.0" - find-root: "npm:^1.1.0" - source-map: "npm:^0.5.7" - stylis: "npm:4.2.0" - checksum: 10/fe6f4522ea2b61ef4214dd0b0f3778aad9c18434b47e50ae5091af226526bf305455c313065826a090682520c9462c151d4df62ec128f14671d3125afc05b148 - languageName: node - linkType: hard - -"@emotion/cache@npm:^10.0.27": - version: 10.0.29 - resolution: "@emotion/cache@npm:10.0.29" - dependencies: - "@emotion/sheet": "npm:0.9.4" - "@emotion/stylis": "npm:0.8.5" - "@emotion/utils": "npm:0.11.3" - "@emotion/weak-memoize": "npm:0.2.5" - checksum: 10/9978106bb1965e7167d37112fd8de3d12e877cdcf352da095cce7543615bfd4489f0ec798449bd4c8c77c80847175d52df60a84d259ec960af93f4c85293fd6a - languageName: node - linkType: hard - -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": - version: 11.13.1 - resolution: "@emotion/cache@npm:11.13.1" - dependencies: - "@emotion/memoize": "npm:^0.9.0" - "@emotion/sheet": "npm:^1.4.0" - "@emotion/utils": "npm:^1.4.0" - "@emotion/weak-memoize": "npm:^0.4.0" - stylis: "npm:4.2.0" - checksum: 10/090c8ad2e5b23f1b3a95e94f1f0554a40ed1dcd844c9d31629a68ff824eff40f32d1362f67aefa440ee0aabd5a8cabcc76870fd6d77144d3ff251bdcdf1420b9 - languageName: node - linkType: hard - -"@emotion/css@npm:11.10.6": - version: 11.10.6 - resolution: "@emotion/css@npm:11.10.6" - dependencies: - "@emotion/babel-plugin": "npm:^11.10.6" - "@emotion/cache": "npm:^11.10.5" - "@emotion/serialize": "npm:^1.1.1" - "@emotion/sheet": "npm:^1.2.1" - "@emotion/utils": "npm:^1.2.0" - checksum: 10/e6d8d80ac1b1a1bba4a041d35ace7cce211a82cd93dd38a41d19ab19c2d9c47cf2189bec0c4cbdfd2018ad371f07f8e4ebe09d9ef9556d4a28fd386b89ce8b8d - languageName: node - linkType: hard - -"@emotion/css@npm:11.11.2": - version: 11.11.2 - resolution: "@emotion/css@npm:11.11.2" - dependencies: - "@emotion/babel-plugin": "npm:^11.11.0" - "@emotion/cache": "npm:^11.11.0" - "@emotion/serialize": "npm:^1.1.2" - "@emotion/sheet": "npm:^1.2.2" - "@emotion/utils": "npm:^1.2.1" - checksum: 10/718f758575f05e3610cdef9bdcfcdf17eae1992616c7cc85e29a24ff3b4d3da9968cc1c253a510874c056c22dc73b6b12bd759be9943e20141e0603a3cb35630 - languageName: node - linkType: hard - -"@emotion/hash@npm:0.8.0": - version: 0.8.0 - resolution: "@emotion/hash@npm:0.8.0" - checksum: 10/4b35d88a97e67275c1d990c96d3b0450451d089d1508619488fc0acb882cb1ac91e93246d471346ebd1b5402215941ef4162efe5b51534859b39d8b3a0e3ffaa - languageName: node - linkType: hard - -"@emotion/hash@npm:^0.9.2": - version: 0.9.2 - resolution: "@emotion/hash@npm:0.9.2" - checksum: 10/379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 - languageName: node - linkType: hard - -"@emotion/memoize@npm:0.7.4": - version: 0.7.4 - resolution: "@emotion/memoize@npm:0.7.4" - checksum: 10/4e3920d4ec95995657a37beb43d3f4b7d89fed6caa2b173a4c04d10482d089d5c3ea50bbc96618d918b020f26ed6e9c4026bbd45433566576c1f7b056c3271dc - languageName: node - linkType: hard - -"@emotion/memoize@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/memoize@npm:0.9.0" - checksum: 10/038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 - languageName: node - linkType: hard - -"@emotion/react@npm:11.11.4": - version: 11.11.4 - resolution: "@emotion/react@npm:11.11.4" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.11.0" - "@emotion/cache": "npm:^11.11.0" - "@emotion/serialize": "npm:^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" - "@emotion/utils": "npm:^1.2.1" - "@emotion/weak-memoize": "npm:^0.3.1" - hoist-non-react-statics: "npm:^3.3.1" - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10/e7da3a1ddc1d72a4179010bdfd17423c13b1a77bf83a8b18271e919fd382d08c62dc2313ed5347acfd1ef85bb1bae8932597647a986e8a1ea1462552716cd495 - languageName: node - linkType: hard - -"@emotion/react@npm:^11.8.1": - version: 11.13.3 - resolution: "@emotion/react@npm:11.13.3" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.12.0" - "@emotion/cache": "npm:^11.13.0" - "@emotion/serialize": "npm:^1.3.1" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" - "@emotion/utils": "npm:^1.4.0" - "@emotion/weak-memoize": "npm:^0.4.0" - hoist-non-react-statics: "npm:^3.3.1" - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10/ee70d3afc2e8dd771e6fe176d27dd87a5e21a54e54d871438fd1caa5aa2312d848c6866292fdc65a6ea1c945147c8422bda2d22ed739178af9902dc86d6b298a - languageName: node - linkType: hard - -"@emotion/serialize@npm:^0.11.15, @emotion/serialize@npm:^0.11.16": - version: 0.11.16 - resolution: "@emotion/serialize@npm:0.11.16" - dependencies: - "@emotion/hash": "npm:0.8.0" - "@emotion/memoize": "npm:0.7.4" - "@emotion/unitless": "npm:0.7.5" - "@emotion/utils": "npm:0.11.3" - csstype: "npm:^2.5.7" - checksum: 10/a6c3b70417bb0fc0ca65da139b147fe5f2067010bd8f4e3dadebe3006777b020f4dc4317e82a5644aaa1c64026ffa9283fdc9777d365b37fcea57d9e1fed7a6c - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.1.1, @emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3, @emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": - version: 1.3.2 - resolution: "@emotion/serialize@npm:1.3.2" - dependencies: - "@emotion/hash": "npm:^0.9.2" - "@emotion/memoize": "npm:^0.9.0" - "@emotion/unitless": "npm:^0.10.0" - "@emotion/utils": "npm:^1.4.1" - csstype: "npm:^3.0.2" - checksum: 10/ead557c1ff19d917ef8169c02738ef36f0851fbfdf0bf69a543045bddea3b7281dc8252ee466cc5fb44ed27d1e61280ff943bb60a2c04158751fb07b3457cc93 - languageName: node - linkType: hard - -"@emotion/sheet@npm:0.9.4": - version: 0.9.4 - resolution: "@emotion/sheet@npm:0.9.4" - checksum: 10/53bb833b4bb69ea2af04e1ecad164f78fb2614834d2820f584c909686a8e047c44e96a6e824798c5c558e6d95e10772454a9e5c473c5dbe0d198e50deb2815bc - languageName: node - linkType: hard - -"@emotion/sheet@npm:^1.2.1, @emotion/sheet@npm:^1.2.2, @emotion/sheet@npm:^1.4.0": - version: 1.4.0 - resolution: "@emotion/sheet@npm:1.4.0" - checksum: 10/8ac6e9bf6b373a648f26ae7f1c24041038524f4c72f436f4f8c4761c665e58880c3229d8d89b1f7a4815dd8e5b49634d03e60187cb6f93097d7f7c1859e869d5 - languageName: node - linkType: hard - -"@emotion/stylis@npm:0.8.5": - version: 0.8.5 - resolution: "@emotion/stylis@npm:0.8.5" - checksum: 10/ceaa673457f501a393cb52873b2bc34dbe35ef0fb8faa4b943d73ecbbb42bc3cea53b87cbf482038b7b9b1f95859be3d8b58d508422b4d15aec5b62314cc3c1e - languageName: node - linkType: hard - -"@emotion/unitless@npm:0.7.5": - version: 0.7.5 - resolution: "@emotion/unitless@npm:0.7.5" - checksum: 10/f976e5345b53fae9414a7b2e7a949aa6b52f8bdbcc84458b1ddc0729e77ba1d1dfdff9960e0da60183877873d3a631fa24d9695dd714ed94bcd3ba5196586a6b - languageName: node - linkType: hard - -"@emotion/unitless@npm:^0.10.0": - version: 0.10.0 - resolution: "@emotion/unitless@npm:0.10.0" - checksum: 10/6851c16edce01c494305f43b2cad7a26b939a821131b7c354e49b8e3b012c8810024755b0f4a03ef51117750309e55339825a97bd10411fb3687e68904769106 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1, @emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": - version: 1.1.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" - peerDependencies: - react: ">=16.8.0" - checksum: 10/33a10f44a873b3f5ccd2a1a3d13c2f34ed628f5a2be1ccf28540a86535a14d3a930afcbef209d48346a22ec60ff48f43c86ee9c846b9480d23a55a17145da66c - languageName: node - linkType: hard - -"@emotion/utils@npm:0.11.3": - version: 0.11.3 - resolution: "@emotion/utils@npm:0.11.3" - checksum: 10/c69d9fe0846283354fae7c97e4fbc8fc7116ab48313665c3b5a11c9dabeb311b30d8f53ed358625070b9b7538462d80106228b00d7db7985d40c40225d01b276 - languageName: node - linkType: hard - -"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1, @emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": - version: 1.4.1 - resolution: "@emotion/utils@npm:1.4.1" - checksum: 10/95e56fc0c9e05cf01a96268f0486ce813f1109a8653d2f575c67df9e8765d9c1b2daf09ad1ada67d933efbb08ca7990228e14b210c713daf90156b4869abe6a7 - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:0.2.5": - version: 0.2.5 - resolution: "@emotion/weak-memoize@npm:0.2.5" - checksum: 10/27d402b0c683b94658220b6d47840346ee582329ca2a15ec9c233492e0f1a27687ccb233b76eedc922f2e185e444cc89f7b97a81a1d3e5ae9f075bab08e965ea - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: 10/b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:^0.4.0": - version: 0.4.0 - resolution: "@emotion/weak-memoize@npm:0.4.0" - checksum: 10/db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 - languageName: node - linkType: hard - -"@es-joy/jsdoccomment@npm:~0.40.1": - version: 0.40.1 - resolution: "@es-joy/jsdoccomment@npm:0.40.1" - dependencies: - comment-parser: "npm:1.4.0" - esquery: "npm:^1.5.0" - jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10/6501c292067b261be553cdc0dca97cc7075c012a5cf283b26e8baa2f5544f487019244af3283c5503f18a5d1d5ba68d00b7581b9fa321866603bf34b3288a1b7 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: "npm:^3.3.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/8d70bcdcd8cd279049183aca747d6c2ed7092a5cf0cf5916faac1ef37ffa74f0c245c2a3a3d3b9979d9dfdd4ca59257b4c5621db699d637b847a2c5e02f491c2 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.2": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 - languageName: node - linkType: hard - -"@eslint/js@npm:8.52.0": - version: 8.52.0 - resolution: "@eslint/js@npm:8.52.0" - checksum: 10/86beff213d0ae4ced203a922b74e2cc4d767d109e7815f985bf648946ba072198977102e32afc9fa04f7825a6de83a831874f6b6675ba0c1d0743ade2dc2d53d - languageName: node - linkType: hard - -"@floating-ui/core@npm:^1.6.0": - version: 1.6.8 - resolution: "@floating-ui/core@npm:1.6.8" - dependencies: - "@floating-ui/utils": "npm:^0.2.8" - checksum: 10/87d52989c3d2cc80373bc153b7a40814db3206ce7d0b2a2bdfb63e2ff39ffb8b999b1b0ccf28e548000ebf863bf16e2bed45eab4c4d287a5dbe974ef22368d82 - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.0.0, @floating-ui/dom@npm:^1.0.1": - version: 1.6.11 - resolution: "@floating-ui/dom@npm:1.6.11" - dependencies: - "@floating-ui/core": "npm:^1.6.0" - "@floating-ui/utils": "npm:^0.2.8" - checksum: 10/8579392ad10151474869e7640af169b0d7fc2df48d4da27b6dcb1a57202329147ed986b2972787d4b8cd550c87897271b2d9c4633c2ec7d0b3ad37ce1da636f1 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.1.1": - version: 2.1.2 - resolution: "@floating-ui/react-dom@npm:2.1.2" - dependencies: - "@floating-ui/dom": "npm:^1.0.0" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10/2a67dc8499674e42ff32c7246bded185bb0fdd492150067caf9568569557ac4756a67787421d8604b0f241e5337de10762aee270d9aeef106d078a0ff13596c4 - languageName: node - linkType: hard - -"@floating-ui/react@npm:0.26.22": - version: 0.26.22 - resolution: "@floating-ui/react@npm:0.26.22" - dependencies: - "@floating-ui/react-dom": "npm:^2.1.1" - "@floating-ui/utils": "npm:^0.2.7" - tabbable: "npm:^6.0.0" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10/53f21ce765445733be4db2efd58c424ad1db0f369d4e20346733ff60f684574e7c435b9cea3298bf09a02484d2ebb52a4097bedda5d021430b3f08439fe91bc1 - languageName: node - linkType: hard - -"@floating-ui/utils@npm:^0.2.7, @floating-ui/utils@npm:^0.2.8": - version: 0.2.8 - resolution: "@floating-ui/utils@npm:0.2.8" - checksum: 10/3e3ea3b2de06badc4baebdf358b3dbd77ccd9474a257a6ef237277895943db2acbae756477ec64de65a2a1436d94aea3107129a1feeef6370675bf2b161c1abc - languageName: node - linkType: hard - -"@formatjs/ecma402-abstract@npm:2.0.0": - version: 2.0.0 - resolution: "@formatjs/ecma402-abstract@npm:2.0.0" - dependencies: - "@formatjs/intl-localematcher": "npm:0.5.4" - tslib: "npm:^2.4.0" - checksum: 10/41543ba509ea3c7d6530d57b888115f7ca242f13462a951fae4d1d1f28bae10c999f4dea28a71d2f08366d4889a3f5276cae3a16c6f6417b841a84fd314c2234 - languageName: node - linkType: hard - -"@formatjs/fast-memoize@npm:2.2.0": - version: 2.2.0 - resolution: "@formatjs/fast-memoize@npm:2.2.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/8697fe72a7ece252d600a7d08105f2a2f758e2dd96f54ac0a4c508b1205a559fc08835635e1f8e5ca9dcc3ee61ce1fca4a0e7047b402f29fc96051e293a280ff - languageName: node - linkType: hard - -"@formatjs/icu-messageformat-parser@npm:2.7.8": - version: 2.7.8 - resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/icu-skeleton-parser": "npm:1.8.2" - tslib: "npm:^2.4.0" - checksum: 10/292fd36268ad84337c0e798fc73b58e8f3cf3f362cea031f710fd78053d29b420526ab766a95745e162ae4a11bf846bc2f7ae5c2c0a3288d3bc9daa97a3be8c1 - languageName: node - linkType: hard - -"@formatjs/icu-skeleton-parser@npm:1.8.2": - version: 1.8.2 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - tslib: "npm:^2.4.0" - checksum: 10/a06b61cf6c298bbbc23349e391bad8a1cf0a6a32dc4928a4681a3aa6f38dd8c6a181dc4067e228f67584d4dc181d862704095e65c38cfac077c984dc24ba54d3 - languageName: node - linkType: hard - -"@formatjs/intl-localematcher@npm:0.5.4": - version: 0.5.4 - resolution: "@formatjs/intl-localematcher@npm:0.5.4" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/780cb29b42e1ea87f2eb5db268577fcdc53da52d9f096871f3a1bb78603b4ba81d208ea0b0b9bc21548797c941ce435321f62d2522795b83b740f90b0ceb5778 - languageName: node - linkType: hard - -"@grafana/data@npm:11.2.2, @grafana/data@npm:next": - version: 11.2.2 - resolution: "@grafana/data@npm:11.2.2" - dependencies: - "@braintree/sanitize-url": "npm:7.0.1" - "@grafana/schema": "npm:11.2.2" - "@types/d3-interpolate": "npm:^3.0.0" - "@types/string-hash": "npm:1.1.3" - d3-interpolate: "npm:3.0.1" - date-fns: "npm:3.6.0" - dompurify: "npm:^3.0.0" - eventemitter3: "npm:5.0.1" - fast_array_intersect: "npm:1.1.0" - history: "npm:4.10.1" - lodash: "npm:4.17.21" - marked: "npm:12.0.2" - marked-mangle: "npm:1.1.9" - moment: "npm:2.30.1" - moment-timezone: "npm:0.5.45" - ol: "npm:7.4.0" - papaparse: "npm:5.4.1" - react-use: "npm:17.5.1" - rxjs: "npm:7.8.1" - string-hash: "npm:^1.1.3" - tinycolor2: "npm:1.6.0" - tslib: "npm:2.6.3" - uplot: "npm:1.6.30" - xss: "npm:^1.0.14" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10/1998cf681e91c51aba96b2ac0335749357f13e8c4273a3551762f96ef60c4a8c0a7f4a9aaf36835639a1ed02ad6a5b546c13e7780c31c32fe6a10b532a2bbb4a - languageName: node - linkType: hard - -"@grafana/e2e-selectors@npm:11.2.2": - version: 11.2.2 - resolution: "@grafana/e2e-selectors@npm:11.2.2" - dependencies: - "@grafana/tsconfig": "npm:^1.3.0-rc1" - tslib: "npm:2.6.3" - typescript: "npm:5.4.5" - checksum: 10/d8c963711eeb3d51871463ae659689f25ba65e79ae485b433c396ecfced0a3a9b89f0faddda3b58a28340cd6bde6e0e0015505d44819752fd71ddb970882b1cc - languageName: node - linkType: hard - -"@grafana/eslint-config@npm:^7.0.0": - version: 7.0.0 - resolution: "@grafana/eslint-config@npm:7.0.0" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:6.18.1" - "@typescript-eslint/parser": "npm:6.18.1" - eslint: "npm:8.52.0" - eslint-config-prettier: "npm:8.8.0" - eslint-plugin-jsdoc: "npm:46.8.2" - eslint-plugin-react: "npm:7.33.2" - eslint-plugin-react-hooks: "npm:4.6.0" - typescript: "npm:5.2.2" - checksum: 10/62af39e70bea66585684877e5afd2cb48432ac8a5b6b2b18ba3ecc20a47dd53249946891d107c120e80d2cbbb69dd902d6c0748fe216c7987b965ba15e33e2d2 - languageName: node - linkType: hard - -"@grafana/faro-core@npm:^1.10.2": - version: 1.10.2 - resolution: "@grafana/faro-core@npm:1.10.2" - dependencies: - "@opentelemetry/api": "npm:^1.9.0" - "@opentelemetry/otlp-transformer": "npm:^0.53.0" - checksum: 10/a326a40f3bc15bbf04992a0d45a8fd408b5ab5cc6b607871f010716c3944aa09bf4416ca0a302a9e6a167b2cf2eb4bc3573468c2c0a9e5ba183504490a66b289 - languageName: node - linkType: hard - -"@grafana/faro-web-sdk@npm:^1.3.6": - version: 1.10.2 - resolution: "@grafana/faro-web-sdk@npm:1.10.2" - dependencies: - "@grafana/faro-core": "npm:^1.10.2" - ua-parser-js: "npm:^1.0.32" - web-vitals: "npm:^4.0.1" - checksum: 10/46dac84bbff3e8abe1abe36b2c15e292ba10147ff8c41697ad339b51054bde32d009a5b3788358516775eb1dd63be092140691569d4ffb0b969ebdb9ee7816bf - languageName: node - linkType: hard - -"@grafana/runtime@npm:^11.2.2": - version: 11.2.2 - resolution: "@grafana/runtime@npm:11.2.2" - dependencies: - "@grafana/data": "npm:11.2.2" - "@grafana/e2e-selectors": "npm:11.2.2" - "@grafana/faro-web-sdk": "npm:^1.3.6" - "@grafana/schema": "npm:11.2.2" - "@grafana/ui": "npm:11.2.2" - history: "npm:4.10.1" - lodash: "npm:4.17.21" - rxjs: "npm:7.8.1" - tslib: "npm:2.6.3" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10/5dd6033c63f41c893b64f5e203688d1e090e39a01120c4fb296ac82674d1fe3e8bcca5bd73e9b630cb7635c6792c230be6a8886b3cf86b0836acab15234587ac - languageName: node - linkType: hard - -"@grafana/schema@npm:11.2.2": - version: 11.2.2 - resolution: "@grafana/schema@npm:11.2.2" - dependencies: - tslib: "npm:2.6.3" - checksum: 10/ea891fb6ebb68cebea1e33f86d816f1a07922e98c20027d1f9ba11cb4925a80064caa43aab6770db64f211930cd6724ed1ee13cf43fad562b1a8ce372ac2b988 - languageName: node - linkType: hard - -"@grafana/schema@npm:^10.4.0": - version: 10.4.10 - resolution: "@grafana/schema@npm:10.4.10" - dependencies: - tslib: "npm:2.6.2" - checksum: 10/67aae37fce2b9d85a17634d6e9f8551398de376430cd0cd57f5c90624ee89bb7e666f5c8e553e94296f41e53061f92c8ae70619ed27201798190b66bb21684fb - languageName: node - linkType: hard - -"@grafana/tsconfig@npm:^1.3.0-rc1": - version: 1.3.0-rc1 - resolution: "@grafana/tsconfig@npm:1.3.0-rc1" - checksum: 10/3ed039967ae9e0c6ab70387b6aee648086aed00bf0c831ca4d82088cd829e15dac953387413e18941cc75958eec89e58c53ed1a6dedc02a34bbb794fa9658ea0 - languageName: node - linkType: hard - -"@grafana/tsconfig@npm:^2.0.0": - version: 2.0.0 - resolution: "@grafana/tsconfig@npm:2.0.0" - checksum: 10/81e3c07e2f3f01e70b3e73a5f7e71871dc3a14c683b1d760828e0c4d609f55adf5111ff72b9148b7a7af3cdeb6199af1fdd295140b003ef2ff74f01a8b77bd09 - languageName: node - linkType: hard - -"@grafana/ui@npm:11.2.2, @grafana/ui@npm:next": - version: 11.2.2 - resolution: "@grafana/ui@npm:11.2.2" - dependencies: - "@emotion/css": "npm:11.11.2" - "@emotion/react": "npm:11.11.4" - "@floating-ui/react": "npm:0.26.22" - "@grafana/data": "npm:11.2.2" - "@grafana/e2e-selectors": "npm:11.2.2" - "@grafana/faro-web-sdk": "npm:^1.3.6" - "@grafana/schema": "npm:11.2.2" - "@hello-pangea/dnd": "npm:16.6.0" - "@leeoniya/ufuzzy": "npm:1.0.14" - "@monaco-editor/react": "npm:4.6.0" - "@popperjs/core": "npm:2.11.8" - "@react-aria/dialog": "npm:3.5.16" - "@react-aria/focus": "npm:3.18.1" - "@react-aria/overlays": "npm:3.23.1" - "@react-aria/utils": "npm:3.25.1" - "@tanstack/react-virtual": "npm:^3.5.1" - "@types/jquery": "npm:3.5.30" - "@types/lodash": "npm:4.17.7" - "@types/react-table": "npm:7.7.20" - ansicolor: "npm:1.1.100" - calculate-size: "npm:1.1.1" - classnames: "npm:2.5.1" - d3: "npm:7.9.0" - date-fns: "npm:3.6.0" - downshift: "npm:^9.0.6" - hoist-non-react-statics: "npm:3.3.2" - i18next: "npm:^23.0.0" - i18next-browser-languagedetector: "npm:^7.0.2" - immutable: "npm:4.3.7" - is-hotkey: "npm:0.2.0" - jquery: "npm:3.7.1" - lodash: "npm:4.17.21" - micro-memoize: "npm:^4.1.2" - moment: "npm:2.30.1" - monaco-editor: "npm:0.34.1" - ol: "npm:7.4.0" - prismjs: "npm:1.29.0" - rc-cascader: "npm:3.27.0" - rc-drawer: "npm:7.2.0" - rc-slider: "npm:10.6.2" - rc-time-picker: "npm:^3.7.3" - rc-tooltip: "npm:6.2.0" - react-calendar: "npm:4.8.0" - react-colorful: "npm:5.6.1" - react-custom-scrollbars-2: "npm:4.5.0" - react-dropzone: "npm:14.2.3" - react-highlight-words: "npm:0.20.0" - react-hook-form: "npm:^7.49.2" - react-i18next: "npm:^14.0.0" - react-inlinesvg: "npm:3.0.2" - react-loading-skeleton: "npm:3.4.0" - react-router-dom: "npm:5.3.3" - react-select: "npm:5.8.0" - react-table: "npm:7.8.0" - react-transition-group: "npm:4.4.5" - react-use: "npm:17.5.1" - react-window: "npm:1.8.10" - rxjs: "npm:7.8.1" - slate: "npm:0.47.9" - slate-plain-serializer: "npm:0.7.13" - slate-react: "npm:0.22.10" - tinycolor2: "npm:1.6.0" - tslib: "npm:2.6.3" - uplot: "npm:1.6.30" - uuid: "npm:9.0.1" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10/73b46ecbfc1027e477955f4271c834fb7b1e5cc3c9f342c027e7c8a5d744879967bfc899bd3dda59067a6be940eeb687b17d4e129e90ea60672e1bc512726177 - languageName: node - linkType: hard - -"@hello-pangea/dnd@npm:16.6.0": - version: 16.6.0 - resolution: "@hello-pangea/dnd@npm:16.6.0" - dependencies: - "@babel/runtime": "npm:^7.24.1" - css-box-model: "npm:^1.2.1" - memoize-one: "npm:^6.0.0" - raf-schd: "npm:^4.0.3" - react-redux: "npm:^8.1.3" - redux: "npm:^4.2.1" - use-memo-one: "npm:^1.1.3" - peerDependencies: - react: ^16.8.5 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0 - checksum: 10/f377461d400c8223174745e4d7ecf4fb0146f9e807413f98120ebbcf075282e631273988d336daaf1fb8e6b6c6a1a8e4f99beefecd7a6b68ccc3bb064d38f13f - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.11.13": - version: 0.11.14 - resolution: "@humanwhocodes/config-array@npm:0.11.14" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.2" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/3ffb24ecdfab64014a230e127118d50a1a04d11080cbb748bc21629393d100850496456bbcb4e8c438957fe0934430d731042f1264d6a167b62d32fc2863580a - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10/e993950e346331e5a32eefb27948ecdee2a2c4ab3f072b8f566cd213ef485dd50a3ca497050608db91006f5479e43f91a439aef68d2a313bd3ded06909c7c5b3 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.2": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 - languageName: node - linkType: hard - -"@internationalized/date@npm:^3.5.6": - version: 3.5.6 - resolution: "@internationalized/date@npm:3.5.6" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/54734b53ca74a32aae368a8f963324352b1fd5b13029b6e82555307b8f2ff355658c90e82a4f38f154a3edf874387d1efd26fc80f2edd068ce04f48f6467f26c - languageName: node - linkType: hard - -"@internationalized/message@npm:^3.1.5": - version: 3.1.5 - resolution: "@internationalized/message@npm:3.1.5" - dependencies: - "@swc/helpers": "npm:^0.5.0" - intl-messageformat: "npm:^10.1.0" - checksum: 10/210951fd8055af4db70d465e49bcbbdf2545ed223b936af9c1f18b745a51689ecb0ca49cbd5ee2dbfeccce2447808b7fe309bd12ee81f7e09283f20bf04200e9 - languageName: node - linkType: hard - -"@internationalized/number@npm:^3.5.4": - version: 3.5.4 - resolution: "@internationalized/number@npm:3.5.4" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/16641aecb58c075a6322dc6b36a2c6e521845296f81b86a128d015f072d1af998289b71b4d8b9521e7576bdeabfaf8067a3e741b0116c8595d82a4461c1ae03b - languageName: node - linkType: hard - -"@internationalized/string@npm:^3.2.4": - version: 3.2.4 - resolution: "@internationalized/string@npm:3.2.4" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/5fdb7f0bf7fa7055cdf62ded4efd6849d3db9cf0e6d53f349889e2ec9517b9135ad38a6bb8dcf25142c69c381618c0dd1a6a072117dd7cf2867ce17374f0f835 - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10/e9ed5fd27c3aec1095e3a16e0c0cf148d1fee55a38665c35f7b3f86a9b5d00d042ddaabc98e8a1cb7463b9378c15f22a94eb35e99469c201453eb8375191f243 - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 10/b000a5acd8d4fe6e34e25c399c8bdbb5d3a202b4e10416e17bfc25e12bab90bb56d33db6089ae30569b52686f4b35ff28ef26e88e21e69821d2b85884bd055b8 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b - languageName: node - linkType: hard - -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/reporters": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.7.0" - jest-config: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-resolve-dependencies: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e - languageName: node - linkType: hard - -"@jest/create-cache-key-function@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/create-cache-key-function@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - checksum: 10/061ef63b13ec8c8e5d08e4456f03b5cf8c7f9c1cab4fed8402e1479153cafce6eea80420e308ef62027abb7e29b825fcfa06551856bd021d98e92e381bf91723 - languageName: node - linkType: hard - -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - checksum: 10/90b5844a9a9d8097f2cf107b1b5e57007c552f64315da8c1f51217eeb0a9664889d3f145cdf8acf23a84f4d8309a6675e27d5b059659a004db0ea9546d1c81a8 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 10/ef8d379778ef574a17bde2801a6f4469f8022a46a5f9e385191dc73bb1fc318996beaed4513fbd7055c2847227a1bed2469977821866534593a6e52a281499ee - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@sinonjs/fake-timers": "npm:^10.0.2" - "@types/node": "npm:*" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9b394e04ffc46f91725ecfdff34c4e043eb7a16e1d78964094c9db3fde0b1c8803e45943a980e8c740d0a3d45661906de1416ca5891a538b0660481a3a828c27 - languageName: node - linkType: hard - -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": "npm:^0.27.8" - checksum: 10/910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 - languageName: node - linkType: hard - -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^4.0.2" - checksum: 10/30f42293545ab037d5799c81d3e12515790bb58513d37f788ce32d53326d0d72ebf5b40f989e6896739aa50a5f77be44686e510966370d58511d5ad2637c68c1 - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 10/f74bf512fd09bbe2433a2ad460b04668b7075235eea9a0c77d6a42222c10a79b9747dc2b2a623f140ed40d6865a2ed8f538f3cbb75169120ea863f29a7ed76cd - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" - dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10/81587b3c4dd8e6c60252122937cea0c637486311f4ed208b52b62aae2e7a87598f63ec330e6cd0984af494bfb16d3f0d60d3b21d7e5b4aedd2602ff3fe9d32e2 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10/832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10/0a9aca9320dc9044014ba0ef989b3a8411b0d778895553e3b7ca2ac0a75a20af4a5ad3f202acfb1879fa40466036a4417e1d5b38305baed8b9c1ebe6e4b3e7f5 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc - languageName: node - linkType: hard - -"@leeoniya/ufuzzy@npm:1.0.14": - version: 1.0.14 - resolution: "@leeoniya/ufuzzy@npm:1.0.14" - checksum: 10/852b580a8eaaf92e2d448f5b720e3c53e4bea22187bf5e8459256677c47183321b47b8384982e15751f42da7e77a216fd86c80e6185677d8270adeab4a4fb771 - languageName: node - linkType: hard - -"@mapbox/jsonlint-lines-primitives@npm:~2.0.2": - version: 2.0.2 - resolution: "@mapbox/jsonlint-lines-primitives@npm:2.0.2" - checksum: 10/6d8e64d34d912ebf29fead0d1917c8d8ad86e96f69b6100a9764af8cba391609474cdce7f7e4a2d579ccea58a142d1454257b795403179e9133a09af13101068 - languageName: node - linkType: hard - -"@mapbox/mapbox-gl-style-spec@npm:^13.23.1": - version: 13.28.0 - resolution: "@mapbox/mapbox-gl-style-spec@npm:13.28.0" - dependencies: - "@mapbox/jsonlint-lines-primitives": "npm:~2.0.2" - "@mapbox/point-geometry": "npm:^0.1.0" - "@mapbox/unitbezier": "npm:^0.0.0" - csscolorparser: "npm:~1.0.2" - json-stringify-pretty-compact: "npm:^2.0.0" - minimist: "npm:^1.2.6" - rw: "npm:^1.3.3" - sort-object: "npm:^0.3.2" - bin: - gl-style-composite: bin/gl-style-composite.js - gl-style-format: bin/gl-style-format.js - gl-style-migrate: bin/gl-style-migrate.js - gl-style-validate: bin/gl-style-validate.js - checksum: 10/d65f95fde4e58de62085a796f41a7ac16513f866adaac18baf19ee4ee00d4b6e16d515bb0dd5848e094fc32316d2a56f45a0013ef304c29d5b15c089ed25fb24 - languageName: node - linkType: hard - -"@mapbox/point-geometry@npm:^0.1.0": - version: 0.1.0 - resolution: "@mapbox/point-geometry@npm:0.1.0" - checksum: 10/f6f78ac8a7f798efb19db6eb1a9e05da7ba942102f5347c1a673d94202d0c606ec3f522efa3e76d583cdca46fb96dde52c3d37234f162d21df42f9e8c4f182bd - languageName: node - linkType: hard - -"@mapbox/unitbezier@npm:^0.0.0": - version: 0.0.0 - resolution: "@mapbox/unitbezier@npm:0.0.0" - checksum: 10/211fc5b0a40fafa0127baf87938a6a00535b22b51bec95df2f6141cf1dd50339bca2a9729c7a9803cdee5c2b4e0e3323a882655c74f1a86e557096684196e1ff - languageName: node - linkType: hard - -"@monaco-editor/loader@npm:^1.4.0": - version: 1.4.0 - resolution: "@monaco-editor/loader@npm:1.4.0" - dependencies: - state-local: "npm:^1.0.6" - peerDependencies: - monaco-editor: ">= 0.21.0 < 1" - checksum: 10/32ad01de015fc187450aa1cc0aa763af167664b6a61efcb9e1523a0f51ca5d0b35ba11ed95889edd6d774dfe98f196ef58f1607243abcbdd3d6d743f82ba8285 - languageName: node - linkType: hard - -"@monaco-editor/react@npm:4.6.0": - version: 4.6.0 - resolution: "@monaco-editor/react@npm:4.6.0" - dependencies: - "@monaco-editor/loader": "npm:^1.4.0" - peerDependencies: - monaco-editor: ">= 0.25.0 < 1" - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/e32724ebcc2fc81e91169d69eff8533e15a595c13156ec57965238a0f0afa67e2ed2abbf735a57cfaae15430bbc905b016b644bf7383a82d607501d557a6dd82 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10/96fc0036b101bae5032dc2a4cd832efb815ce9b33f9ee2f29909ee49d96a0026b3565f73c507a69eb8603f5cb32e0ae45a70cab1e2655990a4e06ae99f7f572a - languageName: node - linkType: hard - -"@npmcli/fs@npm:^3.1.0": - version: 3.1.1 - resolution: "@npmcli/fs@npm:3.1.1" - dependencies: - semver: "npm:^7.3.5" - checksum: 10/1e0e04087049b24b38bc0b30d87a9388ee3ca1d3fdfc347c2f77d84fcfe6a51f250bc57ba2c1f614d7e4285c6c62bf8c769bc19aa0949ea39e5b043ee023b0bd - languageName: node - linkType: hard - -"@opentelemetry/api-logs@npm:0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/api-logs@npm:0.53.0" - dependencies: - "@opentelemetry/api": "npm:^1.0.0" - checksum: 10/347b4554d6ee01afb29bd39e8f9cbbccd80abb0883fe6a84e3bcce8ab4dbfe357a2729246d2f66de0de6272846fd1bb2d71e286e18ad2690d9e7f46f02f00f73 - languageName: node - linkType: hard - -"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.9.0": - version: 1.9.0 - resolution: "@opentelemetry/api@npm:1.9.0" - checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194 - languageName: node - linkType: hard - -"@opentelemetry/core@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/core@npm:1.26.0" - dependencies: - "@opentelemetry/semantic-conventions": "npm:1.27.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/474b6bcf42cd2825d56f915eb0d6e6cdcb37777a11fc2618fc2fa50754f4b9b5df23944f3aab186cb3ab930db5c3a81efa3183362802314a966930110346e6a4 - languageName: node - linkType: hard - -"@opentelemetry/otlp-transformer@npm:^0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/otlp-transformer@npm:0.53.0" - dependencies: - "@opentelemetry/api-logs": "npm:0.53.0" - "@opentelemetry/core": "npm:1.26.0" - "@opentelemetry/resources": "npm:1.26.0" - "@opentelemetry/sdk-logs": "npm:0.53.0" - "@opentelemetry/sdk-metrics": "npm:1.26.0" - "@opentelemetry/sdk-trace-base": "npm:1.26.0" - protobufjs: "npm:^7.3.0" - peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: 10/578cf13d7984a0b1ba1db3d86d1e358bf70e8b534166f8327a10fccca0afd3900896a80e5e73caae61837b0cbc99d81b44784edee68a3517d73f5330a3624ccd - languageName: node - linkType: hard - -"@opentelemetry/resources@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/resources@npm:1.26.0" - dependencies: - "@opentelemetry/core": "npm:1.26.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/ce60dbf2bd424b01824b72f533724eaf64418e01c43bef952b87dbff6d2a0f28cdcbea0d3d95c5e324f609e58721bf52ea91b5518b0e30d6bb03fb95af85cc33 - languageName: node - linkType: hard - -"@opentelemetry/sdk-logs@npm:0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/sdk-logs@npm:0.53.0" - dependencies: - "@opentelemetry/api-logs": "npm:0.53.0" - "@opentelemetry/core": "npm:1.26.0" - "@opentelemetry/resources": "npm:1.26.0" - peerDependencies: - "@opentelemetry/api": ">=1.4.0 <1.10.0" - checksum: 10/b11b512820f3d55288f7478831587ebe2e7077980f060a779a13848c62cab30023734857c68ef110eebe961884cb8892d7c77841a5f1d22c2426cbb18d762975 - languageName: node - linkType: hard - -"@opentelemetry/sdk-metrics@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" - dependencies: - "@opentelemetry/core": "npm:1.26.0" - "@opentelemetry/resources": "npm:1.26.0" - peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.10.0" - checksum: 10/e48e4dd1fed1e501750460e1320f89507c19287c5059cfaccc8268ad8cc3e1de40feeee6584b23626e01f9cde0f10301d08edf6a65bbd1346ef94f70ae8844f5 - languageName: node - linkType: hard - -"@opentelemetry/sdk-trace-base@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" - dependencies: - "@opentelemetry/core": "npm:1.26.0" - "@opentelemetry/resources": "npm:1.26.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/e4a3d296ad908b9f58d7aefdcc1f7383fb0eb64fc85b0b5d18c4a7d829ce3d0efa5e53f5fe1a23185d9b5d97b782431384efe01aba8ba788922260a9dbbdb662 - languageName: node - linkType: hard - -"@opentelemetry/semantic-conventions@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" - checksum: 10/98166522f299e2fe3d43376adbdeb92679b75ebb172e2a3c4c71f2942bd91585e9537618efbbae6dc08177699e5719368edf66d7e69e8636f360b85217bbdbe1 - languageName: node - linkType: hard - -"@petamoriken/float16@npm:^3.4.7": - version: 3.8.7 - resolution: "@petamoriken/float16@npm:3.8.7" - checksum: 10/934a0c66854dbede5a7d7db050ef614da481ce619e2b946b9d0b46daa5795e9e1b534baaa009894df7a179c6d9493814a7340dd04f0d10c64e95b5e7857ac68c - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10/115e8ceeec6bc69dff2048b35c0ab4f8bbee12d8bb6c1f4af758604586d802b6e669dcb02dda61d078de42c2b4ddce41b3d9e726d7daa6b4b850f4adbf7333ff - languageName: node - linkType: hard - -"@popperjs/core@npm:2.11.8": - version: 2.11.8 - resolution: "@popperjs/core@npm:2.11.8" - checksum: 10/ddd16090cde777aaf102940f05d0274602079a95ad9805bd20bc55dcc7c3a2ba1b99dd5c73e5cc2753c3d31250ca52a67d58059459d7d27debb983a9f552936c - languageName: node - linkType: hard - -"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/aspromise@npm:1.1.2" - checksum: 10/8a938d84fe4889411296db66b29287bd61ea3c14c2d23e7a8325f46a2b8ce899857c5f038d65d7641805e6c1d06b495525c7faf00c44f85a7ee6476649034969 - languageName: node - linkType: hard - -"@protobufjs/base64@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/base64@npm:1.1.2" - checksum: 10/c71b100daeb3c9bdccab5cbc29495b906ba0ae22ceedc200e1ba49717d9c4ab15a6256839cebb6f9c6acae4ed7c25c67e0a95e734f612b258261d1a3098fe342 - languageName: node - linkType: hard - -"@protobufjs/codegen@npm:^2.0.4": - version: 2.0.4 - resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 10/c6ee5fa172a8464f5253174d3c2353ea520c2573ad7b6476983d9b1346f4d8f2b44aa29feb17a949b83c1816bc35286a5ea265ed9d8fdd2865acfa09668c0447 - languageName: node - linkType: hard - -"@protobufjs/eventemitter@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/eventemitter@npm:1.1.0" - checksum: 10/03af3e99f17ad421283d054c88a06a30a615922a817741b43ca1b13e7c6b37820a37f6eba9980fb5150c54dba6e26cb6f7b64a6f7d8afa83596fafb3afa218c3 - languageName: node - linkType: hard - -"@protobufjs/fetch@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/fetch@npm:1.1.0" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.1" - "@protobufjs/inquire": "npm:^1.1.0" - checksum: 10/67ae40572ad536e4ef94269199f252c024b66e3059850906bdaee161ca1d75c73d04d35cd56f147a8a5a079f5808e342b99e61942c1dae15604ff0600b09a958 - languageName: node - linkType: hard - -"@protobufjs/float@npm:^1.0.2": - version: 1.0.2 - resolution: "@protobufjs/float@npm:1.0.2" - checksum: 10/634c2c989da0ef2f4f19373d64187e2a79f598c5fb7991afb689d29a2ea17c14b796b29725945fa34b9493c17fb799e08ac0a7ccaae460ee1757d3083ed35187 - languageName: node - linkType: hard - -"@protobufjs/inquire@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/inquire@npm:1.1.0" - checksum: 10/c09efa34a5465cb120775e1a482136f2340a58b4abce7e93d72b8b5a9324a0e879275016ef9fcd73d72a4731639c54f2bb755bb82f916e4a78892d1d840bb3d2 - languageName: node - linkType: hard - -"@protobufjs/path@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/path@npm:1.1.2" - checksum: 10/bb709567935fd385a86ad1f575aea98131bbd719c743fb9b6edd6b47ede429ff71a801cecbd64fc72deebf4e08b8f1bd8062793178cdaed3713b8d15771f9b83 - languageName: node - linkType: hard - -"@protobufjs/pool@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/pool@npm:1.1.0" - checksum: 10/b9c7047647f6af28e92aac54f6f7c1f7ff31b201b4bfcc7a415b2861528854fce3ec666d7e7e10fd744da905f7d4aef2205bbcc8944ca0ca7a82e18134d00c46 - languageName: node - linkType: hard - -"@protobufjs/utf8@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: 10/131e289c57534c1d73a0e55782d6751dd821db1583cb2f7f7e017c9d6747addaebe79f28120b2e0185395d990aad347fb14ffa73ef4096fa38508d61a0e64602 - languageName: node - linkType: hard - -"@rc-component/portal@npm:^1.1.0, @rc-component/portal@npm:^1.1.1": - version: 1.1.2 - resolution: "@rc-component/portal@npm:1.1.2" - dependencies: - "@babel/runtime": "npm:^7.18.0" - classnames: "npm:^2.3.2" - rc-util: "npm:^5.24.4" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/ae9d4cdf07647fc4da3944f74ab4d25c16cc7021c5760d4db37c0600461a84f480243e5186f3e5760903041d3a3e0927cb4226f44583fa668d3cacd29245fd69 - languageName: node - linkType: hard - -"@rc-component/trigger@npm:^2.0.0, @rc-component/trigger@npm:^2.1.1": - version: 2.2.3 - resolution: "@rc-component/trigger@npm:2.2.3" - dependencies: - "@babel/runtime": "npm:^7.23.2" - "@rc-component/portal": "npm:^1.1.0" - classnames: "npm:^2.3.2" - rc-motion: "npm:^2.0.0" - rc-resize-observer: "npm:^1.3.1" - rc-util: "npm:^5.38.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/1747ae80f8dd46f3d288b989ae5b799eaf1b37dbc23166fcbcae6bd5c45c6b3413b7e43724e9d8c363d4f8cd2ed6e91d94f3f26f32006cc65808842f246b2417 - languageName: node - linkType: hard - -"@react-aria/dialog@npm:3.5.16": - version: 3.5.16 - resolution: "@react-aria/dialog@npm:3.5.16" - dependencies: - "@react-aria/focus": "npm:^3.18.1" - "@react-aria/overlays": "npm:^3.23.1" - "@react-aria/utils": "npm:^3.25.1" - "@react-types/dialog": "npm:^3.5.12" - "@react-types/shared": "npm:^3.24.1" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/10373652d60b232152b2d6f55cda2e40f0f2d08c0f8ee578256708305fe571e69109fede0d9979c7722096a51beb9e676e983a6cc2fa022fd4c12da3384a5103 - languageName: node - linkType: hard - -"@react-aria/focus@npm:3.18.1": - version: 3.18.1 - resolution: "@react-aria/focus@npm:3.18.1" - dependencies: - "@react-aria/interactions": "npm:^3.22.1" - "@react-aria/utils": "npm:^3.25.1" - "@react-types/shared": "npm:^3.24.1" - "@swc/helpers": "npm:^0.5.0" - clsx: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/b8b764f0a43d34bee7c89f3510ccfecc0b3408f2418e30aa2a2ead54d5e94034fc2bc05c6469d4be9b27b7f1f78bfc9207bcb6dbe96bd11380cab243bb30d4be - languageName: node - linkType: hard - -"@react-aria/focus@npm:^3.18.1, @react-aria/focus@npm:^3.18.3": - version: 3.18.3 - resolution: "@react-aria/focus@npm:3.18.3" - dependencies: - "@react-aria/interactions": "npm:^3.22.3" - "@react-aria/utils": "npm:^3.25.3" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - clsx: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/b11632e638de2f40ec12a4a8c818059b9bf7e90b288a93b46985350c887ae7ecdf037391537f86fbacb2a186dec7e7c41a8f2ff767fd232a8cac3189f03735b2 - languageName: node - linkType: hard - -"@react-aria/i18n@npm:^3.12.1, @react-aria/i18n@npm:^3.12.3": - version: 3.12.3 - resolution: "@react-aria/i18n@npm:3.12.3" - dependencies: - "@internationalized/date": "npm:^3.5.6" - "@internationalized/message": "npm:^3.1.5" - "@internationalized/number": "npm:^3.5.4" - "@internationalized/string": "npm:^3.2.4" - "@react-aria/ssr": "npm:^3.9.6" - "@react-aria/utils": "npm:^3.25.3" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/54f111d9a9da68edcb8b821f7c8ead92f0c4d85307dbabee78bc5c89f5a19cdfa406b1e40b7c6f9dc26f7cedce4c9c5a10f8dcdae289e5a404c07b6fdda98aba - languageName: node - linkType: hard - -"@react-aria/interactions@npm:^3.22.1, @react-aria/interactions@npm:^3.22.3": - version: 3.22.3 - resolution: "@react-aria/interactions@npm:3.22.3" - dependencies: - "@react-aria/ssr": "npm:^3.9.6" - "@react-aria/utils": "npm:^3.25.3" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/bc1e8381bda81c106d64bb6eebe06c244bcd6905d1be95fdc26bad1c5d83c48d1ec5159fb1cb8ea9ee7ebafc76595702e2d174f3c8394b766779c0d34bfa6de7 - languageName: node - linkType: hard - -"@react-aria/overlays@npm:3.23.1": - version: 3.23.1 - resolution: "@react-aria/overlays@npm:3.23.1" - dependencies: - "@react-aria/focus": "npm:^3.18.1" - "@react-aria/i18n": "npm:^3.12.1" - "@react-aria/interactions": "npm:^3.22.1" - "@react-aria/ssr": "npm:^3.9.5" - "@react-aria/utils": "npm:^3.25.1" - "@react-aria/visually-hidden": "npm:^3.8.14" - "@react-stately/overlays": "npm:^3.6.9" - "@react-types/button": "npm:^3.9.6" - "@react-types/overlays": "npm:^3.8.9" - "@react-types/shared": "npm:^3.24.1" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/24aff9357b0ccdb412c8712fa3afdee281215b4054a652abbd086f898f037c375a2d254ec45776172e76f78db6b310fa3015d124de8c642e6b497a1396ccbef9 - languageName: node - linkType: hard - -"@react-aria/overlays@npm:^3.23.1": - version: 3.23.3 - resolution: "@react-aria/overlays@npm:3.23.3" - dependencies: - "@react-aria/focus": "npm:^3.18.3" - "@react-aria/i18n": "npm:^3.12.3" - "@react-aria/interactions": "npm:^3.22.3" - "@react-aria/ssr": "npm:^3.9.6" - "@react-aria/utils": "npm:^3.25.3" - "@react-aria/visually-hidden": "npm:^3.8.16" - "@react-stately/overlays": "npm:^3.6.11" - "@react-types/button": "npm:^3.10.0" - "@react-types/overlays": "npm:^3.8.10" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/c70af63d4ae828963b9fa780330cabf49e5a70f8981ae65d173e32934fa190fc8df1283de65d6a8b71b6340050718df19c2e7353b406114962d85ee5deb811ee - languageName: node - linkType: hard - -"@react-aria/ssr@npm:^3.9.5, @react-aria/ssr@npm:^3.9.6": - version: 3.9.6 - resolution: "@react-aria/ssr@npm:3.9.6" - dependencies: - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/ea6b290346ce1e119ed9233fc0e34693d52ab9dc2509f07ab10710409b89484a544b7f26c1438802e97f3fb634844ae54638850cdd95caca0d1f5571781bf982 - languageName: node - linkType: hard - -"@react-aria/utils@npm:3.25.1": - version: 3.25.1 - resolution: "@react-aria/utils@npm:3.25.1" - dependencies: - "@react-aria/ssr": "npm:^3.9.5" - "@react-stately/utils": "npm:^3.10.2" - "@react-types/shared": "npm:^3.24.1" - "@swc/helpers": "npm:^0.5.0" - clsx: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/477b945ebdbda4200415dbc040d89658e58eb48e3d158a54a0d07c89d5605c1e3b51c21d2058b5346f8be2cab43c0f8d705f999b71712b96aa33546c0560cb47 - languageName: node - linkType: hard - -"@react-aria/utils@npm:^3.25.1, @react-aria/utils@npm:^3.25.3": - version: 3.25.3 - resolution: "@react-aria/utils@npm:3.25.3" - dependencies: - "@react-aria/ssr": "npm:^3.9.6" - "@react-stately/utils": "npm:^3.10.4" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - clsx: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/86aed35da5cb0d48d949e40bf8226d5a6d6c92a8cdc60e3e12d524d1f3cc91ab6b54c5e1642823773cbb889fb61af7da22e89488b704b56fc5f4d8d59da7519b - languageName: node - linkType: hard - -"@react-aria/visually-hidden@npm:^3.8.14, @react-aria/visually-hidden@npm:^3.8.16": - version: 3.8.16 - resolution: "@react-aria/visually-hidden@npm:3.8.16" - dependencies: - "@react-aria/interactions": "npm:^3.22.3" - "@react-aria/utils": "npm:^3.25.3" - "@react-types/shared": "npm:^3.25.0" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/263b4d0e78ae2932165cad3d91f8111527d04feae06c42078cbaaa8f8a8bc13f46321cf1c3203e3e7418ca319b2f02b8ff24764e8c4af714a6200450fa955277 - languageName: node - linkType: hard - -"@react-stately/overlays@npm:^3.6.11, @react-stately/overlays@npm:^3.6.9": - version: 3.6.11 - resolution: "@react-stately/overlays@npm:3.6.11" - dependencies: - "@react-stately/utils": "npm:^3.10.4" - "@react-types/overlays": "npm:^3.8.10" - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/98190b4b0ced5c94d924cf97b5d43a6e28f68aa44de7bb789c20354f30f00309c86089fb6948b5ec9d09f01605b5a412fb246545b7ee9bc34e3183e7261a2805 - languageName: node - linkType: hard - -"@react-stately/utils@npm:^3.10.2, @react-stately/utils@npm:^3.10.4": - version: 3.10.4 - resolution: "@react-stately/utils@npm:3.10.4" - dependencies: - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/8a56b4d0cf8d5a7a692d6f94ffff63feac2d7078fbc5642b94b0afcaaf7c8f7f4682cfe546f98265034c52576c198be5502cff3f9b145137884e50eb9ffb96d5 - languageName: node - linkType: hard - -"@react-types/button@npm:^3.10.0, @react-types/button@npm:^3.9.6": - version: 3.10.0 - resolution: "@react-types/button@npm:3.10.0" - dependencies: - "@react-types/shared": "npm:^3.25.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/13973108d935e81a9e852bdc3a530a26a4cacc4a7ec37f1dde48202be0545066a71f4d7c476806d7911e91b2b9193c79f4e89dc616280b74db37cec3dd749fea - languageName: node - linkType: hard - -"@react-types/dialog@npm:^3.5.12": - version: 3.5.13 - resolution: "@react-types/dialog@npm:3.5.13" - dependencies: - "@react-types/overlays": "npm:^3.8.10" - "@react-types/shared": "npm:^3.25.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/c7ee923c326b7377660400ec794ef98330388250aa32df23f5c22a63e483bcad221283de26181bf2a5cab2c20d517f528bf351c9786ac9fece3e3726e4ae07c3 - languageName: node - linkType: hard - -"@react-types/overlays@npm:^3.8.10, @react-types/overlays@npm:^3.8.9": - version: 3.8.10 - resolution: "@react-types/overlays@npm:3.8.10" - dependencies: - "@react-types/shared": "npm:^3.25.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/2e8edf37f75df2884a280cbd25a3798d24b93669b8b2b606cadacaf40f605f63e437749cea28861fabecd78293302ac39108f4e65cedd412c474e92be9895561 - languageName: node - linkType: hard - -"@react-types/shared@npm:^3.24.1, @react-types/shared@npm:^3.25.0": - version: 3.25.0 - resolution: "@react-types/shared@npm:3.25.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 - checksum: 10/fa31eb6153c223210c2eee46934a63b922917bcde0ee583f2cfe59675db122c10e1cbae6549b1fea4284391fdbeca6888b36e9dc797231ad4a76def01490aea5 - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 10/297f95ff77c82c54de8c9907f186076e715ff2621c5222ba50b8d40a170661c0c5242c763cba2a4791f0f91cb1d8ffa53ea1d7294570cf8cd4694c0e383e484d - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e - languageName: node - linkType: hard - -"@swc/core-darwin-arm64@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-darwin-arm64@npm:1.7.28" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-darwin-x64@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-darwin-x64@npm:1.7.28" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@swc/core-linux-arm-gnueabihf@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.28" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@swc/core-linux-arm64-gnu@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.28" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-arm64-musl@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.28" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-linux-x64-gnu@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.28" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-x64-musl@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-linux-x64-musl@npm:1.7.28" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-win32-arm64-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.28" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-win32-ia32-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.28" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@swc/core-win32-x64-msvc@npm:1.7.28": - version: 1.7.28 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.28" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@swc/core@npm:^1.3.90": - version: 1.7.28 - resolution: "@swc/core@npm:1.7.28" - dependencies: - "@swc/core-darwin-arm64": "npm:1.7.28" - "@swc/core-darwin-x64": "npm:1.7.28" - "@swc/core-linux-arm-gnueabihf": "npm:1.7.28" - "@swc/core-linux-arm64-gnu": "npm:1.7.28" - "@swc/core-linux-arm64-musl": "npm:1.7.28" - "@swc/core-linux-x64-gnu": "npm:1.7.28" - "@swc/core-linux-x64-musl": "npm:1.7.28" - "@swc/core-win32-arm64-msvc": "npm:1.7.28" - "@swc/core-win32-ia32-msvc": "npm:1.7.28" - "@swc/core-win32-x64-msvc": "npm:1.7.28" - "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.12" - peerDependencies: - "@swc/helpers": "*" - dependenciesMeta: - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": - optional: true - "@swc/core-win32-ia32-msvc": - optional: true - "@swc/core-win32-x64-msvc": - optional: true - peerDependenciesMeta: - "@swc/helpers": - optional: true - checksum: 10/a477e79387ecc8b68c2bdbbdc88cc61f27a02c5d00f0d77134f9e2de166786a4ee9f7388d6ffd44fc01bfef5311a15cc3132052bab72fb43246dc42705fedb60 - languageName: node - linkType: hard - -"@swc/counter@npm:^0.1.3": - version: 0.1.3 - resolution: "@swc/counter@npm:0.1.3" - checksum: 10/df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 - languageName: node - linkType: hard - -"@swc/helpers@npm:^0.5.0": - version: 0.5.13 - resolution: "@swc/helpers@npm:0.5.13" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/6ba2f7e215d32d71fce139e2cfc426b3ed7eaa709febdeb07b97260a4c9eea4784cf047cc1271be273990b08220b576b94a42b5780947c0b3be84973a847a24d - languageName: node - linkType: hard - -"@swc/jest@npm:^0.2.26": - version: 0.2.36 - resolution: "@swc/jest@npm:0.2.36" - dependencies: - "@jest/create-cache-key-function": "npm:^29.7.0" - "@swc/counter": "npm:^0.1.3" - jsonc-parser: "npm:^3.2.0" - peerDependencies: - "@swc/core": "*" - checksum: 10/39c5699646f0e90400af106156e5604069e8a7d8216f2421e171837b086839176c16f69925ce6a5c4c48182005eed649bdf9664023708e169aa48814feecc0d8 - languageName: node - linkType: hard - -"@swc/types@npm:^0.1.12": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" - dependencies: - "@swc/counter": "npm:^0.1.3" - checksum: 10/d0a50432917048cc69e30c82d1266e052a8e8d05ab202c5d74a5666be3748da4d2f99aaff46d91c0e3d285cf8f55270f8391cd578066fdecc3865733f8d5e14a - languageName: node - linkType: hard - -"@tanstack/react-virtual@npm:^3.5.1": - version: 3.10.8 - resolution: "@tanstack/react-virtual@npm:3.10.8" - dependencies: - "@tanstack/virtual-core": "npm:3.10.8" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/40a5d6089908096634fec2aa0cd646ca47c044c745e1b0d190ecbf9905ad2e6266ccd56c2550ed92f47349954dc11eb6930beac1354441ce7c98af81c5454d3f - languageName: node - linkType: hard - -"@tanstack/virtual-core@npm:3.10.8": - version: 3.10.8 - resolution: "@tanstack/virtual-core@npm:3.10.8" - checksum: 10/047e95fa72a0d341c0da8468799c176fd448481432f976a4780911bb4a2256aa4788d828f79fad78d127fe859b785189c13ca0fea10c560bf14d8ab8cb2c7790 - languageName: node - linkType: hard - -"@testing-library/dom@npm:^9.0.0": - version: 9.3.4 - resolution: "@testing-library/dom@npm:9.3.4" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^5.0.1" - aria-query: "npm:5.1.3" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.5.0" - pretty-format: "npm:^27.0.2" - checksum: 10/510da752ea76f4a10a0a4e3a77917b0302cf03effe576cd3534cab7e796533ee2b0e9fb6fb11b911a1ebd7c70a0bb6f235bf4f816c9b82b95b8fe0cddfd10975 - languageName: node - linkType: hard - -"@testing-library/jest-dom@npm:6.1.4": - version: 6.1.4 - resolution: "@testing-library/jest-dom@npm:6.1.4" - dependencies: - "@adobe/css-tools": "npm:^4.3.1" - "@babel/runtime": "npm:^7.9.2" - aria-query: "npm:^5.0.0" - chalk: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.5.6" - lodash: "npm:^4.17.15" - redent: "npm:^3.0.0" - peerDependencies: - "@jest/globals": ">= 28" - "@types/jest": ">= 28" - jest: ">= 28" - vitest: ">= 0.32" - peerDependenciesMeta: - "@jest/globals": - optional: true - "@types/jest": - optional: true - jest: - optional: true - vitest: - optional: true - checksum: 10/e5a0cdb96eec509c0c85f2b7a0d08fc1c9f6c10aa49bba0d738bf4bb114c3472b92ace5067aedfaaf848ae13b38ba9296047c219aa24b66c87aa16de33341fdb - languageName: node - linkType: hard - -"@testing-library/react@npm:14.0.0": - version: 14.0.0 - resolution: "@testing-library/react@npm:14.0.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - "@testing-library/dom": "npm:^9.0.0" - "@types/react-dom": "npm:^18.0.0" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: 10/1f2a4f78d107e741b35671e9c7dd992d5c9f49b48ee24112ccfe636179be72f3c62a65b1405901b59eb6cde996176ebc2c99099e04d9f14575641e46688747f0 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 10/51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.4 - resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 10/202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff - languageName: node - linkType: hard - -"@types/aria-query@npm:^5.0.1": - version: 5.0.4 - resolution: "@types/aria-query@npm:5.0.4" - checksum: 10/c0084c389dc030daeaf0115a92ce43a3f4d42fc8fef2d0e22112d87a42798d4a15aac413019d4a63f868327d52ad6740ab99609462b442fe6b9286b172d2e82e - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.1.14": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 10/c32838d280b5ab59d62557f9e331d3831f8e547ee10b4f85cb78753d97d521270cebfc73ce501e9fb27fe71884d1ba75e18658692c2f4117543f0fc4e3e118b3 - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 10/b53c215e9074c69d212402990b0ca8fa57595d09e10d94bda3130aa22b55d796e50449199867879e4ea0ee968f3a2099e009cfb21a726a53324483abbf25cd30 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.4 - resolution: "@types/babel__template@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 10/d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" - dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10/63d13a3789aa1e783b87a8b03d9fb2c2c90078de7782422feff1631b8c2a25db626e63a63ac5a1465d47359201c73069dacb4b52149d17c568187625da3064ae - languageName: node - linkType: hard - -"@types/color-name@npm:^1.1.1": - version: 1.1.1 - resolution: "@types/color-name@npm:1.1.1" - checksum: 10/73e0e230a6708210bcfc040f3bd3d7c4c0bf5ff7338e8e497cca3d05d20a0c29fb74a7bde0fa2cdf3322d4b1ffd5194c456712908974ae52d56c0d060ca55ae2 - languageName: node - linkType: hard - -"@types/d3-color@npm:*": - version: 3.1.3 - resolution: "@types/d3-color@npm:3.1.3" - checksum: 10/1cf0f512c09357b25d644ab01b54200be7c9b15c808333b0ccacf767fff36f17520b2fcde9dad45e1bd7ce84befad39b43da42b4fded57680fa2127006ca3ece - languageName: node - linkType: hard - -"@types/d3-interpolate@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/d3-interpolate@npm:3.0.4" - dependencies: - "@types/d3-color": "npm:*" - checksum: 10/72a883afd52c91132598b02a8cdfced9e783c54ca7e4459f9e29d5f45d11fb33f2cabc844e42fd65ba6e28f2a931dcce1add8607d2f02ef6fb8ea5b83ae84127 - languageName: node - linkType: hard - -"@types/eslint@npm:^8.56.10": - version: 8.56.12 - resolution: "@types/eslint@npm:8.56.12" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10/bd998b5d3f98ac430ec8db6223f1cff1820774c1e72eabda05463256875d97065fd357fba7379dd25e6bfbeb73296f28faff6f4dcbc320f890bb49b09087644d - languageName: node - linkType: hard - -"@types/estree@npm:*, @types/estree@npm:^1.0.5": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.9 - resolution: "@types/graceful-fs@npm:4.1.9" - dependencies: - "@types/node": "npm:*" - checksum: 10/79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 - languageName: node - linkType: hard - -"@types/history@npm:^4.7.11": - version: 4.7.11 - resolution: "@types/history@npm:4.7.11" - checksum: 10/1da529a3485f3015daf794effa3185493bf7dd2551c26932389c614f5a0aab76ab97645897d1eef9c74ead216a3848fcaa019f165bbd6e4b71da6eff164b4c68 - languageName: node - linkType: hard - -"@types/hoist-non-react-statics@npm:^3.3.1": - version: 3.3.5 - resolution: "@types/hoist-non-react-statics@npm:3.3.5" - dependencies: - "@types/react": "npm:*" - hoist-non-react-statics: "npm:^3.3.0" - checksum: 10/b645b062a20cce6ab1245ada8274051d8e2e0b2ee5c6bd58215281d0ec6dae2f26631af4e2e7c8abe238cdcee73fcaededc429eef569e70908f82d0cc0ea31d7 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.6 - resolution: "@types/istanbul-lib-coverage@npm:2.0.6" - checksum: 10/3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.3 - resolution: "@types/istanbul-lib-report@npm:3.0.3" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 10/b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/istanbul-reports@npm:3.0.4" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 10/93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 - languageName: node - linkType: hard - -"@types/jest@npm:*, @types/jest@npm:^29.5.0": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: 10/7d6e3e4ef4b1cab0f61270d55764709512fdfbcb1bd47c0ef44117d48490529c1f264dacf3440b9188363e99e290b80b79c529eadc3af2184116a90f6856b192 - languageName: node - linkType: hard - -"@types/jquery@npm:3.5.30": - version: 3.5.30 - resolution: "@types/jquery@npm:3.5.30" - dependencies: - "@types/sizzle": "npm:*" - checksum: 10/5287586be022bfe85d411733b35f8f0ae8577c4afb5a94ff0e157d2c1036e10adfdd15ed80becb06f01647c39be5dbb24a45cba10db3fa6304eb442fa509321e - languageName: node - linkType: hard - -"@types/js-cookie@npm:^2.2.6": - version: 2.2.7 - resolution: "@types/js-cookie@npm:2.2.7" - checksum: 10/851f47e94ca1fc43661d8f51614d67a613e7810c91b876d0a3b311ce72f7df800107fd02a08cb6948184e12c120b4f058edca2f50424d8798bdcffd6627281e3 - languageName: node - linkType: hard - -"@types/jsdom@npm:^20.0.0": - version: 20.0.1 - resolution: "@types/jsdom@npm:20.0.1" - dependencies: - "@types/node": "npm:*" - "@types/tough-cookie": "npm:*" - parse5: "npm:^7.0.0" - checksum: 10/15fbb9a0bfb4a5845cf6e795f2fd12400aacfca53b8c7e5bca4a3e5e8fa8629f676327964d64258aefb127d2d8a2be86dad46359efbfca0e8c9c2b790e7f8a88 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 - languageName: node - linkType: hard - -"@types/lodash@npm:4.17.7": - version: 4.17.7 - resolution: "@types/lodash@npm:4.17.7" - checksum: 10/b8177f19cf962414a66989837481b13f546afc2e98e8d465bec59e6ac03a59c584eb7053ce511cde3a09c5f3096d22a5ae22cfb56b23f3b0da75b0743b6b1a44 - languageName: node - linkType: hard - -"@types/node@npm:*, @types/node@npm:>=13.7.0": - version: 22.7.4 - resolution: "@types/node@npm:22.7.4" - dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/19ddab80c4eba2253c855ed67c9bbc47417183049d01e59010a738bd80d47338bab79fd1f44ae51516bd63a1db4bf21ddb38b16bf6401a2e93252068ec52e88b - languageName: node - linkType: hard - -"@types/node@npm:^20.8.7": - version: 20.16.10 - resolution: "@types/node@npm:20.16.10" - dependencies: - undici-types: "npm:~6.19.2" - checksum: 10/f0832d16fed07737c2c3edd6cb6414a22e8379173e56e701ab8890b8798c8f9bc37337332631818f813ff7f8c0e168e9900e8f44cdfd2406d15150289c813acc - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 10/4df9de98150d2978afc2161482a3a8e6617883effba3223324f079de97ba7eabd7d84b90ced11c3f82b0c08d4a8383f678c9f73e9c41258f769b3fa234a2bb4f - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.3 - resolution: "@types/prop-types@npm:15.7.3" - checksum: 10/90064105961cfabb9174e61e5010b4e7a471e21832118ad0258f196f4be19ad7dd0f724cc62b0e90939d0b830d4f49ba54dffde166893fd0d9be1f3b43db6981 - languageName: node - linkType: hard - -"@types/react-dom@npm:^18.0.0": - version: 18.3.0 - resolution: "@types/react-dom@npm:18.3.0" - dependencies: - "@types/react": "npm:*" - checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf - languageName: node - linkType: hard - -"@types/react-router-dom@npm:^5.2.0": - version: 5.3.3 - resolution: "@types/react-router-dom@npm:5.3.3" - dependencies: - "@types/history": "npm:^4.7.11" - "@types/react": "npm:*" - "@types/react-router": "npm:*" - checksum: 10/28c4ea48909803c414bf5a08502acbb8ba414669b4b43bb51297c05fe5addc4df0b8fd00e0a9d1e3535ec4073ef38aaafac2c4a2b95b787167d113bc059beff3 - languageName: node - linkType: hard - -"@types/react-router@npm:*": - version: 5.1.20 - resolution: "@types/react-router@npm:5.1.20" - dependencies: - "@types/history": "npm:^4.7.11" - "@types/react": "npm:*" - checksum: 10/72d78d2f4a4752ec40940066b73d7758a0824c4d0cbeb380ae24c8b1cdacc21a6fc835a99d6849b5b295517a3df5466fc28be038f1040bd870f8e39e5ded43a4 - languageName: node - linkType: hard - -"@types/react-table@npm:7.7.20": - version: 7.7.20 - resolution: "@types/react-table@npm:7.7.20" - dependencies: - "@types/react": "npm:*" - checksum: 10/adf86958dd5b2e044d23fc7896f758b5ec59987891b41e9b02d935d666e999a518b0bdd8ba5bd60d644f20147de0ec3cf5f6a12b75516f1fad43fb3b4fd8361f - languageName: node - linkType: hard - -"@types/react-transition-group@npm:^4.4.0": - version: 4.4.11 - resolution: "@types/react-transition-group@npm:4.4.11" - dependencies: - "@types/react": "npm:*" - checksum: 10/a7f4de6e5f57d9fcdea027e22873c633f96a803c96d422db8b99a45c36a9cceb7882d152136bbc31c7158fc1827e37aea5070d369724bb71dd11b5687332bc4d - languageName: node - linkType: hard - -"@types/react@npm:*": - version: 16.9.35 - resolution: "@types/react@npm:16.9.35" - dependencies: - "@types/prop-types": "npm:*" - csstype: "npm:^2.2.0" - checksum: 10/201c611ad4fc4b7208cf6270772730730e359cd9db6dbacab189082f564fb99167f24886e33481a3d0b8ffc1eea05c5f2f956d4e743aa731e59e61f90f49ac4a - languageName: node - linkType: hard - -"@types/semver@npm:^7.5.0": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 - languageName: node - linkType: hard - -"@types/sizzle@npm:*": - version: 2.3.8 - resolution: "@types/sizzle@npm:2.3.8" - checksum: 10/2ac62443dc917f5f903cbd9afc51c7d6cc1c6569b4e1a15faf04aea5b13b486e7f208650014c3dc4fed34653eded3e00fe5abffe0e6300cbf0e8a01beebf11a6 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.3 - resolution: "@types/stack-utils@npm:2.0.3" - checksum: 10/72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 - languageName: node - linkType: hard - -"@types/string-hash@npm:1.1.3": - version: 1.1.3 - resolution: "@types/string-hash@npm:1.1.3" - checksum: 10/39a546088123efb1af9beac3854aa1eb54cf24ab75d99c8dac9ccfa7d46d70ac7c99c10983f7cc623dda1e476b6e21e7acffe6c5b3be894751ae4b9cfd103aaf - languageName: node - linkType: hard - -"@types/testing-library__jest-dom@npm:5.14.8": - version: 5.14.8 - resolution: "@types/testing-library__jest-dom@npm:5.14.8" - dependencies: - "@types/jest": "npm:*" - checksum: 10/26d768b3de5c71ecef683aa0e968ec2bb7f4626d78718132fa5a9c2064f9237836135e2551aa048c728407760d51d985a9d58a14528f2679a35d18d5ca200f08 - languageName: node - linkType: hard - -"@types/tough-cookie@npm:*": - version: 4.0.5 - resolution: "@types/tough-cookie@npm:4.0.5" - checksum: 10/01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 - languageName: node - linkType: hard - -"@types/use-sync-external-store@npm:^0.0.3": - version: 0.0.3 - resolution: "@types/use-sync-external-store@npm:0.0.3" - checksum: 10/161ddb8eec5dbe7279ac971531217e9af6b99f7783213566d2b502e2e2378ea19cf5e5ea4595039d730aa79d3d35c6567d48599f69773a02ffcff1776ec2a44e - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: 10/a794eb750e8ebc6273a51b12a0002de41343ffe46befef460bdbb57262d187fdf608bc6615b7b11c462c63c3ceb70abe2564c8dd8ee0f7628f38a314f74a9b9b - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 10/16f6681bf4d99fb671bf56029141ed01db2862e3db9df7fc92d8bea494359ac96a1b4b1c35a836d1e95e665fb18ad753ab2015fc0db663454e8fd4e5d5e2ef91 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/eslint-plugin@npm:6.18.1" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.18.1" - "@typescript-eslint/type-utils": "npm:6.18.1" - "@typescript-eslint/utils": "npm:6.18.1" - "@typescript-eslint/visitor-keys": "npm:6.18.1" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/451abba1f784539ba38cbe40af26c461facd848e90cbf0c440a98ca2a770ff74a794bafe1df7240e52a97e7cd72bade97d5de751dffbac269643460ad65e3b19 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/parser@npm:6.18.1" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.18.1" - "@typescript-eslint/types": "npm:6.18.1" - "@typescript-eslint/typescript-estree": "npm:6.18.1" - "@typescript-eslint/visitor-keys": "npm:6.18.1" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b853d39dcf886668f9aa9ea12094e722d35be20855dc7f01c80ee847bf4f7e27aa74693c3a33d4d813705214bda28be1d6c7ca29e590233f894f556203171d29 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/scope-manager@npm:6.18.1" - dependencies: - "@typescript-eslint/types": "npm:6.18.1" - "@typescript-eslint/visitor-keys": "npm:6.18.1" - checksum: 10/ab75663cda67a2c95267f240f2e062a0aafab0df6d625043a134c8e1d61e193c0d3cfa49c802bd554b3fd80f4b7df5ea3f86ef2eb6994ba8b5e0790cc9868c84 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/type-utils@npm:6.18.1" - dependencies: - "@typescript-eslint/typescript-estree": "npm:6.18.1" - "@typescript-eslint/utils": "npm:6.18.1" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/f775011c35aef10b11e7cffde698fca8b06b313785cd44422c60a40b6643d85a38cbd9a3cbdef011d963680d65383c40988d983e9dfd01258ae50a2f37f6d293 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/types@npm:6.18.1" - checksum: 10/e304620953257a5af3b323697845d3fb41ffbb7944df2f84559675ef8ad71cc33011be30149efd8d34c5dedcbe92c6abee67cb1b95cb3dd56f15b9393b3435a6 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/typescript-estree@npm:6.18.1" - dependencies: - "@typescript-eslint/types": "npm:6.18.1" - "@typescript-eslint/visitor-keys": "npm:6.18.1" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/33307bc87c3270f84f149545da79a15afaafacc5671e42f4aa827947f09c35ed114705f108ffa59d6ab175f8b838aa08cf10f9efe5b7793aca0792f879bbc7ca - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/utils@npm:6.18.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.18.1" - "@typescript-eslint/types": "npm:6.18.1" - "@typescript-eslint/typescript-estree": "npm:6.18.1" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/967728f062ec7ef434b9d05af6b45ae59e0f8f314e4aa7cefc8e2c30a277cf269b7913f3e9f8d26a86c3faf8b2c9385ba1221cfcd856e9b228421fc6508b41bc - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/b404a2c55a425a79d054346ae123087d30c7ecf7ed7abcf680c47bf70c1de4fabadc63434f3f460b2fa63df76bc9e4a0b9fa2383bb8a9fcd62733fb5c4e4f3e3 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.18.1": - version: 6.18.1 - resolution: "@typescript-eslint/visitor-keys@npm:6.18.1" - dependencies: - "@typescript-eslint/types": "npm:6.18.1" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/2d6c5ffa52e89caec0b4958d7079fb4ca9f17c19b5f5d5b8446b4eef0079fd59cd9959f469cc13c4e7d72ef4c47849e561fe323f3cebafa01bc916d43082e57b - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: 10/a775b0559437ae122d14fec0cfe59fdcaf5ca2d8ff48254014fd05d6797e20401e0f1518e628f9b06819aa085834a2534234977f9608b3f2e51f94b6e8b0bc43 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: 10/1d8705daa41f4d22ef7c6d422af4c530b84d69d0c253c6db5adec44d511d7caa66837803db5b1addcea611a1498fd5a67d2cf318b057a916283ae41ffb85ba8a - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" - "@webassemblyjs/helper-api-error": "npm:1.11.6" - "@xtuc/long": "npm:4.2.2" - checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - checksum: 10/e91e6b28114e35321934070a2db8973a08a5cd9c30500b817214c683bbf5269ed4324366dd93ad83bf2fba0d671ac8f39df1c142bf58f70c57a827eeba4a3d2f - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/helper-wasm-section": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-opt": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - "@webassemblyjs/wast-printer": "npm:1.12.1" - checksum: 10/5678ae02dbebba2f3a344e25928ea5a26a0df777166c9be77a467bfde7aca7f4b57ef95587e4bd768a402cdf2fddc4c56f0a599d164cdd9fe313520e39e18137 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/ec45bd50e86bc9856f80fe9af4bc1ae5c98fb85f57023d11dff2b670da240c47a7b1b9b6c89755890314212bd167cf3adae7f1157216ddffb739a4ce589fc338 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-buffer": "npm:1.12.1" - "@webassemblyjs/wasm-gen": "npm:1.12.1" - "@webassemblyjs/wasm-parser": "npm:1.12.1" - checksum: 10/21f25ae109012c49bb084e09f3b67679510429adc3e2408ad3621b2b505379d9cce337799a7919ef44db64e0d136833216914aea16b0d4856f353b9778e0cdb7 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@webassemblyjs/helper-api-error": "npm:1.11.6" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - "@webassemblyjs/ieee754": "npm:1.11.6" - "@webassemblyjs/leb128": "npm:1.11.6" - "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 10/f7311685b76c3e1def2abea3488be1e77f06ecd8633143a6c5c943ca289660952b73785231bb76a010055ca64645227a4bc79705c26ab7536216891b6bb36320 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" - dependencies: - "@webassemblyjs/ast": "npm:1.12.1" - "@xtuc/long": "npm:4.2.2" - checksum: 10/1a6a4b6bc4234f2b5adbab0cb11a24911b03380eb1cab6fb27a2250174a279fdc6aa2f5a9cf62dd1f6d4eb39f778f488e8ff15b9deb0670dee5c5077d46cf572 - languageName: node - linkType: hard - -"@webpack-cli/configtest@npm:^2.1.1": - version: 2.1.1 - resolution: "@webpack-cli/configtest@npm:2.1.1" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 10/9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 - languageName: node - linkType: hard - -"@webpack-cli/info@npm:^2.0.2": - version: 2.0.2 - resolution: "@webpack-cli/info@npm:2.0.2" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 10/8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e - languageName: node - linkType: hard - -"@webpack-cli/serve@npm:^2.0.5": - version: 2.0.5 - resolution: "@webpack-cli/serve@npm:2.0.5" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - peerDependenciesMeta: - webpack-dev-server: - optional: true - checksum: 10/20424e5c1e664e4d7ab11facee7033bb729f6acd86493138069532934c1299c1426da72942822dedb00caca8fc60cc8aec1626e610ee0e8a9679e3614f555860 - languageName: node - linkType: hard - -"@wojtekmaj/date-utils@npm:^1.1.3": - version: 1.5.1 - resolution: "@wojtekmaj/date-utils@npm:1.5.1" - checksum: 10/73dced08ab39fadc92a5bb95153b1bb068d006911db11521078aec878a5029d65a966abead333a43c0997197a52da6edf542e37c7fbb36b780f97d3451ece69f - languageName: node - linkType: hard - -"@xobotyi/scrollbar-width@npm:^1.9.5": - version: 1.9.5 - resolution: "@xobotyi/scrollbar-width@npm:1.9.5" - checksum: 10/026ccd174ec3ce032f42794c7e2ee9dab3cfee4f8f9d6ce4f2b4a2fe50cbf8be7406583fb2e203707c699690c5d40a13ee1611f1f67f6ceb01ac2a543acadc30 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: 10/ab033b032927d77e2f9fa67accdf31b1ca7440974c21c9cfabc8349e10ca2817646171c4f23be98d0e31896d6c2c3462a074fe37752e523abc3e45c79254259c - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 10/7217bae9fe240e0d804969e7b2af11cb04ec608837c78b56ca88831991b287e232a0b7fce8d548beaff42aaf0197ffa471d81be6ac4c4e53b0148025a2c076ec - languageName: node - linkType: hard - -"abab@npm:^2.0.6": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 10/ebe95d7278999e605823fc515a3b05d689bc72e7f825536e73c95ebf621636874c6de1b749b3c4bf866b96ccd4b3a2802efa313d0e45ad51a413c8c73247db20 - languageName: node - linkType: hard - -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 - languageName: node - linkType: hard - -"acorn-globals@npm:^7.0.0": - version: 7.0.1 - resolution: "acorn-globals@npm:7.0.1" - dependencies: - acorn: "npm:^8.1.0" - acorn-walk: "npm:^8.0.2" - checksum: 10/2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 - languageName: node - linkType: hard - -"acorn-import-attributes@npm:^1.9.5": - version: 1.9.5 - resolution: "acorn-import-attributes@npm:1.9.5" - peerDependencies: - acorn: ^8 - checksum: 10/8bfbfbb6e2467b9b47abb4d095df717ab64fce2525da65eabee073e85e7975fb3a176b6c8bba17c99a7d8ede283a10a590272304eb54a93c4aa1af9790d47a8b - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10/d4371eaef7995530b5b5ca4183ff6f062ca17901a6d3f673c9ac011b01ede37e7a1f7f61f8f5cfe709e88054757bb8f3277dc4061087cdf4f2a1f90ccbcdb977 - languageName: node - linkType: hard - -"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.3.4 - resolution: "acorn-walk@npm:8.3.4" - dependencies: - acorn: "npm:^8.11.0" - checksum: 10/871386764e1451c637bb8ab9f76f4995d408057e9909be6fb5ad68537ae3375d85e6a6f170b98989f44ab3ff6c74ad120bc2779a3d577606e7a0cd2b4efcaf77 - languageName: node - linkType: hard - -"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" - bin: - acorn: bin/acorn - checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 - languageName: node - linkType: hard - -"add-dom-event-listener@npm:^1.1.0": - version: 1.1.0 - resolution: "add-dom-event-listener@npm:1.1.0" - dependencies: - object-assign: "npm:4.x" - checksum: 10/dcab339517668e46887b4d5ddf3e299d5b3a1797e027cafe0480da6fb32591bfe04b567dd002d3b2c4d43f3c8addf208f7ae45db847b79daa1d7a7391dc3c076 - languageName: node - linkType: hard - -"add-px-to-style@npm:1.0.0": - version: 1.0.0 - resolution: "add-px-to-style@npm:1.0.0" - checksum: 10/2e8c3c2adce84253c4240b83e69574b1799c2bc4fb97998985b6f04520a0c2be3e1ea7fd498c29f38286ca9fbd24f7974faa6ad3a91ef4a2b7abd0404957ded2 - languageName: node - linkType: hard - -"agent-base@npm:6": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 10/21fb903e0917e5cb16591b4d0ef6a028a54b83ac30cd1fca58dece3d4e0990512a8723f9f83130d88a41e2af8b1f7be1386fda3ea2d181bb1a62155e75e95e23 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: "npm:^4.3.4" - checksum: 10/c478fec8f79953f118704d007a38f2a185458853f5c45579b9669372bd0e12602e88dc2ad0233077831504f7cd6fcc8251c383375bba5eaaf563b102938bda26 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 10/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: "npm:^8.0.0" - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 10/70c263ded219bf277ffd9127f793b625f10a46113b2e901e150da41931fcfd7f5592da6d66862f4449bb157ffe65867c3294a7df1d661cc232c4163d5a1718ed - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 10/d57c9d5bf8849bddcbd801b79bc3d2ddc736c2adb6b93a6a365429589dd7993ddbd5d37c6025ed6a7f89c27506b80131d5345c5b1fa6a97e40cd10a96bcd228c - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - ajv: ^8.8.2 - checksum: 10/5021f96ab7ddd03a4005326bd06f45f448ebfbb0fe7018b1b70b6c28142fa68372bda2057359814b83fd0b2d4c8726c297f0a7557b15377be7b56ce5344533d8 - languageName: node - linkType: hard - -"ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.9.0": - version: 8.17.1 - resolution: "ajv@npm:8.17.1" - dependencies: - fast-deep-equal: "npm:^3.1.3" - fast-uri: "npm:^3.0.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - checksum: 10/ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33 - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10/495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10/d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff - languageName: node - linkType: hard - -"ansi-styles@npm:^4.1.0": - version: 4.2.1 - resolution: "ansi-styles@npm:4.2.1" - dependencies: - "@types/color-name": "npm:^1.1.1" - color-convert: "npm:^2.0.1" - checksum: 10/7c74dbc7ec912b9e45dacbfaa7e2513bea6aa24d5357a0cd3255e7f83ecfc62e1454c77ab150a8df60de700c83c17fbbf040e7c204b4b6fc7aa250c8afcb865f - languageName: node - linkType: hard - -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: 10/d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10/70fdf883b704d17a5dfc9cde206e698c16bcd74e7f196ab821511651aee4f9f76c9514bdfa6ca3a27b5e49138b89cb222a28caf3afe4567570139577f991df32 - languageName: node - linkType: hard - -"ansicolor@npm:1.1.100": - version: 1.1.100 - resolution: "ansicolor@npm:1.1.100" - checksum: 10/9420e96f44b578153dfd11e2d829d633ca2699452419aff48314219d66b7b69a9b6d994d2f2350b1d29a9826e33500b87fe85606629a8889cd52ce806908f4a9 - languageName: node - linkType: hard - -"anymatch@npm:^3.0.3, anymatch@npm:^3.1.1, anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 - languageName: node - linkType: hard - -"are-docs-informative@npm:^0.0.2": - version: 0.0.2 - resolution: "are-docs-informative@npm:0.0.2" - checksum: 10/12cdae51a4bb369832ef1a35840604247d4ed0cbc8392f2519988d170f92c3f8c60e465844f41acba1ec3062d0edb2e9133fca38cb9c1214309153d50a25fa29 - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: "npm:~1.0.2" - checksum: 10/c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef - languageName: node - linkType: hard - -"aria-query@npm:5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: "npm:^2.0.5" - checksum: 10/e5da608a7c4954bfece2d879342b6c218b6b207e2d9e5af270b5e38ef8418f02d122afdc948b68e32649b849a38377785252059090d66fa8081da95d1609c0d2 - languageName: node - linkType: hard - -"aria-query@npm:^5.0.0": - version: 5.3.2 - resolution: "aria-query@npm:5.3.2" - checksum: 10/b2fe9bc98bd401bc322ccb99717c1ae2aaf53ea0d468d6e7aebdc02fac736e4a99b46971ee05b783b08ade23c675b2d8b60e4a1222a95f6e27bc4d2a0bfdcc03 - languageName: node - linkType: hard - -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.4" - checksum: 10/53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e - languageName: node - linkType: hard - -"array-includes@npm:^3.1.6": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - is-string: "npm:^1.0.7" - checksum: 10/290b206c9451f181fb2b1f79a3bf1c0b66bb259791290ffbada760c79b284eef6f5ae2aeb4bcff450ebc9690edd25732c4c73a3c2b340fcc0f4563aed83bf488 - languageName: node - linkType: hard - -"array-tree-filter@npm:^2.1.0": - version: 2.1.0 - resolution: "array-tree-filter@npm:2.1.0" - checksum: 10/ca65dbeb80777eadadfcd4dbd2658d9eb0be66e426a6b6d64f1a71dff5351f2e6f370e0cbcc418e9e6e01d06b337b128441a71c7143abe4d925d027d5aa0100f - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10/5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/d9d2f6f27584de92ec7995bc931103e6de722cd2498bdbfc4cba814fc3e52f056050a93be883018811f7c0a35875f5056584a0e940603a5e5934f0279896aebe - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/33f20006686e0cbe844fde7fd290971e8366c6c5e3380681c2df15738b1df766dd02c7784034aeeb3b037f65c496ee54de665388288edb323a2008bb550f77ea - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" - es-errors: "npm:^1.3.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/874694e5d50e138894ff5b853e639c29b0aa42bbd355acda8e8e9cd337f1c80565f21edc15e8c727fa4c0877fd9d8783c575809e440cc4d2d19acaa048bf967d - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.5" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.3" - es-errors: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.3" - is-array-buffer: "npm:^3.0.4" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10/0221f16c1e3ec7b67da870ee0e1f12b825b5f9189835392b59a22990f715827561a4f4cd5330dc7507de272d8df821be6cd4b0cb569babf5ea4be70e365a2f3d - languageName: node - linkType: hard - -"assert@npm:2.0.0": - version: 2.0.0 - resolution: "assert@npm:2.0.0" - dependencies: - es6-object-assign: "npm:^1.1.0" - is-nan: "npm:^1.2.1" - object-is: "npm:^1.0.1" - util: "npm:^0.12.0" - checksum: 10/5bd5e80a0dc5fce9ac812254ad39bcec8c224878705e5021a1a0ae84e2c30b980f90584ef544a5f6b1cd79edb002e80972367731260dac723c7a6f76e0fcd2ea - languageName: node - linkType: hard - -"async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" - dependencies: - lodash: "npm:^4.17.14" - checksum: 10/df8e52817d74677ab50c438d618633b9450aff26deb274da6dfedb8014130909482acdc7753bce9b72e6171ce9a9f6a92566c4ced34c3cb3714d57421d58ad27 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 - languageName: node - linkType: hard - -"attr-accept@npm:^2.2.2": - version: 2.2.2 - resolution: "attr-accept@npm:2.2.2" - checksum: 10/c867ed41ed749988ad2a6fc70eb2498b9c3c2d58aaad2a8d05422a383058f9d29e50c4bca363c5ee7433df738a7920cc95377bbce8678e817fb498299dd82010 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab - languageName: node - linkType: hard - -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": "npm:^29.7.0" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.6.3" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 - languageName: node - linkType: hard - -"babel-plugin-emotion@npm:^10.0.27": - version: 10.0.33 - resolution: "babel-plugin-emotion@npm:10.0.33" - dependencies: - "@babel/helper-module-imports": "npm:^7.0.0" - "@emotion/hash": "npm:0.8.0" - "@emotion/memoize": "npm:0.7.4" - "@emotion/serialize": "npm:^0.11.16" - babel-plugin-macros: "npm:^2.0.0" - babel-plugin-syntax-jsx: "npm:^6.18.0" - convert-source-map: "npm:^1.5.0" - escape-string-regexp: "npm:^1.0.5" - find-root: "npm:^1.1.0" - source-map: "npm:^0.5.7" - checksum: 10/ad026e89d3cca75679e89f5fede6eee4a9ee0d1e2c040bc64be34805a96f82791a9a962feb5480d8c0c8f53860eb1e60906b710c4603460bc85d373c46a8d7b0 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^5.0.4" - test-exclude: "npm:^6.0.0" - checksum: 10/ffd436bb2a77bbe1942a33245d770506ab2262d9c1b3c1f1da7f0592f78ee7445a95bc2efafe619dd9c1b6ee52c10033d6c7d29ddefe6f5383568e60f31dfe8d - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.1.14" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^2.0.0": - version: 2.8.0 - resolution: "babel-plugin-macros@npm:2.8.0" - dependencies: - "@babel/runtime": "npm:^7.7.2" - cosmiconfig: "npm:^6.0.0" - resolve: "npm:^1.12.0" - checksum: 10/ef1e7a8870f38ec255b9e85a21fc2f1adc8a8a494c3b715ce01fd34cb36fb58b75fd4701dc01807bd8f0bd475364565eb9d3247b53921e39fedc8511aa647af0 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^3.1.0": - version: 3.1.0 - resolution: "babel-plugin-macros@npm:3.1.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - cosmiconfig: "npm:^7.0.0" - resolve: "npm:^1.19.0" - checksum: 10/30be6ca45e9a124c58ca00af9a0753e5410ec0b79a737714fc4722bbbeb693e55d9258f05c437145ef4a867c2d1603e06a1c292d66c243ce1227458c8ea2ca8c - languageName: node - linkType: hard - -"babel-plugin-syntax-jsx@npm:^6.18.0": - version: 6.18.0 - resolution: "babel-plugin-syntax-jsx@npm:6.18.0" - checksum: 10/0c7ce5b81d6cfc01a7dd7a76a9a8f090ee02ba5c890310f51217ef1a7e6163fb7848994bbc14fd560117892e82240df9c7157ad0764da67ca5f2afafb73a7d27 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/46331111ae72b7121172fd9e6a4a7830f651ad44bf26dbbf77b3c8a60a18009411a3eacb5e72274004290c110371230272109957d5224d155436b4794ead2f1b - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb - languageName: node - linkType: hard - -"babel-runtime@npm:6.x, babel-runtime@npm:^6.26.0": - version: 6.26.0 - resolution: "babel-runtime@npm:6.26.0" - dependencies: - core-js: "npm:^2.4.0" - regenerator-runtime: "npm:^0.11.0" - checksum: 10/2cdf0f083b9598a43cdb11cbf1e7060584079a9a2230f06aec997ba81e887ef17fdcb5ad813a484ee099e06d2de0cea832bdd3011c06325acb284284c754ee8f - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10/bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 - languageName: node - linkType: hard - -"body@npm:^5.1.0": - version: 5.1.0 - resolution: "body@npm:5.1.0" - dependencies: - continuable-cache: "npm:^0.3.1" - error: "npm:^7.0.0" - raw-body: "npm:~1.1.0" - safe-json-parse: "npm:~1.0.1" - checksum: 10/e11cf04a6ce4d9a9d0760b755c66d2b83aabcb7b30355373b3132c2af3bab7055ee15fe2540932b956084223d18f80fde47a289a106d4d773acb637ae82d832d - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^3.0.3, braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" - dependencies: - fill-range: "npm:^7.1.1" - checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.10, browserslist@npm:^4.24.0": - version: 4.24.0 - resolution: "browserslist@npm:4.24.0" - dependencies: - caniuse-lite: "npm:^1.0.30001663" - electron-to-chromium: "npm:^1.5.28" - node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" - bin: - browserslist: cli.js - checksum: 10/26c1b8ba257a0b51b102080ba9d42945af2abaa8c4cf6da21cd47b3f123fc1e81640203b293214356c2c17d9d265bb3a5ed428b6d302f383576dd6ce8fd5036c - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 10/edba1b65bae682450be4117b695997972bd9a3c4dfee029cab5bcb72ae5393a79a8f909b8bc77957eb0deec1c7168670f18f4d5c556f46cdd3bca5f3b3a8d020 - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: 10/ccc53b69736008bff764497367c4d24879ba7122bc619ee499ff47eef3a5b885ca496e87272e7ebffa0bec3804c83f84041c616f6e3318f40624e27c1d80f045 - languageName: node - linkType: hard - -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: 10/62e063ab40c0c1efccbfa9ffa31873e4f9d57408cb396a2649981a0ecbce56aabc93c28feaccbc5658c95aab2703ad1d11980e62ec2e5e72637404e1eb60f39e - languageName: node - linkType: hard - -"bytes@npm:1": - version: 1.0.0 - resolution: "bytes@npm:1.0.0" - checksum: 10/6e475440d7e32971611d2bc592695fee484ee91ca1cd49f99c855560131f71670d3d185210f6cdd1704f12281f0cfcee5cb1c1f6788cb2f676b410464b7d6885 - languageName: node - linkType: hard - -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" - dependencies: - "@npmcli/fs": "npm:^3.1.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10/ca2f7b2d3003f84d362da9580b5561058ccaecd46cba661cbcff0375c90734b610520d46b472a339fd032d91597ad6ed12dde8af81571197f3c9772b5d35b104 - languageName: node - linkType: hard - -"calculate-size@npm:1.1.1": - version: 1.1.1 - resolution: "calculate-size@npm:1.1.1" - checksum: 10/8f1bfad7a98f49c9d2dca2191a48fa4d3fe0815397f95eed44cd151d67ded5829e0232259fa0d33ca5fc371a87ffcf530085790a06637e02445e8dab0a6b28c9 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelcase@npm:^6.2.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001663": - version: 1.0.30001667 - resolution: "caniuse-lite@npm:1.0.30001667" - checksum: 10/5f0c48abb806737c422f05d0d9dda72facc25ee8adbae2c2ea9c57b87d9c2fa9ad8c3f6d54f21aca4e31ee1742cb5dd1543bf6b9133e3f77f79a645876322414 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10/3d1d103433166f6bfe82ac75724951b33769675252d8417317363ef9d54699b7c3b2d46671b772b893a8e50c3ece70c4b933c73c01e81bc60ea4df9b55afa303 - languageName: node - linkType: hard - -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10/37f90b31fd655fb49c2bd8e2a68aebefddd64522655d001ef417e6f955def0ed9110a867ffc878a533f2dafea5f2032433a37c8a7614969baa7f8a1cd424ddfc - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139 - languageName: node - linkType: hard - -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 - languageName: node - linkType: hard - -"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.3": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/c327fb07704443f8d15f7b4a7ce93b2f0bc0e6cea07ec28a7570aa22cd51fcf0379df589403976ea956c369f25aa82d84561947e227cd925902e1751371658df - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.4 - resolution: "chrome-trace-event@npm:1.0.4" - checksum: 10/1762bed739774903bf5915fe3045c3120fc3c7f7d929d88e566447ea38944937a6370ccb687278318c43c24f837ad22dac780bed67c066336815557b8cf558c6 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 10/75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.0.0": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 10/6e830a1e00a34d416949bbc1924f3e8da65cef4a6a09e2b7fa35722e2d1c34bf378d3baca987b698d1cbc3eb83e44b044039b4e82755c96f30e0f03d1d227637 - languageName: node - linkType: hard - -"classnames@npm:2.5.1, classnames@npm:^2.3.1, classnames@npm:^2.3.2": - version: 2.5.1 - resolution: "classnames@npm:2.5.1" - checksum: 10/58eb394e8817021b153bb6e7d782cfb667e4ab390cb2e9dac2fc7c6b979d1cc2b2a733093955fc5c94aa79ef5c8c89f11ab77780894509be6afbb91dddd79d15 - languageName: node - linkType: hard - -"classnames@npm:2.x, classnames@npm:^2.2.1, classnames@npm:^2.2.5, classnames@npm:^2.2.6": - version: 2.2.6 - resolution: "classnames@npm:2.2.6" - checksum: 10/a241cdac6a06d1572e4358eff219ff9be4e2bb83f0a4080b413f32f691e8b7ba4d635b1a99123cbdfef1604e10f398b6f1433364d5645004eea957494ef1f3e8 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 10/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^7.0.0" - checksum: 10/eaa5561aeb3135c2cddf7a3b3f562fc4238ff3b3fc666869ef2adf264be0f372136702f16add9299087fb1907c2e4ec5dbfe83bd24bce815c70a80c6c1a2e950 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: "npm:^2.0.4" - kind-of: "npm:^6.0.2" - shallow-clone: "npm:^3.0.0" - checksum: 10/770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 - languageName: node - linkType: hard - -"clsx@npm:^2.0.0": - version: 2.1.1 - resolution: "clsx@npm:2.1.1" - checksum: 10/cdfb57fa6c7649bbff98d9028c2f0de2f91c86f551179541cf784b1cfdc1562dcb951955f46d54d930a3879931a980e32a46b598acaea274728dbe068deca919 - languageName: node - linkType: hard - -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: 10/30ea7d5c9ee51f2fdba4901d4186c5b7114a088ef98fd53eda3979da77eed96758a2cae81cc6d97e239aaea6065868cf908b24980663f7b7e96aa291b3e12fa4 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10/ffa319025045f2973919d155f25e7c00d08836b6b33ea2d205418c59bd63a665d713c52d9737a9e0fe467fb194b40fbef1d849bae80d674568ee220a31ef3d10 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10/09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"colorette@npm:^2.0.14": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 - languageName: node - linkType: hard - -"commander@npm:7": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d - languageName: node - linkType: hard - -"commander@npm:^10.0.1": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb - languageName: node - linkType: hard - -"commander@npm:^2.20.0, commander@npm:^2.20.3": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 10/90c5b6898610cd075984c58c4f88418a4fb44af08c1b1415e9854c03171bec31b336b7f3e4cefe33de994b3f12b03c5e2d638da4316df83593b9e82554e7e95b - languageName: node - linkType: hard - -"comment-parser@npm:1.4.0": - version: 1.4.0 - resolution: "comment-parser@npm:1.4.0" - checksum: 10/3ce7a975946ebb0d8410b6713a371e25b5a144b633dd7c6e502c18c9a4e4f1f9167ed0eaa90b07cbc18e91ee061b99c2889d6bed88cd7f0dc32ed1bbac89008a - languageName: node - linkType: hard - -"component-classes@npm:^1.2.5": - version: 1.2.6 - resolution: "component-classes@npm:1.2.6" - dependencies: - component-indexof: "npm:0.0.3" - checksum: 10/aa70f282b85a19d7a190dabb2c72c9b8a2a5565fc42d72ca0661e8ce47e55e53da29f468467771d7e0bf4ba8c9723e5a21954fc38b942d9d873ee56be856adfc - languageName: node - linkType: hard - -"component-indexof@npm:0.0.3": - version: 0.0.3 - resolution: "component-indexof@npm:0.0.3" - checksum: 10/34a720e96fc0be1043a4517845b1b7483989736c559089eca285f7ac9ef049eacc8ab12fc31f924dfa2d4ecea0714611a695d087ce11caf30502b5a80646e9e9 - languageName: node - linkType: hard - -"compute-scroll-into-view@npm:^3.1.0": - version: 3.1.0 - resolution: "compute-scroll-into-view@npm:3.1.0" - checksum: 10/cc5211d49bced5ad23385da5c2eaf69b6045628581b0dcb9f4dd407bfee51bbd26d2bce426be26edf2feaf8c243706f5a7c3759827d89cc5a01a5cf7d299a5eb - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 - languageName: node - linkType: hard - -"continuable-cache@npm:^0.3.1": - version: 0.3.1 - resolution: "continuable-cache@npm:0.3.1" - checksum: 10/b36ec13a3a641354b2b06579a8488a0e87cc016d44fffd62878bc360c99bcc7eb714abec6b9eb5c639b7ee50d0a25a504873a9b9c69088b49a13dd325dfb6d53 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.5.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: "npm:~5.1.1" - checksum: 10/0d0dd324ad15850cf1d44520560ab524ba3fce7ed8296df10d9aa466a0e964df9c9de0dcb78fb70a60493800b256ffe40d64f24968e32a48a1bcbff117102022 - languageName: node - linkType: hard - -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 10/c987be3ec061348cdb3c2bfb924bec86dea1eacad10550a85ca23edb0fe3556c3a61c7399114f3331ccb3499d7fd0285ab24566e5745929412983494c3926e15 - languageName: node - linkType: hard - -"copy-to-clipboard@npm:^3.3.1": - version: 3.3.3 - resolution: "copy-to-clipboard@npm:3.3.3" - dependencies: - toggle-selection: "npm:^1.0.6" - checksum: 10/e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf - languageName: node - linkType: hard - -"copy-webpack-plugin@npm:^11.0.0": - version: 11.0.0 - resolution: "copy-webpack-plugin@npm:11.0.0" - dependencies: - fast-glob: "npm:^3.2.11" - glob-parent: "npm:^6.0.1" - globby: "npm:^13.1.1" - normalize-path: "npm:^3.0.0" - schema-utils: "npm:^4.0.0" - serialize-javascript: "npm:^6.0.0" - peerDependencies: - webpack: ^5.1.0 - checksum: 10/dc103be79ef72a4bb0bc8ce498b2cca964e3771326b009a1f3cb2d17960fca17538a725b09427161eccf485e2badbbd5490ddf2570f7976938e4e7338f1fd7e9 - languageName: node - linkType: hard - -"core-js@npm:^2.4.0": - version: 2.6.11 - resolution: "core-js@npm:2.6.11" - checksum: 10/4aee521824bde0d3e25c56de810c1ae1ceaa66516433bd700208ab04af09c54bbf4a8929e1002887e0826e98e89f3c37f0b409e2f5e4d5c70814af206ef91da8 - languageName: node - linkType: hard - -"cosmiconfig@npm:^6.0.0": - version: 6.0.0 - resolution: "cosmiconfig@npm:6.0.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.7.2" - checksum: 10/b184d2bfbced9ba6840fd097dbf3455c68b7258249bb9b1277913823d516d8dfdade8c5ccbf79db0ca8ebd4cc9b9be521ccc06a18396bd242d50023c208f1594 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.0.1": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.2.1" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.10.0" - checksum: 10/03600bb3870c80ed151b7b706b99a1f6d78df8f4bdad9c95485072ea13358ef294b13dd99f9e7bf4cc0b43bcd3599d40df7e648750d21c2f6817ca2cd687e071 - languageName: node - linkType: hard - -"create-emotion@npm:^10.0.27": - version: 10.0.27 - resolution: "create-emotion@npm:10.0.27" - dependencies: - "@emotion/cache": "npm:^10.0.27" - "@emotion/serialize": "npm:^0.11.15" - "@emotion/sheet": "npm:0.9.4" - "@emotion/utils": "npm:0.11.3" - checksum: 10/6838f6fe0a3e8d6a7a354685f1ffed6a23f28e74ce4bcdd045882f8e007715dc61596bddc05937cdfd67581eb66a697621a6d01c1a7357b85a816fddc22203fe - languageName: node - linkType: hard - -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - prompts: "npm:^2.0.1" - bin: - create-jest: bin/create-jest.js - checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 - languageName: node - linkType: hard - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce - languageName: node - linkType: hard - -"css-animation@npm:^1.3.2": - version: 1.6.1 - resolution: "css-animation@npm:1.6.1" - dependencies: - babel-runtime: "npm:6.x" - component-classes: "npm:^1.2.5" - checksum: 10/5aea8fd333300c6b15f523ac741dd2ed367489485c7a9a43647f7779fef9e5f338c405e3ad9ed8db338503b4aefea86108112a01bf78651b623f8bd2e146e0e0 - languageName: node - linkType: hard - -"css-box-model@npm:^1.2.1": - version: 1.2.1 - resolution: "css-box-model@npm:1.2.1" - dependencies: - tiny-invariant: "npm:^1.0.6" - checksum: 10/54778883733e59058b5de983cf442b9db6c1494543d4d84a3defd05b51b991a1865f59e4ae424e733af2aa1fdb6e0bd905cb73db0e7e548fbd89853859fedc81 - languageName: node - linkType: hard - -"css-in-js-utils@npm:^3.1.0": - version: 3.1.0 - resolution: "css-in-js-utils@npm:3.1.0" - dependencies: - hyphenate-style-name: "npm:^1.0.3" - checksum: 10/bd2f569f1870389004cfacfd7b798c0f40933d34af1f040c391a08322d097790b9a9524affb2ba4d26122e9cb8f4256afb59edb6077dbe607506944a9c673c67 - languageName: node - linkType: hard - -"css-loader@npm:^6.7.3": - version: 6.11.0 - resolution: "css-loader@npm:6.11.0" - dependencies: - icss-utils: "npm:^5.1.0" - postcss: "npm:^8.4.33" - postcss-modules-extract-imports: "npm:^3.1.0" - postcss-modules-local-by-default: "npm:^4.0.5" - postcss-modules-scope: "npm:^3.2.0" - postcss-modules-values: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - semver: "npm:^7.5.4" - peerDependencies: - "@rspack/core": 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - "@rspack/core": - optional: true - webpack: - optional: true - checksum: 10/9e3665509f6786d46683de5c5f5c4bdd4aa62396b4017b41dbbb41ea5ada4012c80ee1e3302b79b504bc24da7fa69e3552d99006cecc953e0d9eef4a3053b929 - languageName: node - linkType: hard - -"css-tree@npm:^1.1.2": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" - dependencies: - mdn-data: "npm:2.0.14" - source-map: "npm:^0.6.1" - checksum: 10/29710728cc4b136f1e9b23ee1228ec403ec9f3d487bc94a9c5dbec563c1e08c59bc917dd6f82521a35e869ff655c298270f43ca673265005b0cd05b292eb05ab - languageName: node - linkType: hard - -"css.escape@npm:^1.5.1": - version: 1.5.1 - resolution: "css.escape@npm:1.5.1" - checksum: 10/f6d38088d870a961794a2580b2b2af1027731bb43261cfdce14f19238a88664b351cc8978abc20f06cc6bbde725699dec8deb6fe9816b139fc3f2af28719e774 - languageName: node - linkType: hard - -"csscolorparser@npm:~1.0.2": - version: 1.0.3 - resolution: "csscolorparser@npm:1.0.3" - checksum: 10/b46b9032eaace69e5bb151bb64473547d8e48813b45395c1923cde1c87674bbd030c99536f44373e092de6afdca1a8134933a1503e779aaeb703b7c7897f5eca - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: 10/0e161912c1306861d8f46e1883be1cbc8b1b2879f0f509287c0db71796e4ddfb97ac96bdfca38f77f452e2c10554e1bb5678c99b07a5cf947a12778f73e47e12 - languageName: node - linkType: hard - -"cssfilter@npm:0.0.10": - version: 0.0.10 - resolution: "cssfilter@npm:0.0.10" - checksum: 10/1e45182f42de848f092f50a313113c28a88e4ac98333bf1603ee1c3b200384a3bc83c12e35cd61135e3b0f218295f600d51120ca1f926b7958b2d3262d711214 - languageName: node - linkType: hard - -"cssom@npm:^0.5.0": - version: 0.5.0 - resolution: "cssom@npm:0.5.0" - checksum: 10/b502a315b1ce020a692036cc38cb36afa44157219b80deadfa040ab800aa9321fcfbecf02fd2e6ec87db169715e27978b4ab3701f916461e9cf7808899f23b54 - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 10/49eacc88077555e419646c0ea84ddc73c97e3a346ad7cb95e22f9413a9722d8964b91d781ce21d378bd5ae058af9a745402383fa4e35e9cdfd19654b63f892a9 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: "npm:~0.3.6" - checksum: 10/46f7f05a153446c4018b0454ee1464b50f606cb1803c90d203524834b7438eb52f3b173ba0891c618f380ced34ee12020675dc0052a7f1be755fe4ebc27ee977 - languageName: node - linkType: hard - -"csstype@npm:^2.2.0, csstype@npm:^2.5.7, csstype@npm:^2.6.7": - version: 2.6.10 - resolution: "csstype@npm:2.6.10" - checksum: 10/cdfbbc91dcc26197e308ff7f6e74a95b885eb0ad347ba2905226cd5b355d3878a7c3417269f4f966384a267c1b0a139ab85b5e28a89caaed7046d71d6a0cdb92 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.0.3 - resolution: "csstype@npm:3.0.3" - checksum: 10/cdeae99eb3500cbf5c9cd169042204b24f1efa8fee98da034c5ad800aaebcb32240e6adf098514cdf782ddf6687e51f425819108cda3f40c6ea259f26d1ff74f - languageName: node - linkType: hard - -"csstype@npm:^3.1.2": - version: 3.1.3 - resolution: "csstype@npm:3.1.3" - checksum: 10/f593cce41ff5ade23f44e77521e3a1bcc2c64107041e1bf6c3c32adc5187d0d60983292fda326154d20b01079e24931aa5b08e4467cc488b60bb1e7f6d478ade - languageName: node - linkType: hard - -"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.2.0": - version: 3.2.4 - resolution: "d3-array@npm:3.2.4" - dependencies: - internmap: "npm:1 - 2" - checksum: 10/5800c467f89634776a5977f6dae3f4e127d91be80f1d07e3e6e35303f9de93e6636d014b234838eea620f7469688d191b3f41207a30040aab750a63c97ec1d7c - languageName: node - linkType: hard - -"d3-axis@npm:3": - version: 3.0.0 - resolution: "d3-axis@npm:3.0.0" - checksum: 10/15ec43ecbd4e7b606fcda60f67a522e45576dfd6aa83dff47f3e91ef6c8448841a09cd91f630b492250dcec67c6ea64463510ead5e632ff6b827aeefae1d42ad - languageName: node - linkType: hard - -"d3-brush@npm:3": - version: 3.0.0 - resolution: "d3-brush@npm:3.0.0" - dependencies: - d3-dispatch: "npm:1 - 3" - d3-drag: "npm:2 - 3" - d3-interpolate: "npm:1 - 3" - d3-selection: "npm:3" - d3-transition: "npm:3" - checksum: 10/fa3a461b62f0f0ee6fe41f5babf45535a0a8f6d4999f675fb1dce932ee02eff72dec14c7296af31ca15998dc0141ccf5d02aa6499363f8bf2941d90688a1d644 - languageName: node - linkType: hard - -"d3-chord@npm:3": - version: 3.0.1 - resolution: "d3-chord@npm:3.0.1" - dependencies: - d3-path: "npm:1 - 3" - checksum: 10/4febcdca4fdc8ba91fc4f7545f4b6321c440150dff80c1ebef887db07bb4200395dfebede63b257393259de07f914da10842da5ab3135e1e281e33ad153e0849 - languageName: node - linkType: hard - -"d3-color@npm:1 - 3, d3-color@npm:3": - version: 3.1.0 - resolution: "d3-color@npm:3.1.0" - checksum: 10/536ba05bfd9f4fcd6fa289b5974f5c846b21d186875684637e22bf6855e6aba93e24a2eb3712985c6af3f502fbbfa03708edb72f58142f626241a8a17258e545 - languageName: node - linkType: hard - -"d3-contour@npm:4": - version: 4.0.2 - resolution: "d3-contour@npm:4.0.2" - dependencies: - d3-array: "npm:^3.2.0" - checksum: 10/0b252267e0c3c5e97d7e0c720bd35654de99f981199f7240d7dd1acfd4e2d5bf1638829f6db486452eff9c38608efa4a6ab5a0d1525131735c011ee7be3cb4ba - languageName: node - linkType: hard - -"d3-delaunay@npm:6": - version: 6.0.4 - resolution: "d3-delaunay@npm:6.0.4" - dependencies: - delaunator: "npm:5" - checksum: 10/4588e2872d4154daaf2c3f34fefe74e43b909cc460238a7b02823907ca6dd109f2c488c57c8551f1a2607fe4b44fdf24e3a190cea29bca70ef5606678dd9e2de - languageName: node - linkType: hard - -"d3-dispatch@npm:1 - 3, d3-dispatch@npm:3": - version: 3.0.1 - resolution: "d3-dispatch@npm:3.0.1" - checksum: 10/2b82f41bf4ef88c2f9033dfe32815b67e2ef1c5754a74137a74c7d44d6f0d6ecfa934ac56ed8afe358f6c1f06462e8aa42ca0a388397b5b77a42721570e80487 - languageName: node - linkType: hard - -"d3-drag@npm:2 - 3, d3-drag@npm:3": - version: 3.0.0 - resolution: "d3-drag@npm:3.0.0" - dependencies: - d3-dispatch: "npm:1 - 3" - d3-selection: "npm:3" - checksum: 10/80bc689935e5a46ee92b2d7f71e1c792279382affed9fbcf46034bff3ff7d3f50cf61a874da4bdf331037292b9e7dca5c6401a605d4bb699fdcb4e0c87e176ec - languageName: node - linkType: hard - -"d3-dsv@npm:1 - 3, d3-dsv@npm:3": - version: 3.0.1 - resolution: "d3-dsv@npm:3.0.1" - dependencies: - commander: "npm:7" - iconv-lite: "npm:0.6" - rw: "npm:1" - bin: - csv2json: bin/dsv2json.js - csv2tsv: bin/dsv2dsv.js - dsv2dsv: bin/dsv2dsv.js - dsv2json: bin/dsv2json.js - json2csv: bin/json2dsv.js - json2dsv: bin/json2dsv.js - json2tsv: bin/json2dsv.js - tsv2csv: bin/dsv2dsv.js - tsv2json: bin/dsv2json.js - checksum: 10/a628ac42a272466940f713f310db2e5246690b22035121dc1230077070c9135fb7c9b4d260f093fcadf63b0528202a1953107448a4be3a860c4f42f50d09504d - languageName: node - linkType: hard - -"d3-ease@npm:1 - 3, d3-ease@npm:3": - version: 3.0.1 - resolution: "d3-ease@npm:3.0.1" - checksum: 10/985d46e868494e9e6806fedd20bad712a50dcf98f357bf604a843a9f6bc17714a657c83dd762f183173dcde983a3570fa679b2bc40017d40b24163cdc4167796 - languageName: node - linkType: hard - -"d3-fetch@npm:3": - version: 3.0.1 - resolution: "d3-fetch@npm:3.0.1" - dependencies: - d3-dsv: "npm:1 - 3" - checksum: 10/cd35d55f8fbb1ea1e37be362a575bb0161449957133aa5b45b9891889b2aca1dc0769c240a236736e33cd823e820a0e73fb3744582307a5d26d1df7bed0ccecb - languageName: node - linkType: hard - -"d3-force@npm:3": - version: 3.0.0 - resolution: "d3-force@npm:3.0.0" - dependencies: - d3-dispatch: "npm:1 - 3" - d3-quadtree: "npm:1 - 3" - d3-timer: "npm:1 - 3" - checksum: 10/85945f8d444d78567009518f0ab54c0f0c8873eb8eb9a2ff0ab667b0f81b419e101a411415d4a2c752547ec7143f89675e8c33b8f111e55e5579a04cb7f4591c - languageName: node - linkType: hard - -"d3-format@npm:1 - 3, d3-format@npm:3": - version: 3.1.0 - resolution: "d3-format@npm:3.1.0" - checksum: 10/a0fe23d2575f738027a3db0ce57160e5a473ccf24808c1ed46d45ef4f3211076b34a18b585547d34e365e78dcc26dd4ab15c069731fc4b1c07a26bfced09ea31 - languageName: node - linkType: hard - -"d3-geo@npm:3": - version: 3.1.1 - resolution: "d3-geo@npm:3.1.1" - dependencies: - d3-array: "npm:2.5.0 - 3" - checksum: 10/dc5e980330d891dabf92869b98871b05ca2021c64d7ef253bcfd4f2348839ad33576fba474baecc2def86ebd3d943a11d93c0af26be0a2694f5bd59824838133 - languageName: node - linkType: hard - -"d3-hierarchy@npm:3": - version: 3.1.2 - resolution: "d3-hierarchy@npm:3.1.2" - checksum: 10/497b79dc6c35e28b21e8a7b94db92876abd1d4ec082d9803a07ea8964e55b0e71c511a21489363a36f1456f069adb8ff7d33c633678730d6ae961ed350b27733 - languageName: node - linkType: hard - -"d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3, d3-interpolate@npm:3.0.1": - version: 3.0.1 - resolution: "d3-interpolate@npm:3.0.1" - dependencies: - d3-color: "npm:1 - 3" - checksum: 10/988d66497ef5c190cf64f8c80cd66e1e9a58c4d1f8932d776a8e3ae59330291795d5a342f5a97602782ccbef21a5df73bc7faf1f0dc46a5145ba6243a82a0f0e - languageName: node - linkType: hard - -"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-path@npm:3.1.0" - checksum: 10/8e97a9ab4930a05b18adda64cf4929219bac913a5506cf8585631020253b39309549632a5cbeac778c0077994442ddaaee8316ee3f380e7baf7566321b84e76a - languageName: node - linkType: hard - -"d3-polygon@npm:3": - version: 3.0.1 - resolution: "d3-polygon@npm:3.0.1" - checksum: 10/c4fa2ed19dcba13fd341815361d27e64597aa0d38d377e401e1353c4acbe8bd73c0afb3e49a1cf4119fadc3651ec8073d06aa6d0e34e664c868d071e58912cd1 - languageName: node - linkType: hard - -"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3": - version: 3.0.1 - resolution: "d3-quadtree@npm:3.0.1" - checksum: 10/1915b6a7b031fc312f9af61947072db9468c5a2b03837f6a90b38fdaebcd0ea17a883bffd94d16b8a6848e81711a06222f7d39f129386ef1850297219b8d32ba - languageName: node - linkType: hard - -"d3-random@npm:3": - version: 3.0.1 - resolution: "d3-random@npm:3.0.1" - checksum: 10/9f41d6ca3a1826cea8d88392917b5039504337d442a4d1357c870fa3031701e60209a2689a6ddae7df8fca824383d038c957eb545bc49a7428c71aaf3b11f56f - languageName: node - linkType: hard - -"d3-scale-chromatic@npm:3": - version: 3.1.0 - resolution: "d3-scale-chromatic@npm:3.1.0" - dependencies: - d3-color: "npm:1 - 3" - d3-interpolate: "npm:1 - 3" - checksum: 10/25df6a7c621b9171df8b2225e98e41c0a6bcac4de02deb4807280b31116e8f495c5ac93301796098ee5b698cb690154e8138d90d72fd1fe36744c60e02a3d8c4 - languageName: node - linkType: hard - -"d3-scale@npm:4": - version: 4.0.2 - resolution: "d3-scale@npm:4.0.2" - dependencies: - d3-array: "npm:2.10.0 - 3" - d3-format: "npm:1 - 3" - d3-interpolate: "npm:1.2.0 - 3" - d3-time: "npm:2.1.1 - 3" - d3-time-format: "npm:2 - 4" - checksum: 10/e2dc4243586eae2a0fdf91de1df1a90d51dfacb295933f0ca7e9184c31203b01436bef69906ad40f1100173a5e6197ae753cb7b8a1a8fcfda43194ea9cad6493 - languageName: node - linkType: hard - -"d3-selection@npm:2 - 3, d3-selection@npm:3": - version: 3.0.0 - resolution: "d3-selection@npm:3.0.0" - checksum: 10/0e5acfd305b31628b7be5009ba7303d84bb34817a88ed4dde9c8bd9c23528573fc5272f89fc04e5be03d2cbf5441a248d7274aaf55a8ef3dad46e16333d72298 - languageName: node - linkType: hard - -"d3-shape@npm:3": - version: 3.2.0 - resolution: "d3-shape@npm:3.2.0" - dependencies: - d3-path: "npm:^3.1.0" - checksum: 10/2e861f4d4781ee8abd85d2b435f848d667479dcf01a4e0db3a06600a5bdeddedb240f88229ec7b3bf7fa300c2b3526faeaf7e75f9a24dbf4396d3cc5358ff39d - languageName: node - linkType: hard - -"d3-time-format@npm:2 - 4, d3-time-format@npm:4": - version: 4.1.0 - resolution: "d3-time-format@npm:4.1.0" - dependencies: - d3-time: "npm:1 - 3" - checksum: 10/ffc0959258fbb90e3890bfb31b43b764f51502b575e87d0af2c85b85ac379120d246914d07fca9f533d1bcedc27b2841d308a00fd64848c3e2cad9eff5c9a0aa - languageName: node - linkType: hard - -"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3": - version: 3.1.0 - resolution: "d3-time@npm:3.1.0" - dependencies: - d3-array: "npm:2 - 3" - checksum: 10/c110bed295ce63e8180e45b82a9b0ba114d5f33ff315871878f209c1a6d821caa505739a2b07f38d1396637155b8e7372632dacc018e11fbe8ceef58f6af806d - languageName: node - linkType: hard - -"d3-timer@npm:1 - 3, d3-timer@npm:3": - version: 3.0.1 - resolution: "d3-timer@npm:3.0.1" - checksum: 10/004128602bb187948d72c7dc153f0f063f38ac7a584171de0b45e3a841ad2e17f1e40ad396a4af9cce5551b6ab4a838d5246d23492553843d9da4a4050a911e2 - languageName: node - linkType: hard - -"d3-transition@npm:2 - 3, d3-transition@npm:3": - version: 3.0.1 - resolution: "d3-transition@npm:3.0.1" - dependencies: - d3-color: "npm:1 - 3" - d3-dispatch: "npm:1 - 3" - d3-ease: "npm:1 - 3" - d3-interpolate: "npm:1 - 3" - d3-timer: "npm:1 - 3" - peerDependencies: - d3-selection: 2 - 3 - checksum: 10/02571636acb82f5532117928a87fe25de68f088c38ab4a8b16e495f0f2d08a3fd2937eaebdefdfcf7f1461545524927d2632d795839b88d2e4c71e387aaaffac - languageName: node - linkType: hard - -"d3-zoom@npm:3": - version: 3.0.0 - resolution: "d3-zoom@npm:3.0.0" - dependencies: - d3-dispatch: "npm:1 - 3" - d3-drag: "npm:2 - 3" - d3-interpolate: "npm:1 - 3" - d3-selection: "npm:2 - 3" - d3-transition: "npm:2 - 3" - checksum: 10/0e6e5c14e33c4ecdff311a900dd037dea407734f2dd2818988ed6eae342c1799e8605824523678bd404f81e37824cc588f62dbde46912444c89acc7888036c6b - languageName: node - linkType: hard - -"d3@npm:7.9.0": - version: 7.9.0 - resolution: "d3@npm:7.9.0" - dependencies: - d3-array: "npm:3" - d3-axis: "npm:3" - d3-brush: "npm:3" - d3-chord: "npm:3" - d3-color: "npm:3" - d3-contour: "npm:4" - d3-delaunay: "npm:6" - d3-dispatch: "npm:3" - d3-drag: "npm:3" - d3-dsv: "npm:3" - d3-ease: "npm:3" - d3-fetch: "npm:3" - d3-force: "npm:3" - d3-format: "npm:3" - d3-geo: "npm:3" - d3-hierarchy: "npm:3" - d3-interpolate: "npm:3" - d3-path: "npm:3" - d3-polygon: "npm:3" - d3-quadtree: "npm:3" - d3-random: "npm:3" - d3-scale: "npm:4" - d3-scale-chromatic: "npm:3" - d3-selection: "npm:3" - d3-shape: "npm:3" - d3-time: "npm:3" - d3-time-format: "npm:4" - d3-timer: "npm:3" - d3-transition: "npm:3" - d3-zoom: "npm:3" - checksum: 10/b0b418996bdf279b01f5c7a0117927f9ad3e833c9ce4657550ce6f6ace70b70cf829c4144b01df0be5a0f716d4e5f15ab0cadc5ff1ce1561d7be29ac86493d83 - languageName: node - linkType: hard - -"data-urls@npm:^3.0.2": - version: 3.0.2 - resolution: "data-urls@npm:3.0.2" - dependencies: - abab: "npm:^2.0.6" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - checksum: 10/033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 - languageName: node - linkType: hard - -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/5919a39a18ee919573336158fd162fdf8ada1bc23a139f28543fd45fac48e0ea4a3ad3bfde91de124d4106e65c4a7525f6a84c20ba0797ec890a77a96d13a82a - languageName: node - linkType: hard - -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/f33c65e58d8d0432ad79761f2e8a579818d724b5dc6dc4e700489b762d963ab30873c0f1c37d8f2ed12ef51c706d1195f64422856d25f067457aeec50cc40aac - languageName: node - linkType: hard - -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db - languageName: node - linkType: hard - -"date-fns@npm:3.6.0": - version: 3.6.0 - resolution: "date-fns@npm:3.6.0" - checksum: 10/cac35c58926a3b5d577082ff2b253612ec1c79eb6754fddef46b6a8e826501ea2cb346ecbd211205f1ba382ddd1f9d8c3f00bf433ad63cc3063454d294e3a6b8 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.7 - resolution: "debug@npm:4.3.7" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a - languageName: node - linkType: hard - -"debug@npm:^3.1.0": - version: 3.2.6 - resolution: "debug@npm:3.2.6" - dependencies: - ms: "npm:^2.1.1" - checksum: 10/c495d32519ed205aeab71b4bba84701c60b2d18efe98d41f88f498f09423252155450846ee31da0e4c3ea5d7d8f5123525e463612a7d3fa0bcd5fc06e4efe5fc - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 - languageName: node - linkType: hard - -"decimal.js@npm:^10.4.2": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 10/de663a7bc4d368e3877db95fcd5c87b965569b58d16cdc4258c063d231ca7118748738df17cd638f7e9dd0be8e34cec08d7234b20f1f2a756a52fc5a38b188d0 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.4.1": - version: 0.4.1 - resolution: "decode-uri-component@npm:0.4.1" - checksum: 10/74eec26f7bec3767164e37d526ef19bc1214cb0bbeeeea1c4f0ceb79299e5c38d3ba734e7243d829842aa140f24e5d020f54cc25b17c7082461c8eead8a72ce3 - languageName: node - linkType: hard - -"dedent@npm:^1.0.0": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10/e5277f6268f288649503125b781a7b7a2c9b22d011139688c0b3619fe40121e600eb1f077c891938d4b2428bdb6326cc3c77a763e4b1cc681bd9666ab1bad2a1 - languageName: node - linkType: hard - -"deep-equal@npm:^2.0.5": - version: 2.2.3 - resolution: "deep-equal@npm:2.2.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.5" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.2" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.13" - checksum: 10/1ce49d0b71d0f14d8ef991a742665eccd488dfc9b3cada069d4d7a86291e591c92d2589c832811dea182b4015736b210acaaebce6184be356c1060d176f5a05f - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 10/058d9e1b0ff1a154468bf3837aea436abcfea1ba1d165ddaaf48ca93765fdd01a30d33c36173da8fbbed951dd0a267602bc782fe288b0fc4b7e1e7091afc4529 - languageName: node - linkType: hard - -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10/abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 10/b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 - languageName: node - linkType: hard - -"delaunator@npm:5": - version: 5.0.1 - resolution: "delaunator@npm:5.0.1" - dependencies: - robust-predicates: "npm:^3.0.2" - checksum: 10/c378a55138d81d471a7214635b1a2c5e74f8ee06582f558df72f0c7c82c25868599ce9a18fb25a245c6c03cab886d17fb574681c78371b539dd069818703f53a - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: 10/179daf9d2f9af5c57ad66d97cb902a538bcf8ed64963fa7aa0c329b3de3665ce2eb6ffdc2f69f29d445fa4af2517e5e55e5b6e00c00a9ae4f43645f97f7078cb - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10/fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"direction@npm:^0.1.5": - version: 0.1.5 - resolution: "direction@npm:0.1.5" - bin: - direction: cli.js - checksum: 10/bf7d6ceca38f1cd4ffd33777207d0d64fe6075a2dee9c2b6c99b18ec9550fe20526a65baf1e0c1c9e683af6f4be27f84d55f753fc0c50df56dbd5551814b70c8 - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": - version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16" - checksum: 10/377b4a7f9eae0a5d72e1068c369c99e0e4ca17fdfd5219f3abd32a73a590749a267475a59d7b03a891f9b673c27429133a818c44b2e47e32fec024b34274e2ca - languageName: node - linkType: hard - -"dom-align@npm:^1.7.0": - version: 1.12.0 - resolution: "dom-align@npm:1.12.0" - checksum: 10/a7382592a29adfab222ab0826f91d4f6220559c9796a50a0b1202d49b60812e1930129670e00c9787c9da51c82a8be6d98e4005afc68e53bbafd23e9ef20635f - languageName: node - linkType: hard - -"dom-css@npm:^2.0.0": - version: 2.1.0 - resolution: "dom-css@npm:2.1.0" - dependencies: - add-px-to-style: "npm:1.0.0" - prefix-style: "npm:2.0.1" - to-camel-case: "npm:1.0.0" - checksum: 10/6180c872f17a4c026a690e399dd55e41a90f4e98c5af33ca0f16934309b67e762c929d07e38accc4e05ac4d22e8527af0252bf478a2d780b9e593a415b18905a - languageName: node - linkType: hard - -"dom-helpers@npm:^5.0.1": - version: 5.1.4 - resolution: "dom-helpers@npm:5.1.4" - dependencies: - "@babel/runtime": "npm:^7.8.7" - csstype: "npm:^2.6.7" - checksum: 10/329e1c6763c9442b5bf740e82b2fec46411917b2334df0d9720b26d4eac571b01658915bbc5527b87d3807955e0a9bc9e731c53ec2d12c900d4a47c5335116de - languageName: node - linkType: hard - -"domexception@npm:^4.0.0": - version: 4.0.0 - resolution: "domexception@npm:4.0.0" - dependencies: - webidl-conversions: "npm:^7.0.0" - checksum: 10/4ed443227d2871d76c58d852b2e93c68e0443815b2741348f20881bedee8c1ad4f9bfc5d30c7dec433cd026b57da63407c010260b1682fef4c8847e7181ea43f - languageName: node - linkType: hard - -"dompurify@npm:^3.0.0": - version: 3.1.7 - resolution: "dompurify@npm:3.1.7" - checksum: 10/dc637a064306f83cf911caa267ffe1f973552047602020e3b6723c90f67962813edf8a65a0b62e8c9bc13fcd173a2691212a3719bc116226967f46bcd6181277 - languageName: node - linkType: hard - -"downshift@npm:^9.0.6": - version: 9.0.8 - resolution: "downshift@npm:9.0.8" - dependencies: - "@babel/runtime": "npm:^7.24.5" - compute-scroll-into-view: "npm:^3.1.0" - prop-types: "npm:^15.8.1" - react-is: "npm:18.2.0" - tslib: "npm:^2.6.2" - peerDependencies: - react: ">=16.12.0" - checksum: 10/9dc4577e780c54742ba4dde11f481f0d839f001b309200fbe4db112385b227ccd9cd2ef97d9e995379fa70249f0664a562240e415b9966f18c8a5cb7ce435f2c - languageName: node - linkType: hard - -"earcut@npm:^2.2.3": - version: 2.2.4 - resolution: "earcut@npm:2.2.4" - checksum: 10/ca8b24714cc2fa67f98fbca6ddcf64bb42ee8d75d0b4f1a81486b3282b0f7f1bf9ec49ad4d02149985886a0c8a03a173463f2acb1f51fa0bb7ba2e1d4aa1254d - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10/9b1d3e1baefeaf7d70799db8774149cef33b97183a6addceeba0cf6b85ba23ee2686f302f14482006df32df75d32b17c509c143a3689627929e4a8efaf483952 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.28": - version: 1.5.32 - resolution: "electron-to-chromium@npm:1.5.32" - checksum: 10/906b852f67e9de0a5f643085570f7383c5bb28b28b1dd0916bdc55d24d8a2238eb61c26db51a766630993e4c55fb7bbf6551b0ae570751fec2503eb592611c89 - languageName: node - linkType: hard - -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10/c72d67a6821be15ec11997877c437491c313d924306b8da5d87d2a2bcc2cec9903cb5b04ee1a088460501d8e5b44f10df82fdc93c444101a7610b80c8b6938e1 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10/915acf859cea7131dac1b2b5c9c8e35c4849e325a1d114c30adb8cd615970f6dca0e27f64f3a4949d7d6ed86ecd79a1c5c63f02e697513cddd7b5835c90948b8 - languageName: node - linkType: hard - -"emotion@npm:10.0.27": - version: 10.0.27 - resolution: "emotion@npm:10.0.27" - dependencies: - babel-plugin-emotion: "npm:^10.0.27" - create-emotion: "npm:^10.0.27" - checksum: 10/376a43b150753f515b7ebc3fa3ae9a7143be5c6e1161984a19458967363a38112713a4e5c3de91020faffaf499bbe5c6f0ee517707fb7108a41c87efad6b5691 - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.17.1": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10/e8e03cb7a4bf3c0250a89afbd29e5ec20e90ba5fcd026066232a0754864d7d0a393fa6fc0e5379314a6529165a1834b36731147080714459d98924520410d8f5 - languageName: node - linkType: hard - -"entities@npm:^4.4.0": - version: 4.5.0 - resolution: "entities@npm:4.5.0" - checksum: 10/ede2a35c9bce1aeccd055a1b445d41c75a14a2bb1cd22e242f20cf04d236cdcd7f9c859eb83f76885327bfae0c25bf03303665ee1ce3d47c5927b98b0e3e3d48 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3": - version: 7.14.0 - resolution: "envinfo@npm:7.14.0" - bin: - envinfo: dist/cli.js - checksum: 10/0d9d711f2b6ae02dec89dd768a3390acbcb99ac50d07f20e635a8d2db68447703476db535483592d1ed4656c3d36eee4883032d71a5118c917b4973e2d4fa027 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 10/d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb - languageName: node - linkType: hard - -"error-stack-parser@npm:^2.0.6": - version: 2.1.4 - resolution: "error-stack-parser@npm:2.1.4" - dependencies: - stackframe: "npm:^1.3.4" - checksum: 10/23db33135bfc6ba701e5eee45e1bb9bd2fe33c5d4f9927440d9a499c7ac538f91f455fcd878611361269893c56734419252c40d8105eb3b023cf8b0fc2ebb64e - languageName: node - linkType: hard - -"error@npm:^7.0.0": - version: 7.2.1 - resolution: "error@npm:7.2.1" - dependencies: - string-template: "npm:~0.2.1" - checksum: 10/9c790d20a386947acfeabb0d1c39173efe8e5a38cb732b5f06c11a25c23ce8ac4dafbb7aa240565e034580a49aba0703e743d0274c6228500ddf947a1b998568 - languageName: node - linkType: hard - -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - arraybuffer.prototype.slice: "npm:^1.0.3" - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - data-view-buffer: "npm:^1.0.1" - data-view-byte-length: "npm:^1.0.1" - data-view-byte-offset: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.4" - get-symbol-description: "npm:^1.0.2" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.2" - internal-slot: "npm:^1.0.7" - is-array-buffer: "npm:^3.0.4" - is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.1" - is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.3" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.13" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" - regexp.prototype.flags: "npm:^1.5.2" - safe-array-concat: "npm:^1.1.2" - safe-regex-test: "npm:^1.0.3" - string.prototype.trim: "npm:^1.2.9" - string.prototype.trimend: "npm:^1.0.8" - string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.2" - typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.2" - typed-array-length: "npm:^1.0.6" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10/2da795a6a1ac5fc2c452799a409acc2e3692e06dc6440440b076908617188899caa562154d77263e3053bcd9389a07baa978ab10ac3b46acc399bd0c77be04cb - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 - languageName: node - linkType: hard - -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 10/bc2194befbe55725f9489098626479deee3c801eda7e83ce0dff2eb266a28dc808edb9b623ff01d31ebc1328f09d661333d86b601036692c2e3c1a6942319433 - languageName: node - linkType: hard - -"es-iterator-helpers@npm:^1.0.12": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" - es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.0.3" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.7" - iterator.prototype: "npm:^1.1.2" - safe-array-concat: "npm:^1.1.2" - checksum: 10/980a8081cf6798fe17fcea193b0448d784d72d76aca7240b10813207c67e3dc0d8a23992263870c4fc291da5a946935b0c56dec4fa1a9de8fee0165e4fa1fc58 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.2.1": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: 10/f29c7c97a58eb17640dcbd71bd6ef754ad4f58f95c3073894573d29dae2cad43ecd2060d97ed5b866dfb7804d5590fb7de1d2c5339a5fceae8bd60b580387fc5 - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10/f8910cf477e53c0615f685c5c96210591841850871b81924fcf256bfbaa68c254457d994a4308c60d15b20805e7f61ce6abc669375e01a5349391a8c1767584f - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" - dependencies: - get-intrinsic: "npm:^1.2.4" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10/7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" - dependencies: - hasown: "npm:^2.0.0" - checksum: 10/6d3bf91f658a27cc7217cd32b407a0d714393a84d125ad576319b9e83a893bea165cf41270c29e9ceaa56d3cf41608945d7e2a2c31fd51c0009b0c31402b91c7 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b - languageName: node - linkType: hard - -"es6-object-assign@npm:^1.1.0": - version: 1.1.0 - resolution: "es6-object-assign@npm:1.1.0" - checksum: 10/396c30376c89e91b5435f177ff83ba0d5ba265e3583cbaaa3bce185df08bf87db58c6d5d84600634280cbf35f8f342569b6ab776d728a12e177e5db82f5b6e2f - languageName: node - linkType: hard - -"escalade@npm:^3.1.1, escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 10/6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 10/9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10/47719a65b2888b4586e3fa93769068b275961c13089e90d5d01a96a6e8e95871b1c3893576814c8fbf08a4a31a496f37e7b2c937cf231270f4d81de012832c7c - languageName: node - linkType: hard - -"eslint-config-prettier@npm:8.8.0": - version: 8.8.0 - resolution: "eslint-config-prettier@npm:8.8.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10/3638144cecada897105ff9442bc85aba71c4f44d7d25b576cb34d50a207f6655f7cc55e729aad1a934a9f15e55c88e7adcbd1067d6582325fc89864c879b52f1 - languageName: node - linkType: hard - -"eslint-plugin-deprecation@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-plugin-deprecation@npm:2.0.0" - dependencies: - "@typescript-eslint/utils": "npm:^6.0.0" - tslib: "npm:^2.3.1" - tsutils: "npm:^3.21.0" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: ^4.2.4 || ^5.0.0 - checksum: 10/810276afa258155a35c863bb2138ebd2132447c3ed219e360915b0e7b4c6e77e09ae2931583d200b1f23e19040a27ad81c0927538a46392334bb4c3c4a2038b4 - languageName: node - linkType: hard - -"eslint-plugin-jsdoc@npm:46.8.2": - version: 46.8.2 - resolution: "eslint-plugin-jsdoc@npm:46.8.2" - dependencies: - "@es-joy/jsdoccomment": "npm:~0.40.1" - are-docs-informative: "npm:^0.0.2" - comment-parser: "npm:1.4.0" - debug: "npm:^4.3.4" - escape-string-regexp: "npm:^4.0.0" - esquery: "npm:^1.5.0" - is-builtin-module: "npm:^3.2.1" - semver: "npm:^7.5.4" - spdx-expression-parse: "npm:^3.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/240c92f4ca3dccabf9606e5df53fe08b1c5ad99a72ec3f9fd4a166bb3ca00505f8989745cca99e95e75e7d040998e94d3100b5b42dc57a69ee9135f7cd54ae55 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/3c63134e056a6d98d66e2c475c81f904169db817e89316d14e36269919e31f4876a2588aa0e466ec8ef160465169c627fe823bfdaae7e213946584e4a165a3ac - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.33.2": - version: 7.33.2 - resolution: "eslint-plugin-react@npm:7.33.2" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flatmap: "npm:^1.3.1" - array.prototype.tosorted: "npm:^1.1.1" - doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.0.12" - estraverse: "npm:^5.3.0" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.6" - object.fromentries: "npm:^2.0.6" - object.hasown: "npm:^1.1.2" - object.values: "npm:^1.1.6" - prop-types: "npm:^15.8.1" - resolve: "npm:^2.0.0-next.4" - semver: "npm:^6.3.1" - string.prototype.matchall: "npm:^4.0.8" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10/cb8c5dd5859cace330e24b7d74b9c652c0d93ef1d87957261fe1ac2975c27c918d0d5dc607f25aba4972ce74d04456f4f93883a16ac10cd598680d047fc3495d - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^4.1.1" - checksum: 10/c541ef384c92eb5c999b7d3443d80195fcafb3da335500946f6db76539b87d5826c8f2e1d23bf6afc3154ba8cd7c8e566f8dc00f1eea25fdf3afc8fb9c87b238 - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b - languageName: node - linkType: hard - -"eslint-webpack-plugin@npm:^4.0.1": - version: 4.2.0 - resolution: "eslint-webpack-plugin@npm:4.2.0" - dependencies: - "@types/eslint": "npm:^8.56.10" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.5" - normalize-path: "npm:^3.0.0" - schema-utils: "npm:^4.2.0" - peerDependencies: - eslint: ^8.0.0 || ^9.0.0 - webpack: ^5.0.0 - checksum: 10/061d11a93832b82bd0362d6c546f51fe5e3a0eb811374b86536a2929ff46fea7e5ef30e32f0d3194b9da146a7c0ae43f13b2ec5ce0f65a9ca9c4d961d9e446b3 - languageName: node - linkType: hard - -"eslint@npm:8.52.0": - version: 8.52.0 - resolution: "eslint@npm:8.52.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.2" - "@eslint/js": "npm:8.52.0" - "@humanwhocodes/config-array": "npm:^0.11.13" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: 10/01784ab15351d749bc95446039ed7acd5124f7cc84acdbf98c7199272eae06212a8f3ea4a9b47e7cc54ab17ca094c3a664bbfc3002c7de27936220e278b5028a - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb - languageName: node - linkType: hard - -"esquery@npm:^1.4.2, esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10/44ffcd89e714ea6b30143e7f119b104fc4d75e77ee913f34d59076b40ef2d21967f84e019f84e1fd0465b42cdbf725db449f232b5e47f29df29ed76194db8e16 - languageName: node - linkType: hard - -"esrever@npm:^0.2.0": - version: 0.2.0 - resolution: "esrever@npm:0.2.0" - bin: - esrever: bin/esrever - checksum: 10/be83b1d878930bab3227881b96b1b02b534ad48f8761fd1f41c521cfe1804be16b2af0ac9312eb78d1fd80a96f7336e0ef3e8f5d571d86f631e3be4b5e2dec5b - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 10/3f67ad02b6dbfaddd9ea459cf2b6ef4ecff9a6082a7af9d22e445b9abc082ad9ca47e1825557b293fcdae477f4714e561123e30bb6a5b2f184fb2bad4a9497eb - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb - languageName: node - linkType: hard - -"eventemitter3@npm:5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 10/ac6423ec31124629c84c7077eed1e6987f6d66c31cf43c6fcbf6c87791d56317ce808d9ead483652436df171b526fc7220eccdc9f3225df334e81582c3cf7dd5 - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 10/a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be - languageName: node - linkType: hard - -"execa@npm:^5.0.0": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: 10/8ada91f2d70f7dff702c861c2c64f21dfdc1525628f3c0454fd6f02fce65f7b958616cbd2b99ca7fa4d474e461a3d363824e91b3eb881705231abbf387470597 - languageName: node - linkType: hard - -"exenv@npm:^1.2.2": - version: 1.2.2 - resolution: "exenv@npm:1.2.2" - checksum: 10/6840185e421394bcb143debb866d31d19c3e4a4bca87d2f319d68d61afff353b3c678f2eb389e3b98ab9aecbec19f6bebbdc4193984378af0a3366c498a7efc8 - languageName: node - linkType: hard - -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 - languageName: node - linkType: hard - -"expect@npm:^29.0.0, expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/63f97bc51f56a491950fb525f9ad94f1916e8a014947f8d8445d3847a665b5471b768522d659f5e865db20b6c2033d2ac10f35fcbd881a4d26407a4f6f18451a - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 10/2d9bbb6473de7051f96790d5f9a678f32e60ed0aa70741dc7fdc96fec8d631124ec3374ac144387604f05afff9500f31a1d45bd9eee4cdc2e4f9ad2d9b9d5dbd - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1 - languageName: node - linkType: hard - -"fast-shallow-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "fast-shallow-equal@npm:1.0.0" - checksum: 10/ae89318ce43c0c46410d9511ac31520d59cfe675bad3d0b1cb5f900b2d635943d788b8370437178e91ae0d0412decc394229c03e69925ade929a8c02da241610 - languageName: node - linkType: hard - -"fast-uri@npm:^3.0.1": - version: 3.0.2 - resolution: "fast-uri@npm:3.0.2" - checksum: 10/99224f0198e24a4072b9a8a25fc5fa553aa0153e00d29d41272096a6d97be417c9faa5978682868cbba46b09066dc9348563c7244057f3818067e7737db153b2 - languageName: node - linkType: hard - -"fast_array_intersect@npm:1.1.0": - version: 1.1.0 - resolution: "fast_array_intersect@npm:1.1.0" - checksum: 10/94a6d062cd5564d1614d73b23a0196b0fd1da57f16616721a8c0f2ab5cab7a5fe650b0f260bd4541143c53e9124b17ab7bd020679e69e29f39dc533df66e5e32 - languageName: node - linkType: hard - -"fastest-levenshtein@npm:^1.0.12": - version: 1.0.16 - resolution: "fastest-levenshtein@npm:1.0.16" - checksum: 10/ee85d33b5cef592033f70e1c13ae8624055950b4eb832435099cd56aa313d7f251b873bedbc06a517adfaff7b31756d139535991e2406967438e03a1bf1b008e - languageName: node - linkType: hard - -"fastest-stable-stringify@npm:^2.0.2": - version: 2.0.2 - resolution: "fastest-stable-stringify@npm:2.0.2" - checksum: 10/41bb381c0eab1419eb353658c0d78cb79a4e99ef8f53ec5d36b131f076e62ff3cdca6d22888640c55ea3382ae2c93d8629a67f5734655442976708448a8c2500 - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" - dependencies: - reusify: "npm:^1.0.4" - checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69 - languageName: node - linkType: hard - -"faye-websocket@npm:~0.10.0": - version: 0.10.0 - resolution: "faye-websocket@npm:0.10.0" - dependencies: - websocket-driver: "npm:>=0.5.1" - checksum: 10/f913f886e5b2218ab0aa5cdb527e0a8f91eb66b4ecf989f4d2b5df39b2ad1ce9bf88e9459392d313ec6658fedb82760dda79050bdfe1c7eb3f1aa8b737f3c400 - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: "npm:2.1.1" - checksum: 10/4f95d336fb805786759e383fd7fff342ceb7680f53efcc0ef82f502eb479ce35b98e8b207b6dfdfeea0eba845862107dc73813775fc6b56b3098c6e90a2dad77 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b - languageName: node - linkType: hard - -"file-selector@npm:^0.6.0": - version: 0.6.0 - resolution: "file-selector@npm:0.6.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/6add4098ae07fd1e9050b1e8d3fd9f128680c1d6648c0676af54ace4586e6e5bfcb8fdfa45b69e9131ffd8175bf630d54a445a5facf9be244f85b99ce309183e - languageName: node - linkType: hard - -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea - languageName: node - linkType: hard - -"filter-obj@npm:^5.1.0": - version: 5.1.0 - resolution: "filter-obj@npm:5.1.0" - checksum: 10/8f6dab6d8d8855f686e8cc6be289bbbd64a80be52c660124e36e982f78017cf5dae7de95f79ec167fbf62101d6aab93067a3105ae8f56251785a721e678d6b07 - languageName: node - linkType: hard - -"find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "find-root@npm:1.1.0" - checksum: 10/caa799c976a14925ba7f31ca1a226fe73d3aa270f4f1b623fcfeb1c6e263111db4beb807d8acd31bd4d48d44c343b93688a9288dfbccca27463c36a0301b0bb9 - languageName: node - linkType: hard - -"find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10/02381c6ece5e9fa5b826c9bbea481d7fd77645d96e4b0b1395238124d581d10e56f17f723d897b6d133970f7a57f0fab9148cbbb67237a0a0ffe794ba60c0c70 - languageName: node - linkType: hard - -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.3.0 - resolution: "foreground-child@npm:3.3.0" - dependencies: - cross-spawn: "npm:^7.0.0" - signal-exit: "npm:^4.0.1" - checksum: 10/e3a60480f3a09b12273ce2c5fcb9514d98dd0e528f58656a1b04680225f918d60a2f81f6a368f2f3b937fcee9cfc0cbf16f1ad9a0bc6a3a6e103a84c9a90087e - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^8.0.0": - version: 8.0.0 - resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" - dependencies: - "@babel/code-frame": "npm:^7.16.7" - chalk: "npm:^4.1.2" - chokidar: "npm:^3.5.3" - cosmiconfig: "npm:^7.0.1" - deepmerge: "npm:^4.2.2" - fs-extra: "npm:^10.0.0" - memfs: "npm:^3.4.1" - minimatch: "npm:^3.0.4" - node-abort-controller: "npm:^3.0.1" - schema-utils: "npm:^3.1.1" - semver: "npm:^7.3.5" - tapable: "npm:^2.2.1" - peerDependencies: - typescript: ">3.6.0" - webpack: ^5.11.0 - checksum: 10/49be81a780271b0e1f8c230c32ddb54d7e7ca562565b29811a94d5e679607b947850b133c3bb63057a71e67ac717c6c86c6d0390d1ecc885b506ae9158cf9bb5 - languageName: node - linkType: hard - -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0": - version: 10.1.0 - resolution: "fs-extra@npm:10.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10/05ce2c3b59049bcb7b52001acd000e44b3c4af4ec1f8839f383ef41ec0048e3cfa7fd8a637b1bddfefad319145db89be91f4b7c1db2908205d38bf91e7d1d3b7 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/af143246cf6884fe26fa281621d45cfe111d34b30535a475bfa38dafe343dadb466c047a924ffc7d6b7b18265df4110224ce3803806dbb07173bf2087b648d7f - languageName: node - linkType: hard - -"fs-monkey@npm:^1.0.4": - version: 1.0.6 - resolution: "fs-monkey@npm:1.0.6" - checksum: 10/a0502a23aa0b467f671cd5c7f989ff48611cce1f23deb8f6924862b49234ff37de6828f739a4f2c1acf8f20e80cb426bf6a9d135c401f3df1e7089b7de04c815 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 - languageName: node - linkType: hard - -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10/185e20d20f10c8d661d59aac0f3b63b31132d492e1b11fcc2a93cb2c47257ebaee7407c38513efd2b35cafdf972d9beb2ea4593c1e0f3bf8f2744836928d7454 - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - functions-have-names: "npm:^1.2.3" - checksum: 10/4d40be44d4609942e4e90c4fff77a811fa936f4985d92d2abfcf44f673ba344e2962bf223a33101f79c1a056465f36f09b072b9c289d7660ca554a12491cd5a2 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: 10/17d8333460204fbf1f9160d067e1e77f908a5447febb49424b8ab043026049835c9ef3974445c57dbd39161f4d2b04356d7de12b2eecaa27a7a7ea7d871cbedd - languageName: node - linkType: hard - -"geotiff@npm:^2.0.7": - version: 2.1.3 - resolution: "geotiff@npm:2.1.3" - dependencies: - "@petamoriken/float16": "npm:^3.4.7" - lerc: "npm:^3.0.0" - pako: "npm:^2.0.4" - parse-headers: "npm:^2.0.2" - quick-lru: "npm:^6.1.1" - web-worker: "npm:^1.2.0" - xml-utils: "npm:^1.0.2" - zstddec: "npm:^0.1.0" - checksum: 10/91475680b882c11e6c28b4538c8703da03a13fa1b3f8f9d456aa3b274cb71fb01f04aadb29006c3a607c20b724b936a95899ad8ef65d26a11eed59ba9f81c61f - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: 10/b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-document@npm:1": - version: 1.0.0 - resolution: "get-document@npm:1.0.0" - checksum: 10/94312db44ea9d070cca8cc14272582d04c7638494d6b5c9c0d6f1d949ef2605b4102ee52f0ded11e571357aba45e9fcc98a5b0467d61e4943a66002167eb6e7a - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: 10/bba0811116d11e56d702682ddef7c73ba3481f114590e705fc549f4d868972263896af313c57a25c076e3c0d567e11d919a64ba1b30c879be985fc9d44f96148 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: 10/781266d29725f35c59f1d214aedc92b0ae855800a980800e2923b3fbc4e56b3cb6e462c42e09a1cf1a00c64e056a78fa407cbe06c7c92b7e5cd49b4b85c2a497 - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.5" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - checksum: 10/e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 - languageName: node - linkType: hard - -"get-user-locale@npm:^2.2.1": - version: 2.3.2 - resolution: "get-user-locale@npm:2.3.2" - dependencies: - mem: "npm:^8.0.0" - checksum: 10/58c1dd99b803731238640181335fc86b0bb27ed7fcec39233f1fdbee8a2d98bea44c9897e0d0f4f78b1b40c82d26449f82b1823e320c796bb5974198aa8cdde2 - languageName: node - linkType: hard - -"get-window@npm:^1.1.1": - version: 1.1.2 - resolution: "get-window@npm:1.1.2" - dependencies: - get-document: "npm:1" - checksum: 10/728b0be1e5eb3dde5180881e3a6a8810d25bc074e9d321a5fad9a60b7853f9e293e8eb30e57d9a6e98826d921db4c8fecf0700fc4785e3bdc252d9d75f0903c5 - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: 10/9009529195a955c40d7b9690794aeff5ba665cc38f1519e111c58bb54366fd0c106bde80acf97ba4e533208eb53422c83b136611a54c5fefb1edd8dc267cb62e - languageName: node - linkType: hard - -"glob@npm:^10.2.2, glob@npm:^10.2.7, glob@npm:^10.3.10": - version: 10.4.5 - resolution: "glob@npm:10.4.5" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac - languageName: node - linkType: hard - -"glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/62c5b1997d06674fc7191d3e01e324d3eda4d65ac9cc4e78329fa3b5c4fd42a0e1c8722822497a6964eee075255ce21ccf1eec2d83f92ef3f06653af4d0ee28e - languageName: node - linkType: hard - -"globalthis@npm:^1.0.3": - version: 1.0.4 - resolution: "globalthis@npm:1.0.4" - dependencies: - define-properties: "npm:^1.2.1" - gopd: "npm:^1.0.1" - checksum: 10/1f1fd078fb2f7296306ef9dd51019491044ccf17a59ed49d375b576ca108ff37e47f3d29aead7add40763574a992f16a5367dd1e2173b8634ef18556ab719ac4 - languageName: node - linkType: hard - -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10/288e95e310227bbe037076ea81b7c2598ccbc3122d87abc6dab39e1eec309aa14f0e366a98cdc45237ffcfcbad3db597778c0068217dcb1950fef6249104e1b1 - languageName: node - linkType: hard - -"globby@npm:^13.1.1": - version: 13.2.2 - resolution: "globby@npm:13.2.2" - dependencies: - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.3.0" - ignore: "npm:^5.2.4" - merge2: "npm:^1.4.1" - slash: "npm:^4.0.0" - checksum: 10/4494a9d2162a7e4d327988b26be66d8eab87d7f59a83219e74b065e2c3ced23698f68fb10482bf9337133819281803fb886d6ae06afbb2affa743623eb0b1949 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10/6dd60dba97007b21e3a829fab3f771803cc1292977fe610e240ea72afd67e5690ac9eeaafc4a99710e78962e5936ab5a460787c2a1180f1cb0ccfac37d29f897 - languageName: node - linkType: hard - -"harmony-reflect@npm:^1.4.6": - version: 1.6.2 - resolution: "harmony-reflect@npm:1.6.2" - checksum: 10/69d30ebfb5dbd6ff0553725c7922404cf1dfe5390db1618298eed27fe6c9bd2f3f677727e9da969d21648f4a6a39041e2f46e99976be4385f9e34bac23058cd4 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10/4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe - languageName: node - linkType: hard - -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10/7898a9c1788b2862cf0f9c345a6bec77ba4a0c0983c7f19d610c382343d4f98fa260686b225dfb1f88393a66679d2ec58ee310c1d6868c081eda7918f32cc70a - languageName: node - linkType: hard - -"highlight-words-core@npm:^1.2.0": - version: 1.2.2 - resolution: "highlight-words-core@npm:1.2.2" - checksum: 10/6a5364ad8cce0107a387d3f43374f5814fb586cc155b282196bc2b9ce1c25aa9a8b76e8ab04d0c29428403a48225cad8280e00b8adbb6b02e05e3a6ab7ee2ef3 - languageName: node - linkType: hard - -"history@npm:4.10.1, history@npm:^4.9.0": - version: 4.10.1 - resolution: "history@npm:4.10.1" - dependencies: - "@babel/runtime": "npm:^7.1.2" - loose-envify: "npm:^1.2.0" - resolve-pathname: "npm:^3.0.0" - tiny-invariant: "npm:^1.0.2" - tiny-warning: "npm:^1.0.0" - value-equal: "npm:^1.0.1" - checksum: 10/042373f69dad6419a4d551b995ef40f449a8854775a1157c4e9f077ee39aea6ca7ed8f45ec3e1762ef1891357a724d17dad11f2fe7d0edeebcbcf9f48ed3e4d4 - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:3.3.2, hoist-non-react-statics@npm:^3.1.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: "npm:^16.7.0" - checksum: 10/1acbe85f33e5a39f90c822ad4d28b24daeb60f71c545279431dc98c312cd28a54f8d64788e477fe21dc502b0e3cf58589ebe5c1ad22af27245370391c2d24ea6 - languageName: node - linkType: hard - -"html-encoding-sniffer@npm:^3.0.0": - version: 3.0.0 - resolution: "html-encoding-sniffer@npm:3.0.0" - dependencies: - whatwg-encoding: "npm:^2.0.0" - checksum: 10/707a812ec2acaf8bb5614c8618dc81e2fb6b4399d03e95ff18b65679989a072f4e919b9bef472039301a1bbfba64063ba4c79ea6e851c653ac9db80dbefe8fe5 - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 - languageName: node - linkType: hard - -"html-parse-stringify@npm:^3.0.1": - version: 3.0.1 - resolution: "html-parse-stringify@npm:3.0.1" - dependencies: - void-elements: "npm:3.1.0" - checksum: 10/8743b76cc50e46d1956c1ad879d18eb9613b0d2d81e24686d633f9f69bb26b84676f64a926973de793cca479997017a63219278476d617b6c42d68246d7c07fe - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10/362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.8 - resolution: "http-parser-js@npm:0.5.8" - checksum: 10/2a78a567ee6366dae0129d819b799dce1f95ec9732c5ab164a78ee69804ffb984abfa0660274e94e890fc54af93546eb9f12b6d10edbaed017e2d41c29b7cf29 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": "npm:2" - agent-base: "npm:6" - debug: "npm:4" - checksum: 10/5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10/d062acfa0cb82beeb558f1043c6ba770ea892b5fb7b28654dbc70ea2aeea55226dd34c02a294f6c1ca179a5aa483c4ea641846821b182edbd9cc5d89b54c6848 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 10/6679d46159ab3f9a5509ee80c3a3fc83fba3a920a5e18d32176c3327852c3c00ad640c0c4210a8fd70ea3c4a6d3a1b375bf01942516e7df80e2646bdc77658ab - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: 10/df59be9e0af479036798a881d1f136c4a29e0b518d4abb863afbd11bf30efa3eeb1d0425fc65942dcc05ab3bf40205ea436b0ff389f2cd20b75b8643d539bf86 - languageName: node - linkType: hard - -"hyphenate-style-name@npm:^1.0.3": - version: 1.1.0 - resolution: "hyphenate-style-name@npm:1.1.0" - checksum: 10/b9ed74e29181d96bd58a2d0e62fc4a19879db591dba268275829ff0ae595fcdf11faafaeaa63330a45c3004664d7db1f0fc7cdb372af8ee4615ed8260302c207 - languageName: node - linkType: hard - -"i18next-browser-languagedetector@npm:^7.0.2": - version: 7.2.1 - resolution: "i18next-browser-languagedetector@npm:7.2.1" - dependencies: - "@babel/runtime": "npm:^7.23.2" - checksum: 10/20c93cbd23d62703e12268ec24679a91743cb6d652a6e83e6a102b2ecb8f79542821046a7f8f567a93fabfdc5cd9353dc7f3050c9c48948fe2ae0640d859a0dd - languageName: node - linkType: hard - -"i18next@npm:^23.0.0": - version: 23.15.2 - resolution: "i18next@npm:23.15.2" - dependencies: - "@babel/runtime": "npm:^7.23.2" - checksum: 10/ed14a290ba8e761a06b6a6ce5e608861f367eb0806fa1b4eb77494340502ad20491748ab2b27423ba186f5602b89cbcb87565683a03443d0368cd4b182ae6ef9 - languageName: node - linkType: hard - -"iconv-lite@npm:0.6, iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10/5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 - languageName: node - linkType: hard - -"identity-obj-proxy@npm:3.0.0": - version: 3.0.0 - resolution: "identity-obj-proxy@npm:3.0.0" - dependencies: - harmony-reflect: "npm:^1.4.6" - checksum: 10/66fe4d2ffc67655174f6abe100ab3b36d2f5e4de5b28a7c3121e5f51bd4e7c8c1bee4f9a41ce0586ace57fb63bfedbfc39508b7cb43b9e3ed6dc42f762158b4e - languageName: node - linkType: hard - -"ieee754@npm:^1.1.12": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 - languageName: node - linkType: hard - -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.2 - resolution: "ignore@npm:5.3.2" - checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 - languageName: node - linkType: hard - -"immutable@npm:4.3.7, immutable@npm:^4.0.0": - version: 4.3.7 - resolution: "immutable@npm:4.3.7" - checksum: 10/37d963c5050f03ae5f3714ba7a43d469aa482051087f4c65d673d1501c309ea231d87480c792e19fa85e2eaf965f76af5d0aa92726505f3cfe4af91619dfb80b - languageName: node - linkType: hard - -"import-fresh@npm:^3.1.0": - version: 3.2.1 - resolution: "import-fresh@npm:3.2.1" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10/caef42418a087c3951fb676943a7f21ba8971aa07f9b622dff4af7edcef4160e1b172dccd85a88d7eb109cf41406a4592f70259e6b3b33aeafd042bb61f81d96 - languageName: node - linkType: hard - -"import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 10/2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-local@npm:^3.0.2": - version: 3.2.0 - resolution: "import-local@npm:3.2.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10/0b0b0b412b2521739fbb85eeed834a3c34de9bc67e670b3d0b86248fc460d990a7b116ad056c084b87a693ef73d1f17268d6a5be626bb43c998a8b1c8a230004 - languageName: node - linkType: hard - -"imports-loader@npm:^5.0.0": - version: 5.0.0 - resolution: "imports-loader@npm:5.0.0" - dependencies: - source-map-js: "npm:^1.0.2" - strip-comments: "npm:^2.0.1" - peerDependencies: - webpack: ^5.0.0 - checksum: 10/b507436b7d2c7a6d6d8623b93b5a0fda2d13c48d4d0f310b74b8465c080d9fd07a2f8d0f896e264b4feff59effa9aef736a2b668d7a695cecd8bdc7cb817373e - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 10/cd3f5cbc9ca2d624c6a1f53f12e6b341659aba0e2d3254ae2b4464aaea8b4294cdb09616abbc59458f980531f2429784ed6a420d48d245bcad0811980c9efae9 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 - languageName: node - linkType: hard - -"inline-style-prefixer@npm:^7.0.1": - version: 7.0.1 - resolution: "inline-style-prefixer@npm:7.0.1" - dependencies: - css-in-js-utils: "npm:^3.1.0" - checksum: 10/a430c962693f32a36bcec0124c9798bcf3725bb90468d493108c0242446a9cc92ff1967bdf99b6ce5331e7a9b75e6836bc9ba1b3d4756876b8ef48036acb2509 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" - dependencies: - es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10/3e66720508831153ecf37d13def9f6856f9f2960989ec8a0a0476c98f887fca9eff0163127466485cb825c900c2d6fc601aa9117b7783b90ffce23a71ea5d053 - languageName: node - linkType: hard - -"internmap@npm:1 - 2": - version: 2.0.3 - resolution: "internmap@npm:2.0.3" - checksum: 10/873e0e7fcfe32f999aa0997a0b648b1244508e56e3ea6b8259b5245b50b5eeb3853fba221f96692bd6d1def501da76c32d64a5cb22a0b26cdd9b445664f805e0 - languageName: node - linkType: hard - -"interpret@npm:^3.1.1": - version: 3.1.1 - resolution: "interpret@npm:3.1.1" - checksum: 10/bc9e11126949c4e6ff49b0b819e923a9adc8e8bf3f9d4f2d782de6d5f592774f6fee4457c10bd08c6a2146b4baee460ccb242c99e5397defa9c846af0d00505a - languageName: node - linkType: hard - -"intl-messageformat@npm:^10.1.0": - version: 10.5.14 - resolution: "intl-messageformat@npm:10.5.14" - dependencies: - "@formatjs/ecma402-abstract": "npm:2.0.0" - "@formatjs/fast-memoize": "npm:2.2.0" - "@formatjs/icu-messageformat-parser": "npm:2.7.8" - tslib: "npm:^2.4.0" - checksum: 10/01692e92671b00d2423a7db405e6bb8e42bea52445dec931abaa8a8c47e3a7da17dddd3cd0faa33cb6a614370ea230b2c3980ae106cafa8b760e50ac4db0952f - languageName: node - linkType: hard - -"invariant@npm:^2.2.2": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10/cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 - languageName: node - linkType: hard - -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10/1ed81e06721af012306329b31f532b5e24e00cb537be18ddc905a84f19fe8f83a09a1699862bf3a1ec4b9dea93c55a3fa5faf8b5ea380431469df540f38b092c - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/a170c7e26082e10de9be6e96d32ae3db4d5906194051b792e85fae3393b53cf2cb5b3557863e5c8ccbab55e2fd8f2f75aa643d437613f72052cf0356615c34be - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - checksum: 10/34a26213d981d58b30724ef37a1e0682f4040d580fa9ff58fdfdd3cefcb2287921718c63971c1c404951e7b747c50fdc7caf6e867e951353fa71b369c04c969b - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 10/73ced84fa35e59e2c57da2d01e12cd01479f381d7f122ce41dcbb713f09dbfc651315832cd2bf8accba7681a69e4d6f1e03941d94dd10040d415086360e7005e - languageName: node - linkType: hard - -"is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2cf336fbf8cba3badcf526aa3d10384c30bab32615ac4831b74492eb4e843ccb7d8439a119c27f84bcf217d72024e611b1373f870f433b48f3fa57d3d1b863f1 - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: "npm:^1.0.1" - checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e - languageName: node - linkType: hard - -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: "npm:^3.3.0" - checksum: 10/e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.0": - version: 2.15.1 - resolution: "is-core-module@npm:2.15.1" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10/77316d5891d5743854bcef2cd2f24c5458fb69fbc9705c12ca17d54a2017a67d0693bbf1ba8c77af376c0eef6bf6d1b27a4ab08e4db4e69914c3789bdf2ceec5 - languageName: node - linkType: hard - -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" - dependencies: - is-typed-array: "npm:^1.1.13" - checksum: 10/4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/1b8e9e1bf2075e862315ef9d38ce6d39c43ca9d81d46f73b34473506992f4b0fbaadb47ec9b420a5e76afe3f564d9f1f0d9b552ef272cc2395e0f21d743c9c29 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10/44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 - languageName: node - linkType: hard - -"is-hotkey@npm:0.1.4": - version: 0.1.4 - resolution: "is-hotkey@npm:0.1.4" - checksum: 10/c718add99354cf448d5875f2f58e4770d8993f480a4cbd48585ab13eb590422474b1bf320246152a94b938dc9d88ce79353bac882887a64b1f47c3ecda536c00 - languageName: node - linkType: hard - -"is-hotkey@npm:0.2.0": - version: 0.2.0 - resolution: "is-hotkey@npm:0.2.0" - checksum: 10/d3d42026e70ea796fb9af8345e511de4b90eed55765eb67db8695f83e60bac8566ace16b191c08c7f6fab36c9318133a9f1c19eb9e5f8ce528d8a433e4b41190 - languageName: node - linkType: hard - -"is-in-browser@npm:^1.1.3": - version: 1.1.3 - resolution: "is-in-browser@npm:1.1.3" - checksum: 10/f7411dbea0875ac609a794e28a545d654331e2a51f42a8c1629abbedf21ecb642ca726a4a9c8be28f9854990a764693483652b65612ccf7b5bc68aa4657e9a26 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-map@npm:^2.0.2, is-map@npm:^2.0.3": - version: 2.0.3 - resolution: "is-map@npm:2.0.3" - checksum: 10/8de7b41715b08bcb0e5edb0fb9384b80d2d5bcd10e142188f33247d19ff078abaf8e9b6f858e2302d8d05376a26a55cd23a3c9f8ab93292b02fcd2cc9e4e92bb - languageName: node - linkType: hard - -"is-nan@npm:^1.2.1": - version: 1.3.2 - resolution: "is-nan@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 10/1f784d3472c09bc2e47acba7ffd4f6c93b0394479aa613311dc1d70f1bfa72eb0846c81350967722c959ba65811bae222204d6c65856fdce68f31986140c7b0e - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: "npm:^3.0.1" - checksum: 10/2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca - languageName: node - linkType: hard - -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: 10/ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 - languageName: node - linkType: hard - -"is-set@npm:^2.0.2, is-set@npm:^2.0.3": - version: 2.0.3 - resolution: "is-set@npm:2.0.3" - checksum: 10/5685df33f0a4a6098a98c72d94d67cad81b2bc72f1fb2091f3d9283c4a1c582123cd709145b02a9745f0ce6b41e3e43f1c944496d1d74d4ea43358be61308669 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - checksum: 10/bc5402900dc62b96ebb2548bf5b0a0bcfacc2db122236fe3ab3b3e3c884293a0d5eb777e73f059bcbf8dc8563bb65eae972fee0fb97e38a9ae27c8678f62bcfe - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: 10/b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" - dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10/f850ba08286358b9a11aee6d93d371a45e3c59b5953549ee1c1a9a55ba5c1dd1bd9952488ae194ad8f32a9cf5e79c8fa5f0cc4d78c00720aa0bbcf238b38062d - languageName: node - linkType: hard - -"is-weakmap@npm:^2.0.2": - version: 2.0.2 - resolution: "is-weakmap@npm:2.0.2" - checksum: 10/a7b7e23206c542dcf2fa0abc483142731788771527e90e7e24f658c0833a0d91948a4f7b30d78f7a65255a48512e41a0288b778ba7fc396137515c12e201fd11 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.3": - version: 2.0.3 - resolution: "is-weakset@npm:2.0.3" - dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - checksum: 10/40159582ff1b44fc40085f631baf19f56479b05af2faede65b4e6a0b6acab745c13fd070e35b475aafd8a1ee50879ba5a3f1265125b46bebdb446b6be1f62165 - languageName: node - linkType: hard - -"is-window@npm:^1.0.2": - version: 1.0.2 - resolution: "is-window@npm:1.0.2" - checksum: 10/aeaacd2ca816d38d4e2fba4670158fba2190061f28a61c5d84df7c479abf8897b8cb634d22cb76cdf7805035e95bebd430faaab6231ac2ebc814eae02d2c8fd4 - languageName: node - linkType: hard - -"isarray@npm:0.0.1": - version: 0.0.1 - resolution: "isarray@npm:0.0.1" - checksum: 10/49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10/1d8bc7911e13bb9f105b1b3e0b396c787a9e63046af0b8fe0ab1414488ab06b2b099b87a2d8a9e31d21c9a6fad773c7fc8b257c4880f2d957274479d28ca3414 - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10/7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e - languageName: node - linkType: hard - -"isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: 10/db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 - languageName: node - linkType: hard - -"isomorphic-base64@npm:^1.0.2": - version: 1.0.2 - resolution: "isomorphic-base64@npm:1.0.2" - checksum: 10/68780627db2382bffa847990fab4f0c1aee8a89dae4acd69aa423c9de46f51ca04a1ed216eb656b33c676eb4696b177fe4379f2cbe05ccb6e6699c01db83dfa5 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 10/40bbdd1e937dfd8c830fa286d0f665e81b7a78bdabcd4565f6d5667c99828bda3db7fb7ac6b96a3e2e8a2461ddbc5452d9f8bc7d00cb00075fa6a3e99f5b6a81 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^6.3.0" - checksum: 10/bbc4496c2f304d799f8ec22202ab38c010ac265c441947f075c0f7d46bd440b45c00e46017cf9053453d42182d768b1d6ed0e70a142c95ab00df9843aa5ab80e - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10/aa5271c0008dfa71b6ecc9ba1e801bf77b49dc05524e8c30d58aaf5b9505e0cd12f25f93165464d4266a518c5c75284ecb598fbd89fec081ae77d2c9d3327695 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: 10/86a83421ca1cf2109a9f6d193c06c31ef04a45e72a74579b11060b1e7bb9b6337a4e6f04abfb8857e2d569c271273c65e855ee429376a0d7c91ad91db42accd1 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10/f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa - languageName: node - linkType: hard - -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" - dependencies: - define-properties: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - reflect.getprototypeof: "npm:^1.0.4" - set-function-name: "npm:^2.0.1" - checksum: 10/b5013967ad8f28c9ca1be8e159eb10f591b8e46deae87476fe39d668c04374fe9158c815e8b6d2f45885b0a3fd842a8ba13f497ec762b3a0eff49bec278670b1 - languageName: node - linkType: hard - -"jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10/96f8786eaab98e4bf5b2a5d6d9588ea46c4d06bbc4f2eb861fdd7b6b182b16f71d8a70e79820f335d52653b16d4843b29dd9cdcf38ae80406756db9199497cf3 - languageName: node - linkType: hard - -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: "npm:^5.0.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^1.0.0" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.7.0" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - pure-rand: "npm:^6.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - create-jest: "npm:^29.7.0" - exit: "npm:^0.1.2" - import-local: "npm:^3.0.2" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - yargs: "npm:^17.3.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-jest: "npm:^29.7.0" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b - languageName: node - linkType: hard - -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.6.3" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/6f3a7eb9cd9de5ea9e5aa94aed535631fa6f80221832952839b3cb59dd419b91c20b73887deb0b62230d06d02d6b6cf34ebb810b88d904bb4fe1e2e4f0905c98 - languageName: node - linkType: hard - -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - pretty-format: "npm:^29.7.0" - checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^29.5.0": - version: 29.7.0 - resolution: "jest-environment-jsdom@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/jsdom": "npm:^20.0.0" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jsdom: "npm:^20.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10/23bbfc9bca914baef4b654f7983175a4d49b0f515a5094ebcb8f819f28ec186f53c0ba06af1855eac04bab1457f4ea79dae05f70052cf899863e8096daa6e0f5 - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 10/88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/graceful-fs": "npm:^4.1.3" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 10/8531b42003581cb18a69a2774e68c456fb5a5c3280b1b9b77475af9e346b6a457250f9d756bfeeae2fe6cbc9ef28434c205edab9390ee970a919baddfa08bb85 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/981904a494299cf1e3baed352f8a3bd8b50a8c13a662c509b6a53c31461f94ea3bfeffa9d5efcfeb248e384e318c87de7e3baa6af0f79674e987482aa189af40 - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/31d53c6ed22095d86bab9d14c0fa70c4a92c749ea6ceece82cf30c22c9c0e26407acdfbdb0231435dc85a98d6d65ca0d9cbcd25cd1abb377fe945e843fb770b9 - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 10/0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: "npm:^29.6.3" - jest-snapshot: "npm:^29.7.0" - checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^2.0.0" - slash: "npm:^3.0.0" - checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/environment": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-leak-detector: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-resolve: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e - languageName: node - linkType: hard - -"jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/globals": "npm:^29.7.0" - "@jest/source-map": "npm:^29.6.3" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-jsx": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.7.0" - semver: "npm:^7.5.3" - checksum: 10/cb19a3948256de5f922d52f251821f99657339969bf86843bd26cf3332eae94883e8260e3d2fba46129a27c3971c1aa522490e460e16c7fad516e82d10bbf9f8 - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 10/30d58af6967e7d42bd903ccc098f3b4d3859ed46238fbc88d4add6a3f10bea00c226b93660285f058bc7a65f6f9529cf4eb80f8d4707f79f9e3a23686b4ab8f3 - languageName: node - linkType: hard - -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - leven: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - checksum: 10/8ee1163666d8eaa16d90a989edba2b4a3c8ab0ffaa95ad91b08ca42b015bfb70e164b247a5b17f9de32d096987cada63ed8491ab82761bfb9a28bc34b27ae161 - languageName: node - linkType: hard - -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.7.0" - string-length: "npm:^4.0.1" - checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 10/06c6e2a84591d9ede704d5022fc13791e8876e83397c89d481b0063332abbb64c0f01ef4ca7de520b35c7a1058556078d6bdc3631376f4e9ffb42316c1a8488e - languageName: node - linkType: hard - -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" - dependencies: - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 10/364cbaef00d8a2729fc760227ad34b5e60829e0869bd84976bdfbd8c0d0f9c2f22677b3e6dd8afa76ed174765351cd12bae3d4530c62eefb3791055127ca9745 - languageName: node - linkType: hard - -"jest@npm:^29.5.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^29.7.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a - languageName: node - linkType: hard - -"jquery@npm:3.7.1": - version: 3.7.1 - resolution: "jquery@npm:3.7.1" - checksum: 10/17be9929f5fa37697d9848284f0d108c543318ef79ec794e130cd0c49f6c050d60c803a69e8cfa16fa19f5ff7cdb814a6905cceab0831186560c65ed113cd579 - languageName: node - linkType: hard - -"js-cookie@npm:^2.2.1": - version: 2.2.1 - resolution: "js-cookie@npm:2.2.1" - checksum: 10/4387f5f5691cb96ca9ff8852c589d3012b53f484fda68630a39e20cabc6c5b740f09225e23233ba56cd9de6ebe300a23d20b2c7315f10c309ad5a89fd8c4990b - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379 - languageName: node - linkType: hard - -"js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 - languageName: node - linkType: hard - -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10/bebe7ae829bbd586ce8cbe83501dd8cb8c282c8902a8aeeed0a073a89dc37e8103b1244f3c6acd60278bcbfe12d93a3f83c9ac396868a3b3bbc3c5e5e3b648ef - languageName: node - linkType: hard - -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: 10/a225ab874e56612730dd6c0466ce9f09e8a0e7d85896e9e5f0fa53cfb2e897128a7ec702fd99ed3854b3fbf5a89ad6dce72ca4f4f6149da69f130c2874f06b75 - languageName: node - linkType: hard - -"jsdom@npm:^20.0.0": - version: 20.0.3 - resolution: "jsdom@npm:20.0.3" - dependencies: - abab: "npm:^2.0.6" - acorn: "npm:^8.8.1" - acorn-globals: "npm:^7.0.0" - cssom: "npm:^0.5.0" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^3.0.2" - decimal.js: "npm:^10.4.2" - domexception: "npm:^4.0.0" - escodegen: "npm:^2.0.0" - form-data: "npm:^4.0.0" - html-encoding-sniffer: "npm:^3.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.1" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.2" - parse5: "npm:^7.1.1" - saxes: "npm:^6.0.0" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.1.2" - w3c-xmlserializer: "npm:^4.0.0" - webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^2.0.0" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - ws: "npm:^8.11.0" - xml-name-validator: "npm:^4.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10/a4cdcff5b07eed87da90b146b82936321533b5efe8124492acf7160ebd5b9cf2b3c2435683592bf1cffb479615245756efb6c173effc1906f845a86ed22af985 - languageName: node - linkType: hard - -"jsesc@npm:^3.0.2": - version: 3.0.2 - resolution: "jsesc@npm:3.0.2" - bin: - jsesc: bin/jsesc - checksum: 10/8e5a7de6b70a8bd71f9cb0b5a7ade6a73ae6ab55e697c74cc997cede97417a3a65ed86c36f7dd6125fe49766e8386c845023d9e213916ca92c9dfdd56e2babf3 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c - languageName: node - linkType: hard - -"json-parse-better-errors@npm:^1.0.1": - version: 1.0.2 - resolution: "json-parse-better-errors@npm:1.0.2" - checksum: 10/5553232045359b767b0f2039a6777fede1a8d7dca1a0ffb1f9ef73a7519489ae7f566b2e040f2b4c38edb8e35e37ae07af7f0a52420902f869ee0dbf5dc6c784 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 10/5f3a99009ed5f2a5a67d06e2f298cc97bc86d462034173308156f15b43a6e850be8511dc204b9b94566305da2947f7d90289657237d210351a39059ff9d666cf - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 10/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10/12786c2e2f22c27439e6db0532ba321f1d0617c27ad8cb1c352a0e9249a50182fd1ba8b52a18899291604b0c32eafa8afd09e51203f19109a0537f68db2b652d - languageName: node - linkType: hard - -"json-stringify-pretty-compact@npm:^2.0.0": - version: 2.0.0 - resolution: "json-stringify-pretty-compact@npm:2.0.0" - checksum: 10/08f2725eef0a37bfd554aaa1ce551bc973e13f2c3dc86dd40b10ae6c08b3851b84946db672877e994e1fd1d904a578941c176609864e4f1a48b6d8f51fc2ac5f - languageName: node - linkType: hard - -"json5@npm:^2.2.2, json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da - languageName: node - linkType: hard - -"jsonc-parser@npm:^3.2.0": - version: 3.3.1 - resolution: "jsonc-parser@npm:3.3.1" - checksum: 10/9b0dc391f20b47378f843ef1e877e73ec652a5bdc3c5fa1f36af0f119a55091d147a86c1ee86a232296f55c929bba174538c2bf0312610e0817a22de131cc3f4 - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10/03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flat: "npm:^1.3.1" - object.assign: "npm:^4.1.4" - object.values: "npm:^1.1.6" - checksum: 10/b61d44613687dfe4cc8ad4b4fbf3711bf26c60b8d5ed1f494d723e0808415c59b24a7c0ed8ab10736a40ff84eef38cbbfb68b395e05d31117b44ffc59d31edfc - languageName: node - linkType: hard - -"keyv@npm:^4.5.3": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 - languageName: node - linkType: hard - -"kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: 10/0c0ecaf00a5c6173d25059c7db2113850b5457016dfa1d0e3ef26da4704fbb186b4938d7611246d86f0ddf1bccf26828daa5877b1f232a65e7373d0122a83e7f - languageName: node - linkType: hard - -"klona@npm:^2.0.6": - version: 2.0.6 - resolution: "klona@npm:2.0.6" - checksum: 10/ed7e2c9af58cb646e758e60b75dec24bf72466066290f78c515a2bae23a06fa280f11ff3210c43b94a18744954aa5358f9d46583d5e4c36da073ecc3606355c4 - languageName: node - linkType: hard - -"lerc@npm:^3.0.0": - version: 3.0.0 - resolution: "lerc@npm:3.0.0" - checksum: 10/25c9c259b2211ac252910bacd2a85310755d0291644c37ffcdbf96725465bf5fd22e61946172e7fb214ac4aafcbc2885e1016686079a5acddda97dcd000526ad - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 10/638401d534585261b6003db9d99afd244dfe82d75ddb6db5c0df412842d5ab30b2ef18de471aaec70fe69a46f17b4ae3c7f01d8a4e6580ef7adb9f4273ad1e55 - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10/2e4720ff79f21ae08d42374b0a5c2f664c5be8b6c8f565bb4e1315c96ed3a8acaa9de788ffed82d7f2378cf36958573de07ef92336cb5255ed74d08b8318c9ee - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.1.6 - resolution: "lines-and-columns@npm:1.1.6" - checksum: 10/198a5436b1fa5cf703bae719c01c686b076f0ad7e1aafd95a58d626cabff302dc0414822126f2f80b58a8c3d66cda8a7b6da064f27130f87e1d3506d6dfd0d68 - languageName: node - linkType: hard - -"livereload-js@npm:^2.3.0": - version: 2.4.0 - resolution: "livereload-js@npm:2.4.0" - checksum: 10/24866a41647d922a1002756d06961099bff945c2e6f2f3af35aa8e1ebd2610149fdc7dfe2104980c481e4c758620dff02a8dec11ec0bc1ef762993729b117504 - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: 10/555ae002869c1e8942a0efd29a99b50a0ce6c3296efea95caf48f00d7f6f7f659203ed6613688b6181aa81dc76de3e65ece43094c6dffef3127fe1a84d973cd3 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 10/83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 10/72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 10/d0ea2dd0097e6201be083865d50c3fb54fbfbdb247d9cc5950e086c991f448b7ab0cdab0d57eacccb43473d3f2acd21e134db39f22dac2d6c9ba6bf26978e3d6 - languageName: node - linkType: hard - -"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 - languageName: node - linkType: hard - -"lodash@npm:^4.1.1, lodash@npm:^4.17.13, lodash@npm:^4.17.4": - version: 4.17.15 - resolution: "lodash@npm:4.17.15" - checksum: 10/e3e43ed2f66761ade761883ba7662b8ddd753e79632c0bd064facf3b9bb4dcd3f08c5bf05b6c6eea005505c87984027605e7106f02d705a64d972c4be302918f - languageName: node - linkType: hard - -"long@npm:^5.0.0": - version: 5.2.3 - resolution: "long@npm:5.2.3" - checksum: 10/9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: "npm:^3.0.0 || ^4.0.0" - bin: - loose-envify: cli.js - checksum: 10/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: "npm:^3.0.2" - checksum: 10/951d2673dcc64a7fb888bf3d13bc2fdf923faca97d89cdb405ba3dfff77e2b26e5798d405e78fcd7094c9e7b8b4dab2ddc5a4f8a11928af24a207b7c738ca3f8 - languageName: node - linkType: hard - -"lz-string@npm:^1.5.0": - version: 1.5.0 - resolution: "lz-string@npm:1.5.0" - bin: - lz-string: bin/bin.js - checksum: 10/e86f0280e99a8d8cd4eef24d8601ddae15ce54e43ac9990dfcb79e1e081c255ad24424a30d78d2ad8e51a8ce82a66a930047fed4b4aa38c6f0b392ff9300edfc - languageName: node - linkType: hard - -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 10/bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a - languageName: node - linkType: hard - -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" - dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" - http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - proc-log: "npm:^4.2.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10/11bae5ad6ac59b654dbd854f30782f9de052186c429dfce308eda42374528185a100ee40ac9ffdc36a2b6c821ecaba43913e4730a12f06f15e895ea9cb23fa59 - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: 10/4c66ddfc654537333da952c084f507fa4c30c707b1635344eb35be894d797ba44c901a9cebe914aa29a7f61357543ba09b09dddbd7f65b4aee756b450f169f40 - languageName: node - linkType: hard - -"map-age-cleaner@npm:^0.1.3": - version: 0.1.3 - resolution: "map-age-cleaner@npm:0.1.3" - dependencies: - p-defer: "npm:^1.0.0" - checksum: 10/cb2804a5bcb3cbdfe4b59066ea6d19f5e7c8c196cd55795ea4c28f792b192e4c442426ae52524e5e1acbccf393d3bddacefc3d41f803e66453f6c4eda3650bc1 - languageName: node - linkType: hard - -"mapbox-to-css-font@npm:^2.4.1": - version: 2.4.5 - resolution: "mapbox-to-css-font@npm:2.4.5" - checksum: 10/62179d67e5532e5522ce15f0dce94936ceb29c1872684850eaa2195d103cefb9e0a3f7ce16a855ed5caf4ed6d0f0baccd3f34c41e480b7ffdf0ed1824c0c1f40 - languageName: node - linkType: hard - -"marked-mangle@npm:1.1.9": - version: 1.1.9 - resolution: "marked-mangle@npm:1.1.9" - peerDependencies: - marked: ">=4 <15" - checksum: 10/745e44bea9b52bc9c52e41f5d2b146eb21072a92ddf85b4b2f210b091da93fcbf2f5447b02f849fd19e79224bdca385462a42b96882493778d1d0ff0a3da9a8c - languageName: node - linkType: hard - -"marked@npm:12.0.2": - version: 12.0.2 - resolution: "marked@npm:12.0.2" - bin: - marked: bin/marked.js - checksum: 10/24d4fc58d37c1779197fa7f93c504d8c71d4df54eb69cbbc14a55ba2a8e2ad83d723801fc25452c21ce74b38a483c5863c53449f130253a597be9e9c1d3e7e2b - languageName: node - linkType: hard - -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 10/64c629fcf14807e30d6dc79f97cbcafa16db066f53a294299f3932b3beb0eb0d1386d3a7fe408fc67348c449a4e0999360c894ba4c81eb209d7be4e36503de0e - languageName: node - linkType: hard - -"mem@npm:^8.0.0": - version: 8.1.1 - resolution: "mem@npm:8.1.1" - dependencies: - map-age-cleaner: "npm:^0.1.3" - mimic-fn: "npm:^3.1.0" - checksum: 10/5f22117d8a24775f0a61d333bd7fdbe19f7a9f8dc8ccee66f57ba98aeb4ed67e83cc130c482b78fd6a39887547749d8fe376fc44ca7efa81579ad9d0c0fa5acd - languageName: node - linkType: hard - -"memfs@npm:^3.4.1": - version: 3.5.3 - resolution: "memfs@npm:3.5.3" - dependencies: - fs-monkey: "npm:^1.0.4" - checksum: 10/7c9cdb453a6b06e87f11e2dbe6c518fd3c1c1581b370ffa24f42f3fd5b1db8c2203f596e43321a0032963f3e9b66400f2c3cf043904ac496d6ae33eafd0878fe - languageName: node - linkType: hard - -"memoize-one@npm:>=3.1.1 <6": - version: 5.2.1 - resolution: "memoize-one@npm:5.2.1" - checksum: 10/b7141dc148b5c6fdd51e77ecf0421fd2581681eb8756e0b3dfbd4fe765b5e2b5a6bc90214bb6f19a96b6aed44de17eda3407142a7be9e24ccd0774bbd9874d1b - languageName: node - linkType: hard - -"memoize-one@npm:^4.0.0": - version: 4.1.0 - resolution: "memoize-one@npm:4.1.0" - checksum: 10/846c410f5f6582eead6da37aaaf08d747c6f37de9dd0feaa244b2353818ffc1d7c9c93c4b9b09bc8c7e5963d60962db86da63e39ec940dedd355ba080c6dc7fc - languageName: node - linkType: hard - -"memoize-one@npm:^6.0.0": - version: 6.0.0 - resolution: "memoize-one@npm:6.0.0" - checksum: 10/28feaf7e9a870efef1187df110b876ce42deaf86c955f4111d72d23b96e44eed573469316e6ad0d2cc7fa3b1526978215617b126158015f957242c7493babca9 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 10/6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"micro-memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "micro-memoize@npm:4.1.2" - checksum: 10/027e90c3147c97c07224440ea50ede27eb7d888149e4925820397b466d16efc525f5ec3981e4cadec3258a8d36dfd5e7e7c8e660879fbe2e47106785be9bc570 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.8 - resolution: "micromatch@npm:4.0.8" - dependencies: - braces: "npm:^3.0.3" - picomatch: "npm:^2.3.1" - checksum: 10/6bf2a01672e7965eb9941d1f02044fad2bd12486b5553dc1116ff24c09a8723157601dc992e74c911d896175918448762df3b3fd0a6b61037dd1a9766ddfbf58 - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: 10/d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"mimic-fn@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-fn@npm:3.1.0" - checksum: 10/f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: 10/bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 - languageName: node - linkType: hard - -"mini-create-react-context@npm:^0.4.0": - version: 0.4.1 - resolution: "mini-create-react-context@npm:0.4.1" - dependencies: - "@babel/runtime": "npm:^7.12.1" - tiny-warning: "npm:^1.0.3" - peerDependencies: - prop-types: ^15.0.0 - react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10/c816c785b7dccd67fdfa6a5edc673363b11845b6abca8a9d9f3ffa74520266d979b56f5db0dfc62ed912a90553c15be28c816311fc9c7856ab66a81d461d50e6 - languageName: node - linkType: hard - -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 - languageName: node - linkType: hard - -"minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 - languageName: node - linkType: hard - -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10/c669948bec1373313aaa8f104b962a3ced9f45c49b26366a4b0ae27ccdfa9c5740d72c8a84d3f8623d7a61c5fc7afdfda44789008c078f61a62441142efc4a97 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950 - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.6": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: "npm:^1.2.6" - bin: - mkdirp: bin/cmd.js - checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2 - languageName: node - linkType: hard - -"moment-timezone@npm:0.5.45": - version: 0.5.45 - resolution: "moment-timezone@npm:0.5.45" - dependencies: - moment: "npm:^2.29.4" - checksum: 10/45e3793d44bea8e826c934a335ebf0b92c6d6dae562fdb59d8c45a16d5c11de4d6692b5fa7eebca969881f06b81b55f8535883bfbc727b597d601709fa5a2bb2 - languageName: node - linkType: hard - -"moment@npm:2.30.1, moment@npm:^2.29.4": - version: 2.30.1 - resolution: "moment@npm:2.30.1" - checksum: 10/ae42d876d4ec831ef66110bdc302c0657c664991e45cf2afffc4b0f6cd6d251dde11375c982a5c0564ccc0fa593fc564576ddceb8c8845e87c15f58aa6baca69 - languageName: node - linkType: hard - -"moment@npm:2.x": - version: 2.26.0 - resolution: "moment@npm:2.26.0" - checksum: 10/39423430d0244e937ece6d08545055122de9ed47da13c04be7b98fc79d5e5f4cfa36252351feffb4dfa3a3969b81e37334127d4081796f79adbdbd5d66e2f8f4 - languageName: node - linkType: hard - -"monaco-editor@npm:0.34.1": - version: 0.34.1 - resolution: "monaco-editor@npm:0.34.1" - checksum: 10/50cde6f68f27cd66fbaadb7efe0e6ce46748e4bb552ddaa84451fbda18e5ff970a1fa79371c04618927c1f6348839747e3d4804fe383040bad2137527f8a38e4 - languageName: node - linkType: hard - -"ms@npm:^2.1.1": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nano-css@npm:^5.6.2": - version: 5.6.2 - resolution: "nano-css@npm:5.6.2" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - css-tree: "npm:^1.1.2" - csstype: "npm:^3.1.2" - fastest-stable-stringify: "npm:^2.0.2" - inline-style-prefixer: "npm:^7.0.1" - rtl-css-js: "npm:^1.16.1" - stacktrace-js: "npm:^2.0.2" - stylis: "npm:^4.3.0" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 10/6ed9f36957b19fc2dcf1644a853030cce70775bec3fed596cab9156063d522d5cb52cb1479117e4390acbe45b69321c9eb33915d96414aabaf09bff40497bb4a - languageName: node - linkType: hard - -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" - bin: - nanoid: bin/nanoid.cjs - checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 10/23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d - languageName: node - linkType: hard - -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 - languageName: node - linkType: hard - -"neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002 - languageName: node - linkType: hard - -"node-abort-controller@npm:^3.0.1": - version: 3.1.1 - resolution: "node-abort-controller@npm:3.1.1" - checksum: 10/0a2cdb7ec0aeaf3cb31e1ca0e192f5add48f1c5c9c9ed822129f9dddbd9432f69b7425982f94ce803c56a2104884530aa67cd57696e5774b2e5b8ec2f58de042 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^4.1.0" - semver: "npm:^7.3.5" - tar: "npm:^6.2.1" - which: "npm:^4.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10/41773093b1275751dec942b985982fd4e7a69b88cae719b868babcef3880ee6168aaec8dcaa8cd0b9fa7c84873e36cc549c6cac6a124ee65ba4ce1f1cc108cfe - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: 10/b7afc2b65e56f7035b1a2eec57ae0fbdee7d742b1cdcd0f4387562b6527a011ab1cbe9f64cc8b3cca61e3297c9637c8bf61cec2e6b8d3a711d4b5267dfafbe02 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: 10/241e5fa9556f1c12bafb83c6c3e94f8cf3d8f2f8f904906ecef6e10bcaa1d59aa61212d4651bec70052015fc54bd3fdcdbe7fc0f638a17e6685aa586c076ec4e - languageName: node - linkType: hard - -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" - dependencies: - abbrev: "npm:^2.0.0" - bin: - nopt: bin/nopt.js - checksum: 10/95a1f6dec8a81cd18cdc2fed93e6f0b4e02cf6bdb4501c848752c6e34f9883d9942f036a5e3b21a699047d8a448562d891e67492df68ec9c373e6198133337ae - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: "npm:^3.0.0" - checksum: 10/5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.2": - version: 2.2.13 - resolution: "nwsapi@npm:2.2.13" - checksum: 10/f7f30a236f2ee513ea8042f1a987481dc2b900167c47f7163882f0fcfe7ccb57b5c8daaf2c91008dc20a204fcd79e050aee25001433ad99990bbed5a8c74121c - languageName: node - linkType: hard - -"object-assign@npm:4.x, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561 - languageName: node - linkType: hard - -"object-is@npm:^1.0.1, object-is@npm:^1.1.5": - version: 1.1.6 - resolution: "object-is@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - checksum: 10/4f6f544773a595da21c69a7531e0e1d6250670f4e09c55f47eb02c516035cfcb1b46ceb744edfd3ecb362309dbccb6d7f88e43bf42e4d4595ac10a329061053a - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" - dependencies: - call-bind: "npm:^1.0.5" - define-properties: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - object-keys: "npm:^1.1.1" - checksum: 10/dbb22da4cda82e1658349ea62b80815f587b47131b3dd7a4ab7f84190ab31d206bbd8fe7e26ae3220c55b65725ac4529825f6142154211220302aa6b1518045d - languageName: node - linkType: hard - -"object.entries@npm:^1.1.6": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/2301918fbd1ee697cf6ff7cd94f060c738c0a7d92b22fd24c7c250e9b593642c9707ad2c44d339303c1439c5967d8964251cdfc855f7f6ec55db2dd79e8dc2a7 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.6": - version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/5b2e80f7af1778b885e3d06aeb335dcc86965e39464671adb7167ab06ac3b0f5dd2e637a90d8ebd7426d69c6f135a4753ba3dd7d0fe2a7030cf718dcb910fd92 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.2": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/797385577b3ef3c0d19333e03ed34bc7987978ae1ee1245069c9922e17d1128265187f729dc610260d03f8d418af26fcd7919b423793bf0af9099d9f08367d69 - languageName: node - linkType: hard - -"object.values@npm:^1.1.6": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/db2e498019c354428c5dd30d02980d920ac365b155fce4dcf63eb9433f98ccf0f72624309e182ce7cc227c95e45d474e1d483418e60de2293dd23fa3ebe34903 - languageName: node - linkType: hard - -"ol-mapbox-style@npm:^10.1.0": - version: 10.7.0 - resolution: "ol-mapbox-style@npm:10.7.0" - dependencies: - "@mapbox/mapbox-gl-style-spec": "npm:^13.23.1" - mapbox-to-css-font: "npm:^2.4.1" - ol: "npm:^7.3.0" - checksum: 10/a8ddbde5fad8fa0a677ec7789c0a2cf4aaa30231d0d6c52246336a9bad195df7f57f3048adddb6e601094e3d4ac346e27d4f7d5aded11d561a6fb9ca3b294789 - languageName: node - linkType: hard - -"ol@npm:7.4.0": - version: 7.4.0 - resolution: "ol@npm:7.4.0" - dependencies: - earcut: "npm:^2.2.3" - geotiff: "npm:^2.0.7" - ol-mapbox-style: "npm:^10.1.0" - pbf: "npm:3.2.1" - rbush: "npm:^3.0.1" - checksum: 10/c83698fddd02fdd497e92bffee7ca7d4059f64d28a0be7a7781981f129b6636cacbee894aed331a572f066fe1e56a4cf22861c51e1efddb7fbb58c4bf5606ece - languageName: node - linkType: hard - -"ol@npm:^7.3.0": - version: 7.5.2 - resolution: "ol@npm:7.5.2" - dependencies: - earcut: "npm:^2.2.3" - geotiff: "npm:^2.0.7" - ol-mapbox-style: "npm:^10.1.0" - pbf: "npm:3.2.1" - rbush: "npm:^3.0.1" - checksum: 10/0763a3972f7a6ae47c7c4a70b787a856f420a79a6dddd5bbbe738ac023bfbecf8ed157faf4e49dcd3052c366a13d0a920cdf3179bd54215f8c67d5cc991e14b1 - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: "npm:^2.1.0" - checksum: 10/e9fd0695a01cf226652f0385bf16b7a24153dbbb2039f764c8ba6d2306a8506b0e4ce570de6ad99c7a6eb49520743afdb66edd95ee979c1a342554ed49a9aadd - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.5" - checksum: 10/a8398559c60aef88d7f353a4f98dcdff6090a4e70f874c827302bf1213d9106a1c4d5fcb68dacb1feb3c30a04c4102f41047aa55d4c576b863d6fc876e001af6 - languageName: node - linkType: hard - -"p-defer@npm:^1.0.0": - version: 1.0.0 - resolution: "p-defer@npm:1.0.0" - checksum: 10/1d8fb7138a0ccebb65479160fd93f245303c06c977c976105d75838f7f504a9a6ef11b7e058f98b4c957a6a8df268c616da1ee339285d565f9e5ba00304e027b - languageName: node - linkType: hard - -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 10/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 10/7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 10/513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 10/1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: 10/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 10/58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 - languageName: node - linkType: hard - -"pako@npm:^2.0.4": - version: 2.1.0 - resolution: "pako@npm:2.1.0" - checksum: 10/38a04991d0ec4f4b92794a68b8c92bf7340692c5d980255c92148da96eb3e550df7a86a7128b5ac0c65ecddfe5ef3bbe9c6dab13e1bc315086e759b18f7c1401 - languageName: node - linkType: hard - -"papaparse@npm:5.4.1": - version: 5.4.1 - resolution: "papaparse@npm:5.4.1" - checksum: 10/5e6dc978187182ad2efa1d264ffe73d2042cd23b8fb1dcb0b0f5c8c7c772c11e3eb4e166fb0893880ed24529a96abe9065d704cc5b4cb96abf037413cfe43788 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-headers@npm:^2.0.2": - version: 2.0.5 - resolution: "parse-headers@npm:2.0.5" - checksum: 10/210b13bc0f99cf6f1183896f01de164797ac35b2720c9f1c82a3e2ceab256f87b9048e8e16a14cfd1b75448771f8379cd564bd1674a179ab0168c90005d4981b - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.0.0 - resolution: "parse-json@npm:5.0.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-better-errors: "npm:^1.0.1" - lines-and-columns: "npm:^1.1.6" - checksum: 10/bfe9108b5305a58f7e6575faaba2968e48e61ba3e784d6bf06d297f6127e00deb3d8161dd567e6988ddb5da50c8ff00f44197f917d63de070025bc2ce185c180 - languageName: node - linkType: hard - -"parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-even-better-errors: "npm:^2.3.0" - lines-and-columns: "npm:^1.1.6" - checksum: 10/62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" - dependencies: - entities: "npm:^4.4.0" - checksum: 10/3c86806bb0fb1e9a999ff3a4c883b1ca243d99f45a619a0898dbf021a95a0189ed955c31b07fe49d342b54e814f33f2c9d7489198e8630dacd5477d413ec5782 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.6": - version: 1.0.6 - resolution: "path-parse@npm:1.0.6" - checksum: 10/962a85dd384d68d469ec5ba4010df8f8f9b7e936ce603bbe3211476c5615feb3c2b1ca61211a78445fadc833f0b1a86ea6484c861035ec4ac93011ba9aff9a11 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-scurry@npm:^1.11.1": - version: 1.11.1 - resolution: "path-scurry@npm:1.11.1" - dependencies: - lru-cache: "npm:^10.2.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10/5e8845c159261adda6f09814d7725683257fcc85a18f329880ab4d7cc1d12830967eae5d5894e453f341710d5484b8fdbbd4d75181b4d6e1eb2f4dc7aeadc434 - languageName: node - linkType: hard - -"path-to-regexp@npm:^1.7.0": - version: 1.9.0 - resolution: "path-to-regexp@npm:1.9.0" - dependencies: - isarray: "npm:0.0.1" - checksum: 10/67f0f4823f7aab356523d93a83f9f8222bdd119fa0b27a8f8b587e8e6c9825294bb4ccd16ae619def111ff3fe5d15ff8f658cdd3b0d58b9c882de6fd15bc1b76 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10/5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"pbf@npm:3.2.1": - version: 3.2.1 - resolution: "pbf@npm:3.2.1" - dependencies: - ieee754: "npm:^1.1.12" - resolve-protobuf-schema: "npm:^2.1.0" - bin: - pbf: bin/pbf - checksum: 10/566a64424063b07f46d3e2cb2288094a60b0a45efea48fd4030f527143b0e9c611399ebd3a6fd56db51908f2006defef5e09a1b2a027db9481a59a41156a540c - languageName: node - linkType: hard - -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: 10/534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": - version: 1.1.0 - resolution: "picocolors@npm:1.1.0" - checksum: 10/a2ad60d94d185c30f2a140b19c512547713fb89b920d32cc6cf658fa786d63a37ba7b8451872c3d9fc34883971fb6e5878e07a20b60506e0bb2554dce9169ccb - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc - languageName: node - linkType: hard - -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10/d02dda76f4fec1cbdf395c36c11cf26f76a644f9f9a1bfa84d3167d0d3154d5289aacc72677aa20d599bb4a6937a471de1b65c995e2aea2d8687cbcd7e43ea5f - languageName: node - linkType: hard - -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: "npm:^4.0.0" - checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 - languageName: node - linkType: hard - -"portfinder@npm:^1.0.17": - version: 1.0.32 - resolution: "portfinder@npm:1.0.32" - dependencies: - async: "npm:^2.6.4" - debug: "npm:^3.2.7" - mkdirp: "npm:^0.5.6" - checksum: 10/842058052fb3c3da829589f3f44b13369cf504b16f6ab72fedec78a9438ac3fc53047f5c88a771511b17d6a94f50f83a94cef5fa625027b675d8f7241f7f2185 - languageName: node - linkType: hard - -"possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: 10/8ed3e96dfeea1c5880c1f4c9cb707e5fb26e8be22f14f82ef92df20fd2004e635c62ba47fbe8f2bb63bfd80dac1474be2fb39798da8c2feba2815435d1f749af - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.1.0": - version: 3.1.0 - resolution: "postcss-modules-extract-imports@npm:3.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10/00bfd3aff045fc13ded8e3bbfd8dfc73eff9a9708db1b2a132266aef6544c8d2aee7a5d7e021885f6f9bbd5565a9a9ab52990316e21ad9468a2534f87df8e849 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.5": - version: 4.0.5 - resolution: "postcss-modules-local-by-default@npm:4.0.5" - dependencies: - icss-utils: "npm:^5.0.0" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10/b08b01aa7f3d1a80bb1a5508ba3a208578fdd2fb6e54e5613fac244a4e014aa7ca639a614859fec93b399e5a6f86938f7690ca60f7e57c4e35b75621d3c07734 - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.2.0": - version: 3.2.0 - resolution: "postcss-modules-scope@npm:3.2.0" - dependencies: - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.1.0 - checksum: 10/17c293ad13355ba456498aa5815ddb7a4a736f7b781d89b294e1602a53b8d0e336131175f82460e290a0d672642f9039540042edc361d9000b682c44e766925b - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: "npm:^5.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10/18021961a494e69e65da9e42b4436144c9ecee65845c9bfeff2b7a26ea73d60762f69e288be8bb645447965b8fd6b26a264771136810dc0172bd31b940aee4f2 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.1.2 - resolution: "postcss-selector-parser@npm:6.1.2" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10/190034c94d809c115cd2f32ee6aade84e933450a43ec3899c3e78e7d7b33efd3a2a975bb45d7700b6c5b196c06a7d9acf3f1ba6f1d87032d9675a29d8bca1dd3 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 10/e4e4486f33b3163a606a6ed94f9c196ab49a37a7a7163abfcd469e5f113210120d70b8dd5e33d64636f41ad52316a3725655421eb9a1094f1bcab1db2f555c62 - languageName: node - linkType: hard - -"postcss@npm:^8.4.33": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.1.0" - source-map-js: "npm:^1.2.1" - checksum: 10/f2b50ba9b6fcb795232b6bb20de7cdc538c0025989a8ed9c4438d1960196ba3b7eaff41fdb1a5c701b3504651ea87aeb685577707f0ae4d6ce6f3eae5df79a81 - languageName: node - linkType: hard - -"prefix-style@npm:2.0.1": - version: 2.0.1 - resolution: "prefix-style@npm:2.0.1" - checksum: 10/26503ee6629e8a5d6b1de75e4a6529bdcd17767d35afb4763c4985034d15a625def95831c94cb063bf4bfa7f6be430c9b41f7af8e0625017365a52510a6e25fc - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10/0b9d2c76801ca652a7f64892dd37b7e3fab149a37d2424920099bf894acccc62abb4424af2155ab36dea8744843060a2d8ddc983518d0b1e22265a22324b72ed - languageName: node - linkType: hard - -"prettier@npm:^2.8.7": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24 - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.2": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" - dependencies: - ansi-regex: "npm:^5.0.1" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^17.0.1" - checksum: 10/248990cbef9e96fb36a3e1ae6b903c551ca4ddd733f8d0912b9cc5141d3d0b3f9f8dfb4d799fb1c6723382c9c2083ffbfa4ad43ff9a0e7535d32d41fd5f01da6 - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" - dependencies: - "@jest/schemas": "npm:^29.6.3" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 10/dea96bc83c83cd91b2bfc55757b6b2747edcaac45b568e46de29deee80742f17bc76fe8898135a70d904f4928eafd8bb693cd1da4896e8bdd3c5e82cadf1d2bb - languageName: node - linkType: hard - -"prismjs@npm:1.29.0": - version: 1.29.0 - resolution: "prismjs@npm:1.29.0" - checksum: 10/2080db382c2dde0cfc7693769e89b501ef1bfc8ff4f8d25c07fd4c37ca31bc443f6133d5b7c145a73309dc396e829ddb7cc18560026d862a887ae08864ef6b07 - languageName: node - linkType: hard - -"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 - languageName: node - linkType: hard - -"prompts@npm:^2.0.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 10/c52536521a4d21eff4f2f2aa4572446cad227464066365a7167e52ccf8d9839c099f9afec1aba0eed3d5a2514b3e79e0b3e7a1dc326b9acde6b75d27ed74b1a9 - languageName: node - linkType: hard - -"prop-types@npm:15.x, prop-types@npm:^15.5.10, prop-types@npm:^15.5.8, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2": - version: 15.7.2 - resolution: "prop-types@npm:15.7.2" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.8.1" - checksum: 10/1d2b6462559e78e4ab15775b5f9ca21bbdcf94c0c6597624a407f9f5ce2cac8c02997bc59cc517b54f64aa1e95e5134c86755ee99a24659bc023d7b2b3096e15 - languageName: node - linkType: hard - -"prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 10/7d959caec002bc964c86cdc461ec93108b27337dabe6192fb97d69e16a0c799a03462713868b40749bfc1caf5f57ef80ac3e4ffad3effa636ee667582a75e2c0 - languageName: node - linkType: hard - -"protobufjs@npm:^7.3.0": - version: 7.4.0 - resolution: "protobufjs@npm:7.4.0" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.2" - "@protobufjs/base64": "npm:^1.1.2" - "@protobufjs/codegen": "npm:^2.0.4" - "@protobufjs/eventemitter": "npm:^1.1.0" - "@protobufjs/fetch": "npm:^1.1.0" - "@protobufjs/float": "npm:^1.0.2" - "@protobufjs/inquire": "npm:^1.1.0" - "@protobufjs/path": "npm:^1.1.2" - "@protobufjs/pool": "npm:^1.1.0" - "@protobufjs/utf8": "npm:^1.1.0" - "@types/node": "npm:>=13.7.0" - long: "npm:^5.0.0" - checksum: 10/408423506610f70858d7593632f4a6aa4f05796c90fd632be9b9252457c795acc71aa6d3b54bb7f48a890141728fee4ca3906723ccea6c202ad71f21b3879b8b - languageName: node - linkType: hard - -"protocol-buffers-schema@npm:^3.3.1": - version: 3.6.0 - resolution: "protocol-buffers-schema@npm:3.6.0" - checksum: 10/55a1caed123fb2385eae5ea4770dc36b3017d1fe2005ffb1ef20c97dadf43a91876238ebc23bc240ef1f8501d054bdd9d12992796e9abed18ddf958e4f942eea - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 - languageName: node - linkType: hard - -"pure-rand@npm:^6.0.0": - version: 6.1.0 - resolution: "pure-rand@npm:6.1.0" - checksum: 10/256aa4bcaf9297256f552914e03cbdb0039c8fe1db11fa1e6d3f80790e16e563eb0a859a1e61082a95e224fc0c608661839439f8ecc6a3db4e48d46d99216ee4 - languageName: node - linkType: hard - -"qs@npm:^6.4.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" - dependencies: - side-channel: "npm:^1.0.6" - checksum: 10/f548b376e685553d12e461409f0d6e5c59ec7c7d76f308e2a888fd9db3e0c5e89902bedd0754db3a9038eda5f27da2331a6f019c8517dc5e0a16b3c9a6e9cef8 - languageName: node - linkType: hard - -"query-string@npm:^9.1.0": - version: 9.1.0 - resolution: "query-string@npm:9.1.0" - dependencies: - decode-uri-component: "npm:^0.4.1" - filter-obj: "npm:^5.1.0" - split-on-first: "npm:^3.0.0" - checksum: 10/87a0ea851f62d6abe5c6c60bc0114e5df1af73f6dbdfd3086ab82624330cafe92310029d834ee6117d92e3de877f2959cb634c31a55a1aef4acddaa11ad8be20 - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b - languageName: node - linkType: hard - -"quick-lru@npm:^6.1.1": - version: 6.1.2 - resolution: "quick-lru@npm:6.1.2" - checksum: 10/93e6f13bc038b619646792e240a8e2630be0aaeaf877bdda6e9357359314ddef04255876f981a4b6c01a22156bc40282b26f0ea5f81633423093db3c290679f1 - languageName: node - linkType: hard - -"quickselect@npm:^2.0.0": - version: 2.0.0 - resolution: "quickselect@npm:2.0.0" - checksum: 10/ed2e78431050d223fb75da20ee98011aef1a03f7cb04e1a32ee893402e640be3cfb76d72e9dbe01edf3bb457ff6a62e5c2d85748424d1aa531f6ba50daef098c - languageName: node - linkType: hard - -"raf-schd@npm:^4.0.3": - version: 4.0.3 - resolution: "raf-schd@npm:4.0.3" - checksum: 10/45514041c5ad31fa96aef3bb3c572a843b92da2f2cd1cb4a47c9ad58e48761d3a4126e18daa32b2bfa0bc2551a42d8f324a0e40e536cb656969929602b4e8b58 - languageName: node - linkType: hard - -"raf@npm:^3.1.0, raf@npm:^3.4.0, raf@npm:^3.4.1": - version: 3.4.1 - resolution: "raf@npm:3.4.1" - dependencies: - performance-now: "npm:^2.1.0" - checksum: 10/4c4b4c826b09d2aec6ca809f1a3c3c12136e7ec8d13fbb91f495dd2c99cd43345240e003da3bfd16036a432e635049fc6d9f69f9187f5f22ea88bb146ec75881 - languageName: node - linkType: hard - -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc - languageName: node - linkType: hard - -"raw-body@npm:~1.1.0": - version: 1.1.7 - resolution: "raw-body@npm:1.1.7" - dependencies: - bytes: "npm:1" - string_decoder: "npm:0.10" - checksum: 10/75ab1815ac54992abccccdffb27bd9ad9f5b6f5fb66e740474ad0d1bd3c1425e407b2be5eb34e0bef3da2c66bfa6a2c2b77498596f5b9999ead2d449fff0226f - languageName: node - linkType: hard - -"rbush@npm:^3.0.1": - version: 3.0.1 - resolution: "rbush@npm:3.0.1" - dependencies: - quickselect: "npm:^2.0.0" - checksum: 10/489e2e7d9889888ad533518f194e3ab7cc19b1f1365a38ee99fbdda542a47f41cda7dc89870180050f4d04ea402e9ff294e1d767d03c0f1694e0028b7609eec9 - languageName: node - linkType: hard - -"rc-align@npm:^2.4.0": - version: 2.4.5 - resolution: "rc-align@npm:2.4.5" - dependencies: - babel-runtime: "npm:^6.26.0" - dom-align: "npm:^1.7.0" - prop-types: "npm:^15.5.8" - rc-util: "npm:^4.0.4" - checksum: 10/6a82f7b47dda397b90c7b6d41e5500b9e3e427891d15a54f95708abf31a8aba19d882bd9e5ab42f4979b455aa2236b96cf6403152507bcd1fd7663be08a0ceb5 - languageName: node - linkType: hard - -"rc-animate@npm:2.x": - version: 2.11.1 - resolution: "rc-animate@npm:2.11.1" - dependencies: - babel-runtime: "npm:6.x" - classnames: "npm:^2.2.6" - css-animation: "npm:^1.3.2" - prop-types: "npm:15.x" - raf: "npm:^3.4.0" - rc-util: "npm:^4.15.3" - react-lifecycles-compat: "npm:^3.0.4" - checksum: 10/afb54ad896c9d50af212ae7a56a216b47b38238a4e8e187437fe965c2cf100f1ca82668ed90d38dcd3b0e3ced53f54383e417af09c6dc09f6db0f78cba2aa9e4 - languageName: node - linkType: hard - -"rc-cascader@npm:3.27.0": - version: 3.27.0 - resolution: "rc-cascader@npm:3.27.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - array-tree-filter: "npm:^2.1.0" - classnames: "npm:^2.3.1" - rc-select: "npm:~14.15.0" - rc-tree: "npm:~5.8.1" - rc-util: "npm:^5.37.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/ed0fa47131047097d08df341250bf0e3a5c01704d2a8a44ef7385aacc29ccc9aa8a60c05b3c102eb199593fa117ea9e595b36d7ab6c5ce4bf0d2917013b360a3 - languageName: node - linkType: hard - -"rc-drawer@npm:7.2.0": - version: 7.2.0 - resolution: "rc-drawer@npm:7.2.0" - dependencies: - "@babel/runtime": "npm:^7.23.9" - "@rc-component/portal": "npm:^1.1.1" - classnames: "npm:^2.2.6" - rc-motion: "npm:^2.6.1" - rc-util: "npm:^5.38.1" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/1c9c7e5a00bd341a996684e5e288e273fee5083c8daf37e61a5ef5db5204df8aeaf48bcb67d89d01cab4d3c484bcf4d73af257a2d8de2dd71a757fa9cabaed3c - languageName: node - linkType: hard - -"rc-motion@npm:^2.0.0, rc-motion@npm:^2.0.1, rc-motion@npm:^2.6.1": - version: 2.9.3 - resolution: "rc-motion@npm:2.9.3" - dependencies: - "@babel/runtime": "npm:^7.11.1" - classnames: "npm:^2.2.1" - rc-util: "npm:^5.43.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/7468588fdcd49d707a5c4ad071fe2bbea82c704a48e639af7437655a523f35d80ee34cc290d8c7daf4c211fa6d2a27826d6d30eaede1accf8e384b4e61582ff6 - languageName: node - linkType: hard - -"rc-overflow@npm:^1.3.1": - version: 1.3.2 - resolution: "rc-overflow@npm:1.3.2" - dependencies: - "@babel/runtime": "npm:^7.11.1" - classnames: "npm:^2.2.1" - rc-resize-observer: "npm:^1.0.0" - rc-util: "npm:^5.37.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/a35d6f035de9e5b71f5762ddaf9757770fadab7d5f5e6bf0451346cffb06027e9de75a8104ca782c71e381f55552588a350905a61083cd23d2fb6f24e2807007 - languageName: node - linkType: hard - -"rc-resize-observer@npm:^1.0.0, rc-resize-observer@npm:^1.3.1": - version: 1.4.0 - resolution: "rc-resize-observer@npm:1.4.0" - dependencies: - "@babel/runtime": "npm:^7.20.7" - classnames: "npm:^2.2.1" - rc-util: "npm:^5.38.0" - resize-observer-polyfill: "npm:^1.5.1" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/20af15f915f55f8e046402a209e0de30ecbf720c9a6131aa9d9451f77af9d837fd79dad9218cbbffe200f5d2503a2c03525b1eb38b5c6c21aed2827d535c1e5a - languageName: node - linkType: hard - -"rc-select@npm:~14.15.0": - version: 14.15.2 - resolution: "rc-select@npm:14.15.2" - dependencies: - "@babel/runtime": "npm:^7.10.1" - "@rc-component/trigger": "npm:^2.1.1" - classnames: "npm:2.x" - rc-motion: "npm:^2.0.1" - rc-overflow: "npm:^1.3.1" - rc-util: "npm:^5.16.1" - rc-virtual-list: "npm:^3.5.2" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 10/707d9de38aaf83063ede754a925b56d6f02740197a3bed93f886c132ce797321d9e70a2fe32cff0546c54d9a11414d6d2c8fc1f914ac665fa11ad2b30a08bc85 - languageName: node - linkType: hard - -"rc-slider@npm:10.6.2": - version: 10.6.2 - resolution: "rc-slider@npm:10.6.2" - dependencies: - "@babel/runtime": "npm:^7.10.1" - classnames: "npm:^2.2.5" - rc-util: "npm:^5.36.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/ee5ec34fe940487a44cb03e89abf4199cbae990a334756fa9536a158d3a790cb7c1ebf321fc8048050a0cefa86138e097eb11bcc135bdb10db287b0738370790 - languageName: node - linkType: hard - -"rc-time-picker@npm:^3.7.3": - version: 3.7.3 - resolution: "rc-time-picker@npm:3.7.3" - dependencies: - classnames: "npm:2.x" - moment: "npm:2.x" - prop-types: "npm:^15.5.8" - raf: "npm:^3.4.1" - rc-trigger: "npm:^2.2.0" - react-lifecycles-compat: "npm:^3.0.4" - checksum: 10/236ba0dd1b1cee4dd398d2542c251a7e0da21b31d3390a23c45cc7f2ea266cfddd1f0b7f681fe205f2d92edaa72771cb087505790b5124eb0ca31668feb74da5 - languageName: node - linkType: hard - -"rc-tooltip@npm:6.2.0": - version: 6.2.0 - resolution: "rc-tooltip@npm:6.2.0" - dependencies: - "@babel/runtime": "npm:^7.11.2" - "@rc-component/trigger": "npm:^2.0.0" - classnames: "npm:^2.3.1" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/2be8fd3da8666df1d83485e5532e11eacf4dd3686efed9b4f0bc78caeb647196cac62104e54b9ce5dbc3051a9df70e07e54557f3273b632bb474a73c8bca0a2d - languageName: node - linkType: hard - -"rc-tree@npm:~5.8.1": - version: 5.8.8 - resolution: "rc-tree@npm:5.8.8" - dependencies: - "@babel/runtime": "npm:^7.10.1" - classnames: "npm:2.x" - rc-motion: "npm:^2.0.1" - rc-util: "npm:^5.16.1" - rc-virtual-list: "npm:^3.5.1" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 10/5bcfcf1e82291a930304012655eb59adc348fe8b8d2d4f37660855ca03ba226f1c01bd17c9891757ccc9636e5872253249ec01d459ce690c6c54dff9401df3b6 - languageName: node - linkType: hard - -"rc-trigger@npm:^2.2.0": - version: 2.6.5 - resolution: "rc-trigger@npm:2.6.5" - dependencies: - babel-runtime: "npm:6.x" - classnames: "npm:^2.2.6" - prop-types: "npm:15.x" - rc-align: "npm:^2.4.0" - rc-animate: "npm:2.x" - rc-util: "npm:^4.4.0" - react-lifecycles-compat: "npm:^3.0.4" - checksum: 10/a3ed5f0c453a37ab00fce302e9f40daa64870eb001576a3409a94550802af1e01cbd7b050b3adf7225af03e82e2070d095477957fcd07209ee32602a2f3fba31 - languageName: node - linkType: hard - -"rc-util@npm:^4.0.4, rc-util@npm:^4.15.3, rc-util@npm:^4.4.0": - version: 4.20.7 - resolution: "rc-util@npm:4.20.7" - dependencies: - add-dom-event-listener: "npm:^1.1.0" - prop-types: "npm:^15.5.10" - react-is: "npm:^16.12.0" - react-lifecycles-compat: "npm:^3.0.4" - shallowequal: "npm:^1.1.0" - checksum: 10/a0e15002641a8be5134a2532a9eb4663763eff760a1a854c5018b862d0e114deae93a7c21f307db9c21f6276c6cfe4573ab95209bd56c19301343b4e94ff4ea5 - languageName: node - linkType: hard - -"rc-util@npm:^5.16.1, rc-util@npm:^5.24.4, rc-util@npm:^5.36.0, rc-util@npm:^5.37.0, rc-util@npm:^5.38.0, rc-util@npm:^5.38.1, rc-util@npm:^5.43.0": - version: 5.43.0 - resolution: "rc-util@npm:5.43.0" - dependencies: - "@babel/runtime": "npm:^7.18.3" - react-is: "npm:^18.2.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/6d5be9d79182c6b4c5a033ad6517b2940d3d2ac42a8e77ef5735591d182f8236f61bc7628d61e82a122d2046ec849462f3fe57c08d3a2a20279646785c34ec4a - languageName: node - linkType: hard - -"rc-virtual-list@npm:^3.5.1, rc-virtual-list@npm:^3.5.2": - version: 3.14.8 - resolution: "rc-virtual-list@npm:3.14.8" - dependencies: - "@babel/runtime": "npm:^7.20.0" - classnames: "npm:^2.2.6" - rc-resize-observer: "npm:^1.0.0" - rc-util: "npm:^5.36.0" - peerDependencies: - react: ">=16.9.0" - react-dom: ">=16.9.0" - checksum: 10/4f37f6adef15d5aeb15120d83ef34ecc73aae0ae274552e2062ef1d8f0b76073a3baa2fe4f7354da94e6c51920f5cc44d7a6c00cc54f80b8eff49353356e132a - languageName: node - linkType: hard - -"react-calendar@npm:4.8.0": - version: 4.8.0 - resolution: "react-calendar@npm:4.8.0" - dependencies: - "@wojtekmaj/date-utils": "npm:^1.1.3" - clsx: "npm:^2.0.0" - get-user-locale: "npm:^2.2.1" - prop-types: "npm:^15.6.0" - warning: "npm:^4.0.0" - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10/26a58d9bbe9b1bbe1201612628d0f6bdeec0355ed3730013d066b9e87adbbee4b6f3f1c83352978c0e2f317d8d32ac31ac2cbb3c6f83833bef0ba047c5bb6907 - languageName: node - linkType: hard - -"react-colorful@npm:5.6.1": - version: 5.6.1 - resolution: "react-colorful@npm:5.6.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10/3e02ba013454818d0c323949bd961fb2c19ac18130dfc67a4032aa5b03787c5ffe7ff159c4b97dc3475072d576828ca0c4b8e8ce85b55eaf484180596cdf0403 - languageName: node - linkType: hard - -"react-custom-scrollbars-2@npm:4.5.0": - version: 4.5.0 - resolution: "react-custom-scrollbars-2@npm:4.5.0" - dependencies: - dom-css: "npm:^2.0.0" - prop-types: "npm:^15.5.10" - raf: "npm:^3.1.0" - peerDependencies: - react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10/4e5e67032a254c6fbfc2157c8c9b28b4285a41372d458a41fa6756777e224f692ae842488e51cb089b55b83625809aed0eb403026b8a8122a7dcf667637b21fd - languageName: node - linkType: hard - -"react-dom@npm:18.2.0": - version: 18.2.0 - resolution: "react-dom@npm:18.2.0" - dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.0" - peerDependencies: - react: ^18.2.0 - checksum: 10/ca5e7762ec8c17a472a3605b6f111895c9f87ac7d43a610ab7024f68cd833d08eda0625ce02ec7178cc1f3c957cf0b9273cdc17aa2cd02da87544331c43b1d21 - languageName: node - linkType: hard - -"react-dropzone@npm:14.2.3": - version: 14.2.3 - resolution: "react-dropzone@npm:14.2.3" - dependencies: - attr-accept: "npm:^2.2.2" - file-selector: "npm:^0.6.0" - prop-types: "npm:^15.8.1" - peerDependencies: - react: ">= 16.8 || 18.0.0" - checksum: 10/34cf1758a896795b579adab5f9cdc144330577ab1826a0b66ff9daa8c60a80ed6b31b8f989647664f2548cfe00b336e9c31a2f3dd8de43111c8318fcc89b279c - languageName: node - linkType: hard - -"react-from-dom@npm:^0.6.2": - version: 0.6.2 - resolution: "react-from-dom@npm:0.6.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/f3954737c2677e82f72ecedcdcf5f187d2a1b86a6c5b915f7300796ac153437581ee0111c9f524e7c18124d25d0d31391d54cdee318ea390722ca57e66813ed7 - languageName: node - linkType: hard - -"react-highlight-words@npm:0.20.0": - version: 0.20.0 - resolution: "react-highlight-words@npm:0.20.0" - dependencies: - highlight-words-core: "npm:^1.2.0" - memoize-one: "npm:^4.0.0" - prop-types: "npm:^15.5.8" - peerDependencies: - react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 - checksum: 10/5adf2cfb1f325ae51ea4dd2cb7522eb433b25534355868d1a3f4556b2b9f7a774c2a1aaa143abebb63a1b3a5590e70ba3d765942a47ff754a1a513cdc5b2f58b - languageName: node - linkType: hard - -"react-hook-form@npm:^7.49.2": - version: 7.53.0 - resolution: "react-hook-form@npm:7.53.0" - peerDependencies: - react: ^16.8.0 || ^17 || ^18 || ^19 - checksum: 10/b7d73696b7c10e042f6ea6fcec01f951091146bfbc89d1378327a970bcd724b968e93fae1657bddada75caf648cfaf8693c5ba03c25e96816b755079d29f65da - languageName: node - linkType: hard - -"react-i18next@npm:^14.0.0": - version: 14.1.3 - resolution: "react-i18next@npm:14.1.3" - dependencies: - "@babel/runtime": "npm:^7.23.9" - html-parse-stringify: "npm:^3.0.1" - peerDependencies: - i18next: ">= 23.2.3" - react: ">= 16.8.0" - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: 10/d0fa0f2717103c60758f9ddc1710e529f52e341465ca3f106ffa9168d88ad2db1bdbae58c77cca389933ae14bc39835abb37d1982049551ca15f6d310e2b3f57 - languageName: node - linkType: hard - -"react-immutable-proptypes@npm:^2.1.0": - version: 2.2.0 - resolution: "react-immutable-proptypes@npm:2.2.0" - dependencies: - invariant: "npm:^2.2.2" - peerDependencies: - immutable: ">=3.6.2" - checksum: 10/f7ec15a16f35f97edefe93655fd360ad9da58362c1e83553b19ac0796c3677a22923782894d5408edee9a1c1eaa5408ac69585d08041249d43a1a5fcc3b764d3 - languageName: node - linkType: hard - -"react-inlinesvg@npm:3.0.2": - version: 3.0.2 - resolution: "react-inlinesvg@npm:3.0.2" - dependencies: - exenv: "npm:^1.2.2" - react-from-dom: "npm:^0.6.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/740fa33c7a09012bb96509f9003dc26e4e412eed2fc861ca40bfee9a3dddcf7c4d86fd20f824d4c017e44526aa9d747d6c9543ef3f2215bc0ace72754e025316 - languageName: node - linkType: hard - -"react-is@npm:18.2.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 10/200cd65bf2e0be7ba6055f647091b725a45dd2a6abef03bf2380ce701fd5edccee40b49b9d15edab7ac08a762bf83cb4081e31ec2673a5bfb549a36ba21570df - languageName: node - linkType: hard - -"react-is@npm:^16.12.0, react-is@npm:^16.13.1, react-is@npm:^16.6.0, react-is@npm:^16.7.0, react-is@npm:^16.8.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf - languageName: node - linkType: hard - -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 10/73b36281e58eeb27c9cc6031301b6ae19ecdc9f18ae2d518bdb39b0ac564e65c5779405d623f1df9abf378a13858b79442480244bd579968afc1faf9a2ce5e05 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0, react-is@npm:^18.2.0": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10/d5f60c87d285af24b1e1e7eaeb123ec256c3c8bdea7061ab3932e3e14685708221bf234ec50b21e10dd07f008f1b966a2730a0ce4ff67905b3872ff2042aec22 - languageName: node - linkType: hard - -"react-lifecycles-compat@npm:^3.0.4": - version: 3.0.4 - resolution: "react-lifecycles-compat@npm:3.0.4" - checksum: 10/c66b9c98c15cd6b0d0a4402df5f665e8cc7562fb7033c34508865bea51fd7b623f7139b5b7e708515d3cd665f264a6a9403e1fa7e6d61a05759066f5e9f07783 - languageName: node - linkType: hard - -"react-loading-skeleton@npm:3.4.0": - version: 3.4.0 - resolution: "react-loading-skeleton@npm:3.4.0" - peerDependencies: - react: ">=16.8.0" - checksum: 10/f504c55f2b448e05abfe480950d89a4a7301773590e3c9fc42025370bcfd1c177466bb0a9cee6291d975772218c63c83656ac8b158a75de7a2e9ad75d440925b - languageName: node - linkType: hard - -"react-redux@npm:^8.1.3": - version: 8.1.3 - resolution: "react-redux@npm:8.1.3" - dependencies: - "@babel/runtime": "npm:^7.12.1" - "@types/hoist-non-react-statics": "npm:^3.3.1" - "@types/use-sync-external-store": "npm:^0.0.3" - hoist-non-react-statics: "npm:^3.3.2" - react-is: "npm:^18.0.0" - use-sync-external-store: "npm:^1.0.0" - peerDependencies: - "@types/react": ^16.8 || ^17.0 || ^18.0 - "@types/react-dom": ^16.8 || ^17.0 || ^18.0 - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - react-native: ">=0.59" - redux: ^4 || ^5.0.0-beta.0 - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - react-dom: - optional: true - react-native: - optional: true - redux: - optional: true - checksum: 10/c4c7586cff3abeb784e73598d330f5301116a4e9942fd36895f2bccd8990001709c6c3ea1817edb75ee477470d6c67c9113e05a7f86b2b68a3950c9c29fe20cb - languageName: node - linkType: hard - -"react-router-dom@npm:5.3.3": - version: 5.3.3 - resolution: "react-router-dom@npm:5.3.3" - dependencies: - "@babel/runtime": "npm:^7.12.13" - history: "npm:^4.9.0" - loose-envify: "npm:^1.3.1" - prop-types: "npm:^15.6.2" - react-router: "npm:5.3.3" - tiny-invariant: "npm:^1.0.2" - tiny-warning: "npm:^1.0.0" - peerDependencies: - react: ">=15" - checksum: 10/49552596f1a4c753b99324a5f4345b3ee91fbb780aa65851a7113f053044ef96c083d2ded12937e593b23a0fcdf58b9e49780df6bf6e27d9eeb348b3c85ae611 - languageName: node - linkType: hard - -"react-router@npm:5.3.3": - version: 5.3.3 - resolution: "react-router@npm:5.3.3" - dependencies: - "@babel/runtime": "npm:^7.12.13" - history: "npm:^4.9.0" - hoist-non-react-statics: "npm:^3.1.0" - loose-envify: "npm:^1.3.1" - mini-create-react-context: "npm:^0.4.0" - path-to-regexp: "npm:^1.7.0" - prop-types: "npm:^15.6.2" - react-is: "npm:^16.6.0" - tiny-invariant: "npm:^1.0.2" - tiny-warning: "npm:^1.0.0" - peerDependencies: - react: ">=15" - checksum: 10/4631eed91020c73950804c7c7454e74b2eb495f803c5ca60c8b5572ca72cc06e336f3b08d9ee3fa730128a52c4d9e16d1aa7e8b7f85560629117e16d99a01cef - languageName: node - linkType: hard - -"react-select@npm:5.8.0": - version: 5.8.0 - resolution: "react-select@npm:5.8.0" - dependencies: - "@babel/runtime": "npm:^7.12.0" - "@emotion/cache": "npm:^11.4.0" - "@emotion/react": "npm:^11.8.1" - "@floating-ui/dom": "npm:^1.0.1" - "@types/react-transition-group": "npm:^4.4.0" - memoize-one: "npm:^6.0.0" - prop-types: "npm:^15.6.0" - react-transition-group: "npm:^4.3.0" - use-isomorphic-layout-effect: "npm:^1.1.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/04d3639ea1872a9e4d9080ece1947432fc595403c0a740f671a1b7f7dd2639288cb133ec7a2b1ac20fad69fd303d696c2f924763405e0e1d93b847e54df9e966 - languageName: node - linkType: hard - -"react-table@npm:7.8.0": - version: 7.8.0 - resolution: "react-table@npm:7.8.0" - peerDependencies: - react: ^16.8.3 || ^17.0.0-0 || ^18.0.0 - checksum: 10/0c87db8f8823f8eca7a5521d406fa0c75d79972d47768f0c8347af3fa51f9856eea449186a0e2db2effc54d1d74a4e3477855cdbe9adf836d7dfac3a6ec5cdbf - languageName: node - linkType: hard - -"react-transition-group@npm:4.4.5": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" - dependencies: - "@babel/runtime": "npm:^7.5.5" - dom-helpers: "npm:^5.0.1" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.6.2" - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 10/ca32d3fd2168c976c5d90a317f25d5f5cd723608b415fb3b9006f9d793c8965c619562d0884503a3e44e4b06efbca4fdd1520f30e58ca3e00a0890e637d55419 - languageName: node - linkType: hard - -"react-transition-group@npm:^4.3.0": - version: 4.4.1 - resolution: "react-transition-group@npm:4.4.1" - dependencies: - "@babel/runtime": "npm:^7.5.5" - dom-helpers: "npm:^5.0.1" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.6.2" - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 10/393ebcd37591d2ceef5d527f78b35ce34a49cffe4c24f1f4ff75c145c31943a4b0eb9d9e99b76651db650bafcb526111d78bae834ce464add8a142504b0c56e4 - languageName: node - linkType: hard - -"react-universal-interface@npm:^0.6.2": - version: 0.6.2 - resolution: "react-universal-interface@npm:0.6.2" - peerDependencies: - react: "*" - tslib: "*" - checksum: 10/bded7a34f5e44223495a095b6c29fa3ea6c8338a166d0f307d21443c20c9fa54a95bdae11d05ab3e6f61a7fa1eaa027f6fbe7ca064a2fb2af46539653ebcb308 - languageName: node - linkType: hard - -"react-use@npm:17.5.1": - version: 17.5.1 - resolution: "react-use@npm:17.5.1" - dependencies: - "@types/js-cookie": "npm:^2.2.6" - "@xobotyi/scrollbar-width": "npm:^1.9.5" - copy-to-clipboard: "npm:^3.3.1" - fast-deep-equal: "npm:^3.1.3" - fast-shallow-equal: "npm:^1.0.0" - js-cookie: "npm:^2.2.1" - nano-css: "npm:^5.6.2" - react-universal-interface: "npm:^0.6.2" - resize-observer-polyfill: "npm:^1.5.1" - screenfull: "npm:^5.1.0" - set-harmonic-interval: "npm:^1.0.1" - throttle-debounce: "npm:^3.0.1" - ts-easing: "npm:^0.2.0" - tslib: "npm:^2.1.0" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 10/2da403a9949dbd964b9b8e20dcd354db66b7f7d5ca1f42572fbcdb06bd49ee828c295be4912cb87abc163d1b54820bb8c5fa85314a16c4579d9e30bf9cbd5759 - languageName: node - linkType: hard - -"react-window@npm:1.8.10": - version: 1.8.10 - resolution: "react-window@npm:1.8.10" - dependencies: - "@babel/runtime": "npm:^7.0.0" - memoize-one: "npm:>=3.1.1 <6" - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10/6f4a713a2012d605370ef4c7026a45ddd6801e428faa4cad558b12b05ba54c00de72de9a360db109db9666f972a3d955b63af9e5a4cd5fbc52411a382273107b - languageName: node - linkType: hard - -"react@npm:18.2.0": - version: 18.2.0 - resolution: "react@npm:18.2.0" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/b9214a9bd79e99d08de55f8bef2b7fc8c39630be97c4e29d7be173d14a9a10670b5325e94485f74cd8bff4966ef3c78ee53c79a7b0b9b70cba20aa8973acc694 - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 - languageName: node - linkType: hard - -"rechoir@npm:^0.8.0": - version: 0.8.0 - resolution: "rechoir@npm:0.8.0" - dependencies: - resolve: "npm:^1.20.0" - checksum: 10/ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 - languageName: node - linkType: hard - -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" - dependencies: - indent-string: "npm:^4.0.0" - strip-indent: "npm:^3.0.0" - checksum: 10/fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b - languageName: node - linkType: hard - -"redux@npm:^4.2.1": - version: 4.2.1 - resolution: "redux@npm:4.2.1" - dependencies: - "@babel/runtime": "npm:^7.9.2" - checksum: 10/371e4833b671193303a7dea7803c8fdc8e0d566740c78f580e0a3b77b4161da25037626900a2205a5d616117fa6ad09a4232e5a110bd437186b5c6355a041750 - languageName: node - linkType: hard - -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.6 - resolution: "reflect.getprototypeof@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.1" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - globalthis: "npm:^1.0.3" - which-builtin-type: "npm:^1.1.3" - checksum: 10/518f6457e4bb470c9b317d239c62d4b4a05678b7eae4f1c3f4332fad379b3ea6d2d8999bfad448547fdba8fb77e4725cfe8c6440d0168ff387f16b4f19f759ad - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.11.0": - version: 0.11.1 - resolution: "regenerator-runtime@npm:0.11.1" - checksum: 10/64e62d78594c227e7d5269811bca9e4aa6451332adaae8c79a30cab0fa98733b1ad90bdb9d038095c340c6fad3b414a49a8d9e0b6b424ab7ff8f94f35704f8a2 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4": - version: 0.13.5 - resolution: "regenerator-runtime@npm:0.13.5" - checksum: 10/69aaed4576adec0f3fcbb3f3d863b843c9ce30e8ebc099c961177102cf8c20481569d836ae2157e9e3841b9f1b943aed36de2295584f10992531901e80b678b0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.14.0": - version: 0.14.1 - resolution: "regenerator-runtime@npm:0.14.1" - checksum: 10/5db3161abb311eef8c45bcf6565f4f378f785900ed3945acf740a9888c792f75b98ecb77f0775f3bf95502ff423529d23e94f41d80c8256e8fa05ed4b07cf471 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-errors: "npm:^1.3.0" - set-function-name: "npm:^2.0.2" - checksum: 10/fe17bc4eebbc72945aaf9dd059eb7784a5ca453a67cc4b5b3e399ab08452c9a05befd92063e2c52e7b24d9238c60031656af32dd57c555d1ba6330dbf8c23b43 - languageName: node - linkType: hard - -"replace-in-file-webpack-plugin@npm:^1.0.6": - version: 1.0.6 - resolution: "replace-in-file-webpack-plugin@npm:1.0.6" - checksum: 10/0c00a074e544ebe1aef0615e594f6daad47427950a2454e88f94dcb185839d68ce07854b83bbcb5f9b2336f8e8ae24017db4eca085135a9be84e43585163301a - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 10/a72468e2589270d91f06c7d36ec97a88db53ae5d6fe3787fadc943f0b0276b10347f89b363b2a82285f650bdcc135ad4a257c61bdd4d00d6df1fa24875b0ddaf - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: 10/839a3a890102a658f4cb3e7b2aa13a1f80a3a976b512020c3d1efc418491c48a886b6e481ea56afc6c4cb5eef678f23b2a4e70575e7534eccadf5e30ed2e56eb - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20 - languageName: node - linkType: hard - -"resize-observer-polyfill@npm:^1.5.1": - version: 1.5.1 - resolution: "resize-observer-polyfill@npm:1.5.1" - checksum: 10/e10ee50cd6cf558001de5c6fb03fee15debd011c2f694564b71f81742eef03fb30d6c2596d1d5bf946d9991cb692fcef529b7bd2e4057041377ecc9636c753ce - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 10/91eb76ce83621eea7bbdd9b55121a5c1c4a39e54a9ce04a9ad4517f102f8b5131c2cf07622c738a6683991bf54f2ce178f5a42803ecbd527ddc5105f362cc9e3 - languageName: node - linkType: hard - -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 10/be18a5e4d76dd711778664829841cde690971d02b6cbae277735a09c1c28f407b99ef6ef3cd585a1e6546d4097b28df40ed32c4a287b9699dcf6d7f208495e23 - languageName: node - linkType: hard - -"resolve-pathname@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-pathname@npm:3.0.0" - checksum: 10/6147241ba42c423dbe83cb067a2b4af4f60908c3af57e1ea567729cc71416c089737fe2a73e9e79e7a60f00f66c91e4b45ad0d37cd4be2d43fec44963ef14368 - languageName: node - linkType: hard - -"resolve-protobuf-schema@npm:^2.1.0": - version: 2.1.0 - resolution: "resolve-protobuf-schema@npm:2.1.0" - dependencies: - protocol-buffers-schema: "npm:^3.3.1" - checksum: 10/88fffab2a3757888884a36f9aa4e24be5186b01820a8c26297dc1ce406b9daf776594926bdf524c2c8e8e5b0aba8ac48362b6584cdecc9a7083215ebca01c599 - languageName: node - linkType: hard - -"resolve.exports@npm:^2.0.0": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: 10/f1cc0b6680f9a7e0345d783e0547f2a5110d8336b3c2a4227231dd007271ffd331fd722df934f017af90bae0373920ca0d4005da6f76cb3176c8ae426370f893 - languageName: node - linkType: hard - -"resolve@npm:^1.12.0": - version: 1.17.0 - resolution: "resolve@npm:1.17.0" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10/74141da8c56192fd46f6aa887864f8fd74c1755425174526610cb775177278bb414c6f6feb3051ccd73d774d2ae124c6c97e463e30d7ffd9a87f7da202b851dd - languageName: node - linkType: hard - -"resolve@npm:^1.19.0, resolve@npm:^1.20.0": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/c473506ee01eb45cbcfefb68652ae5759e092e6b0fb64547feadf9736a6394f258fbc6f88e00c5ca36d5477fbb65388b272432a3600fa223062e54333c156753 - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.5 - resolution: "resolve@npm:2.0.0-next.5" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.12.0#optional!builtin": - version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d" - dependencies: - path-parse: "npm:^1.0.6" - checksum: 10/02e87fe9233d169fdc5220572c7b8933c9e23323aaecfd5b8d0b106a7f09dc676dd4d380e66c72b1369489292bcb337b13aad28b480a1bde5a5c040ff16758ea - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/f345cd37f56a2c0275e3fe062517c650bb673815d885e7507566df589375d165bbbf4bdb6aa95600a9bc55f4744b81f452b5a63f95b9f10a72787dba3c90890a - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 - languageName: node - linkType: hard - -"robust-predicates@npm:^3.0.2": - version: 3.0.2 - resolution: "robust-predicates@npm:3.0.2" - checksum: 10/88bd7d45a6b89e88da2631d4c111aaaf0443de4d7078e9ab7f732245790a3645cf79bf91882a9740dbc959cf56ba75d5dced5bf2259410f8b6de19fd240cd08c - languageName: node - linkType: hard - -"rtl-css-js@npm:^1.16.1": - version: 1.16.1 - resolution: "rtl-css-js@npm:1.16.1" - dependencies: - "@babel/runtime": "npm:^7.1.2" - checksum: 10/fa6a3e1f73e65bf5763b8a051942477a0852ee072d29ebad0999f02556a73715e72374d9a31ddec3fe023b09702b56f8be3a5a0404816e795ab86ea879183e02 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"rw@npm:1, rw@npm:^1.3.3": - version: 1.3.3 - resolution: "rw@npm:1.3.3" - checksum: 10/e90985d64777a00f4ab5f8c0bfea2fb5645c6bda5238840afa339c8a4f86f776e8ce83731155643a7425a0b27ce89077dab27b2f57519996ba4d2fe54cac1941 - languageName: node - linkType: hard - -"rxjs@npm:7.8.1": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: "npm:^2.1.0" - checksum: 10/b10cac1a5258f885e9dd1b70d23c34daeb21b61222ee735d2ec40a8685bdca40429000703a44f0e638c27a684ac139e1c37e835d2a0dc16f6fc061a138ae3abb - languageName: node - linkType: hard - -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - has-symbols: "npm:^1.0.3" - isarray: "npm:^2.0.5" - checksum: 10/a54f8040d7cb696a1ee38d19cc71ab3cfb654b9b81bae00c6459618cfad8214ece7e6666592f9c925aafef43d0a20c5e6fbb3413a2b618e1ce9d516a2e6dcfc5 - languageName: node - linkType: hard - -"safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 - languageName: node - linkType: hard - -"safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10/7eb5b48f2ed9a594a4795677d5a150faa7eb54483b2318b568dc0c4fc94092a6cce5be02c7288a0500a156282f5276d5688bce7259299568d1053b2150ef374a - languageName: node - linkType: hard - -"safe-json-parse@npm:~1.0.1": - version: 1.0.1 - resolution: "safe-json-parse@npm:1.0.1" - checksum: 10/5af65161011fd06dc1c51c18d759fe0df9e075fad4f5f363bc61403f4d963c3481f12d1794bbacef72aee7def20f426126da5767c283d9fcaecead34828499ad - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.1.4" - checksum: 10/b04de61114b10274d92e25b6de7ccb5de07f11ea15637ff636de4b5190c0f5cd8823fe586dde718504cf78055437d70fd8804976894df502fcf5a210c970afb3 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 - languageName: node - linkType: hard - -"sass-loader@npm:13.3.1": - version: 13.3.1 - resolution: "sass-loader@npm:13.3.1" - dependencies: - klona: "npm:^2.0.6" - neo-async: "npm:^2.6.2" - peerDependencies: - fibers: ">= 3.1.0" - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: "*" - webpack: ^5.0.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - checksum: 10/e7b90287264370a7e855c2e155e814c4c2767a845c45b62d070988f2e8359e4811493c2c1739c510cac864b9edf4a5f1acfe081f139b3feb6297993e5dca7932 - languageName: node - linkType: hard - -"sass@npm:1.63.2": - version: 1.63.2 - resolution: "sass@npm:1.63.2" - dependencies: - chokidar: "npm:>=3.0.0 <4.0.0" - immutable: "npm:^4.0.0" - source-map-js: "npm:>=0.6.2 <2.0.0" - bin: - sass: sass.js - checksum: 10/97f1bcc86d4ab2cfa5855d0dee3082fe9c94d7f29a083c43a68d4693c6a005eb2d9fec3cffec43a748a67bd161f979f7b46606370395275d94f2d4549934ae5d - languageName: node - linkType: hard - -"saxes@npm:^6.0.0": - version: 6.0.0 - resolution: "saxes@npm:6.0.0" - dependencies: - xmlchars: "npm:^2.2.0" - checksum: 10/97b50daf6ca3a153e89842efa18a862e446248296622b7473c169c84c823ee8a16e4a43bac2f73f11fc8cb9168c73fbb0d73340f26552bac17970e9052367aa9 - languageName: node - linkType: hard - -"scheduler@npm:^0.23.0": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9 - languageName: node - linkType: hard - -"schema-utils@npm:>1.0.0, schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 10/808784735eeb153ab7f3f787f840aa3bc63f423d2a5a7e96c9e70a0e53d0bc62d7b37ea396fc598ce19196e4fb86a72f897154b7c6ce2358bbc426166f205e14 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": - version: 3.3.0 - resolution: "schema-utils@npm:3.3.0" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 10/2c7bbb1da967fdfd320e6cea538949006ec6e8c13ea560a4f94ff2c56809a8486fa5ec419e023452501a6befe1ca381e409c2798c24f4993c7c4094d97fdb258 - languageName: node - linkType: hard - -"screenfull@npm:^5.1.0": - version: 5.2.0 - resolution: "screenfull@npm:5.2.0" - checksum: 10/b8b4b8010f48889341ad1981ca9e6e02db1f10dec686244d95bd2bfde47451059f5ba4c744449913b10f021f14f79d374987a873b6086eb488295962ba50381e - languageName: node - linkType: hard - -"selection-is-backward@npm:^1.0.0": - version: 1.0.0 - resolution: "selection-is-backward@npm:1.0.0" - checksum: 10/93b540811393816979d4798b4706433a15d64f892f59524e66473b5b239bfffd629a7bca490be32c6773c47286c513b74e97fb68a7bb5d98f3eac998b505e85a - languageName: node - linkType: hard - -"semver@npm:^6.3.0, semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 10/1ef3a85bd02a760c6ef76a45b8c1ce18226de40831e02a00bad78485390b98b6ccaa31046245fc63bba4a47a6a592b6c7eedc65cc47126e60489f9cc1ce3ed7e - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.6.3 - resolution: "semver@npm:7.6.3" - bin: - semver: bin/semver.js - checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.1": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d - languageName: node - linkType: hard - -"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": - version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/c7614154a53ebf8c0428a6c40a3b0b47dac30587c1a19703d1b75f003803f73cdfa6a93474a9ba678fa565ef5fbddc2fae79bca03b7d22ab5fd5163dbe571a74 - languageName: node - linkType: hard - -"set-harmonic-interval@npm:^1.0.1": - version: 1.0.1 - resolution: "set-harmonic-interval@npm:1.0.1" - checksum: 10/14b9ce98625af9e0d80165a5c8ceb76ce1206df641197e020780e570f268f5427961138d3f47591962e2626b498a051a4488eaa646e5473373f843d7e9e468d4 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: "npm:^6.0.2" - checksum: 10/e066bd540cfec5e1b0f78134853e0d892d1c8945fb9a926a579946052e7cb0c70ca4fc34f875a8083aa7910d751805d36ae64af250a6de6f3d28f9fa7be6c21b - languageName: node - linkType: hard - -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: 10/f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 10/c9fa63bbbd7431066174a48ba2dd9986dfd930c3a8b59de9c29d7b6854ec1c12a80d15310869ea5166d413b99f041bfa3dd80a7947bcd44ea8e6eb3ffeabfa1f - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: 10/aba6438f46d2bfcef94cf112c835ab395172c75f67453fe05c340c770d3c402363018ae1ab4172a1026a90c47eaccf3af7b6ff6fa749a680c2929bd7fa2b37a4 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 10/94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"slash@npm:^4.0.0": - version: 4.0.0 - resolution: "slash@npm:4.0.0" - checksum: 10/da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d - languageName: node - linkType: hard - -"slate-base64-serializer@npm:^0.2.112": - version: 0.2.115 - resolution: "slate-base64-serializer@npm:0.2.115" - dependencies: - isomorphic-base64: "npm:^1.0.2" - peerDependencies: - slate: ">=0.32.0 <0.50.0" - checksum: 10/5bccd52d71a6f8ff877c12a4d6d6ed4b3e65de1c1bed828fcd24dbaec46c7caac2ab5dc559d64ed66c8943780ca40e444c26aaf0f3cea55725a92187bc2ea689 - languageName: node - linkType: hard - -"slate-dev-environment@npm:^0.2.2": - version: 0.2.5 - resolution: "slate-dev-environment@npm:0.2.5" - dependencies: - is-in-browser: "npm:^1.1.3" - checksum: 10/dce57027a1f2a41262096c48fecb83e27f7f4f98c0b889376f5d67e1ad141a0a1663b18928191e9663919b477e70fdbaa28a7736741f07bb257d06dfce77bbc8 - languageName: node - linkType: hard - -"slate-hotkeys@npm:^0.2.9": - version: 0.2.11 - resolution: "slate-hotkeys@npm:0.2.11" - dependencies: - is-hotkey: "npm:0.1.4" - slate-dev-environment: "npm:^0.2.2" - checksum: 10/302c0186b4483fe33fd6d7001f9526c9a3a9706ff5ceaa0dcd0a74bea08a27d29a612b03512a7dcf29a5693d417515bf021d8b75788b4147c6d2cb7850c3c0ac - languageName: node - linkType: hard - -"slate-plain-serializer@npm:0.7.13, slate-plain-serializer@npm:^0.7.11": - version: 0.7.13 - resolution: "slate-plain-serializer@npm:0.7.13" - peerDependencies: - immutable: ">=3.8.1" - slate: ">=0.46.0 <0.50.0" - checksum: 10/835a8c2a09cb3c091f9b900c2c2728731496c953d6183194d47a8ea62dfd45107dbde18f974070502182139f4ffc2a289b5e95a9d32654d2386cc64adbf985ee - languageName: node - linkType: hard - -"slate-prop-types@npm:^0.5.42": - version: 0.5.44 - resolution: "slate-prop-types@npm:0.5.44" - peerDependencies: - immutable: ">=3.8.1" - slate: ">=0.32.0 <0.50.0" - checksum: 10/6ef3632255383ef3a8a13e0f52c191a7b1d23064bf5f14f8f316555f2d63ac32dc9e8d429fa742ce7219caa32e69a9163d24f36d5c6789d1c9b14a4158eea339 - languageName: node - linkType: hard - -"slate-react-placeholder@npm:^0.2.9": - version: 0.2.9 - resolution: "slate-react-placeholder@npm:0.2.9" - peerDependencies: - react: ">=16.0.0" - slate: ">=0.47.0" - slate-react: ">=0.22.0" - checksum: 10/34b9cd299bda66031ad6d88e63748439e4ad47a4dfddef04ebf47d8e3afbf3be9fb5e8ca923ef719e7c9f8627af4d3faf764c858b68761e376c0f3daeab705f8 - languageName: node - linkType: hard - -"slate-react@npm:0.22.10": - version: 0.22.10 - resolution: "slate-react@npm:0.22.10" - dependencies: - debug: "npm:^3.1.0" - get-window: "npm:^1.1.1" - is-window: "npm:^1.0.2" - lodash: "npm:^4.1.1" - memoize-one: "npm:^4.0.0" - prop-types: "npm:^15.5.8" - react-immutable-proptypes: "npm:^2.1.0" - selection-is-backward: "npm:^1.0.0" - slate-base64-serializer: "npm:^0.2.112" - slate-dev-environment: "npm:^0.2.2" - slate-hotkeys: "npm:^0.2.9" - slate-plain-serializer: "npm:^0.7.11" - slate-prop-types: "npm:^0.5.42" - slate-react-placeholder: "npm:^0.2.9" - tiny-invariant: "npm:^1.0.1" - tiny-warning: "npm:^0.0.3" - peerDependencies: - immutable: ">=3.8.1 || >4.0.0-rc" - react: ">=16.6.0" - react-dom: ">=16.6.0" - slate: ">=0.47.0" - checksum: 10/f2567ff451a0064d44bd5153f30f24e70bdeea5ad5345f48d82ba58a4b9db2d8c55a6f269aa1e6358831f514fd782b1337c2c6258f1055b51788c27bff3dd22e - languageName: node - linkType: hard - -"slate@npm:0.47.9": - version: 0.47.9 - resolution: "slate@npm:0.47.9" - dependencies: - debug: "npm:^3.1.0" - direction: "npm:^0.1.5" - esrever: "npm:^0.2.0" - is-plain-object: "npm:^2.0.4" - lodash: "npm:^4.17.4" - tiny-invariant: "npm:^1.0.1" - tiny-warning: "npm:^0.0.3" - type-of: "npm:^2.0.1" - peerDependencies: - immutable: ">=3.8.1 || >4.0.0-rc" - checksum: 10/d1c66218d8c562f2ee17d9c79a7b985423855e4529252ebdf85f570ad46783f7a133c0ee274fb2fda1a7164571fd49d8bfd5fda0e0d89dbb49d3510b2b385c45 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.4 - resolution: "socks-proxy-agent@npm:8.0.4" - dependencies: - agent-base: "npm:^7.1.1" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10/c8e7c2b398338b49a0a0f4d2bae5c0602aeeca6b478b99415927b6c5db349ca258448f2c87c6958ebf83eea17d42cbc5d1af0bfecb276cac10b9658b0f07f7d7 - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.3 - resolution: "socks@npm:2.8.3" - dependencies: - ip-address: "npm:^9.0.5" - smart-buffer: "npm:^4.2.0" - checksum: 10/ffcb622c22481dfcd7589aae71fbfd71ca34334064d181df64bf8b7feaeee19706aba4cffd1de35cc7bbaeeaa0af96be2d7f40fcbc7bc0ab69533a7ae9ffc4fb - languageName: node - linkType: hard - -"sort-asc@npm:^0.1.0": - version: 0.1.0 - resolution: "sort-asc@npm:0.1.0" - checksum: 10/c130223336a9431edd4c12cf0a4893eb9327591f8c9d9ccd1b27a42f7657b4bb84807d7150d79fc52ab7d1e9691684897de7ef2a6a3516d32349af68d2705d57 - languageName: node - linkType: hard - -"sort-desc@npm:^0.1.1": - version: 0.1.1 - resolution: "sort-desc@npm:0.1.1" - checksum: 10/f2a2568f4eaf9a7315700ae9e46e74ae7b395f24323bf807f07b20269a7c162b549b0bac6d5bb8e26f7ee15af72a74fdaf09d47257227dbe31c4ac8f13b19e1d - languageName: node - linkType: hard - -"sort-object@npm:^0.3.2": - version: 0.3.2 - resolution: "sort-object@npm:0.3.2" - dependencies: - sort-asc: "npm:^0.1.0" - sort-desc: "npm:^0.1.1" - checksum: 10/701fac8b49e9c720f4e5f4b70e995a795771dbecab2368b2e362c5c02cc269418a061f3303c47137d22fc3fe1ded03b4fd4215edec0960c4721274d320dae2b4 - languageName: node - linkType: hard - -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": - version: 1.2.1 - resolution: "source-map-js@npm:1.2.1" - checksum: 10/ff9d8c8bf096d534a5b7707e0382ef827b4dd360a577d3f34d2b9f48e12c9d230b5747974ee7c607f0df65113732711bb701fe9ece3c7edbd43cb2294d707df3 - languageName: node - linkType: hard - -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e - languageName: node - linkType: hard - -"source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10/8317e12d84019b31e34b86d483dd41d6f832f389f7417faf8fc5c75a66a12d9686e47f589a0554a868b8482f037e23df9d040d29387eb16fa14cb85f091ba207 - languageName: node - linkType: hard - -"source-map@npm:0.5.6": - version: 0.5.6 - resolution: "source-map@npm:0.5.6" - checksum: 10/c62fe98e106c762307eea3a982242c1a76a31bc762da10fe2dda12252d423c163e0cd45d313330c8bd040cc5121702511138252308f72b8a9273825e81e4db30 - languageName: node - linkType: hard - -"source-map@npm:^0.5.7": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 10/9b4ac749ec5b5831cad1f8cc4c19c4298ebc7474b24a0acf293e2f040f03f8eeccb3d01f12aa0f90cf46d555c887e03912b83a042c627f419bda5152d89c5269 - languageName: node - linkType: hard - -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.5.0 - resolution: "spdx-exceptions@npm:2.5.0" - checksum: 10/bb127d6e2532de65b912f7c99fc66097cdea7d64c10d3ec9b5e96524dbbd7d20e01cba818a6ddb2ae75e62bb0c63d5e277a7e555a85cbc8ab40044984fa4ae15 - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.1": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10/a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.20 - resolution: "spdx-license-ids@npm:3.0.20" - checksum: 10/30e566ea74b04232c64819d1f5313c00d92e9c73d054541650331fc794499b3bcc4991bcd90fa3c2fc4d040006f58f63104706255266e87a9d452e6574afc60c - languageName: node - linkType: hard - -"split-on-first@npm:^3.0.0": - version: 3.0.0 - resolution: "split-on-first@npm:3.0.0" - checksum: 10/75dc27ecbac65cfbeab9a3b90cf046307220192d3d7a30e46aa0f19571cc9b4802aac813f3de2cc9b16f2e46aae72f275659b5d2614bb5369c77724d739e5f73 - languageName: node - linkType: hard - -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10/e7587128c423f7e43cc625fe2f87e6affdf5ca51c1cc468e910d8aaca46bb44a7fbcfa552f787b1d3987f7043aeb4527d1b99559e6621e01b42b3f45e5a24cbb - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 10/c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa - languageName: node - linkType: hard - -"ssri@npm:^10.0.0": - version: 10.0.6 - resolution: "ssri@npm:10.0.6" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/f92c1b3cc9bfd0a925417412d07d999935917bc87049f43ebec41074661d64cf720315661844106a77da9f8204b6d55ae29f9514e673083cae39464343af2a8b - languageName: node - linkType: hard - -"stack-generator@npm:^2.0.5": - version: 2.0.10 - resolution: "stack-generator@npm:2.0.10" - dependencies: - stackframe: "npm:^1.3.4" - checksum: 10/4fc3978a934424218a0aa9f398034e1f78153d5ff4f4ff9c62478c672debb47dd58de05b09fc3900530cbb526d72c93a6e6c9353bacc698e3b1c00ca3dda0c47 - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 10/cdc988acbc99075b4b036ac6014e5f1e9afa7e564482b687da6384eee6a1909d7eaffde85b0a17ffbe186c5247faf6c2b7544e802109f63b72c7be69b13151bb - languageName: node - linkType: hard - -"stackframe@npm:^1.3.4": - version: 1.3.4 - resolution: "stackframe@npm:1.3.4" - checksum: 10/29ca71c1fd17974c1c178df0236b1407bc65f6ea389cc43dec000def6e42ff548d4453de9a85b76469e2ae2b2abdd802c6b6f3db947c05794efbd740d1cf4121 - languageName: node - linkType: hard - -"stacktrace-gps@npm:^3.0.4": - version: 3.1.2 - resolution: "stacktrace-gps@npm:3.1.2" - dependencies: - source-map: "npm:0.5.6" - stackframe: "npm:^1.3.4" - checksum: 10/21cb60ce0990f7a661e964cf4bdef1e70dda2286fb628fbd0fd1e69e8925138433d08ed84969de2d396b3b91515e15336a502f777c26587db89f3933d6f63f9b - languageName: node - linkType: hard - -"stacktrace-js@npm:^2.0.2": - version: 2.0.2 - resolution: "stacktrace-js@npm:2.0.2" - dependencies: - error-stack-parser: "npm:^2.0.6" - stack-generator: "npm:^2.0.5" - stacktrace-gps: "npm:^3.0.4" - checksum: 10/e5f60a09852687e4a9206927fe1078e24d63e00a71a2dcddd67940e9504a54931a3454439d5b4e3e0e62aeb979be810573e8d3332fbef0dbfa335a8781b4b57c - languageName: node - linkType: hard - -"state-local@npm:^1.0.6": - version: 1.0.7 - resolution: "state-local@npm:1.0.7" - checksum: 10/1d956043e270861d40a639ff3457938cf61dbc7e25209d21b55060d8dfaf74742b8a1e525ed6fcb0c2d89b7d3e305bb8589bf27392012889456b3ad82a4b7d0a - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: 10/2a23a36f4f6bfa63f46ae2d53a3f80fe8276110b95a55345d8ed3d92125413494033bc8697eb774e8f7aeb5725f70e3d69753caa2ecacdac6258c16fa8aa8b0f - languageName: node - linkType: hard - -"string-hash@npm:^1.1.3": - version: 1.1.3 - resolution: "string-hash@npm:1.1.3" - checksum: 10/104b8667a5e0dc71bfcd29fee09cb88c6102e27bfb07c55f95535d90587d016731d52299380052e514266f4028a7a5172e0d9ac58e2f8f5001be61dc77c0754d - languageName: node - linkType: hard - -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 - languageName: node - linkType: hard - -"string-template@npm:~0.2.1": - version: 0.2.1 - resolution: "string-template@npm:0.2.1" - checksum: 10/042cdcf4d4832378f12fbf45b42f479990f330cc409e6dc184838801efbc8352ccf9428fe169f8f8cfff2b864879d4ba1ef8b5f41d63d1d71844c48005a1683f - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10/e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10/7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.11 - resolution: "string.prototype.matchall@npm:4.0.11" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.7" - regexp.prototype.flags: "npm:^1.5.2" - set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.0.6" - checksum: 10/a902ff4500f909f2a08e55cc5ab1ffbbc905f603b36837674370ee3921058edd0392147e15891910db62a2f31ace2adaf065eaa3bc6e9810bdbc8ca48e05a7b5 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10/b2170903de6a2fb5a49bb8850052144e04b67329d49f1343cdc6a87cb24fb4e4b8ad00d3e273a399b8a3d8c32c89775d93a8f43cb42fbff303f25382079fb58a - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/c2e862ae724f95771da9ea17c27559d4eeced9208b9c20f69bbfcd1b9bc92375adf8af63a103194dba17c4cc4a5cb08842d929f415ff9d89c062d44689c8761b - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/160167dfbd68e6f7cb9f51a16074eebfce1571656fc31d40c3738ca9e30e35496f2c046fe57b6ad49f65f238a152be8c86fd9a2dd58682b5eba39dad995b3674 - languageName: node - linkType: hard - -"string_decoder@npm:0.10": - version: 0.10.31 - resolution: "string_decoder@npm:0.10.31" - checksum: 10/cc43e6b1340d4c7843da0e37d4c87a4084c2342fc99dcf6563c3ec273bb082f0cbd4ebf25d5da19b04fb16400d393885fda830be5128e1c416c73b5a6165f175 - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10/ae3b5436d34fadeb6096367626ce987057713c566e1e7768818797e00ac5d62023d0f198c4e681eae9e20701721980b26a64a8f5b91238869592a9c6800719a2 - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10/475f53e9c44375d6e72807284024ac5d668ee1d06010740dec0b9744f2ddf47de8d7151f80e5f6190fc8f384e802fdf9504b76a7e9020c9faee7103623338be2 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 10/8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - -"strip-comments@npm:^2.0.1": - version: 2.0.1 - resolution: "strip-comments@npm:2.0.1" - checksum: 10/43ea36189e4ba543c6ffb0384831e9e23c3b57ede5592c6edcbfc883f489f91d00328fe2670b4e467f61c7886eff68deae3e946f0f092346b2b3cb058b9cfdba - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 10/69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: "npm:^1.0.0" - checksum: 10/18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"style-loader@npm:3.3.3": - version: 3.3.3 - resolution: "style-loader@npm:3.3.3" - peerDependencies: - webpack: ^5.0.0 - checksum: 10/6c13d5075b5a5d69602215a242ef157460766e6e8a2e48276eb5da5b9852716910b48b3f120d492bbc7cd825dfa940b35fc84e1a9ab2a8792fd8d568b6b3e87a - languageName: node - linkType: hard - -"stylis@npm:4.2.0": - version: 4.2.0 - resolution: "stylis@npm:4.2.0" - checksum: 10/58359185275ef1f39c339ae94e598168aa6bb789f6cf0d52e726c1e7087a94e9c17f0385a28d34483dec1ffc2c75670ec714dc5603d99c3124ec83bc2b0a0f42 - languageName: node - linkType: hard - -"stylis@npm:^4.3.0": - version: 4.3.4 - resolution: "stylis@npm:4.3.4" - checksum: 10/69b902a3c9fc3329c8ddb18d422f8130068356dd4d4a20ae245953679cc88ae08d49c55e32b0b57c8fe8a76f2ed7f32697240b8db4d368a25fc2db045ebaeba8 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10/5f505c6fa3c6e05873b43af096ddeb22159831597649881aeb8572d6fe3b81e798cc10840d0c9735e0026b250368851b7f77b65e84f4e4daa820a4f69947f55b - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.1.0 - resolution: "supports-color@npm:7.1.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10/f5b2df5336c825ac31ea155180d88b5b5aacaaa7037c5b15d73412b84f1187c205b289e41a303ae6919a261f6642ceea350281e047885b499d2c3a551056f70a - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e - languageName: node - linkType: hard - -"swc-loader@npm:^0.2.3": - version: 0.2.6 - resolution: "swc-loader@npm:0.2.6" - dependencies: - "@swc/counter": "npm:^0.1.3" - peerDependencies: - "@swc/core": ^1.2.147 - webpack: ">=2" - checksum: 10/fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb - languageName: node - linkType: hard - -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 10/c09a00aadf279d47d0c5c46ca3b6b2fbaeb45f0a184976d599637d412d3a70bbdc043ff33effe1206dea0e36e0ad226cb957112e7ce9a4bf2daedf7fa4f85c53 - languageName: node - linkType: hard - -"tabbable@npm:^6.0.0": - version: 6.2.0 - resolution: "tabbable@npm:6.2.0" - checksum: 10/980fa73476026e99dcacfc0d6e000d41d42c8e670faf4682496d30c625495e412c4369694f2a15cf1e5252d22de3c396f2b62edbe8d60b5dadc40d09e3f2dde3 - languageName: node - linkType: hard - -"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10/1769336dd21481ae6347611ca5fca47add0962fd8e80466515032125eca0084a4f0ede11e65341b9c0018ef4e1cf1ad820adbb0fba7cc99865c6005734000b0a - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.2.1": - version: 6.2.1 - resolution: "tar@npm:6.2.1" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.3.10": - version: 5.3.10 - resolution: "terser-webpack-plugin@npm:5.3.10" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.20" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.26.0" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 10/fb1c2436ae1b4e983be043fa0a3d355c047b16b68f102437d08c736d7960c001e7420e2f722b9d99ce0dc70ca26a68cc63c0b82bc45f5b48671142b352a9d938 - languageName: node - linkType: hard - -"terser@npm:^5.26.0": - version: 5.34.1 - resolution: "terser@npm:5.34.1" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10/4389f39b5b841e2a7795ee733b54bf8fc44f8784a78c213dae32c7e6adc66c3bb258ebdcbacb8e7f1fa08fceb20bfc4ce4f7666d42bbfc29ab71126e89614c34 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 10/8fccb2cb6c8fcb6bb4115394feb833f8b6cf4b9503ec2485c2c90febf435cac62abe882a0c5c51a37b9bbe70640cdd05acf5f45e486ac4583389f4b0855f69e5 - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452 - languageName: node - linkType: hard - -"throttle-debounce@npm:^3.0.1": - version: 3.0.1 - resolution: "throttle-debounce@npm:3.0.1" - checksum: 10/c2b591bc881c595d44d5ee82cc607747569a84cd9652e7d9613d92759d84ffd61eab1ca56c6a294316b8c9978ff6d46c2c94ed95de5847f3de4b6c30342cb947 - languageName: node - linkType: hard - -"tiny-invariant@npm:^1.0.1, tiny-invariant@npm:^1.0.6": - version: 1.1.0 - resolution: "tiny-invariant@npm:1.1.0" - checksum: 10/27d29bbb9e1d1d86e25766711c28ad91af6d67c87d561167077ac7fbce5212b97bbfe875e70bc369808e075748c825864c9b61f0e9f8652275ec86bcf4dcc924 - languageName: node - linkType: hard - -"tiny-invariant@npm:^1.0.2": - version: 1.3.3 - resolution: "tiny-invariant@npm:1.3.3" - checksum: 10/5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe - languageName: node - linkType: hard - -"tiny-lr@npm:^1.1.1": - version: 1.1.1 - resolution: "tiny-lr@npm:1.1.1" - dependencies: - body: "npm:^5.1.0" - debug: "npm:^3.1.0" - faye-websocket: "npm:~0.10.0" - livereload-js: "npm:^2.3.0" - object-assign: "npm:^4.1.0" - qs: "npm:^6.4.0" - checksum: 10/1601382129d1ce575c2bd1fa490d2f6ca292e53d8266cb59e5e4f2a7b30e2a6cd8ce719227aa48e25549a729de93103bfe2ba51206362e96c363ea9e4374d8f2 - languageName: node - linkType: hard - -"tiny-warning@npm:^0.0.3": - version: 0.0.3 - resolution: "tiny-warning@npm:0.0.3" - checksum: 10/edc25b4cfd50f55cdfde932b172b94f8581f6f1b1e5a9ec15c4978f7719baf523e71e26549dde714787868d41aa6b9bc1dacff2300cc0d180f8c44d040f7b1a5 - languageName: node - linkType: hard - -"tiny-warning@npm:^1.0.0, tiny-warning@npm:^1.0.3": - version: 1.0.3 - resolution: "tiny-warning@npm:1.0.3" - checksum: 10/da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71 - languageName: node - linkType: hard - -"tinycolor2@npm:1.6.0": - version: 1.6.0 - resolution: "tinycolor2@npm:1.6.0" - checksum: 10/066c3acf4f82b81c58a0d3ab85f49407efe95ba87afc3c7a16b1d77625193dfbe10dd46c26d0a263c1137361dd5a6a68bff2fb71def5fb9b9aec940fb030bcd4 - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: 10/cd922d9b853c00fe414c5a774817be65b058d54a2d01ebb415840960406c669a0fc632f66df885e24cb022ec812739199ccbdb8d1164c3e513f85bfca5ab2873 - languageName: node - linkType: hard - -"to-camel-case@npm:1.0.0": - version: 1.0.0 - resolution: "to-camel-case@npm:1.0.0" - dependencies: - to-space-case: "npm:^1.0.0" - checksum: 10/2f74cfcffa58e8ddede7e01a03eda2cc3f0ab50efdad1d0f1092d55b4e499be43846d1f9087c458fa9efde4958e407738197d65858272c56c915b649b9ca1e62 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-no-case@npm:^1.0.0": - version: 1.0.2 - resolution: "to-no-case@npm:1.0.2" - checksum: 10/80671e9cb9695ceea2fff23f4678caa6d7a579a2077ecb8f9a0745d90a6435b505bd299688041328f702836289b6ac6a32abba76c5c3922639c0d0224df3dffa - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a - languageName: node - linkType: hard - -"to-space-case@npm:^1.0.0": - version: 1.0.0 - resolution: "to-space-case@npm:1.0.0" - dependencies: - to-no-case: "npm:^1.0.0" - checksum: 10/157cebe3e98e7cb465fe1978cf26450cc8ea8e637a01039854fac7ed60ad074e5e18b32333cc5f30df81b81ca374d63df768cd4c1fa0fe672605f965376227f4 - languageName: node - linkType: hard - -"toggle-selection@npm:^1.0.6": - version: 1.0.6 - resolution: "toggle-selection@npm:1.0.6" - checksum: 10/9a0ed0ecbaac72b4944888dacd79fe0a55eeea76120a4c7e46b3bb3d85b24f086e90560bb22f5a965654a25ab43d79ec47dfdb3f1850ba740b14c5a50abc7040 - languageName: node - linkType: hard - -"tough-cookie@npm:^4.1.2": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" - dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 10/75663f4e2cd085f16af0b217e4218772adf0617fb3227171102618a54ce0187a164e505d61f773ed7d65988f8ff8a8f935d381f87da981752c1171b076b4afac - languageName: node - linkType: hard - -"tr46@npm:^3.0.0": - version: 3.0.0 - resolution: "tr46@npm:3.0.0" - dependencies: - punycode: "npm:^2.1.1" - checksum: 10/b09a15886cbfaee419a3469081223489051ce9dca3374dd9500d2378adedbee84a3c73f83bfdd6bb13d53657753fc0d4e20a46bfcd3f1b9057ef528426ad7ce4 - languageName: node - linkType: hard - -"ts-api-utils@npm:^1.0.1": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" - peerDependencies: - typescript: ">=4.2.0" - checksum: 10/3ee44faa24410cd649b5c864e068d438aa437ef64e9e4a66a41646a6d3024d3097a695eeb3fb26ee364705d3cb9653a65756d009e6a53badb6066a5f447bf7ed - languageName: node - linkType: hard - -"ts-easing@npm:^0.2.0": - version: 0.2.0 - resolution: "ts-easing@npm:0.2.0" - checksum: 10/e67ee862acca3b2e2718e736f31999adcef862d0df76d76a0e138588728d8a87dfec9978556044640bd0e90203590ad88ac2fe8746d0e9959b8d399132315150 - languageName: node - linkType: hard - -"ts-node@npm:^10.9.2": - version: 10.9.2 - resolution: "ts-node@npm:10.9.2" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10/a91a15b3c9f76ac462f006fa88b6bfa528130dcfb849dd7ef7f9d640832ab681e235b8a2bc58ecde42f72851cc1d5d4e22c901b0c11aa51001ea1d395074b794 - languageName: node - linkType: hard - -"tsconfig-paths@npm:^4.2.0": - version: 4.2.0 - resolution: "tsconfig-paths@npm:4.2.0" - dependencies: - json5: "npm:^2.2.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10/5e55cc2fb6b800eb72011522e10edefccb45b1f9af055681a51354c9b597d1390c6fa9cc356b8c7529f195ac8a90a78190d563159f3a1eed10e01bbd4d01a8ab - languageName: node - linkType: hard - -"tslib@npm:2.5.3": - version: 2.5.3 - resolution: "tslib@npm:2.5.3" - checksum: 10/d507e60ebe2480af4efc1655dfdb2762bb6ca57d76c4ba680375af801493648c2e97808bbd7e54691eb40e33a7e2e793cdef9c24ce6a8539b03cac8b26e09a61 - languageName: node - linkType: hard - -"tslib@npm:2.6.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca - languageName: node - linkType: hard - -"tslib@npm:2.6.3": - version: 2.6.3 - resolution: "tslib@npm:2.6.3" - checksum: 10/52109bb681f8133a2e58142f11a50e05476de4f075ca906d13b596ae5f7f12d30c482feb0bff167ae01cfc84c5803e575a307d47938999246f5a49d174fc558c - languageName: node - linkType: hard - -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb - languageName: node - linkType: hard - -"tslib@npm:^2.1.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.6.2": - version: 2.7.0 - resolution: "tslib@npm:2.7.0" - checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6 - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10/ea036bec1dd024e309939ffd49fda7a351c0e87a1b8eb049570dd119d447250e2c56e0e6c00554e8205760e7417793fdebff752a46e573fbe07d4f375502a5b2 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10/14687776479d048e3c1dbfe58a2409e00367810d6960c0f619b33793271ff2a27f81b52461f14a162f1f89a9b1d8da1b237fc7c99b0e1fdcec28ec63a86b1fec - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 10/8907e16284b2d6cfa4f4817e93520121941baba36b39219ea36acfe64c86b9dbc10c9941af450bd60832c8f43464974d51c0957f9858bc66b952b66b6914cbb9 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f - languageName: node - linkType: hard - -"type-of@npm:^2.0.1": - version: 2.0.1 - resolution: "type-of@npm:2.0.1" - checksum: 10/5da0273c61ae3eaeb4cb2580a823d2a5d593b572f994b92c2bebf124dc25b6a6cc9d55a2a7e709bae3b392c6b71ef62a93030c53417e859b0f9db942586ff2cd - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.13" - checksum: 10/02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/e4a38329736fe6a73b52a09222d4a9e8de14caaa4ff6ad8e55217f6705b017d9815b7284c85065b3b8a7704e226ccff1372a72b78c2a5b6b71b7bf662308c903 - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/ac26d720ebb2aacbc45e231347c359e6649f52e0cfe0e76e62005912f8030d68e4cb7b725b1754e8fdd48e433cb68df5a8620a3e420ad1457d666e8b29bf9150 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/05e96cf4ff836743ebfc593d86133b8c30e83172cb5d16c56814d7bacfed57ce97e87ada9c4b2156d9aaa59f75cdef01c25bd9081c7826e0b869afbefc3e8c39 - languageName: node - linkType: hard - -"typed-assert@npm:^1.0.8": - version: 1.0.9 - resolution: "typed-assert@npm:1.0.9" - checksum: 10/03b7e756cc5dd3a50a6580f8eb5376461986ecad67bc848fda26e2c5c4fd4514f04a9149ece4484f4ec5126aa4ef76bdaeccf2cfe9d66840602db7bafe3b7161 - languageName: node - linkType: hard - -"typescript@npm:5.2.2": - version: 5.2.2 - resolution: "typescript@npm:5.2.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/d65e50eb849bd21ff8677e5b9447f9c6e74777e346afd67754934264dcbf4bd59e7d2473f6062d9a015d66bd573311166357e3eb07fea0b52859cf9bb2b58555 - languageName: node - linkType: hard - -"typescript@npm:5.4.5": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5 - languageName: node - linkType: hard - -"typescript@npm:5.5.4": - version: 5.5.4 - resolution: "typescript@npm:5.5.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/1689ccafef894825481fc3d856b4834ba3cc185a9c2878f3c76a9a1ef81af04194849840f3c69e7961e2312771471bb3b460ca92561e1d87599b26c37d0ffb6f - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.2.2#optional!builtin": - version: 5.2.2 - resolution: "typescript@patch:typescript@npm%3A5.2.2#optional!builtin::version=5.2.2&hash=f3b441" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/f79cc2ba802c94c2b78dbb00d767a10adb67368ae764709737dc277273ec148aa4558033a03ce901406b35fddf4eac46dabc94a1e1d12d2587e2b9cfe5707b4a - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.4.5#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=d69c25" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/584be8bac7112ad49a9eb9992f71d542b1ff2fafb5bb315e1c196145e8feab589f1d7223cfb2d5df6770789582e6918f8287d1f2f89911b38eb80e29c560ad00 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.5.4#optional!builtin": - version: 5.5.4 - resolution: "typescript@patch:typescript@npm%3A5.5.4#optional!builtin::version=5.5.4&hash=d69c25" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10/2c065f0ef81855eac25c9b658a3c9da65ffc005260c12854c2286f40f3667e1b1ecf8bdbdd37b59aa0397920378ce7900bff8cb32e0f1c7af6fd86efc676718c - languageName: node - linkType: hard - -"ua-parser-js@npm:^1.0.32": - version: 1.0.39 - resolution: "ua-parser-js@npm:1.0.39" - bin: - ua-parser-js: script/cli.js - checksum: 10/dd4026b6ece8a34a0d39b6de5542154c4506077d8def8647a300a29e1b3ffa0e23f5c8eeeb8101df6162b7b3eb3597d0b4adb031ae6104cbdb730d6ebc07f3c0 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 - languageName: node - linkType: hard - -"undici-types@npm:~6.19.2": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70 - languageName: node - linkType: hard - -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10/8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df - languageName: node - linkType: hard - -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10/40912a8963fc02fb8b600cf50197df4a275c602c60de4cac4f75879d3c48558cfac48de08a25cc10df8112161f7180b3bbb4d662aadb711568602f9eddee54f0 - languageName: node - linkType: hard - -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.1 - resolution: "universalify@npm:2.0.1" - checksum: 10/ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.1.0": - version: 1.1.1 - resolution: "update-browserslist-db@npm:1.1.1" - dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10/7678dd8609750588d01aa7460e8eddf2ff9d16c2a52fb1811190e0d056390f1fdffd94db3cf8fb209cf634ab4fa9407886338711c71cc6ccade5eeb22b093734 - languageName: node - linkType: hard - -"uplot@npm:1.6.30": - version: 1.6.30 - resolution: "uplot@npm:1.6.30" - checksum: 10/08ad2f9441b8cfa26d9219362cdbb6f2dc6e5ec9403382df71798ed3e9d3666e7712c8a245e652ebb4a25c5d911cbdc614b52dfd891c0f7ce8705320d2eff81f - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb - languageName: node - linkType: hard - -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 10/c9e96bc8c5b34e9f05ddfeffc12f6aadecbb0d971b3cc26015b58d5b44676a99f50d5aeb1e5c9e61fa4d49961ae3ab1ae997369ed44da51b2f5ac010d188e6ad - languageName: node - linkType: hard - -"use-isomorphic-layout-effect@npm:^1.1.2": - version: 1.1.2 - resolution: "use-isomorphic-layout-effect@npm:1.1.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10/fd3787ed19f6cfbf70e2c5822d01bebbf96b00968195840d5ad61082b8e6ca7a8e2e46270c4096537d18a38ea57f4e4e9668cce5eec36fa4697ddba2ef1203fd - languageName: node - linkType: hard - -"use-memo-one@npm:^1.1.3": - version: 1.1.3 - resolution: "use-memo-one@npm:1.1.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/8f08eba26d69406b61bb4b8dacdd5a92bd6aef5b53d346dfe87954f7330ee10ecabc937cc7854635155d46053828e85c10b5a5aff7a04720e6a97b9f42999bac - languageName: node - linkType: hard - -"use-sync-external-store@npm:^1.0.0": - version: 1.2.2 - resolution: "use-sync-external-store@npm:1.2.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/671e9c190aab9a8374a5d468c6ba17f52c38b6fae970110bc196fc1e2b57204149aea9619be49a1bb5207fb6e51d8afd19c3bcb94afe61813fed039821461dc0 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.2": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"util@npm:^0.12.0": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - which-typed-array: "npm:^1.1.2" - checksum: 10/61a10de7753353dd4d744c917f74cdd7d21b8b46379c1e48e1c4fd8e83f8190e6bd9978fc4e5102ab6a10ebda6019d1b36572fa4a325e175ec8b789a121f6147 - languageName: node - linkType: hard - -"uuid@npm:9.0.1": - version: 9.0.1 - resolution: "uuid@npm:9.0.1" - bin: - uuid: dist/bin/uuid - checksum: 10/9d0b6adb72b736e36f2b1b53da0d559125ba3e39d913b6072f6f033e0c87835b414f0836b45bcfaf2bdf698f92297fea1c3cc19b0b258bc182c9c43cc0fab9f2 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166 - languageName: node - linkType: hard - -"value-equal@npm:^1.0.1": - version: 1.0.1 - resolution: "value-equal@npm:1.0.1" - checksum: 10/bb7ae1facc76b5cf8071aeb6c13d284d023fdb370478d10a5d64508e0e6e53bb459c4bbe34258df29d82e6f561f874f0105eba38de0e61fe9edd0bdce07a77a2 - languageName: node - linkType: hard - -"void-elements@npm:3.1.0": - version: 3.1.0 - resolution: "void-elements@npm:3.1.0" - checksum: 10/0390f818107fa8fce55bb0a5c3f661056001c1d5a2a48c28d582d4d847347c2ab5b7f8272314cac58acf62345126b6b09bea623a185935f6b1c3bbce0dfd7f7f - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^4.0.0": - version: 4.0.0 - resolution: "w3c-xmlserializer@npm:4.0.0" - dependencies: - xml-name-validator: "npm:^4.0.0" - checksum: 10/9a00c412b5496f4f040842c9520bc0aaec6e0c015d06412a91a723cd7d84ea605ab903965f546b4ecdb3eae267f5145ba08565222b1d6cb443ee488cda9a0aee - languageName: node - linkType: hard - -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: "npm:1.0.12" - checksum: 10/ad7a257ea1e662e57ef2e018f97b3c02a7240ad5093c392186ce0bcf1f1a60bbadd520d073b9beb921ed99f64f065efb63dfc8eec689a80e569f93c1c5d5e16c - languageName: node - linkType: hard - -"warning@npm:^4.0.0": - version: 4.0.3 - resolution: "warning@npm:4.0.3" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10/e7842aff036e2e07ce7a6cc3225e707775b969fe3d0577ad64bd24660e3a9ce3017f0b8c22a136566dcd3a151f37b8ed1ccee103b3bd82bd8a571bf80b247bc4 - languageName: node - linkType: hard - -"watchpack@npm:^2.4.1": - version: 2.4.2 - resolution: "watchpack@npm:2.4.2" - dependencies: - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.1.2" - checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 - languageName: node - linkType: hard - -"web-vitals@npm:^4.0.1": - version: 4.2.3 - resolution: "web-vitals@npm:4.2.3" - checksum: 10/f4f1b0d6e0dd06b50a1d48c5cbe8a2804f26c5778d7c9bd0a8f591c147fd044f35465a3e95659b9ca801bfd85742e0ac70c3416228c4241d858fcecb8b396503 - languageName: node - linkType: hard - -"web-worker@npm:^1.2.0": - version: 1.3.0 - resolution: "web-worker@npm:1.3.0" - checksum: 10/9dd89763997a7fa4c50128bed088137775c6033cc2aead24fd82e8292991bb1d3ffc672b47df16eed86c9268d2bf230d5bb3e0d06f41a7b3c0c4c36abf4c1ba7 - languageName: node - linkType: hard - -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 10/4c4f65472c010eddbe648c11b977d048dd96956a625f7f8b9d64e1b30c3c1f23ea1acfd654648426ce5c743c2108a5a757c0592f02902cf7367adb7d14e67721 - languageName: node - linkType: hard - -"webpack-cli@npm:^5.1.4": - version: 5.1.4 - resolution: "webpack-cli@npm:5.1.4" - dependencies: - "@discoveryjs/json-ext": "npm:^0.5.0" - "@webpack-cli/configtest": "npm:^2.1.1" - "@webpack-cli/info": "npm:^2.0.2" - "@webpack-cli/serve": "npm:^2.0.5" - colorette: "npm:^2.0.14" - commander: "npm:^10.0.1" - cross-spawn: "npm:^7.0.3" - envinfo: "npm:^7.7.3" - fastest-levenshtein: "npm:^1.0.12" - import-local: "npm:^3.0.2" - interpret: "npm:^3.1.1" - rechoir: "npm:^0.8.0" - webpack-merge: "npm:^5.7.3" - peerDependencies: - webpack: 5.x.x - peerDependenciesMeta: - "@webpack-cli/generators": - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - bin: - webpack-cli: bin/cli.js - checksum: 10/9ac3ae7c43b032051de2803d751bd3b44e1f226b931dcd56066a8e01b12734d49730903df9235e1eb1b67b2ee7451faf24a219c8f4a229c4f42c42e827eac44c - languageName: node - linkType: hard - -"webpack-livereload-plugin@npm:^3.0.2": - version: 3.0.2 - resolution: "webpack-livereload-plugin@npm:3.0.2" - dependencies: - anymatch: "npm:^3.1.1" - portfinder: "npm:^1.0.17" - schema-utils: "npm:>1.0.0" - tiny-lr: "npm:^1.1.1" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 10/d7a01b77ae40e17d359ef3f0cb3bf7639f1449a2a7a6a13b438924d4a9cf996a652d99fe6e638b504845a1e71da7aec8e63743c6b1a7d04010bc228ef89ab1d1 - languageName: node - linkType: hard - -"webpack-merge@npm:^5.7.3": - version: 5.10.0 - resolution: "webpack-merge@npm:5.10.0" - dependencies: - clone-deep: "npm:^4.0.1" - flat: "npm:^5.0.2" - wildcard: "npm:^2.0.0" - checksum: 10/fa46ab200f17d06c7cb49fc37ad91f15769753953c9724adac1061fa305a2a223cb37c3ed25a5f501580c91f11a0800990fe3814c70a77bf1aa5b3fca45a2ac6 - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 10/a661f41795d678b7526ae8a88cd1b3d8ce71a7d19b6503da8149b2e667fc7a12f9b899041c1665d39e38245ed3a59ab68de648ea31040c3829aa695a5a45211d - languageName: node - linkType: hard - -"webpack-subresource-integrity@npm:^5.1.0": - version: 5.1.0 - resolution: "webpack-subresource-integrity@npm:5.1.0" - dependencies: - typed-assert: "npm:^1.0.8" - peerDependencies: - html-webpack-plugin: ">= 5.0.0-beta.1 < 6" - webpack: ^5.12.0 - peerDependenciesMeta: - html-webpack-plugin: - optional: true - checksum: 10/815704e739de6c949229519a0d5d0d9a038c363f6dd89d79c6cad715409e5a67ea93c22eb0c46169293192a525d21ac5f675f13908cdaaab17c519c04382238c - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.6.2": - version: 0.6.2 - resolution: "webpack-virtual-modules@npm:0.6.2" - checksum: 10/d9a0d035f7ec0c7f1055aaf88bfe48b7f96458043916a1b2926d9012fd61de3810a6b768e31a8cd4b3c84a9b6d55824361a9dd20aaf9f5ccfb6f017af216a178 - languageName: node - linkType: hard - -"webpack@npm:^5.94.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" - dependencies: - "@types/estree": "npm:^1.0.5" - "@webassemblyjs/ast": "npm:^1.12.1" - "@webassemblyjs/wasm-edit": "npm:^1.12.1" - "@webassemblyjs/wasm-parser": "npm:^1.12.1" - acorn: "npm:^8.7.1" - acorn-import-attributes: "npm:^1.9.5" - browserslist: "npm:^4.21.10" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.1" - es-module-lexer: "npm:^1.2.1" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.11" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.2.0" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.2.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.10" - watchpack: "npm:^2.4.1" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 10/0377ad3a550b041f26237c96fb55754625b0ce6bae83c1c2447e3262ad056b0b0ad770dcbb92b59f188e9a2bd56155ce910add17dcf023cfbe78bdec774380c1 - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: "npm:>=0.5.1" - safe-buffer: "npm:>=5.1.0" - websocket-extensions: "npm:>=0.1.1" - checksum: 10/17197d265d5812b96c728e70fd6fe7d067471e121669768fe0c7100c939d997ddfc807d371a728556e24fc7238aa9d58e630ea4ff5fd4cfbb40f3d0a240ef32d - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 10/b5399b487d277c78cdd2aef63764b67764aa9899431e3a2fa272c6ad7236a0fb4549b411d89afa76d5afd664c39d62fc19118582dc937e5bb17deb694f42a0d1 - languageName: node - linkType: hard - -"whatwg-encoding@npm:^2.0.0": - version: 2.0.0 - resolution: "whatwg-encoding@npm:2.0.0" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 10/162d712d88fd134a4fe587e53302da812eb4215a1baa4c394dfd86eff31d0a079ff932c05233857997de07481093358d6e7587997358f49b8a580a777be22089 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^3.0.0": - version: 3.0.0 - resolution: "whatwg-mimetype@npm:3.0.0" - checksum: 10/96f9f628c663c2ae05412c185ca81b3df54bcb921ab52fe9ebc0081c1720f25d770665401eb2338ab7f48c71568133845638e18a81ed52ab5d4dcef7d22b40ef - languageName: node - linkType: hard - -"whatwg-url@npm:^11.0.0": - version: 11.0.0 - resolution: "whatwg-url@npm:11.0.0" - dependencies: - tr46: "npm:^3.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10/dfcd51c6f4bfb54685528fb10927f3fd3d7c809b5671beef4a8cdd7b1408a7abf3343a35bc71dab83a1424f1c1e92cc2700d7930d95d231df0fac361de0c7648 - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.1.3": - version: 1.1.4 - resolution: "which-builtin-type@npm:1.1.4" - dependencies: - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" - is-finalizationregistry: "npm:^1.0.2" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10/c0cdb9b004e7a326f4ce54c75b19658a3bec73601a71dd7e2d9538accb3e781b546b589c3f306caf5e7429ac1c8019028d5e662e2860f03603354105b8247c83 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1, which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" - dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10/674bf659b9bcfe4055f08634b48a8588e879161b9fefed57e9ec4ff5601e4d50a05ccd76cf10f698ef5873784e5df3223336d56c7ce88e13bcf52ebe582fc8d7 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448 - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10/4782f8a1d6b8fc12c65e968fea49f59752bf6302dc43036c3bf87da718a80710f61a062516e9764c70008b487929a73546125570acea95c5b5dcc8ac3052c70f - languageName: node - linkType: hard - -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10/f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 - languageName: node - linkType: hard - -"wildcard@npm:^2.0.0": - version: 2.0.1 - resolution: "wildcard@npm:2.0.1" - checksum: 10/e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.5": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10/cebdaeca3a6880da410f75209e68cd05428580de5ad24535f22696d7d9cab134d1f8498599f344c3cf0fb37c1715807a183778d8c648d6cc0cb5ff2bb4236540 - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10/7b1e4b35e9bb2312d2ee9ee7dc95b8cb5f8b4b5a89f7dde5543fe66c1e3715663094defa50d75454ac900bd210f702d575f15f3f17fa9ec0291806d2578d1ddf - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.7" - checksum: 10/3be1f5508a46c190619d5386b1ac8f3af3dbe951ed0f7b0b4a0961eed6fc626bd84b50cf4be768dabc0a05b672f5d0c5ee7f42daa557b14415d18c3a13c7d246 - languageName: node - linkType: hard - -"ws@npm:^8.11.0": - version: 8.18.0 - resolution: "ws@npm:8.18.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/70dfe53f23ff4368d46e4c0b1d4ca734db2c4149c6f68bc62cb16fc21f753c47b35fcc6e582f3bdfba0eaeb1c488cddab3c2255755a5c3eecb251431e42b3ff6 - languageName: node - linkType: hard - -"xml-name-validator@npm:^4.0.0": - version: 4.0.0 - resolution: "xml-name-validator@npm:4.0.0" - checksum: 10/f9582a3f281f790344a471c207516e29e293c6041b2c20d84dd6e58832cd7c19796c47e108fd4fd4b164a5e72ad94f2268f8ace8231cde4a2c6428d6aa220f92 - languageName: node - linkType: hard - -"xml-utils@npm:^1.0.2": - version: 1.10.1 - resolution: "xml-utils@npm:1.10.1" - checksum: 10/b5b7c8d62cbe18ac4c05f70ca1da0c0f5e703a019e636cea1b6bd9d82bc27f8fbbceb2da0371812323d5e8c2dd0beaf957c18a99b0ea68b247c605eb57383fe3 - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 10/4ad5924974efd004a47cce6acf5c0269aee0e62f9a805a426db3337af7bcbd331099df174b024ace4fb18971b8a56de386d2e73a1c4b020e3abd63a4a9b917f1 - languageName: node - linkType: hard - -"xss@npm:^1.0.14": - version: 1.0.15 - resolution: "xss@npm:1.0.15" - dependencies: - commander: "npm:^2.20.3" - cssfilter: "npm:0.0.10" - bin: - xss: bin/xss - checksum: 10/074ad54babac9dd5107466dbf30d3b871dbedae1f8e7b8f4e3b76d60da8b92bd0f66f18ccd26b8524545444ef784b78c526cee089a907aa904f83c8b8d7958f6 - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 10/5f1b5f95e3775de4514edbb142398a2c37849ccfaf04a015be5d75521e9629d3be29bd4432d23c57f37e5b61ade592fb0197022e9993f81a06a5afbdcda9346d - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 10/9af0a4329c3c6b779ac4736c69fae4190ac03029fa27c1aef4e6bcc92119b73dea6fe5db5fe881fb0ce2a0e9539a42cdf60c7c21eda04d1a0b8c082e38509efb - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: 10/e088b37b4d4885b70b50c9fa1b7e54bd2e27f5c87205f9deaffd1fb293ab263d9c964feadb9817a7b129a5bf30a06582cb08750f810568ecc14f3cdbabb79cb3 - languageName: node - linkType: hard - -"yaml@npm:^1.7.2": - version: 1.10.0 - resolution: "yaml@npm:1.10.0" - checksum: 10/dc65f8d0dc5853a7391ed0cd48782bb747ada0065e60d5a5f83eb2a8bc3ec609b2fbf77db6a7df204151cc6e2efb8bfb7314d487f21c2a181bf375cc42eb450f - languageName: node - linkType: hard - -"yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 10/9dc2c217ea3bf8d858041252d43e074f7166b53f3d010a8c711275e09cd3d62a002969a39858b92bbda2a6a63a585c7127014534a560b9c69ed2d923d113406e - languageName: node - linkType: hard - -"yargs@npm:^17.3.1": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10/abb3e37678d6e38ea85485ed86ebe0d1e3464c640d7d9069805ea0da12f69d5a32df8e5625e370f9c96dd1c2dc088ab2d0a4dd32af18222ef3c4224a19471576 - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 10/f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"youtube-video-panel@workspace:.": - version: 0.0.0-use.local - resolution: "youtube-video-panel@workspace:." - dependencies: - "@babel/core": "npm:^7.21.4" - "@emotion/css": "npm:11.10.6" - "@grafana/data": "npm:next" - "@grafana/eslint-config": "npm:^7.0.0" - "@grafana/runtime": "npm:^11.2.2" - "@grafana/schema": "npm:^10.4.0" - "@grafana/tsconfig": "npm:^2.0.0" - "@grafana/ui": "npm:next" - "@swc/core": "npm:^1.3.90" - "@swc/helpers": "npm:^0.5.0" - "@swc/jest": "npm:^0.2.26" - "@testing-library/jest-dom": "npm:6.1.4" - "@testing-library/react": "npm:14.0.0" - "@types/jest": "npm:^29.5.0" - "@types/node": "npm:^20.8.7" - "@types/react-router-dom": "npm:^5.2.0" - "@types/testing-library__jest-dom": "npm:5.14.8" - copy-webpack-plugin: "npm:^11.0.0" - css-loader: "npm:^6.7.3" - emotion: "npm:10.0.27" - eslint-plugin-deprecation: "npm:^2.0.0" - eslint-webpack-plugin: "npm:^4.0.1" - fork-ts-checker-webpack-plugin: "npm:^8.0.0" - glob: "npm:^10.2.7" - identity-obj-proxy: "npm:3.0.0" - imports-loader: "npm:^5.0.0" - jest: "npm:^29.5.0" - jest-environment-jsdom: "npm:^29.5.0" - prettier: "npm:^2.8.7" - query-string: "npm:^9.1.0" - react: "npm:18.2.0" - react-dom: "npm:18.2.0" - replace-in-file-webpack-plugin: "npm:^1.0.6" - sass: "npm:1.63.2" - sass-loader: "npm:13.3.1" - style-loader: "npm:3.3.3" - swc-loader: "npm:^0.2.3" - terser-webpack-plugin: "npm:^5.3.10" - ts-node: "npm:^10.9.2" - tsconfig-paths: "npm:^4.2.0" - tslib: "npm:2.5.3" - typescript: "npm:5.5.4" - webpack: "npm:^5.94.0" - webpack-cli: "npm:^5.1.4" - webpack-livereload-plugin: "npm:^3.0.2" - webpack-subresource-integrity: "npm:^5.1.0" - webpack-virtual-modules: "npm:^0.6.2" - languageName: unknown - linkType: soft - -"zstddec@npm:^0.1.0": - version: 0.1.0 - resolution: "zstddec@npm:0.1.0" - checksum: 10/818d7a7b910509bed32a5ae42352dc45e87e4ee8470c27352859824540efceb9643864afbbb93564beb76822d72a946a6ee7cfbf01627ee34a1cd9656f2857b8 - languageName: node - linkType: hard
',o+='',o+='',o+="",o+=''+l.a.escape(e.label)+"";var a=0;if(u.panel.legend.percentageDecimals&&(a=u.panel.legend.percentageDecimals),i&&r){var s=e.legendData;if(p.legend.values&&(o+='
'+u.formatValue(s)+"
"),n)o+='
'+((s/n*100).toFixed(a)+"%")+"
"}return o+="

hoR@X{k09*Ul_DHB2wpQ|7;FJ%LRerwKh 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 D&k=w9 diff --git a/data/plugins/grafana-piechart-panel/img/piechart-legend-under.png b/data/plugins/grafana-piechart-panel/img/piechart-legend-under.png deleted file mode 100644 index 32845115d934b2c35d279f3919d36557cb8a61b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34314 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 r@G@S~{O^x6=7D=%5Qu`Ts!X}myWsx^YhG&t diff --git a/data/plugins/grafana-piechart-panel/img/piechart-options.png b/data/plugins/grafana-piechart-panel/img/piechart-options.png deleted file mode 100644 index 117962e05ff61b61972a4e1fc5c7637d00f78935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48400 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 a;dN&68J%muz6S8Igeb_Wz>1{}0{;g*&{#JB diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_large.png b/data/plugins/grafana-piechart-panel/img/piechart_logo_large.png deleted file mode 100644 index 21b7ab40145bdd8dd7fc08bfb4612a1c37d8bf5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 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 p3YbhacYIB1Qj?lY1NpxI0|2nop0tA \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_small.png b/data/plugins/grafana-piechart-panel/img/piechart_logo_small.png deleted file mode 100644 index 10d49e48427e4576ab8a98be950633e5a8f76dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2629 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 diff --git a/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg b/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg deleted file mode 100644 index f6f2f7526e685..0000000000000 --- a/data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/light.js b/data/plugins/grafana-piechart-panel/light.js deleted file mode 100644 index ba95ba7480d1d..0000000000000 --- a/data/plugins/grafana-piechart-panel/light.js +++ /dev/null @@ -1,2 +0,0 @@ -define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=10)}({10:function(e,t,n){}})})); -//# sourceMappingURL=light.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/light.js.map b/data/plugins/grafana-piechart-panel/light.js.map deleted file mode 100644 index 0fa319eb3a221..0000000000000 --- a/data/plugins/grafana-piechart-panel/light.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,I","file":"light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/module.html b/data/plugins/grafana-piechart-panel/module.html deleted file mode 100644 index e0faed58b879f..0000000000000 --- a/data/plugins/grafana-piechart-panel/module.html +++ /dev/null @@ -1,5 +0,0 @@ -

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%0Dw+q(&^DT@{w> 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 m&P3ufpT^mR2aEAbJ1_XC_Nu>j4+hztO \ No newline at end of file diff --git a/data/plugins/innius-video-panel/img/screenshots/iframe.png b/data/plugins/innius-video-panel/img/screenshots/iframe.png new file mode 100644 index 0000000000000000000000000000000000000000..d348e47280d4d9fd7b7241b6c7286f9568a96aed GIT binary patch literal 39031 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 literal 0 HcmV?d00001 diff --git a/data/plugins/innius-video-panel/img/screenshots/youtube.png b/data/plugins/innius-video-panel/img/screenshots/youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8e43b7c0c2e23881662b3a6fbf0638b9fb8eea GIT binary patch literal 55542 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"use strict";var n={644:e=>{e.exports=r},305:t=>{t.exports=e},388:e=>{e.exports=o},650:e=>{e.exports=t}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{i.r(s),i.d(s,{plugin:()=>N});var e={};i.r(e),i.d(e,{exclude:()=>$,extract:()=>I,parse:()=>S,parseUrl:()=>O,pick:()=>R,stringify:()=>F,stringifyUrl:()=>T});var t=i(305),r=i(650),o=i.n(r),n=i(644),a=i(388);const c="%[a-f0-9]{2}",l=new RegExp("("+c+")|([^%]+?)","gi"),u=new RegExp("("+c+")+","gi");function p(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(1===e.length)return e;t=t||1;const r=e.slice(0,t),o=e.slice(t);return Array.prototype.concat.call([],p(r),p(o))}function d(e){try{return decodeURIComponent(e)}catch{let t=e.match(l)||[];for(let r=1;rnull==e,g=e=>encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`)),h=Symbol("encodeFragmentIdentifier");function b(e){if("string"!=typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function v(e,t){return t.encode?t.strict?g(e):encodeURIComponent(e):e}function w(e,t){return t.decode?function(e){if("string"!=typeof e)throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return decodeURIComponent(e)}catch{return function(e){const t={"%FE%FF":"��","%FF%FE":"��"};let r=u.exec(e);for(;r;){try{t[r[0]]=decodeURIComponent(r[0])}catch{const e=d(r[0]);e!==r[0]&&(t[r[0]]=e)}r=u.exec(e)}t["%C2"]="�";const o=Object.keys(t);for(const r of o)e=e.replace(new RegExp(r,"g"),t[r]);return e}(e)}}(e):e}function x(e){return Array.isArray(e)?e.sort():"object"==typeof e?x(Object.keys(e)).sort(((e,t)=>Number(e)-Number(t))).map((t=>e[t])):e}function k(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function j(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"==typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function I(e){const t=(e=k(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function S(e,t){b((t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t}).arrayFormatSeparator);const r=function(e){let t;switch(e.arrayFormat){case"index":return(e,r,o)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===o[e]&&(o[e]={}),o[e][t[1]]=r):o[e]=r};case"bracket":return(e,r,o)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"colon-list-separator":return(e,r,o)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==o[e]?o[e]=[...o[e],r]:o[e]=[r]:o[e]=r};case"comma":case"separator":return(t,r,o)=>{const n="string"==typeof r&&r.includes(e.arrayFormatSeparator),a="string"==typeof r&&!n&&w(r,e).includes(e.arrayFormatSeparator);r=a?w(r,e):r;const i=n||a?r.split(e.arrayFormatSeparator).map((t=>w(t,e))):null===r?r:w(r,e);o[t]=i};case"bracket-separator":return(t,r,o)=>{const n=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!n)return void(o[t]=r?w(r,e):r);const a=null===r?[]:r.split(e.arrayFormatSeparator).map((t=>w(t,e)));void 0!==o[t]?o[t]=[...o[t],...a]:o[t]=a};default:return(e,t,r)=>{void 0!==r[e]?r[e]=[...[r[e]].flat(),t]:r[e]=t}}}(t),o=Object.create(null);if("string"!=typeof e)return o;if(!(e=e.trim().replace(/^[?#&]/,"")))return o;for(const n of e.split("&")){if(""===n)continue;const e=t.decode?n.replace(/\+/g," "):n;let[a,i]=f(e,"=");void 0===a&&(a=e),i=void 0===i?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?i:w(i,t),r(w(a,t),i,o)}for(const[e,r]of Object.entries(o))if("object"==typeof r&&null!==r)for(const[e,o]of Object.entries(r))r[e]=j(o,t);else o[e]=j(r,t);return!1===t.sort?o:(!0===t.sort?Object.keys(o).sort():Object.keys(o).sort(t.sort)).reduce(((e,t)=>{const r=o[t];return Boolean(r)&&"object"==typeof r&&!Array.isArray(r)?e[t]=x(r):e[t]=r,e}),Object.create(null))}function F(e,t){if(!e)return"";b((t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t}).arrayFormatSeparator);const r=r=>t.skipNull&&y(e[r])||t.skipEmptyString&&""===e[r],o=function(e){switch(e.arrayFormat){case"index":return t=>(r,o)=>{const n=r.length;return void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[v(t,e),"[",n,"]"].join("")]:[...r,[v(t,e),"[",v(n,e),"]=",v(o,e)].join("")]};case"bracket":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[v(t,e),"[]"].join("")]:[...r,[v(t,e),"[]=",v(o,e)].join("")];case"colon-list-separator":return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,[v(t,e),":list="].join("")]:[...r,[v(t,e),":list=",v(o,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return r=>(o,n)=>void 0===n||e.skipNull&&null===n||e.skipEmptyString&&""===n?o:(n=null===n?"":n,0===o.length?[[v(r,e),t,v(n,e)].join("")]:[[o,v(n,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:null===o?[...r,v(t,e)]:[...r,[v(t,e),"=",v(o,e)].join("")]}}(t),n={};for(const[t,o]of Object.entries(e))r(t)||(n[t]=o);const a=Object.keys(n);return!1!==t.sort&&a.sort(t.sort),a.map((r=>{const n=e[r];return void 0===n?"":null===n?v(r,t):Array.isArray(n)?0===n.length&&"bracket-separator"===t.arrayFormat?v(r,t)+"[]":n.reduce(o(r),[]).join("&"):v(r,t)+"="+v(n,t)})).filter((e=>e.length>0)).join("&")}function O(e,t){t={decode:!0,...t};let[r,o]=f(e,"#");return void 0===r&&(r=e),{url:r?.split("?")?.[0]??"",query:S(I(e),t),...t&&t.parseFragmentIdentifier&&o?{fragmentIdentifier:w(o,t)}:{}}}function T(e,t){t={encode:!0,strict:!0,[h]:!0,...t};const r=k(e.url).split("?")[0]||"";let o=F({...S(I(e.url),{sort:!1}),...e.query},t);o&&(o=`?${o}`);let n=function(e){let t="";const r=e.indexOf("#");return-1!==r&&(t=e.slice(r)),t}(e.url);if(e.fragmentIdentifier){const o=new URL(r);o.hash=e.fragmentIdentifier,n=t[h]?o.hash:`#${e.fragmentIdentifier}`}return`${r}${o}${n}`}function R(e,t,r){r={parseFragmentIdentifier:!0,[h]:!1,...r};const{url:o,query:n,fragmentIdentifier:a}=O(e,r);return T({url:o,query:m(n,t),fragmentIdentifier:a},r)}function $(e,t,r){return R(e,Array.isArray(t)?e=>!t.includes(e):(e,r)=>!t(e,r),r)}const E=e,U=e=>({wrapper:n.css` + position: absolute; + `,video:n.css` + top: 0; + left: 0; + `}),N=new t.PanelPlugin((({options:e,data:t,width:r,height:i,replaceVariables:s})=>{const c=(0,a.useStyles)(U);let l,u=s(e.videoURL||"");if("youtube"===e.videoType){const t={loop:0,autoplay:0,playlist:e.videoId};e.autoPlay&&(t.autoplay=1),e.loop&&(t.loop=1),u="https://www.youtube.com/embed/"+e.videoId+"?"+E.stringify(t)}else"iframe"===e.videoType&&(u=s(e.iframeURL||""));return e.customBackground&&(l=e.backgroundColor||""),o().createElement("div",{className:(0,n.cx)(c.wrapper,n.css` + width: ${r}px; + height: ${i}px; + `)},"url"===e.videoType?o().createElement("video",{className:(0,n.cx)(c.video,n.css` + width: ${r}px; + height: ${i}px; + `),controls:!0,autoPlay:e.autoPlay,loop:e.loop,muted:!0},o().createElement("source",{src:u})):o().createElement("iframe",{frameBorder:"0",allow:e.geolocate?"geolocation":"",allowFullScreen:!0,className:(0,n.cx)(c.video,n.css` + width: ${r}px; + height: ${i}px; + background: ${l}; + `),src:u}))})).setNoPadding().setPanelOptions((e=>e.addRadio({path:"videoType",name:"Source",defaultValue:"youtube",settings:{options:[{value:"url",label:"File"},{value:"youtube",label:"YouTube"},{value:"iframe",label:"iframe"}]}}).addTextInput({path:"videoId",name:"Video ID",description:"The value after watch?v= in the URL.",defaultValue:"eQpyJQ2womo",settings:{placeholder:"eQpyJQ2womo"},showIf:e=>"youtube"===e.videoType}).addTextInput({path:"videoURL",name:"URL",description:"A URL to a valid video file.",settings:{placeholder:"https://example.com/video.mp4"},showIf:e=>"url"===e.videoType}).addTextInput({path:"iframeURL",name:"URL",description:"A valid URL.",settings:{placeholder:"https://example.com/video"},showIf:e=>"iframe"===e.videoType}).addBooleanSwitch({path:"customBackground",name:"Custom Background",defaultValue:!1,showIf:e=>"iframe"===e.videoType}).addColorPicker({path:"backgroundColor",name:"Background Color",description:"The background color for the video",showIf:e=>e.customBackground&&"iframe"===e.videoType}).addBooleanSwitch({path:"autoPlay",name:"Autoplay",defaultValue:!0,showIf:e=>"iframe"!==e.videoType}).addBooleanSwitch({path:"loop",name:"Loop",defaultValue:!0,showIf:e=>"iframe"!==e.videoType}).addBooleanSwitch({path:"geolocate",name:"Geolocate",defaultValue:!1,showIf:e=>"iframe"===e.videoType})))})(),s})())); +//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/data/plugins/innius-video-panel/module.js.map b/data/plugins/innius-video-panel/module.js.map new file mode 100644 index 0000000000000..92f7fb5bd754f --- /dev/null +++ b/data/plugins/innius-video-panel/module.js.map @@ -0,0 +1 @@ +{"version":3,"file":"module.js","mappings":"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","sources":["webpack:///external amd \"@emotion/css\"","webpack:///external amd \"@grafana/data\"","webpack:///external amd \"@grafana/ui\"","webpack:///external amd \"react\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///../node_modules/decode-uri-component/index.js","webpack:///../node_modules/split-on-first/index.js","webpack:///../node_modules/filter-obj/index.js","webpack:///../node_modules/query-string/base.js","webpack:///../node_modules/query-string/index.js","webpack:///./VideoPanel.tsx","webpack:///./module.ts"],"sourcesContent":["module.exports = __WEBPACK_EXTERNAL_MODULE__644__;","module.exports = __WEBPACK_EXTERNAL_MODULE__305__;","module.exports = __WEBPACK_EXTERNAL_MODULE__388__;","module.exports = __WEBPACK_EXTERNAL_MODULE__650__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import React from 'react';\nimport { GrafanaTheme, PanelProps } from '@grafana/data';\nimport { VideoOptions } from 'types';\nimport { css, cx } from '@emotion/css';\nimport { useStyles } from '@grafana/ui';\nimport qs from 'query-string';\n\ninterface Props extends PanelProps {}\n\nexport const VideoPanel: React.FC = ({ options, data, width, height, replaceVariables }) => {\n const styles = useStyles(getStyles);\n\n let videoURL = replaceVariables(options.videoURL || '');\n\n if (options.videoType === 'youtube') {\n const youtubeParams = {\n loop: 0,\n autoplay: 0,\n playlist: options.videoId,\n };\n\n if (options.autoPlay) {\n youtubeParams.autoplay = 1;\n }\n\n if (options.loop) {\n youtubeParams.loop = 1;\n }\n\n videoURL = 'https://www.youtube.com/embed/' + options.videoId + '?' + qs.stringify(youtubeParams);\n } else if (options.videoType === 'iframe') {\n videoURL = replaceVariables(options.iframeURL || '');\n }\n\n let background = undefined;\n if (options.customBackground) {\n background = options.backgroundColor || '';\n }\n return (\n \n {options.videoType === 'url' ? (\n \n \n \n ) : (\n \n )}\n \n );\n};\n\nconst getStyles = (theme: GrafanaTheme) => {\n return {\n wrapper: css`\n position: absolute;\n `,\n video: css`\n top: 0;\n left: 0;\n `,\n };\n};\n","/* istanbul ignore file */\n\nimport { PanelPlugin } from '@grafana/data';\nimport { VideoOptions } from './types';\nimport { VideoPanel } from './VideoPanel';\n\nexport const plugin = new PanelPlugin(VideoPanel).setNoPadding().setPanelOptions((builder) => {\n return builder\n .addRadio({\n path: 'videoType',\n name: 'Source',\n defaultValue: 'youtube',\n settings: {\n options: [\n {\n value: 'url',\n label: 'File',\n },\n {\n value: 'youtube',\n label: 'YouTube',\n },\n {\n value: 'iframe',\n label: 'iframe',\n },\n ],\n },\n })\n .addTextInput({\n path: 'videoId',\n name: 'Video ID',\n description: 'The value after watch?v= in the URL.',\n defaultValue: 'eQpyJQ2womo',\n settings: {\n placeholder: 'eQpyJQ2womo',\n },\n showIf: (config) => config.videoType === 'youtube',\n })\n .addTextInput({\n path: 'videoURL',\n name: 'URL',\n description: 'A URL to a valid video file.',\n settings: {\n placeholder: 'https://example.com/video.mp4',\n },\n showIf: (config) => config.videoType === 'url',\n })\n .addTextInput({\n path: 'iframeURL',\n name: 'URL',\n description: 'A valid URL.',\n settings: {\n placeholder: 'https://example.com/video',\n },\n showIf: (config) => config.videoType === 'iframe',\n })\n .addBooleanSwitch({\n path: 'customBackground',\n name: 'Custom Background',\n defaultValue: false,\n showIf: (config) => config.videoType === 'iframe',\n })\n .addColorPicker({\n path: 'backgroundColor',\n name: 'Background Color',\n description: 'The background color for the video',\n showIf: (config) => config.customBackground && config.videoType === 'iframe',\n })\n .addBooleanSwitch({\n path: 'autoPlay',\n name: 'Autoplay',\n defaultValue: true,\n showIf: (config) => config.videoType !== 'iframe',\n })\n .addBooleanSwitch({\n path: 'loop',\n name: 'Loop',\n defaultValue: true,\n showIf: (config) => config.videoType !== 'iframe',\n })\n .addBooleanSwitch({\n path: 'geolocate',\n name: 'Geolocate',\n defaultValue: false,\n showIf: (config) => config.videoType === 'iframe',\n });\n});\n"],"names":["module","exports","__WEBPACK_EXTERNAL_MODULE__644__","__WEBPACK_EXTERNAL_MODULE__305__","__WEBPACK_EXTERNAL_MODULE__388__","__WEBPACK_EXTERNAL_MODULE__650__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","length","left","slice","right","Array","concat","decode","input","tokens","match","i","splitOnFirst","string","separator","TypeError","separatorIndex","indexOf","includeKeys","object","predicate","result","isArray","descriptor","getOwnPropertyDescriptor","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","encodeURIComponent","replace","x","charCodeAt","toString","toUpperCase","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","options","strict","encodedURI","replaceMap","exec","entries","keys","customDecodeURIComponent","keysSorter","sort","b","Number","map","removeHash","hashStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","extract","queryStart","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","item","test","arrayValue","flat","parserForArrayFormat","returnValue","create","parameter","parameter_","key2","value2","reduce","Boolean","stringify","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","filter","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","getHash","urlObjectForFragmentEncode","URL","pick","exclude","getStyles","theme","wrapper","css","video","plugin","PanelPlugin","data","width","height","replaceVariables","styles","useStyles","background","videoURL","videoType","youtubeParams","loop","autoplay","playlist","videoId","autoPlay","qs","iframeURL","customBackground","backgroundColor","div","className","cx","controls","muted","source","src","iframe","frameBorder","allow","geolocate","allowFullScreen","setNoPadding","setPanelOptions","builder","addRadio","path","name","defaultValue","settings","label","addTextInput","description","placeholder","showIf","config","addBooleanSwitch","addColorPicker"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/innius-video-panel/plugin.json b/data/plugins/innius-video-panel/plugin.json new file mode 100644 index 0000000000000..320c931dd9288 --- /dev/null +++ b/data/plugins/innius-video-panel/plugin.json @@ -0,0 +1,44 @@ +{ + "type": "panel", + "name": "Video", + "id": "innius-video-panel", + "info": { + "description": "Display video from a URL, YouTube ID, or an iFrame.", + "author": { + "name": "Innius", + "url": "https://innius.com" + }, + "keywords": [ + "video" + ], + "logos": { + "small": "img/logo.svg", + "large": "img/logo.svg" + }, + "links": [ + { + "name": "Project site", + "url": "https://github.com/innius/grafana-video-panel" + }, + { + "name": "License", + "url": "https://github.com/innius/grafana-video-panel/blob/master/LICENSE" + } + ], + "screenshots": [ + { + "name": "Examples", + "path": "img/examples.png" + } + ], + "version": "1.0.7", + "updated": "2023-04-07" + }, + "dependencies": { + "grafanaDependency": ">=7.1.5", + "plugins": [] + }, + "skipDataQuery": true +} + + From 206a884df0c5123e5a574de0c7d38876bc580ad5 Mon Sep 17 00:00:00 2001 From: copyhold Date: Sun, 6 Oct 2024 15:13:39 +0300 Subject: [PATCH 4/6] Clean --- public/app/routes/routes.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/app/routes/routes.tsx b/public/app/routes/routes.tsx index eccccce12a0fd..1cc5d5d134692 100644 --- a/public/app/routes/routes.tsx +++ b/public/app/routes/routes.tsx @@ -2,7 +2,8 @@ import React from 'react'; import { Redirect, RouteComponentProps } from 'react-router-dom'; import { isTruthy } from '@grafana/data'; -import { LoginPage } from 'app/core/components/Login/LoginPage'; +// LOGZ.IO GRAFANA CHANGE::DEV-00000 deactivate all login/signup related pages +// import { LoginPage } from 'app/core/components/Login/LoginPage'; import { NavLandingPage } from 'app/core/components/NavLandingPage/NavLandingPage'; import { PageNotFound } from 'app/core/components/PageNotFound/PageNotFound'; import config from 'app/core/config'; From b472a60c8b0b128d987eca21cd105f985aebc0d4 Mon Sep 17 00:00:00 2001 From: copyhold Date: Sun, 6 Oct 2024 16:00:52 +0300 Subject: [PATCH 5/6] Recompile yt plugin --- .../grafana-piechart-panel/MANIFEST.txt | 51 - data/plugins/grafana-piechart-panel/dark.js | 2 - .../grafana-piechart-panel/dark.js.map | 1 - .../grafana-piechart-panel/editor.html | 100 - .../img/piechart-donut.png | Bin 38209 -> 0 bytes .../img/piechart-legend-on-graph.png | Bin 37972 -> 0 bytes .../img/piechart-legend-rhs.png | Bin 41450 -> 0 bytes .../img/piechart-legend-under.png | Bin 34314 -> 0 bytes .../img/piechart-options.png | Bin 48400 -> 0 bytes .../img/piechart_logo_large.png | Bin 3723 -> 0 bytes .../img/piechart_logo_large.svg | 1 - .../img/piechart_logo_small.png | Bin 2629 -> 0 bytes .../img/piechart_logo_small.svg | 1 - data/plugins/grafana-piechart-panel/light.js | 2 - .../grafana-piechart-panel/light.js.map | 1 - .../grafana-piechart-panel/module.html | 5 - data/plugins/grafana-piechart-panel/module.js | 3 - .../module.js.LICENSE.txt | 20 - .../grafana-piechart-panel/module.js.map | 1 - .../grafana-piechart-panel/plugin.json | 70 - .../grafana-piechart-panel/styles/dark.css | 1 - .../grafana-piechart-panel/styles/light.css | 1 - .../youtube-video-panel/.config/.cprc.json | 3 + .../youtube-video-panel/.config/.eslintrc | 25 + .../.config/.prettierrc.js | 16 + .../youtube-video-panel/.config/Dockerfile | 53 + .../youtube-video-panel/.config/README.md | 164 + .../youtube-video-panel/.config/entrypoint.sh | 18 + .../youtube-video-panel/.config/jest-setup.js | 28 + .../.config/jest.config.js | 43 + .../.config/jest/mocks/react-inlinesvg.tsx | 25 + .../youtube-video-panel/.config/jest/utils.js | 31 + .../.config/supervisord/supervisord.conf | 15 + .../youtube-video-panel/.config/tsconfig.json | 26 + .../.config/types/custom.d.ts | 37 + .../.config/webpack/constants.ts | 2 + .../.config/webpack/utils.ts | 63 + .../.config/webpack/webpack.config.ts | 271 + data/plugins/youtube-video-panel/.eslintrc | 3 + data/plugins/youtube-video-panel/.nvmrc | 1 + .../youtube-video-panel/.prettierrc.js | 3 +- .../youtube-video-panel/dist/MANIFEST.txt | 57 - .../youtube-video-panel/dist/module.js | 15 +- .../dist/module.js.LICENSE.txt | 20 - .../youtube-video-panel/dist/module.js.map | 2 +- .../youtube-video-panel/dist/plugin.json | 4 +- .../youtube-video-panel/docker-compose.yaml | 24 + .../plugins/youtube-video-panel/jest-setup.js | 2 + .../youtube-video-panel/jest.config.js | 8 + data/plugins/youtube-video-panel/package.json | 71 +- .../plugins/youtube-video-panel/tsconfig.json | 8 +- data/plugins/youtube-video-panel/yarn.lock | 25128 ++++++++-------- 52 files changed, 13078 insertions(+), 13348 deletions(-) delete mode 100644 data/plugins/grafana-piechart-panel/MANIFEST.txt delete mode 100644 data/plugins/grafana-piechart-panel/dark.js delete mode 100644 data/plugins/grafana-piechart-panel/dark.js.map delete mode 100644 data/plugins/grafana-piechart-panel/editor.html delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart-donut.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-on-graph.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-rhs.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart-legend-under.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart-options.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_large.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_large.svg delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_small.png delete mode 100644 data/plugins/grafana-piechart-panel/img/piechart_logo_small.svg delete mode 100644 data/plugins/grafana-piechart-panel/light.js delete mode 100644 data/plugins/grafana-piechart-panel/light.js.map delete mode 100644 data/plugins/grafana-piechart-panel/module.html delete mode 100644 data/plugins/grafana-piechart-panel/module.js delete mode 100644 data/plugins/grafana-piechart-panel/module.js.LICENSE.txt delete mode 100644 data/plugins/grafana-piechart-panel/module.js.map delete mode 100644 data/plugins/grafana-piechart-panel/plugin.json delete mode 100644 data/plugins/grafana-piechart-panel/styles/dark.css delete mode 100644 data/plugins/grafana-piechart-panel/styles/light.css create mode 100644 data/plugins/youtube-video-panel/.config/.cprc.json create mode 100644 data/plugins/youtube-video-panel/.config/.eslintrc create mode 100644 data/plugins/youtube-video-panel/.config/.prettierrc.js create mode 100644 data/plugins/youtube-video-panel/.config/Dockerfile create mode 100644 data/plugins/youtube-video-panel/.config/README.md create mode 100644 data/plugins/youtube-video-panel/.config/entrypoint.sh create mode 100644 data/plugins/youtube-video-panel/.config/jest-setup.js create mode 100644 data/plugins/youtube-video-panel/.config/jest.config.js create mode 100644 data/plugins/youtube-video-panel/.config/jest/mocks/react-inlinesvg.tsx create mode 100644 data/plugins/youtube-video-panel/.config/jest/utils.js create mode 100644 data/plugins/youtube-video-panel/.config/supervisord/supervisord.conf create mode 100644 data/plugins/youtube-video-panel/.config/tsconfig.json create mode 100644 data/plugins/youtube-video-panel/.config/types/custom.d.ts create mode 100644 data/plugins/youtube-video-panel/.config/webpack/constants.ts create mode 100644 data/plugins/youtube-video-panel/.config/webpack/utils.ts create mode 100644 data/plugins/youtube-video-panel/.config/webpack/webpack.config.ts create mode 100644 data/plugins/youtube-video-panel/.eslintrc create mode 100644 data/plugins/youtube-video-panel/.nvmrc delete mode 100644 data/plugins/youtube-video-panel/dist/MANIFEST.txt delete mode 100644 data/plugins/youtube-video-panel/dist/module.js.LICENSE.txt create mode 100644 data/plugins/youtube-video-panel/docker-compose.yaml create mode 100644 data/plugins/youtube-video-panel/jest-setup.js create mode 100644 data/plugins/youtube-video-panel/jest.config.js diff --git a/data/plugins/grafana-piechart-panel/MANIFEST.txt b/data/plugins/grafana-piechart-panel/MANIFEST.txt deleted file mode 100644 index 33b777b9c4e46..0000000000000 --- a/data/plugins/grafana-piechart-panel/MANIFEST.txt +++ /dev/null @@ -1,51 +0,0 @@ - ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA512 - -{ - "manifestVersion": "2.0.0", - "signatureType": "grafana", - "signedByOrg": "grafana", - "signedByOrgName": "Grafana Labs", - "plugin": "grafana-piechart-panel", - "version": "1.6.4", - "time": 1667561514704, - "keyId": "7e4d0c6a708866e7", - "files": { - "CHANGELOG.md": "3cf9e5ba8ad605cce2750ca62db9917411cc36b7ef9d97077a91656061e375f0", - "LICENSE": "b46400c1ab5630edeb4e43b240a027d203375ebe5a9efb7de88c604c5c5cace0", - "README.md": "1b58c2c1b24e454df67413706d2f1ca9c70d9c73b2e00301f94658e48099fda5", - "dark.js": "fff3149cb5b5f0bf129e44556950e4d748de1568754654609fa13f0ea8fc5bf3", - "dark.js.map": "e117e9e155d036a51c68c7dc5830d57ed02ac7d14c469c0d29356a87e81de2cc", - "editor.html": "5f2eb5a452daf096fbb222a1e4232147b73bb212e40f6c43f81a787457dcc750", - "img/piechart-donut.png": "fb1205438704afa3fef06e7257b95ec826639e1c283698d3a02edcbec3311ade", - "img/piechart-legend-on-graph.png": "87897f7c19a75b0010e433c38774758667361d65edff58e11cb90edaf1b3b4b4", - "img/piechart-legend-rhs.png": "dd32a731b719e8dab59969c4457cda8486d30f64b900eec4a7acfea685cf889a", - "img/piechart-legend-under.png": "48b15d1ec0d36bf1e53bbe3a322281d7f63d691af607035aa8e846b5ce044909", - "img/piechart-options.png": "a85d0588d8475300dec70a1017f08b8f9f184a2f2e7afe5484c612ab8bc4c20f", - "img/piechart_logo_large.png": "8e327742fbdcfd07b12c6e9d98b6307b34f2e5e7db6357f6063f4181c4b3811a", - "img/piechart_logo_large.svg": "4daafd27c7e1ed130ead61aeaf8cb79f6c27636d477718e64fdb75cac8e621d2", - "img/piechart_logo_small.png": "ca3b1450b0b0c243c57aa06aea449e012eab75c448fa43dc13598628e380d231", - "img/piechart_logo_small.svg": "4daafd27c7e1ed130ead61aeaf8cb79f6c27636d477718e64fdb75cac8e621d2", - "light.js": "1d62878c5581538acfcbcc0e9c4550517a7820cf6234a954a386e6e2e365c7c5", - "light.js.map": "9d75b04323f2863737f4f11cd6a241bf681377b9549a76c411fefbca125a3ccb", - "module.html": "10d8f62fdc7359e904e04b34400d8770098d4973e7796b54f007e6a8fa284a3b", - "module.js": "83e720fb75c518ce3cdb27a7d67f4bbc15a59312e02d4d27548518ca04d19eb5", - "module.js.LICENSE.txt": "30f143a8e05630b1ab2ff90e572b97708701d7fc5f8e8fd2e44bbe9787723aea", - "module.js.map": "2dcb575f96e89a96eef0239d1a71d6ae93795ff84230f550e7c1c32fcc00677b", - "plugin.json": "12e8219a3a837b2b9360e44dafeca402130cdb4244c2424e4032b768ef9e130c", - "styles/dark.css": "d475f9e19c0b408b1ea5b51e26c2c42263aaa49075dd87aa9f5e0c27e8d4f0dc", - "styles/light.css": "a51abae38ba6e74d7aa8418f71ef28c8e66a5977cb7bd0d45e5de8d4496e5591" - } -} ------BEGIN PGP SIGNATURE----- -Version: OpenPGP.js v4.10.10 -Comment: https://openpgpjs.org - -wrcEARMKAAYFAmNk+CoAIQkQfk0ManCIZucWIQTzOyW2kQdOhGNlcPN+TQxq -cIhm5xv9AgdeqJx1KC0+uZr/JD+S5g/dL+DVelkmNHBTCFF5xuocAbpsd3wh -o53TkitFp3crGJ2P+XM67jSxxpVWowrWUq39yQIHcrkXuF6c6IuiP6IPqefn -LRZKpBnfbhcPHYicSUwIy4GDNdY3nhlD7iGvM40CRGlkE0VMfPnm4wuk/kaV -0x4BYFQ= -=tkIc ------END PGP SIGNATURE----- diff --git a/data/plugins/grafana-piechart-panel/dark.js b/data/plugins/grafana-piechart-panel/dark.js deleted file mode 100644 index 72fa9e1827ea0..0000000000000 --- a/data/plugins/grafana-piechart-panel/dark.js +++ /dev/null @@ -1,2 +0,0 @@ -define((function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=11)}({11:function(e,t,n){}})})); -//# sourceMappingURL=dark.js.map \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/dark.js.map b/data/plugins/grafana-piechart-panel/dark.js.map deleted file mode 100644 index 1ca3da557b1ae..0000000000000 --- a/data/plugins/grafana-piechart-panel/dark.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"sCACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,IAIjBlC,EAAoBA,EAAoBmC,EAAI,I","file":"dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/data/plugins/grafana-piechart-panel/editor.html b/data/plugins/grafana-piechart-panel/editor.html deleted file mode 100644 index d703af50629c7..0000000000000 --- a/data/plugins/grafana-piechart-panel/editor.html +++ /dev/null @@ -1,100 +0,0 @@ -

',o+='',o+='',o+="",o+=''+l.a.escape(e.label)+"";var a=0;if(u.panel.legend.percentageDecimals&&(a=u.panel.legend.percentageDecimals),i&&r){var s=e.legendData;if(p.legend.values&&(o+='
'+u.formatValue(s)+"
"),n)o+='
'+((s/n*100).toFixed(a)+"%")+"
"}return o+="